為什么要用LVM?
想象一個示例,如果我們給定的分區是50G,過段時間發現空間不夠用,此時我們就要重新加一塊新硬盤,重新分區格式化,將原來分區上的數據復制過來,再重新掛載,整個過程會非常麻煩,LVM可以很有效的解決這個問題
LVM簡介
及邏輯卷(Logical Volume Manager)管理,它的突出重點在于可以彈性收縮filesystem的容量,可以將多塊物理硬盤整合成一個整體,這樣看就像是一塊磁盤一樣,而且還可以添加或刪除硬盤到這個整體中,實現彈性磁盤空間。
PV:物理卷(Physical Volume)
PV物理卷就是指硬盤區分或從邏輯上與磁盤分區具有同樣功能的設備,是LVM的基本存儲邏輯塊。
VG:卷組(Volume Group)
其內部是由多個物理卷組合而成的一個整體空間,可有一個或多個物理卷組成
LV:邏輯卷(Logical Volume)
邏輯卷類似于系統中的硬盤分區,在邏輯卷上可以創建文件系統并使用
dm:Device Mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊
/dev/dm#
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vo10-root
/dev/VG_NAME/LV_NAME
/dev/vo10/root
pv管理工具:
pvs:查看pv簡要信息
pvdisplay:查看pv詳細信息
pvcreate /dev/DEVICE:創建pv
pvmove /dev/DEVICEE:將指定pv的數據移至其他pv
pvremove /dev/DEVICE:移除指定的pv
vg管理工具:
vgs:查看vg簡要信息
vgdisplay:查看vg詳細信息
vgcreate VolumeGroupName PhysicalDevicePath… 創建卷組
vgextend VolumeGroupName PhysicalDevicePath… 擴展卷組
vgreduce VolumeGroupName PhysicalDevicePath… 縮減卷組
縮減前先做pvmove
vgremove VG_NAME:移除卷組
lv管理工具:
lvs:查看lv簡要信息
lvdisplay:查看lv詳細信息
lvcreate -L #[mMgGtT] -n LV_NAME VolumeGroup 創建lv
lvremove /dev/VG_NAME/LV_NAME
擴展邏輯卷:
lvextend -L [+]#[mGgGtT] /dev/VG_NAME/LV_NAME 擴展邏輯卷
resize2fs /dev/VG_NAME/LV_NAME 擴展文件系統
縮減邏輯卷:
umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount /dev/VG_NAME/LV_NAME /point
創建LVM
1.創建pv物理卷
[root@CentOS6 ~]# pvcreate /dev/sd{b,c} Physical volume "/dev/sdb" successfully created Physical volume "/dev/sdc" successfully created [root@CentOS6 ~]# pvs #此時pv還不屬于任何卷組 PV VG Fmt Attr PSize PFree /dev/sdb lvm2 ---- 20.00g 20.00g /dev/sdc lvm2 ---- 20.00g 20.00g [root@CentOS6 ~]#
2.創建vg卷組
[root@CentOS6 ~]# vgcreate myvg /dev/sd{b,c} #創建名字為myvg的卷組 Volume group "myvg" successfully created [root@CentOS6 ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 39.99g 39.99g [root@CentOS6 ~]# pvs #兩個pv屬于卷組myvg PV VG Fmt Attr PSize PFree /dev/sdb myvg lvm2 a--u 20.00g 20.00g /dev/sdc myvg lvm2 a--u 20.00g 20.00g [root@CentOS6 ~]#
3.創建lv邏輯卷
[root@CentOS6 ~]# lvcreate -L 20G -n mylv myvg Logical volume "mylv" created. [root@CentOS6 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 20.00g [root@CentOS6 ~]#
4.創建文件系統
[root@CentOS6 ~]# mke2fs -t ext4 -b 2048 -m 3 -L MYLV /dev/myvg/mylv mke2fs 1.41.12 (17-May-2010) Filesystem label=MYLV OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 10485760 blocks 314572 blocks (3.00%) reserved for the super user First data block=0 Maximum filesystem blocks=547356672 640 block groups 16384 blocks per group, 16384 fragments per group 2048 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312, 5619712, 10240000 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@CentOS6 ~]# blkid /dev/myvg/mylv /dev/myvg/mylv: LABEL="MYLV" UUID="26fd05b4-b59e-4c65-b9f5-03bb4749912a" TYPE="ext4" [root@CentOS6 ~]#
5.掛載使用
[root@CentOS6 ~]# mount -a [root@CentOS6 ~]# mount | tail -1 /dev/mapper/myvg-mylv on /mnt/lv type ext4 (rw) [root@CentOS6 ~]# cd /mnt/lv/ [root@CentOS6 lv]# cp /etc/fstab ./ [root@CentOS6 lv]# cat fstab # # /etc/fstab # Created by anaconda on Thu Jul 21 15:34:03 2016 # # 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=f4d977bb-af76-4617-b07f-9c70ae42a056 / ext4 defaults 1 1 UUID=7907abdd-41cd-4609-8392-80e4a88c5b4c /boot ext4 defaults 1 2 UUID=50054489-14c8-4e49-a912-2ff368371653 /testdir ext4 defaults 1 2 UUID=d9f41da6-9df2-410f-8074-500425b26a3d 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 //10.1.250.60/share /root/mount cifs username=share,password=zhaizong 0 0 /dev/sr0 /media/cdrom iso9660 defaults 0 0 LABEL=MYLV /mnt/lv ext4 defaults 0 0 [root@CentOS6 lv]#
擴展卷組
[root@CentOS6 ~]# pvcreate /dev/sdd #添加一個pv Physical volume "/dev/sdd" successfully created [root@CentOS6 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb myvg lvm2 a--u 20.00g 0 /dev/sdc myvg lvm2 a--u 20.00g 19.99g /dev/sdd lvm2 ---- 20.00g 20.00g [root@CentOS6 ~]# vgextend myvg /dev/sdd #擴展卷組 Volume group "myvg" successfully extended [root@CentOS6 ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 3 1 0 wz--n- 59.99g 39.99g [root@CentOS6 ~]#
縮減卷組
[root@CentOS6 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb myvg lvm2 a--u 20.00g 0 /dev/sdc myvg lvm2 a--u 20.00g 19.99g /dev/sdd myvg lvm2 a--u 20.00g 20.00g [root@CentOS6 ~]# pvmove /dev/sdb #先將指定pv上的空間移至其他pv /dev/sdb: Moved: 0.1% /dev/sdb: Moved: 85.2% /dev/sdb: Moved: 100.0% [root@CentOS6 ~]# vgreduce myvg /dev/sdb #從卷組中移除指定pv Removed "/dev/sdb" from volume group "myvg" [root@CentOS6 ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 1 0 wz--n- 39.99g 19.99g [root@CentOS6 ~]# pvremove /dev/sdb Labels on physical volume "/dev/sdb" successfully wiped [root@CentOS6 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdc myvg lvm2 a--u 20.00g 19.99g /dev/sdd myvg lvm2 a--u 20.00g 0 [root@CentOS6 ~]#
擴展lv
[root@CentOS6 ~]# lvs #當前lv為20G空間大小 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 20.00g [root@CentOS6 ~]# lvextend -L 30G /dev/myvg/mylv #擴展lv Size of logical volume myvg/mylv changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents). Logical volume mylv successfully resized. [root@CentOS6 ~]# resize2fs /dev/myvg/mylv 30G #擴展文件系統至30G resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/myvg/mylv is mounted on /mnt/lv; on-line resizing required old desc_blocks = 10, new_desc_blocks = 15 Performing an on-line resize of /dev/myvg/mylv to 15728640 (2k) blocks. The filesystem on /dev/myvg/mylv is now 15728640 blocks long. [root@CentOS6 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 30.00g [root@CentOS6 ~]# df -hP |tail -1 #擴展成功 /dev/mapper/myvg-mylv 30G 15M 29G 1% /mnt/lv 擴展可以不用卸載文件系統
縮減lv
[root@CentOS6 ~]# umount /dev/myvg/mylv #第一步先卸載文件系統 [root@CentOS6 ~]# fsck -f /dev/myvg/mylv #強制檢測文件系統 fsck from util-linux-ng 2.17.2 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 MYLV: 12/1966080 files (0.0% non-contiguous), 288304/15728640 blocks [root@CentOS6 ~]# resize2fs /dev/myvg/mylv 10G #縮減文件系統至10G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/myvg/mylv to 5242880 (2k) blocks. The filesystem on /dev/myvg/mylv is now 5242880 blocks long. [root@CentOS6 ~]# lvreduce -L 10G /dev/ #縮減物理卷 Display all 215 possibilities? (y or n) [root@CentOS6 ~]# lvreduce -L 10G /dev/myvg/mylv WARNING: Reducing active logical volume to 10.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myvg/mylv? [y/n]: y Size of logical volume myvg/mylv changed from 30.00 GiB (7680 extents) to 10.00 GiB (2560 extents). Logical volume mylv successfully resized. [root@CentOS6 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 10.00g [root@CentOS6 ~]# mount /dev/myvg/mylv /mnt/lv/ #重新掛載邏輯卷,大小已縮減為10G [root@CentOS6 ~]# df -hP | tail -1 /dev/mapper/myvg-mylv 9.8G 13M 9.5G 1% /mnt/lv
刪除邏輯卷
[root@CentOS6 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 10.00g [root@CentOS6 ~]# lvremove /dev/myvg/mylv #刪除邏輯卷mylv Do you really want to remove active logical volume mylv? [y/n]: y Logical volume "mylv" successfully removed [root@CentOS6 ~]# lvs [root@CentOS6 ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 39.99g 39.99g [root@CentOS6 ~]# vgremove myvg #刪除卷組myvg Volume group "myvg" successfully removed [root@CentOS6 ~]# vgs [root@CentOS6 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdc lvm2 ---- 20.00g 20.00g /dev/sdd lvm2 ---- 20.00g 20.00g [root@CentOS6 ~]# pvremove /dev/sd{c,d} #刪除所有pv Labels on physical volume "/dev/sdc" successfully wiped Labels on physical volume "/dev/sdd" successfully wiped [root@CentOS6 ~]# pvs [root@CentOS6 ~]#
快照卷
快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享
如何創建快照卷
lvcreate -L #[mMgGtT] -p r -n snapshot_lv_name -s original_lv_name
1.創建快照卷
[root@CentOS6 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 10.00g [root@CentOS6 ~]# lvcreate -L 2G -p r -n mulv_snap -s /dev/myvg/mylv #為mylv邏輯卷創建快照卷 Logical volume "mulv_snap" created. [root@CentOS6 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mulv_snap myvg sri-a-s--- 2.00g mylv 0.00 mylv myvg owi-aos--- 10.00g [root@CentOS6 ~]# mkdir /mnt/snap [root@CentOS6 ~]# mount /dev/myvg/mulv_snap /mnt/snap/ #掛載快照卷 mount: block device /dev/mapper/myvg-mulv_snap is write-protected, mounting read-only [root@CentOS6 ~]# cd /mnt/snap/ [root@CentOS6 snap]# ls fstab lost+found
2.恢復快照卷
[root@CentOS6 lv]# ls fstab lost+found [root@CentOS6 lv]# rm -rf fstab #原有的mylv中的數據丟失 [root@CentOS6 lv]# ls lost+found [root@CentOS6 lv]# cp -r /mnt/snap/* ./ #把快照卷當中數據復制回來即可 cp: overwrite `./fstab'? y [root@CentOS6 lv]# ls fstab lost+found [root@CentOS6 lv]#
3.刪除快照卷
[root@CentOS6 lv]# umount /mnt/snap/ #先卸載快照卷 [root@CentOS6 lv]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mulv_snap myvg sri-a-s--- 2.00g mylv 0.00 mylv myvg owi-aos--- 10.00g [root@CentOS6 lv]# lvremove /dev/myvg/mulv_snap #刪除快照卷 Do you really want to remove active logical volume mulv_snap? [y/n]: y Logical volume "mulv_snap" successfully removed [root@CentOS6 lv]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 10.00g [root@CentOS6 lv]#
原創文章,作者:zhai796898,如若轉載,請注明出處:http://www.www58058.com/42720