一、簡介
LVM,即Logical Volume Manager(邏輯卷管理)的縮寫,是Linux環境下對磁盤分區進行管理的一種機制。
二、版本
LVM1:最初在1998年發佈,在Linux內核2.4版本上實現。
LVM2:LVM1的升級版,在Linux內核2.6版本上可用。
[root@wsh mysh]# uname -r #查看內核版本 2.6.32-431.el6.x86_64 [root@wsh mysh]# rpm -qa | grep lvm #查看是否安裝lvm lvm2-2.02.100-8.el6.x86_64
三、LVM的模型:
由上圖可知,lv的創建過程:
磁盤上的若干分區(/dev/[sh]d[a-z]#)創建爲物理卷(physical volume),將多個物理卷組合成卷組(volume group),在卷組上創建若干邏輯卷(logical volume)。
四、lvm2的功能:
1.便捷的調整文件系統的大小;
2.支持快照
五、具體操作
1.查看系統分區
[root@wsh mysh]# fdisk -l #查看當前系統的分區情況 Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 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: 0x0005e677 Device Boot Start End Blocks Id System /dev/sda1 * 1 13 102400 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 13 6387 51200000 83 Linux /dev/sda3 6387 6910 4194304 82 Linux swap / Solaris #下面我們以/dev/sdb和/dev/sdc這兩塊磁盤爲例進行演示: Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x896b252c Device Boot Start End Blocks Id System Disk /dev/sdc: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 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: 0xf7ef9915 Device Boot Start End Blocks Id System
2.創建分區:
[root@wsh mysh]# fdisk /dev/sdb #在/dev/sdb上創建分區 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/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x896b252c Device Boot Start End Blocks Id System Command (m for help): n #創建分區 Command action e extended p primary partition (1-4) p #創建主分區 Partition number (1-4): 1 #選擇1號分區 First cylinder (1-2610, default 1): #默認從第1個柱面開始 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G #創建5G大小的分區 Command (m for help): n #再創建分區 Command action e extended p primary partition (1-4) p #創建主分區 Partition number (1-4): 2 #選擇2號分區 First cylinder (655-2610, default 655): #默認從655柱面開始 Using default value 655 Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +5G #創建5G大小的分區 Command (m for help): t #修改分區的systemID Partition number (1-4): 1 #選擇修改1號分區的systemID Hex code (type L to list codes): l #小寫的L查看對應的格式的systemID 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 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT 1e Hidden W95 FAT1 Hex code (type L to list codes): 8e #選擇Linux LVM對應的systemID Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): t #同上 Partition number (1-4): 2 Hex code (type L to list codes): 8e Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x896b252c Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 8e Linux LVM /dev/sdb2 655 1308 5253255 8e Linux LVM Command (m for help): w #保存分區 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
[root@wsh mysh]# fdisk /dev/sdc 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): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-6527, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +5G Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdc: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 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: 0xf7ef9915 Device Boot Start End Blocks Id System /dev/sdc1 1 654 5253223+ 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
3.讓內核重新探測分區信息
[root@wsh mysh]# partx -a /dev/sdb #讓內和重新探測系統分區信息 BLKPG: Device or resource busy #會出現報錯信息 error adding partition 1 BLKPG: Device or resource busy error adding partition 2 [root@wsh mysh]# partx -a /dev/sdc BLKPG: Device or resource busy error adding partition 1 [root@wsh mysh]# cat /proc/partitions #查看內核識別到的分區 major minor #blocks name 8 0 125829120 sda 8 1 102400 sda1 8 2 51200000 sda2 8 3 4194304 sda3 8 16 20971520 sdb 8 17 5253223 sdb1 #可以看出/dev/sdb{1,2}已經被識別 8 18 5253255 sdb2 8 32 52428800 sdc 8 33 5253223 sdc1 #/dev/sdc也被識別
4.創建pv:
[root@wsh mysh]# pvcreate /dev/sd{b,c}1 #pvcreate命令將此兩個分區創建爲pv Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created [root@wsh mysh]# pvs #顯示pv PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 5.01g 5.01g /dev/sdc1 lvm2 a-- 5.01g 5.01g [root@wsh ~]# pvdisplay #pvdisplay可以顯示所有pv的詳細信息 "/dev/sdb1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 4cAb4A-pt3Q-ffxt-AFsX-fzPZ-ieqe-0PW3Ja "/dev/sdc1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID ZqkCHt-fcxy-2eJa-uEcu-KY62-Ztpe-K0H1j1 [root@wsh ~]# pvdisplay /dev/sdb1 #pvdisplay /path/to/pv可以顯示指定pv的詳細信息 "/dev/sdb1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 5.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 4cAb4A-pt3Q-ffxt-AFsX-fzPZ-ieqe-0PW3Ja
5.創建卷組VG
[root@wsh ~]# vgcreate myvg /dev/sd{b,c}1 #用vgcreate創建名爲myvg的卷組,並將/dev/sdb1,/dev/sdc1加入此卷組 Volume group "myvg" successfully created [root@wsh ~]# vgs #vgs查看vg的簡要信息 VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 10.02g 10.02g #兩個5G的PV創建爲一個10G的VG [root@wsh ~]# vgdisplay #查看全部vg的詳細信息,vgdisplay VG_NAME可以查看某個vg的詳細信息 --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 10.02 GiB PE Size 4.00 MiB #在使用vgcreate創建vg時可以使用-s PE選項指定PE的大小,默認爲4MB。當後面創建LV時,其大小肯定爲PE的整數倍。 Total PE 2564 Alloc PE / Size 0 / 0 Free PE / Size 2564 / 10.02 GiB VG UUID BlbIst-Nkwf-Ipu4-TZFr-0U8L-jfNz-wcLlP
6.創建邏輯卷LV
[root@wsh ~]# lvcreate -L 7G -n lv1 myvg #創建大小爲7G,名爲lv1的LV,也可以-l指定PE的個數 Logical volume "lv1" created #顯示簡要的LV信息 [root@wsh ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv1 myvg -wi-a----- 7.00g [root@wsh ~]# lvdisplay #顯示全部的LV詳細信息 --- Logical volume --- LV Path /dev/myvg/lv1 LV Name lv1 VG Name myvg LV UUID cf3Y8v-PZES-BHal-mLen-EkC7-zAXN-qsMXs9 LV Write Access read/write LV Creation host, time wsh.example.com, 2014-05-19 21:16:43 +0800 LV Status available # open 0 LV Size 7.00 GiB Current LE 1792 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
7.邏輯卷設備文件路徑:
[root@wsh ~]# ls /dev/mapper/myvg-lv1 #/dev/mapper/VG_NAME-lv_name /dev/mapper/myvg-lv1 [root@wsh ~]# ls /dev/myvg/lv1 #/dev/VG_NAME/lv_name /dev/myvg/lv1
8.創建文件系統
[root@wsh ~]# mke2fs -t ext4 /dev/mapper/myvg-lv1 #必須使用LV的設備文件路徑,而選其一即可 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 458752 inodes, 1835008 blocks 91750 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1879048192 56 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
9.掛載文件系統
[root@wsh ~]# mount /dev/mapper/myvg-lv1 /mnt/ #掛載至/mnt [root@wsh ~]# df -lh #查看lv1大小爲7G Filesystem Size Used Avail Use% Mounted on /dev/sda2 49G 3.6G 43G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 97M 30M 63M 32% /boot /dev/mapper/myvg-lv1 6.9G 144M 6.4G 3% /mnt
10.擴展lv1的大小:
[root@wsh ~]# vgs #查看VG還有3G未使用 VG #PV #LV #SN Attr VSize VFree myvg 2 1 0 wz--n- 10.02g 3.02g [root@wsh ~]# lvextend -L 10G /dev/mapper/myvg-lv1 #將lv1的物理邊界擴展到10G Extending logical volume lv1 to 10.00 GiB Logical volume lv1 successfully resized [root@wsh ~]# lvs #lv1的物理邊界爲10G LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv1 myvg -wi-ao---- 10.00g [root@wsh ~]# df -lh #此時,lv1的邏輯邊界依然爲7G Filesystem Size Used Avail Use% Mounted on /dev/sda2 49G 3.6G 43G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 97M 30M 63M 32% /boot /dev/mapper/myvg-lv1 6.9G 144M 6.4G 3% /mnt [root@wsh ~]# umount /dev/mapper/myvg-lv1 #卸載掛載的lv1 [root@wsh ~]# e2fsck -f /dev/mapper/myvg-lv1 #強行檢測lv1文件系統 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 /dev/mapper/myvg-lv1: 11/458752 files (0.0% non-contiguous), 65599/1835008 blocks [root@wsh ~]# resize2fs /dev/mapper/myvg-lv1 #使用resize2fs將lv1的邏輯邊界擴展到10G,如果沒有指定擴展到多大,則其邏輯邊界自動適應其物理邊界 resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/myvg-lv1 to 2621440 (4k) blocks. The filesystem on /dev/mapper/myvg-lv1 is now 2621440 blocks long. [root@wsh ~]# mount /dev/mapper/myvg-lv1 /mnt/ #掛載 [root@wsh ~]# df -lh #查看其大小已爲10G Filesystem Size Used Avail Use% Mounted on /dev/sda2 49G 3.6G 43G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 97M 30M 63M 32% /boot /dev/mapper/myvg-lv1 9.9G 144M 9.3G 2% /mnt
11.擴展VG大小,並擴展LV大小:
#由於VG的空間已被全部佔用,如果還需擴展LV的大小,就需要創建其他PV,並將其加入VG,擴展VG,再擴展LV的物理邊界,進而擴展LV的邏輯邊界: [root@wsh ~]# pvcreate /dev/sdb2 #將/dev/sdb2創建爲PV Physical volume "/dev/sdb2" successfully created [root@wsh ~]# pvs #查看PV PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- 5.01g 0 /dev/sdb2 lvm2 a-- 5.01g 5.01g /dev/sdc1 myvg lvm2 a-- 5.01g 16.00m [root@wsh ~]# vgextend myvg /dev/sdb2 #將/dev/sdb2加入VG Volume group "myvg" successfully extended [root@wsh ~]# vgs #查看VG,增加了5G VG #PV #LV #SN Attr VSize VFree myvg 3 1 0 wz--n- 15.02g 5.02g [root@wsh ~]# umount /dev/mapper/myvg-lv1 #卸載lv1,爲以後擴展作準備 [root@wsh ~]# lvextend -L 15G /dev/mapper/myvg-lv1 #擴展lv1的物理邊界 Extending logical volume lv1 to 15.00 GiB Logical volume lv1 successfully resized [root@wsh ~]# lvs #查看LV,物理邊界已擴展至15G LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv1 myvg -wi-a----- 15.00g [root@wsh ~]# e2fsck -f /dev/mapper/myvg-lv1 #強行檢測lv1的文件系統 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 /dev/mapper/myvg-lv1: 11/655360 files (0.0% non-contiguous), 77935/2621440 blocks [root@wsh ~]# resize2fs /dev/mapper/myvg-lv1 #上面檢測無問題,擴展其邏輯邊界至物理邊界 resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/myvg-lv1 to 3932160 (4k) blocks. The filesystem on /dev/mapper/myvg-lv1 is now 3932160 blocks long. [root@wsh ~]# mount /dev/mapper/myvg-lv1 /mnt/ #掛載 [root@wsh ~]# fd -lh #查看其大小,已擴展爲15G -bash: fd: command not found [root@wsh ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda2 49G 3.6G 43G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 97M 30M 63M 32% /boot /dev/mapper/myvg-lv1 15G 146M 14G 2% /mnt
12.縮減LV大小
#縮減LV的前提:至少能夠容納原來的數據 #步驟: # 1.縮減LV的邏輯邊界 # 2.縮減LV的物理邊界 [root@wsh ~]# cp /etc/fstab /mnt/ #複製fstab至/mnt下 [root@wsh ~]# ls /mnt/ #查看/mnt下文件 fstab lost+found [root@wsh ~]# umount /dev/mapper/myvg-lv1 #卸載/lv1 [root@wsh ~]# e2fsck -f /dev/mapper/myvg-lv1 #強行檢測lv1文件系統 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 /dev/mapper/myvg-lv1: 12/983040 files (0.0% non-contiguous), 98945/3932160 blocks [root@wsh ~]# resize2fs /dev/mapper/myvg-lv1 10G #檢測無問題,將lv1邏輯邊界縮減至10G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/myvg-lv1 to 2621440 (4k) blocks. The filesystem on /dev/mapper/myvg-lv1 is now 2621440 blocks long. [root@wsh ~]# mount /dev/mapper/myvg-lv1 /mnt/ #掛載lv1,大小爲10G [root@wsh ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda2 49G 3.6G 43G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 97M 30M 63M 32% /boot /dev/mapper/myvg-lv1 9.9G 144M 9.3G 2% /mnt [root@wsh ~]# lvs #查看lv1物理邊界,依然爲15G LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv1 myvg -wi-ao---- 15.00g [root@wsh ~]# lvreduce -L 10G /dev/mapper/myvg-lv1 #縮減lv1的物理邊界至10G WARNING: Reducing active and open logical volume to 10.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv1? [y/n]: y #提示是否確認縮減 Reducing logical volume lv1 to 10.00 GiB Logical volume lv1 successfully resized [root@wsh ~]# lvs #lv1物理邊界已縮減至10G,至此縮減完成 LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv1 myvg -wi-ao---- 10.00g [root@wsh ~]# cat /mnt/fstab #查看fstab文件正常 # # /etc/fstab # Created by anaconda on Wed Apr 30 18:22:17 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=6229f8ea-4270-43c5-b5cf-0df08f0613e6 / ext4 defaults 1 1 UUID=9cded63a-de55-49d5-9bf5-3a023619dc22 /boot ext4 defaults 1 2 UUID=97c1673e-18b8-4d3f-b443-14b3074e51f1 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/myvg/lv1 /users ext4 defaults 0 0
13.縮減VG
# 1.確認要移除的pv
# 2.將該pv中的數據轉移至同組vg的其他pv中
# 3.從vg中移除該pv,實現vg的縮減
#下面以移除/dev/sdb2爲例:
[root@wsh ~]# pvs #查看/dev/sdb2剩餘空間爲0 PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- 5.01g 5.01g /dev/sdb2 myvg lvm2 a-- 5.01g 0 /dev/sdc1 myvg lvm2 a-- 5.01g 4.00m [root@wsh ~]# pvmove /dev/sdb2 #轉移/dev/sdb2的數據 /dev/sdb2: Moved: 0.2% /dev/sdb2: Moved: 12.8% /dev/sdb2: Moved: 25.9% /dev/sdb2: Moved: 39.0% /dev/sdb2: Moved: 52.0% /dev/sdb2: Moved: 65.6% /dev/sdb2: Moved: 78.9% /dev/sdb2: Moved: 91.6% /dev/sdb2: Moved: 100.0% [root@wsh ~]# pvs #查看數據已全部轉移 PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- 5.01g 0 /dev/sdb2 myvg lvm2 a-- 5.01g 5.01g /dev/sdc1 myvg lvm2 a-- 5.01g 4.00m [root@wsh ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 3 2 1 wz--n- 15.02g 5.01g [root@wsh ~]# vgreduce myvg /dev/sdb2 #移除/dev/sdb2 Removed "/dev/sdb2" from volume group "myvg" [root@wsh ~]# vgs #VG已成功縮減 VG #PV #LV #SN Attr VSize VFree myvg 2 2 1 wz--n- 10.02g 4.00m [root@wsh ~]# mount /dev/mapper/myvg-lv1 /mnt/ [root@wsh ~]# cat /mnt/fstab #文件訪問正常 # # /etc/fstab # Created by anaconda on Wed Apr 30 18:22:17 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=6229f8ea-4270-43c5-b5cf-0df08f0613e6 / ext4 defaults 1 1 UUID=9cded63a-de55-49d5-9bf5-3a023619dc22 /boot ext4 defaults 1 2 UUID=97c1673e-18b8-4d3f-b443-14b3074e51f1 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/myvg/lv1 /users ext4 defaults 0 0
14.刪除不用的PV
[root@wsh ~]# pvs #查看所有pv,/dev/sdb2依然存在 PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- 5.01g 0 /dev/sdb2 lvm2 a-- 5.01g 5.01g /dev/sdc1 myvg lvm2 a-- 5.01g 4.00m [root@wsh ~]# pvremove /dev/sdb2 #刪除該pv Labels on physical volume "/dev/sdb2" successfully wiped [root@wsh ~]# pvs #查看/dev/sdb2已從PV中刪除 PV VG Fmt Attr PSize PFree /dev/sdb1 myvg lvm2 a-- 5.01g 0 /dev/sdc1 myvg lvm2 a-- 5.01g 4.00m
15.創建快照卷
#前提: # 1.快照卷和原卷在同一卷組,要確認創建的快照卷大小不能大於卷組的剩餘空間 # 2.生命週期爲整個數據的時長,在這段時間內,數據的增量不能超過快照卷的大小 # 3.快照卷應該是隻讀的 [root@wsh ~]# lvcreate -L 10M -s -p r -n lv1-snap /dev/mapper/myvg-lv1 #-s指定創建快照卷,-p r指定快照卷爲只讀,-n指定快照卷名稱 Rounding up size to full physical extent 12.00 MiB Logical volume "lv1-snap" created [root@wsh ~]# lvs #查看LV LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv1 myvg owi-aos--- 10.00g lv1-snap myvg sri-a-s--- 12.00m lv1 0.10 [root@wsh ~]# mount -o ro /dev/myvg/lv1-snap /media/ [root@wsh ~]# df -lh #查看掛載的文件系統使用信息 Filesystem Size Used Avail Use% Mounted on /dev/sda2 49G 3.6G 43G 8% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 97M 30M 63M 32% /boot /dev/mapper/myvg-lv1 9.9G 144M 9.3G 2% /mnt /dev/mapper/myvg-lv1--snap 9.9G 144M 9.3G 2% /media#創建的10M的快照卷顯示的大小和原卷大小一樣 [root@wsh ~]# ls /media/ #查看快照卷有哪些文件 fstab lost+found [root@wsh ~]# ls /mnt/ #查看原卷有哪些文件 fstab lost+found [root@wsh ~]# cp /etc/inittab /mnt/ #複製文件至原卷 [root@wsh ~]# ls /mnt/ #查看原卷文件 fstab inittab lost+found [root@wsh ~]# ls /media/ #查看快照卷文件 fstab lost+found
#snapshot簡述: # 1.snapshot僅對LVM有效 # 2.用於保證數據狀態的一致性,進而對數據進行備份 # 3.簡單原理描述:原卷中將要改變的數據,在改變之前複製一份到快照卷,未改變的數據依然存#放在原卷,這樣,通過快照卷可以訪問改變前的數據,而且如果通過快照訪問未改變的數據時,是通#過重定向到原卷訪問的(這樣通過snapshot就保持了數據改變前的狀態的一致性);通過原卷只能訪#問改變後的數據和未改變的數據。
#更過詳細原理,請參照:http://blog.chinaunix.net/uid-8650524-id-6166.html
16.歸檔備份lv1數據
#我們先移除lv1-snap,然後演示將快照卷的數據歸檔壓縮備份
[root@wsh /]# umount /dev/myvg/lv1-snap #卸載快照卷 [root@wsh /]# lvremove /dev/myvg/lv1-snap #lvremove命令刪除快照卷 Do you really want to remove active logical volume lv1-snap? [y/n]: y Logical volume "lv1-snap" successfully removed [root@wsh /]# cp /etc/{fstab,inittab} /mnt/ #複製文件至原卷 [root@wsh /]# lvcreate -L 10M -s -p r -n lv1-snap /dev/myvg/lv1 #對原卷創建快照 Rounding up size to full physical extent 12.00 MiB Logical volume "lv1-snap" created [root@wsh /]# mount /dev/myvg/lv1-snap /media/ #掛載快照卷至/media mount: block device /dev/mapper/myvg-lv1--snap is write-protected, mounting read-only [root@wsh /]# cd /media/ [root@wsh media]# ls fstab inittab lost+found [root@wsh media]# tar -Jcf /tmp/backup.tar.xz fstab inittab #歸檔壓縮數據做備份 [root@wsh media]# ls /tmp/ | grep "backup.tar.xz" #確認備份數據 backup.tar.xz [root@wsh media]# tar -tf /tmp/backup.tar.xz #備份內容正確 fstab inittab #快照卷中數據備份完成之後,快照卷就可以用lvremove命令刪除了。
17.刪除不用的lv,vg及pv
[root@wsh /]# lvremove /dev/myvg/lv1 #刪除lv Do you really want to remove active logical volume lv1? [y/n]: y Logical volume "lv1" successfully removed [root@wsh /]# lvs [root@wsh /]# vgremove myvg #刪除vg Volume group "myvg" successfully removed [root@wsh /]# vgs No volume groups found [root@wsh /]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 5.01g 5.01g /dev/sdc1 lvm2 a-- 5.01g 5.01g [root@wsh /]# pvremove /dev/sdb1 #刪除pv Labels on physical volume "/dev/sdb1" successfully wiped [root@wsh /]# pvremove /dev/sdc1 #刪除pv Labels on physical volume "/dev/sdc1" successfully wiped