差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:lvm_conecpt [2018/06/24 15:26] – [LVM (Logical Volume Management) 概念與基本語法] Jonathan Tsaitech:lvm_conecpt [2018/06/24 18:51] (目前版本) – [參考網址] Jonathan Tsai
行 1: 行 1:
 +====== LVM (Logical Volume Management) 概念與基本語法 ======
 +
 +<ditaa round noedgesep>
 +
 +     +--------+       +--------+
 +            |              |
 +      File  |        File  |
 +     | System |       | System |
 +        {s} |          {s} |
 +     +--------+       +--------+
 +                        |
 +     +---+----+       +---+----+
 +            |              |
 +     | Logical|       | Logical|
 +     | Volume |       | Volume |
 +        {s} |          {s} |
 +     +----+---+       +----+---+
 +          |                |
 +          +-+            +-+
 +            |            |
 +         +--+------------+--+
 +                          |
 +           Volume Group   |
 +                       {s}|
 +         +---------+--------+
 +                   |
 +        +----------+----------+
 +        |          |          |
 +   +----+---+ +----+---+ +----+---+
 +   |Physical| |Physical| |Physical|
 +   | Volume | | Volume | | Volume |
 +       {s}| |     {s}| |     {s}|
 +   +--------+ +--------+ +--------+
 +     
 +</ditaa>
 +
 +  * Physical Volume (PV) : 就是實體區, 可以是一顆硬碟(Disk)或是一個分割區(Partition) 相關指令 :  pvcreate, pvdisplay, pvs, pvchange, pvscan
 +  * Volume Group (VG) : 就是整合實體區(PV)與邏輯區(LV), 相關指令 : vgcreate, vgdisplay, vgs, vgextend, vgscan
 +  * Logical Volume(LV) : 就是邏輯區, 可以建立一個邏輯來格式化成檔案系統(File System), 相關指令 : lvcreate, lvdisplay, lvs, lvscan, lvresize, lvextend 
 +
 +  * 使用 LVM 的好處是讓檔案系統可以更有彈性的來調整, 不必然受限於實體的硬碟大小
 +  * 例如原有硬碟(或分割)大小空間滿了, 想要加一顆硬碟(或分割)後, 讓原本資料目錄的空間變大, 以下是在 KVM 虛擬環境先將一顆 10G 的 QEMU 虛擬硬碟加上 10G (變成 20G)後, 透過一系列的程序讓 / 空間多出 10G 的作法
 +    - 將加上的 10G 空間, 使用 parted 指令建立新的分割區 參考指令 print , mkpart primary , set <編號> lvm ++完成內容|<file>
 +(parted) print
 +Model: QEMU QEMU HARDDISK (scsi)
 +磁碟 /dev/sda:21.5GB
 +磁區大小 (邏輯/物理):512B/512B
 +分割區:msdos
 +
 +編號  起始點  結束點  大小    類型     檔案系統  旗標
 +    1049kB  525MB   524MB   primary  ext4      啟動
 +    525MB   10.7GB  10.2GB  primary            lvm
 +    10.7GB  21.5GB  10.7GB  primary            lvm
 +</file><file>
 +[root@pve-svn ~]# fdisk -l /dev/sda
 +
 +Disk /dev/sda: 21.5 GB, 21474836480 bytes
 +64 heads, 32 sectors/track, 20480 cylinders
 +Units = cylinders of 2048 * 512 = 1048576 bytes
 +Sector size (logical/physical): 512 bytes / 512 bytes
 +I/O size (minimum/optimal): 512 bytes / 512 bytes
 +Disk identifier: 0x000a3b61
 +
 +   Device Boot      Start         End      Blocks   Id  System
 +/dev/sda1                     501      512000   83  Linux
 +Partition 1 does not end on cylinder boundary.
 +/dev/sda2             502       10240     9972736   8e  Linux LVM
 +Partition 2 does not end on cylinder boundary.
 +/dev/sda3           10241       20480    10485760   8e  Linux LVM
 +Partition 3 does not end on cylinder boundary.
 +</file>++
 +    - 用 pvcreate 命令將新產生的分割區 /dev/sda3 建立為 PV ++執行語法|<file>
 +pvcreate /dev/sda3
 +
 +[root@pve-svn ~]# pvdisplay
 +  --- Physical volume ---
 +  PV Name               /dev/sda2
 +  VG Name               VolGroup
 +  PV Size               9.51 GiB / not usable 3.00 MiB
 +  Allocatable           yes (but full)
 +  PE Size               4.00 MiB
 +  Total PE              2434
 +  Free PE               0
 +  Allocated PE          2434
 +  PV UUID               0gGDwt-cU4B-ohe4-zLG8-VB3V-SDzX-aUSQ6S
 +
 +  "/dev/sda3" is a new physical volume of "10.00 GiB"
 +  --- NEW Physical volume ---
 +  PV Name               /dev/sda3
 +  VG Name
 +  PV Size               10.00 GiB
 +  Allocatable           NO
 +  PE Size               0
 +  Total PE              0
 +  Free PE               0
 +  Allocated PE          0
 +  PV UUID               Zotmmo-VZng-6TfS-pJKA-k3TR-O87q-vAPurv
 +
 +[root@pve-svn ~]# pvscan
 +  PV /dev/sda2   VG VolGroup        lvm2 [9.51 GiB / 0    free]
 +  PV /dev/sda3                      lvm2 [10.00 GiB]
 +  Total: 2 [19.51 GiB] / in use: 1 [9.51 GiB] / in no VG: 1 [10.00 GiB]
 +
 +[root@pve-svn ~]# pvs
 +  PV         VG       Fmt  Attr PSize  PFree
 +  /dev/sda2  VolGroup lvm2 a--u  9.51g     0
 +  /dev/sda3           lvm2 ---- 10.00g 10.00g  
 +
 +</file>++
 +    - 將剛產生的 PV /dev/sda3 以 vgextend 命令來加入現有的 VG - VolGroup ++執行語法|<file>
 +[root@pve-svn ~]# vgdisplay
 +  --- Volume group ---
 +  VG Name               VolGroup
 +  System ID
 +  Format                lvm2
 +  Metadata Areas        1
 +  Metadata Sequence No  3
 +  VG Access             read/write
 +  VG Status             resizable
 +  MAX LV                0
 +  Cur LV                2
 +  Open LV               2
 +  Max PV                0
 +  Cur PV                1
 +  Act PV                1
 +  VG Size               9.51 GiB
 +  PE Size               4.00 MiB
 +  Total PE              2434
 +  Alloc PE / Size       2434 / 9.51 GiB
 +  Free  PE / Size       0 / 0
 +  VG UUID               eK3ash-hbJh-yrjl-Gbci-8gyc-ueCE-4oVjiZ
 +
 +[root@pve-svn ~]# vgextend VolGroup /dev/sda3
 +  Volume group "VolGroup" successfully extended
 +
 +[root@pve-svn ~]# vgdisplay
 +  --- Volume group ---
 +  VG Name               VolGroup
 +  System ID
 +  Format                lvm2
 +  Metadata Areas        2
 +  Metadata Sequence No  5
 +  VG Access             read/write
 +  VG Status             resizable
 +  MAX LV                0
 +  Cur LV                2
 +  Open LV               2
 +  Max PV                0
 +  Cur PV                2
 +  Act PV                2
 +  VG Size               19.50 GiB
 +  PE Size               4.00 MiB
 +  Total PE              4993
 +  Alloc PE / Size       2434 / 9.51 GiB
 +  Free  PE / Size       2559 / 10.00 GiB
 +  VG UUID               eK3ash-hbJh-yrjl-Gbci-8gyc-ueCE-4oVjiZ
 +
 +[root@pve-svn ~]# vgs
 +  VG       #PV #LV #SN Attr   VSize  VFree
 +  VolGroup       0 wz--n- 19.50g 10.00g
 +
 +</file>++
 +    - 使用 lvextend  或 lvresize 來加大現有 lv_root 的 LV ++執行語法|<file>
 +[root@pve-svn ~]# lvdisplay
 +  --- Logical volume ---
 +  LV Path                /dev/VolGroup/lv_root
 +  LV Name                lv_root
 +  VG Name                VolGroup
 +  LV UUID                JbZGhn-aEuR-sohP-RSGc-FF09-hk9V-Qi5dXL
 +  LV Write Access        read/write
 +  LV Creation host, time localhost.localdomain, 2013-05-23 11:46:40 +0800
 +  LV Status              available
 +  # open                 1
 +  LV Size                7.54 GiB
 +  Current LE             1930
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:0
 +
 +  --- Logical volume ---
 +  LV Path                /dev/VolGroup/lv_swap
 +  LV Name                lv_swap
 +  VG Name                VolGroup
 +  LV UUID                5SRhkK-6vuF-SAe8-g7P1-FhJp-E0YM-rrBcvj
 +  LV Write Access        read/write
 +  LV Creation host, time localhost.localdomain, 2013-05-23 11:46:46 +0800
 +  LV Status              available
 +  # open                 1
 +  LV Size                1.97 GiB
 +  Current LE             504
 +  Segments               1
 +  Allocation             inherit
 +  Read ahead sectors     auto
 +  - currently set to     256
 +  Block device           253:1
 +
 +[root@pve-svn ~]# lvextend --size +10G /dev/VolGroup/lv_root
 +  Insufficient free space: 2560 extents needed, but only 2559 available
 +[root@pve-svn ~]# lvextend -l +2560 /dev/VolGroup/lv_root
 +  Insufficient free space: 2560 extents needed, but only 2559 available
 +[root@pve-svn ~]# lvextend -l +2559 /dev/VolGroup/lv_root
 +  Size of logical volume VolGroup/lv_root changed from 7.54 GiB (1930 extents) to 17.54 GiB (4489 extents).
 +  Logical volume lv_root successfully resized.
 +
 +[root@pve-svn ~]# lvresize -l +100%FREE /dev/VolGroup/lv_root
 +
 +
 +[root@pve-svn ~]# vgs -o +lv_size,lv_name
 +  VG       #PV #LV #SN Attr   VSize  VFree LSize  LV
 +  VolGroup       0 wz--n- 19.50g    0  17.54g lv_root
 +  VolGroup       0 wz--n- 19.50g    0   1.97g lv_swap
 +
 +[root@pve-svn ~]# lvs
 +  LV      VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 +  lv_root VolGroup -wi-ao---- 17.54g
 +  lv_swap VolGroup -wi-ao----  1.97g
 +
 +</file>++ 
 +    - 透過 resize2fs 讓 LV 增加的空間實際生效 ++執行語法|<file>
 +[root@pve-svn ~]# df -h
 +Filesystem            Size  Used Avail Use% Mounted on
 +/dev/mapper/VolGroup-lv_root
 +                      7.3G  1.8G  5.2G  26% /
 +tmpfs                 498M      498M   0% /dev/shm
 +/dev/sda1             477M  126M  326M  28% /boot
 +
 +[root@pve-svn ~]# resize2fs /dev/VolGroup/lv_root
 +resize2fs 1.41.12 (17-May-2010)
 +Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required
 +old desc_blocks = 1, new_desc_blocks = 2
 +Performing an on-line resize of /dev/VolGroup/lv_root to 4596736 (4k) blocks.
 +The filesystem on /dev/VolGroup/lv_root is now 4596736 blocks long.
 +
 +[root@pve-svn ~]# df -h
 +Filesystem            Size  Used Avail Use% Mounted on
 +/dev/mapper/VolGroup-lv_root
 +                       18G  1.8G   15G  12% /
 +tmpfs                 498M      498M   0% /dev/shm
 +/dev/sda1             477M  126M  326M  28% /boot
 +
 +</file>++
 +
 +===== 參考網址 =====
 +  * https://www.thegeekdiary.com/redhat-centos-a-beginners-guide-to-lvm-logical-volume-manager/
 +  * https://www.digitalocean.com/community/tutorials/an-introduction-to-lvm-concepts-terminology-and-operations
 +  * https://www.thegeekdiary.com/centos-rhel-how-to-add-physical-volume-pv-to-a-volume-group-vg-in-lvm/
 +  * https://pve.proxmox.com/wiki/Resize_disks
 +
 +{{tag>lvm}}