LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,LVM將一個或多個硬盤的分區在邏輯上集合,相當於一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的分區加入其中,這樣可以實現磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性。與傳統的磁盤與分區相比,LVM爲計算機提供了更高層次的磁盤存儲。它使系統管理員可以更方便的爲應用與用戶分配存儲空間。在LVM管理下的存儲卷可以按需要隨時改變大小與移除(可能需對文件系統工具進行升級)。LVM也允許按用戶組對存儲捲進行管理,允許管理員用更直觀的名稱(如"sales‘、‘development‘)代替物理磁盤名(如‘sda‘、‘sdb‘)來標識存儲卷。
如圖所示LVM模型:
LVM基本術語
物理卷(Physical Volume,PV)
指磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group,VG)
類似於非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。可以在卷組上創建一個或多個LV(邏輯卷)。
邏輯卷(Logical Volume,LV)
類似於非LVM系統中的磁盤分區,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立文件系統(比如/home或者/usr等)。
物理塊(Physical Extent,PE)
每一個物理卷PV被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。所以物理卷(PV)由大小等同的基本單元PE組成。
邏輯塊(Logical Extent,LE)
邏輯卷LV也被劃分爲可被尋址的基本單位,稱爲LE。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
創建邏輯卷步驟:pv--> vg --> lv (PE大小是由vg決定的) 磁盤分區類型必須調整爲8e
[root@localhost ~]# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): p Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0004cd5c Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM /dev/sda3 7859 9164 10489446 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) e Selected partition 4 First cylinder (9165-26108, default 9165): Using default value 9165 Last cylinder, +cylinders or +size{K,M,G} (9165-26108, default 26108): Using default value 26108 Command (m for help): p Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0004cd5c Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM /dev/sda3 7859 9164 10489446 83 Linux /dev/sda4 9165 26108 136102680 5 Extended Command (m for help): n First cylinder (9165-26108, default 9165): Using default value 9165 Last cylinder, +cylinders or +size{K,M,G} (9165-26108, default 26108): +5G Command (m for help): l 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx 5 Extended 42 SFS 86 NTFS volume set da Non-FS data 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt Command (m for help): t Partition number (1-7): 5 Hex code (type L to list codes): 8e Changed system type of partition 5 to 8e (Linux LVM) 使用類似方法添加sda6\7\8 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@localhost ~]# fdisk -l /dev/sda Disk /dev/sda: 214.7 GB, 214748364800 bytes 255 heads, 63 sectors/track, 26108 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0004cd5c Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM /dev/sda3 7859 9164 10489446 83 Linux /dev/sda4 9165 26108 136102680 5 Extended /dev/sda5 9165 9818 5253223+ 8e Linux LVM /dev/sda6 9819 10472 5253223+ 8e Linux LVM /dev/sda7 10473 11126 5253223+ 8e Linux LVM /dev/sda8 11127 12432 10490413+ 8e Linux LVM kpartx命令的作用,是讓Linux內核讀取一個設備上的分區表,然後生成代表相應分區的設備。 [root@localhost ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 [root@localhost ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 BLKPG: Device or resource busy error adding partition 4 BLKPG: Device or resource busy error adding partition 5 BLKPG: Device or resource busy error adding partition 6 BLKPG: Device or resource busy error adding partition 7 BLKPG: Device or resource busy error adding partition 8 [root@localhost ~]# 查看沒有創建PV和VG前的信息。 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g [root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name vg0 PV Size 60.00 GiB / not usable 8.00 MiB Allocatable yes PE Size 8.00 MiB Total PE 7679 Free PE 1023 Allocated PE 6656 PV UUID X1qZLb-itOR-l9N0-lmJ7-GS4x-0lLR-xG0j2v [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 4 Open LV 4 Max PV 0 Cur PV 1 Act PV 1 VG Size 59.99 GiB PE Size 8.00 MiB Total PE 7679 Alloc PE / Size 6656 / 52.00 GiB Free PE / Size 1023 / 7.99 GiB VG UUID 0SrYD2-zbcE-BFzQ-LvKD-QwhA-t52u-Aw5R5n 創建PV, [root@localhost ~]# pvcreate /dev/sda5 Physical volume "/dev/sda5" successfully created [root@localhost ~]# pvcreate /dev/sda6 Physical volume "/dev/sda6" successfully created [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 lvm2 --- 5.01g 5.01g /dev/sda6 lvm2 --- 5.01g 5.01g 建立VG ,名稱爲data,指定PE大小爲10M [root@localhost ~]# vgcreate data -s 10M /dev/sda5 Volume group "data" successfully created [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree data 1 0 0 wz--n- 5.00g 5.00g vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# vgdisplay --- Volume group --- VG Name data System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 5.00 GiB PE Size 10.00 MiB Total PE 512 Alloc PE / Size 0 / 0 Free PE / Size 512 / 5.00 GiB VG UUID Ioo0Za-hUGA-UCLX-t1rv-ZwHQ-A2fV-lEoNIv --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 4 Open LV 4 Max PV 0 Cur PV 1 Act PV 1 VG Size 59.99 GiB PE Size 8.00 MiB Total PE 7679 Alloc PE / Size 6656 / 52.00 GiB Free PE / Size 1023 / 7.99 GiB VG UUID 0SrYD2-zbcE-BFzQ-LvKD-QwhA-t52u-Aw5R5n [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 data lvm2 a-- 5.00g 5.00g /dev/sda6 lvm2 --- 5.01g 5.01g [root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sda5 VG Name data PV Size 5.01 GiB / not usable 10.10 MiB Allocatable yes PE Size 10.00 MiB Total PE 512 Free PE 512 Allocated PE 0 PV UUID cMeOjK-8328-KZ8S-MnRR-JR9B-YcJU-2fBQny --- Physical volume --- PV Name /dev/sda2 VG Name vg0 PV Size 60.00 GiB / not usable 8.00 MiB Allocatable yes PE Size 8.00 MiB Total PE 7679 Free PE 1023 Allocated PE 6656 PV UUID X1qZLb-itOR-l9N0-lmJ7-GS4x-0lLR-xG0j2v "/dev/sda6" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sda6 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID vOvmRp-3YzB-321W-BM7q-7DyA-0fVy-oqzkTf [root@localhost ~]# vgextend data /dev/sda6 Volume group "data" successfully extended [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 data lvm2 a-- 5.00g 5.00g /dev/sda6 data lvm2 a-- 5.00g 5.00g [root@localhost ~]# vgdisplay data --- Volume group --- VG Name data System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 10.00 GiB PE Size 10.00 MiB Total PE 1024 Alloc PE / Size 0 / 0 Free PE / Size 1024 / 10.00 GiB VG UUID Ioo0Za-hUGA-UCLX-t1rv-ZwHQ-A2fV-lEoNIv [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vg0/root LV Name root VG Name vg0 LV UUID n6GmVh-224U-6LOe-pNly-vsmW-xERB-x92WxW LV Write Access read/write LV Creation host, time localhost.localdomain, 2015-12-18 21:27:25 +0800 LV Status available # open 1 LV Size 20.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/vg0/swap LV Name swap VG Name vg0 LV UUID crURLK-zBkl-8hkK-wToE-xEKG-QaJK-IXxhwv LV Write Access read/write LV Creation host, time localhost.localdomain, 2015-12-18 21:27:28 +0800 LV Status available # open 1 LV Size 2.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Path /dev/vg0/usr LV Name usr VG Name vg0 LV UUID h47EeV-CJ1y-dPO1-CL90-Nw8G-I4NE-NtNZsP LV Write Access read/write LV Creation host, time localhost.localdomain, 2015-12-18 21:27:29 +0800 LV Status available # open 1 LV Size 10.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/vg0/var LV Name var VG Name vg0 LV UUID cgPOJb-mZi5-ddgw-1cO3-Ok4L-8Apr-LsWlIw LV Write Access read/write LV Creation host, time localhost.localdomain, 2015-12-18 21:27:30 +0800 LV Status available # open 1 LV Size 20.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3 [root@localhost ~]# lvcreate -L 5G -n datalv data Logical volume "datalv" created. [root@localhost ~]# ll /dev/mapper/ total 0 crw-rw---- 1 root root 10, 58 Dec 20 11:33 control lrwxrwxrwx 1 root root 7 Dec 20 14:33 data-datalv -> ../dm-4 lrwxrwxrwx 1 root root 7 Dec 20 11:33 vg0-root -> ../dm-0 lrwxrwxrwx 1 root root 7 Dec 20 11:33 vg0-swap -> ../dm-1 lrwxrwxrwx 1 root root 7 Dec 20 11:33 vg0-usr -> ../dm-2 lrwxrwxrwx 1 root root 7 Dec 20 11:33 vg0-var -> ../dm-3 創建文件系統,-b參數可以指定文件系統的block塊大小。 [root@localhost ~]# mkfs.ext4 -b 1024 -L data /dev/data/datalv mke2fs 1.41.12 (17-May-2010) Filesystem label=data OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=72351744 640 block groups 8192 blocks per group, 8192 fragments per group 512 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, 1024001, 1990657, 2809857, 5120001 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@localhost ~]# mkdir /data [root@localhost ~]# mount /dev/data/datalv /data/ [root@localhost ~]# ls /data/ lost+found [root@localhost ~]# mount /dev/mapper/vg0-root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) /dev/mapper/vg0-usr on /usr type ext4 (rw) /dev/mapper/vg0-var on /var type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/mapper/data-datalv on /data type ext4 (rw) [root@localhost ~]# lvdisplay /dev/data/datalv --- Logical volume --- LV Path /dev/data/datalv LV Name datalv VG Name data LV UUID 3cRVB5-0pqU-Be8J-P7n3-MunM-M9fr-GNXaqE LV Write Access read/write LV Creation host, time localhost.localdomain, 2015-12-20 14:33:50 +0800 LV Status available # open 1 LV Size 5.00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4 [root@localhost ~]# cp /var/log/boot.log /data/ [root@localhost ~]# tail -10 /data/boot.log Starting auditd: [ OK ] Starting system logger: [ OK ] Starting irqbalance: [ OK ] Starting system message bus: [ OK ] Starting HAL daemon: [ OK ] Retrigger failed udev events [ OK ] Starting sshd: [ OK ] Starting abrt daemon: [ OK ] Starting crond: [ OK ] Starting atd: [ OK ] LV擴展邏輯卷,要先擴展物理邊界,然後擴展邏輯邊界; 首先要確定擴展大小,再確定當前邏輯卷是否有足夠的空閒空間可用; 步驟思路總結: (1) 擴展物理邊界 lvextend -L : +[擴展多少];不用+號則爲擴展到多少,有加號則爲擴展多少 (2) 擴展邏輯邊界 resize2fs LV從5G擴展至10G過程演示: 首先擴展物理邊界至10G: [root@localhost ~]# lvextend -L 10G /dev/data/datalv Size of logical volume data/datalv changed from 5.00 GiB (512 extents) to 10.00 GiB (1024 extents). Logical volume datalv successfully resized 因爲還沒有擴展邏輯邊界,所以這裏顯示是文件系統大小,所以還是5G [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-root 20G 301M 19G 2% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 36M 145M 20% /boot /dev/mapper/vg0-usr 9.8G 2.0G 7.4G 21% /usr /dev/mapper/vg0-var 20G 115M 19G 1% /var /dev/mapper/data-datalv 4.9G 3.6M 4.7G 1% /data 擴展邏輯邊界: 修改文件系統使用所有包含擴展的空間。 [root@localhost ~]# resize2fs /dev/data/datalv resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/data/datalv is mounted on /data; on-line resizing required old desc_blocks = 20, new_desc_blocks = 40 Performing an on-line resize of /dev/data/datalv to 10485760 (1k) blocks. The filesystem on /dev/data/datalv is now 10485760 blocks long. [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-root 20G 301M 19G 2% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 36M 145M 20% /boot /dev/mapper/vg0-usr 9.8G 2.0G 7.4G 21% /usr /dev/mapper/vg0-var 20G 115M 19G 1% /var /dev/mapper/data-datalv 9.9G 3.5M 9.4G 1% /data [root@localhost ~]# vgdisplay data --- Volume group --- VG Name data System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 10.00 GiB PE Size 10.00 MiB Total PE 1024 Alloc PE / Size 1024 / 10.00 GiB Free PE / Size 0 / 0 VG UUID Ioo0Za-hUGA-UCLX-t1rv-ZwHQ-A2fV-lEoNIv [root@localhost ~]# tail -10 /data/boot.log Starting auditd: [ OK ] Starting system logger: [ OK ] Starting irqbalance: [ OK ] Starting system message bus: [ OK ] Starting HAL daemon: [ OK ] Retrigger failed udev events [ OK ] Starting sshd: [ OK ] Starting abrt daemon: [ OK ] Starting crond: [ OK ] Starting atd: [ OK ] 邏輯卷的縮減有風險,所以要先確定縮減爲多大,同時縮減後的空間必須能夠容納原有的所有數據。 LV縮減,必須先卸載已經掛載的lv分區後並對分區進行強制檢測,確保文件系統乾淨。 然後縮減邏輯邊界,再縮減物理邊界。 步驟思路: a.先使其離線【卸載】 umount /data b.強制檢測文件系統【ext系列爲例】 e2fsck-f /dev/data/datalv c.收縮邏輯邊界 resize2fs /dev/data/datalv 1G d.收縮物理邊界 lvreduce-L 1G /dev/data/datalv e.上線掛載 mount /dev/data/datalv /data/ [root@localhost ~]# umount /dev/data/datalv [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-root 20G 301M 19G 2% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 36M 145M 20% /boot /dev/mapper/vg0-usr 9.8G 2.0G 7.4G 21% /usr /dev/mapper/vg0-var 20G 115M 19G 1% /var [root@localhost ~]# e2fsck -fy /dev/data/datalv #-f Force checking even if filesystem is marked clean e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information data: 12/655360 files (0.0% non-contiguous), 203340/10485760 blocks [root@localhost ~]# resize2fs /dev/data/datalv 8G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/data/datalv to 8388608 (1k) blocks. The filesystem on /dev/data/datalv is now 8388608 blocks long. [root@localhost ~]# lvreduce -L 8G /dev/data/datalv Rounding size to boundary between physical extents: 8.01 GiB WARNING: Reducing active logical volume to 8.01 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce datalv? [y/n]: y Size of logical volume data/datalv changed from 10.00 GiB (1024 extents) to 8.01 GiB (820 extents). Logical volume datalv successfully resized [root@localhost ~]# mount /dev/data/datalv /data/ [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-root 20G 301M 19G 2% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 36M 145M 20% /boot /dev/mapper/vg0-usr 9.8G 2.0G 7.4G 21% /usr /dev/mapper/vg0-var 20G 115M 19G 1% /var /dev/mapper/data-datalv 7.9G 3.6M 7.5G 1% /data [root@localhost ~]# tail -10 /data/boot.log Starting auditd: [ OK ] Starting system logger: [ OK ] Starting irqbalance: [ OK ] Starting system message bus: [ OK ] Starting HAL daemon: [ OK ] Retrigger failed udev events [ OK ] Starting sshd: [ OK ] Starting abrt daemon: [ OK ] Starting crond: [ OK ] Starting atd: [ OK ] [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 data lvm2 a-- 5.00g 0 /dev/sda6 data lvm2 a-- 5.00g 1.99g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree data 2 1 0 wz--n- 10.00g 1.99g vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# pvcreate /dev/sda7 Physical volume "/dev/sda7" successfully created [root@localhost ~]# pvdisplay /dev/sda7 "/dev/sda7" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sda7 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 73pdMk-2oJt-s1Vp-0cXH-a6CQ-ylOQ-qx3RQR [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 data lvm2 a-- 5.00g 0 /dev/sda6 data lvm2 a-- 5.00g 1.99g /dev/sda7 lvm2 --- 5.01g 5.01g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree data 2 1 0 wz--n- 10.00g 1.99g vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# vgextend data /dev/sda7 Volume group "data" successfully extended [root@localhost ~]# pvcreate /dev/sda8 Physical volume "/dev/sda8" successfully created [root@localhost ~]# vgextend data /dev/sda8 Volume group "data" successfully extended [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 data lvm2 a-- 5.00g 0 /dev/sda6 data lvm2 a-- 5.00g 1.99g /dev/sda7 data lvm2 a-- 5.00g 5.00g /dev/sda8 data lvm2 a-- 10.00g 10.00g 縮減卷組:先要確定要移除的PV,然後將此PV上的數據轉移到其他PV,再從卷組中將此PV移除; ------------------------------------------------ [root@localhost ~]# pvmove /dev/sda6 No data to move for data [root@localhost ~]# vgreduce data /dev/sda6 Removed "/dev/sda6" from volume group "data" [root@localhost ~]# vgdisplay data --- Volume group --- VG Name data System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 5.00 GiB PE Size 10.00 MiB Total PE 512 Alloc PE / Size 0 / 0 Free PE / Size 512 / 5.00 GiB VG UUID LT91Nk-Gr7j-ELQO-xRcq-cNad-dXiB-wGX7QS [root@localhost ~]# vgextend data /dev/sda6 Volume group "data" successfully extended [root@localhost ~]# vgdisplay data --- Volume group --- VG Name data System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 10.00 GiB PE Size 10.00 MiB Total PE 1024 Alloc PE / Size 0 / 0 Free PE / Size 1024 / 10.00 GiB VG UUID LT91Nk-Gr7j-ELQO-xRcq-cNad-dXiB-wGX7QS 快照卷與原卷必須在同一個卷組中,因此,創建快照卷之前要確保原卷所在的卷組中有足夠空間可用。 雖然快照卷無須與原卷大小相同,但其大小取決於快照卷的存活時長內原卷的數據變化量。 快照卷標不能進行修改,創建快照使用lvcreat -s。 [root@localhost ~]# lvcreate -s -L 10G -n data-snap -p r /dev/data/datalv Reducing COW size 10.00 GiB down to maximum usable size 8.05 GiB. Logical volume "data-snap" created. [root@localhost ~]# ll /data/ total 14 -rw-r--r-- 1 root root 1775 Dec 20 14:37 boot.log drwx------ 2 root root 12288 Dec 20 14:35 lost+found [root@localhost ~]# mount /dev/data/data-snap /backup/ mount: block device /dev/mapper/data-data--snap is write-protected, mounting read-only [root@localhost ~]# ll /data/ total 14 -rw-r--r-- 1 root root 1775 Dec 20 14:37 boot.log drwx------ 2 root root 12288 Dec 20 14:35 lost+found [root@localhost data]# ll /backup/ total 14 -rw-r--r-- 1 root root 1775 Dec 20 14:37 boot.log drwx------ 2 root root 12288 Dec 20 14:35 lost+found [root@localhost data]# umount /backup/ [root@localhost data]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data-snap data sri-a-s--- 8.05g datalv 0.00 datalv data owi-aos--- 8.01g root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g [root@localhost data]# lvremove /dev/data/data-snap Do you really want to remove active logical volume data-snap? [y/n]: y Logical volume "data-snap" successfully removed [root@localhost data]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert datalv data -wi-ao---- 8.01g root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g [root@localhost data]# cd [root@localhost ~]# umount /data [root@localhost ~]# lvremove /dev/data/datalv Do you really want to remove active logical volume datalv? [y/n]: y Logical volume "datalv" successfully removed [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 data lvm2 a-- 5.00g 5.00g /dev/sda6 data lvm2 a-- 5.00g 5.00g /dev/sda7 data lvm2 a-- 5.00g 5.00g /dev/sda8 data lvm2 a-- 10.00g 10.00g [root@localhost ~]# vgremove data Volume group "data" successfully removed [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sda5 lvm2 --- 5.01g 5.01g /dev/sda6 lvm2 --- 5.01g 5.01g /dev/sda7 lvm2 --- 5.01g 5.01g /dev/sda8 lvm2 --- 10.00g 10.00g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# pvremove /dev/sda5 Labels on physical volume "/dev/sda5" successfully wiped [root@localhost ~]# pvremove /dev/sda6 Labels on physical volume "/dev/sda6" successfully wiped [root@localhost ~]# pvremove /dev/sda7 Labels on physical volume "/dev/sda7" successfully wiped [root@localhost ~]# pvremove /dev/sda8 Labels on physical volume "/dev/sda8" successfully wiped [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg0 -wi-ao---- 20.00g swap vg0 -wi-ao---- 2.00g usr vg0 -wi-ao---- 10.00g var vg0 -wi-ao---- 20.00g [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g [root@localhost ~]#