LVM:Logical Volume Manager(邏輯卷管理)
許多Linux使用者安裝操作系統時都會遇到這樣的困境:如何精確評估和分配各個硬盤分區的容量,如果當初評估不準確,一旦系統分區不夠用時可能不得不備份、刪除相關數據,甚至被迫重新規劃分區並重裝操作系統,以滿足應用系統的需要。
LVM是Linux環境中對磁盤分區進行管理的一種機制,是建立在硬盤和分區之上、文件系統之下的一個邏輯層,可提高磁盤分區管理的靈活性。RHEL5默認安裝的分區格式就是LVM邏輯卷的格式,需要注意的是/boot分區不能基於LVM創建,必須獨立出來。
LVM包含:PV、VG、LV
PV:Physical Volume
這是LVM最低層設備,即多塊物理磁盤。
VG:Volume group
使用多塊物理磁盤來組成卷組,便於KVM做卷管理,但此時還不能直接使用,相當於擴展分區。
LV:logical Volume
LV則是將VG創建爲邏輯卷,來供使用。在一個VG中可以創建多個邏輯卷。
因此,當LV不夠用的時候,即可以在不超過VG邊界的情況下擴展,而VG不夠用的時候,則只需要在VG中添加PV即可。
PV管理命令
pvcreate:創建PV
pv在沒有加入vg時,沒有PE信息。
pvs:顯示PV信息
pvdisplay /dev/vdb:顯示pv詳細信息
pvcsan:查看系統有多少pv
pvremove:清除pv上的數據
pvmove:移動pv上的數據到目標pv
VG管理命令
vgcreate:創建vg
-s #:創建時指定PE大小,默認爲4M
vgremove:刪除vg
vgs:顯示vg信息
vgdisplay:顯示vg詳細信息
vgextend:擴展vg即增加pv進vg
vgreduce:縮減vg即刪除pv
vgscan:查看系統上的vg
LV管理命令
lvcreate:創建lv
-n:指定lv名稱
-L:指定lv大小
lvremove:刪除lv
lvextend:擴展lv
lvreduce:縮減lv
lvresize:減小ls
lvs:顯示lv信息
創建PV,3G、2G、4G的三個PV
#使用fdisk創建三個分區,需要把分區類型修改爲8e [root@liang-study ~]# fdisk /dev/vdb /dev/vdb5 1 6243 3146409 83 Linux /dev/vdb6 6244 10405 2097616+ 83 Linux /dev/vdb7 10406 18728 4194760+ 83 Linux #修改分區類型 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) Device Boot Start End Blocks Id System /dev/vdb5 1 6243 3146409 8e Linux LVM /dev/vdb6 6244 10405 2097616+ 8e Linux LVM /dev/vdb7 10406 18728 4194760+ 8e Linux LVM #手動使內核重讀文件系統 [root@liang-study ~]# partprobe /dev/vdb [root@liang-study ~]# cat /proc/partitions 252 21 3146409 vdb5 252 22 2097616 vdb6 252 23 4194760 vdb7 #創建PV [root@liang-study ~]# pvcreate /dev/vdb5 /dev/vdb6 /dev/vdb7 Physical volume "/dev/vdb5" successfully created Physical volume "/dev/vdb6" successfully created Physical volume "/dev/vdb7" successfully created [root@liang-study ~]# pvs PV VG Fmt Attr PSize PFree /dev/vdb5 lvm2 ---- 3.00g 3.00g /dev/vdb6 lvm2 ---- 2.00g 2.00g /dev/vdb7 lvm2 ---- 4.00g 4.00g
創建vg
#創建vg [root@liang-study ~]# vgcreate liangstudy /dev/vdb5 /dev/vdb6 Volume group "liangstudy" successfully created [root@liang-study ~]# vgs VG #PV #LV #SN Attr VSize VFree liangstudy 2 0 0 wz--n- 4.99g 4.99g [root@liang-study ~]# vgdisplay liangstudy --- Volume group --- VG Name liangstudy 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 4.99 GiB PE Size 4.00 MiB Total PE 1278 Alloc PE / Size 0 / 0 Free PE / Size 1278 / 4.99 GiB VG UUID 7E2oE3-j6hl-QAmF-tfhv-Qa89-KL40-Fs1D1l #移除vg [root@liang-study ~]# vgremove liangstudy Volume group "liangstudy" successfully removed #縮減vg [root@liang-study ~]# vgreduce liangstudy /dev/vdb6 Removed "/dev/vdb6" from volume group "liangstudy" #擴展vg [root@liang-study ~]# vgextend liangstudy /dev/vdb6 Volume group "liangstudy" successfully extended
創建lv
#創建lv [root@liang-study ~]# lvcreate -n lianglv -L 50M liangstudy Rounding up size to full physical extent 56.00 MiB Logical volume "lianglv" created. [root@liang-study ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lianglv liangstudy -wi-a----- 56.00m #格式化lv [root@liang-study ~]# mke2fs -j /dev/liangstudy/lianglv #掛載lv [root@liang-study ~]# mount /dev/liangstudy/lianglv /mnt [root@liang-study ~]# df -Ph Filesystem Size Used Avail Use% Mounted on /dev/vda2 30G 3.3G 25G 12% / tmpfs 939M 0 939M 0% /dev/shm /dev/vda1 190M 58M 122M 33% /boot /dev/vda4 45G 210M 43G 1% /home /dev/mapper/liangstudy-lianglv 55M 5.0M 47M 10% /mnt #移除lv [root@liang-study ~]# lvremove /dev/liangstudy/lianglv Do you really want to remove active logical volume lianglv? [y/n]: y Logical volume "lianglv" successfully removed 注:移除前要求先卸載mount
擴展邏輯卷
擴展邏輯卷需要先擴展物理邊界,再擴展邏輯邊界。
lvextend
-L [+]#:[擴展了]擴展到#大小。
resize2fs -p
#掛載邏輯卷 [root@liang-study ~]# mount /dev/mapper/liangstudy-lianglv /lvtest/ #複製文件到掛載點,以便測試 [root@liang-study ~]# cp /var/log/messages /lvtest/ [root@liang-study ~]# cp /var/log/lastlog /lvtest/ 查看文件系統使用情況,將lvtest邏輯卷擴展到2G [root@liang-study lvtest]# df -Ph Filesystem Size Used Avail Use% Mounted on /dev/vda2 30G 3.3G 25G 12% / tmpfs 939M 0 939M 0% /dev/shm /dev/vda1 190M 58M 122M 33% /boot /dev/vda4 45G 210M 43G 1% /home /dev/mapper/liangstudy-lianglv 55M 5.0M 47M 10% /lvtest #擴展邏輯卷,物理邊界,擴展前一定要確認vg中剩餘空間大於要擴展的空間 [root@liang-study lvtest]# lvextend -L 2G /dev/liangstudy/lianglv Size of logical volume liangstudy/lianglv changed from 56.00 MiB (7 extents) to 2.00 GiB (256 extents). Logical volume lianglv successfully resized. 注:此時使用df -Ph查看lvtest,文件系統大小依然爲55M。因爲這裏擴展的是物理邊界,這裏顯示的不是lv的大小,此時通過lvs查看,即可看到大小已經添加 [root@liang-study lvtest]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lianglv liangstudy -wi-ao---- 2.00g #擴展邏輯卷,邏輯邊界 [root@liang-study lvtest]# resize2fs -p /dev/liangstudy/lianglv resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/liangstudy/lianglv is mounted on /lvtest; on-line resizing required old desc_blocks = 1, new_desc_blocks = 8 Performing an on-line resize of /dev/liangstudy/lianglv to 2097152 (1k) blocks. The filesystem on /dev/liangstudy/lianglv is now 2097152 blocks long. [root@liang-study lvtest]# df -PH Filesystem Size Used Avail Use% Mounted on /dev/vda2 32G 3.5G 27G 12% / tmpfs 985M 0 985M 0% /dev/shm /dev/vda1 199M 61M 128M 33% /boot /dev/vda4 49G 220M 46G 1% /home /dev/mapper/liangstudy-lianglv 2.1G 7.0M 2.0G 1% /lvtest #查看之前複製的文件 [root@liang-study lvtest]# tail -2 /lvtest/messages Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): using internal journal Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): mounted filesystem with ordered data mode
縮減邏輯卷
縮減邏輯卷需要先縮減邏輯邊界,再縮減物理邊界。不能在線縮減,要先卸載。縮減操作非常危險
在縮減之前應該先檢查文件系統
resize2fs -p
lvreduce
-L [-]#:[擴展了]擴展到#大小。
#卸載文件系統 [root@liang-study ~]# umount /lvtest/ #強行監測文件系統 [root@liang-study ~]# e2fsck -f /dev/liangstudy/lianglv 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/liangstudy/lianglv: 13/524288 files (7.7% non-contiguous), 72967/2097152 blocks #縮減lv的邏輯邊界,將lvtest邏輯捲縮減至1G [root@liang-study ~]# resize2fs /dev/liangstudy/lianglv 1G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/liangstudy/lianglv to 1048576 (1k) blocks. The filesystem on /dev/liangstudy/lianglv is now 1048576 blocks long. #縮減lv物理邊界 [root@liang-study ~]# lvreduce -L 1G /dev/liangstudy/lianglv WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce liangstudy/lianglv? [y/n]: y Size of logical volume liangstudy/lianglv changed from 2.00 GiB (256 extents) to 1.00 GiB (128 extents). Logical volume lianglv successfully resized. #重新掛在文件系統 [root@liang-study ~]# mount /dev/liangstudy/lianglv /lvtest/ #查看文件是否正常 [root@liang-study lvtest]# tail -2 messages Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): using internal journal Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): mounted filesystem with ordered data mode
邏輯卷快照
lvcreate:快照卷創建大小應該大於快照卷聲明週期內數據增長量
-s:指定創建快照卷
-p r|w:指定快照卷權限,快照卷必須創建在原卷同一vg中,快照卷應該爲只讀的
#創建快照卷 [root@liang-study /]# lvcreate -L 50M -n lvtest-snap -s -p r /dev/liangstudy/lianglv Rounding up size to full physical extent 56.00 MiB Logical volume "lvtest-snap" created. #查看快照卷 [root@liang-study /]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lianglv liangstudy owi-aos--- 1.00g lvtest-snap liangstudy sri-a-s--- 56.00m lianglv 0.02 #掛在快照卷 [root@liang-study /]# mount /dev/liangstudy/lvtest-snap /lvtest-snap/ mount: block device /dev/mapper/liangstudy-lvtest--snap is write-protected, mounting read-only #對源文件進行修改 [root@liang-study lvtest-snap]# echo "new line." >> /lvtest/messages #備份快照卷 [root@liang-study lvtest-snap]# tar -zcf /tmp/lvtest.tar.gz lastlog messages #刪除快照卷 [root@liang-study ~]# lvremove /dev/liangstudy/lvtest-snap Do you really want to remove active logical volume lvtest-snap? [y/n]: y Logical volume "lvtest-snap" successfully removed #模擬源文件損壞 [root@liang-study ~]# rm -rf /lvtest/lastlog /lvtest/messages #恢復快照 [root@liang-study ~]# tar -zxvf /tmp/lvtest.tar.gz -C /lvtest/ #查看文件恢復情況 [root@liang-study lvtest]# tail -2 messages Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): using internal journal Dec 27 17:59:21 liang-study kernel: EXT3-fs (dm-0): mounted filesystem with ordered data mode 可以看到,恢復的狀態即爲快照備份的狀態。之後的修改因爲沒有增量備份,因此不能恢復。