邏輯卷管理器 LVM
lvm概述
LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,又譯為邏輯卷宗管理器、邏輯扇區管理器、邏輯磁盤管理器。是Linux核心所提供的邏輯卷管理(Logical Volume Management)功能。它在硬盤的硬盤分區之上,又創建了一個邏輯層以方便系統管理硬盤分區系統。
物理卷(PV,Physical Volume):
物理卷就是指磁盤,磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(VG,Volume Group):
LVM卷組類似于非LVM系統中的物理硬盤,其由物理卷組成??梢栽诰斫M上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(LV,Logical Volume):
LVM的邏輯卷類似于非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
dm:device mapper 設備映射組件,講一個或多個底層設備組織成一個邏輯設備的模塊;
lvm:邏輯卷管理器
為了演示操作我們首先創建一個分區
[root@localhost ~]# fdisk /dev/sdd
調整分區屬性:
pv管理工具:
pvs:簡要pv顯示工具
pvdisplay:顯示pv詳細信息
[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 (pv名稱) VG Name vg0 (卷組名稱) PV Size 60.00 GiB / not usable 8.00 MiB (大?。? Allocatable yes PE Size 8.00 MiB (PE 大小) Total PE 7679 (多少個PE) Free PE 1023 Allocated PE 6656 PV UUID lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz
創建pv工具:
pvcreate /dev/DEVICE
[root@localhost ~]# pvcreate -v /dev/sdd1 Wiping cache of LVM-capable devices Set up physical volume for "/dev/sdd1" with 20980827 available sectors Zeroing start of device /dev/sdd1 Writing physical volume data to disk "/dev/sdd1" Physical volume "/dev/sdd1" successfully created 這里的-v顯示過程信息;
創建完成查看:
[root@localhost ~]# pvdisplay /dev/sdd1 "/dev/sdd1" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sdd1 VG Name PV Size 10.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID ywKdX1-XnNt-dY7C-lBO2-ochy-Podm-xFAxwb 這里由于沒有加入VG,所以PE Size為0,VG Name為空;
創建PV完成,順便說一下PV的刪除:pvremove
[root@localhost ~]# pvremove /dev/sdd1 Labels on physical volume "/dev/sdd1" successfully wiped
再次查看PV就只剩下原來的PV了,我們已經把 PV Name 為/dev/sdd1的PV刪除了
[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 lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz [root@localhost ~]#
PV 創建完成后接下來我們看下VG的創建:
1)顯示卷組
[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 Qk4MX1-IDP7-ob8t-4S9U-WknH-3KqW-mYkXP5
創建VG:
vgcreate [-s PhysicalExtent- Size[mMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [Physi-calDevicePath…]
[root@localhost ~]# vgcreate myvg /dev/sdd1 Volume group "myvg" successfully created
查看一下:
[root@localhost ~]# vgdisplay --- Volume group --- VG Name myvg 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 10.00 GiB PE Size 4.00 MiB Total PE 2560 Alloc PE / Size 0 / 0 Free PE / Size 2560 / 10.00 GiB VG UUID ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf PE大小在創建后固定不可更改,要指明大小使用-s選項;
VG創建完成可以對VG擴展(vgextend)或者縮減(vgreduce);
擴展VG:
1)擴展要添加新的PV
[root@localhost ~]# fdisk /dev/sdd (創建一個新的分區) 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/sdd: 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: 0x191fb9c7 Device Boot Start End Blocks Id System /dev/sdd1 1 1306 10490413+ 8e Linux LVM Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (1307-2610, default 1307): Using default value 1307 Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +5G Command (m for help): p Disk /dev/sdd: 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: 0x191fb9c7 Device Boot Start End Blocks Id System /dev/sdd1 1 1306 10490413+ 8e Linux LVM /dev/sdd2 1307 1960 5253255 83 Linux Command (m for help): t (更改分區屬性8e) 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/sdd: 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: 0x191fb9c7 Device Boot Start End Blocks Id System /dev/sdd1 1 1306 10490413+ 8e Linux LVM /dev/sdd2 1307 1960 5253255 8e Linux LVM
2)擴展VG:
[root@localhost ~]# vgextend myvg /dev/sdd2 (把/dev/sdd2添加到myvg) Physical volume "/dev/sdd2" successfully created Volume group "myvg" successfully extended [root@localhost ~]# vgdisplay myvg (查看myvg ,發現容量已經15G了) --- Volume group --- VG Name myvg 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 15.01 GiB PE Size 4.00 MiB Total PE 3842 Alloc PE / Size 0 / 0 Free PE / Size 3842 / 15.01 GiB VG UUID ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf
VG的縮減:
1)如果/dev/sdd2上有數據我們需要先把數據移走
[root@localhost ~]# pvmove /dev/sdd2 No data to move for myvg (這里我們的分區上沒有數據)
2)使用VGreduce命令:
[root@localhost ~]# vgreduce myvg /dev/sdd2 Removed "/dev/sdd2" from volume group "myvg" [root@localhost ~]# vgdisplay (查看已經縮減到10G了) --- Volume group --- VG Name myvg 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 10.00 GiB PE Size 4.00 MiB Total PE 2560 Alloc PE / Size 0 / 0 Free PE / Size 2560 / 10.00 GiB VG UUID ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf
LV管理工具:
lvs:查看簡要信息
lvdisplay:查看詳細信息
邏輯卷創建:
lvcreate -L #[mMgGtT] -n NAME VolumeGroup (L指明大小 -n 名稱) 注意:這里要創建的大小在卷組必須有足夠空間,否則會創建失敗。 [root@localhost ~]# lvcreate -L 2G -n mylv myvg Logical volume "mylv" created. [root@localhost ~]# ls /dev/mapper/ control myvg-mylv vg0-root vg0-swap vg0-usr vg0-var 創建一個2G的LV,完成后就可以格式化掛載使用了 [root@localhost ~]# mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv [root@localhost ~]# mount /dev/myvg/mylv /backup/ [root@localhost ~]# mount ... /dev/mapper/myvg-mylv on /backup type ext4 (rw)
擴展邏輯卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
-L +#[mMgGtT]與 -L #[mMgGtT]
比如:-L+ 5G 表示擴展5G ,-L 5G 表示擴展后達到5G
[root@localhost ~]# lvextend -L 5G /dev/myvg/mylv Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents). Logical volume mylv successfully resized. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 5.00g
這里我們查看掛載會發現分區大小還是2G,并沒有達到我們擴展后的5G。
[root@localhost ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/myvg-mylv ext4 2.0G 3.1M 1.9G 1% /backup
嘗試重新掛載之后問題并沒有解決,因為擴展LV之后文件系統并沒有隨之擴大,換句話說,邏輯卷大小擴大,文件系統還是原來的大小,這里我們使用的是ext文件系統,需要我們使用resize2fs工具把/dev/myvg/mylv 擴大
[root@localhost ~]# resize2fs /dev/myvg/mylv (沒有指明擴展大小就是默認使用全部大?。? resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/myvg/mylv is mounted on /backup; on-line resizing required old desc_blocks = 8, new_desc_blocks = 20 Performing an on-line resize of /dev/myvg/mylv to 5242880 (1k) blocks. The filesystem on /dev/myvg/mylv is now 5242880 blocks long.
在查看一下:
[root@localhost ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/myvg-mylv ext4 4.9G 3.4M 4.7G 1% /backup 結果已經擴大到5G了。
縮減邏輯卷:
lvreduce
縮減是要先把文件系統大小縮減到指定大小,在縮減LV到指定大小。
縮減邏輯卷步驟:
1)先要卸載:
umount /dev/VG_NAME/LV_NAME [root@localhost ~]# umount /backup/ (卸載掛載) [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg0-root 20511356 343640 19119140 2% / tmpfs 1954260 80 1954180 1% /dev/shm /dev/sda1 194241 39970 144031 22% /boot /dev/mapper/vg0-usr 10190136 1964380 7701468 21% /usr /dev/mapper/vg0-var 20511356 152716 19310064 1% /var /dev/sr0 3824484 3824484 0 100% /media/CentOS_6.8_Final /dev/sr0 3824484 3824484 0 100% /mnt/cdrom
2)文件系統檢測:
e2fsck -f /dev/VG_NAME/LV_NAME (-f 強制檢測和修復) [root@localhost ~]# e2fsck -f /dev/myvg/mylv 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: 11/327680 files (0.0% non-contiguous), 119693/5242880 blocks
3)縮減邏輯邊界:縮減后的容量一定要能容納原有數據。
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] [root@localhost ~]# resize2fs /dev/myvg/mylv 3G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks. The filesystem on /dev/myvg/mylv is now 3145728 blocks long.
4)使用lvreduce命令縮減邏輯卷:
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
[root@localhost ~]# lvreduce -L 3G /dev/myvg/mylv WARNING: Reducing active logical volume to 3.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 5.00 GiB (1280 extents) to 3.00 GiB (768 extents). Logical volume mylv successfully resized.
5)重新掛載使用:
[root@localhost ~]# mount /dev/myvg/mylv /backup/ [root@localhost ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/myvg-mylv ext4 3.0G 3.3M 2.8G 1% /backup
完成
LVM快照
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝。對于需要備份或者復制的現有數據集臨時拷貝以及其它操 作來說,快照是最合適的選擇??煺罩挥性谒鼈兒驮瓉淼倪壿嬀聿煌瑫r才會消耗空間。 在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間。當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快 照中更改的數據。建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。
快照創建:
lvcreate -L #[mMgGtT] -p r -s -n snap_lv_name original_lv_name
-p:指明讀、寫權限
-s:指明是快照
-n:名稱
[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv Logical volume "mylv_snap" created.
復制一個文件到/backup
[root@localhost backup]# cp /etc/issue ./ [root@localhost backup]# ls issue lost+found
創建/dev/myvg/mylv 的快照,名稱為mylv_snap,大小512M,只讀權限
[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv Logical volume "mylv_snap" created.
在/mnt下建立mysnap目錄,
[root@localhost backup]# mkdir /mnt/mysnap
掛載
[root@localhost backup]# mount /dev/myvg/mylv_snap /mnt/mysnap/ mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only [root@localhost backup]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg0-root ext4 20G 336M 19G 2% / tmpfs tmpfs 1.9G 80K 1.9G 1% /dev/shm /dev/sda1 ext4 190M 40M 141M 22% /boot /dev/mapper/vg0-usr ext4 9.8G 1.9G 7.4G 21% /usr /dev/mapper/vg0-var ext4 20G 150M 19G 1% /var /dev/sr0 iso9660 3.7G 3.7G 0 100% /media/CentOS_6.8_Final /dev/sr0 iso9660 3.7G 3.7G 0 100% /mnt/cdrom /dev/mapper/myvg-mylv ext4 3.0G 3.3M 2.8G 1% /backup /dev/mapper/myvg-mylv_snap ext4 3.0G 3.3M 2.8G 1% /mnt/mysnap
查看分區內文件和備份文件
[root@localhost backup]# cat issue CentOS release 6.8 (Final) Kernel \r on an \m [root@localhost backup]# cat /mnt/mysnap/ cat: /mnt/mysnap/: Is a directory [root@localhost backup]# cat /mnt/mysnap/issue CentOS release 6.8 (Final) Kernel \r on an \m
重新編輯下原文件
[root@localhost ~]# cat /backup/issue CentOS release 6.8 (Final) Kernel \r on an \m test test test test test
查看備份文件
[root@localhost ~]# cat /mnt/mysnap/issue CentOS release 6.8 (Final) Kernel \r on an \m
要想恢復,把快照卷中的文件復制出去就可以了
備份卷的刪除:
1)卸載快照卷
[root@localhost ~]# umount /mnt/mysnap/
2)lvremove :邏輯卷刪除命令
[root@localhost ~]# lvremove /dev/myvg/mylv_snap Do you really want to remove active logical volume mylv_snap? [y/n]: y Logical volume "mylv_snap" successfully removed
刪除邏輯卷:
1)卸載邏輯卷掛載
[root@localhost ~]# umount /backup/
2)刪除邏輯卷:
[root@localhost ~]# lvremove /dev/myvg/mylv Do you really want to remove active logical volume mylv? [y/n]: y Logical volume "mylv" successfully removed
3)刪除VG:
[root@localhost ~]# vgremove /dev/myvg Volume group "myvg" successfully removed [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 4 0 wz--n- 59.99g 7.99g
4)刪除PV:
[root@localhost ~]# pvremove /dev/sdd1 Labels on physical volume "/dev/sdd1" successfully wiped [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a--u 59.99g 7.99g /dev/sdd2 lvm2 ---- 5.01g 5.01g [root@localhost ~]# pvremove /dev/sdd2 Labels on physical volume "/dev/sdd2" successfully wiped [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a--u 59.99g 7.99g
原創文章,作者:zanghonglei,如若轉載,請注明出處:http://www.www58058.com/42715