# lvm邏輯捲 ## 前言 > raid磁碟陣列技術,提高硬碟的讀寫效率,以及數據的安全,raid的缺點在於: > 1.當你配置好了raid磁碟陣列組,容量的大小,已經是限定了,如果你存儲的業務非常多,磁碟容量不夠用的問題就會出現,你想要擴容磁碟的空間,就會非常麻煩。 > 2.不同的磁碟分區,相對 ...
lvm邏輯捲
前言
raid磁碟陣列技術,提高硬碟的讀寫效率,以及數據的安全,raid的缺點在於:
1.當你配置好了raid磁碟陣列組,容量的大小,已經是限定了,如果你存儲的業務非常多,磁碟容量不夠用的問題就會出現,你想要擴容磁碟的空間,就會非常麻煩。
2.不同的磁碟分區,相對都是獨立的,沒有任何聯繫,可能空間利用率比較低。
3.如果某一分區滿了,預設磁碟管理是無法直接擴容的,只能重新的分區,重新分配容量大小,創建文件系統,很麻煩。
4.如果你要合併分區,還是得重新格式化磁碟分區,還得進行數據備份。
lvm 邏輯捲管理技術
lvm (logical volume manager)
1.lvm原理
他是講一個或者多個硬碟在邏輯上進行了合併,相當於一個大的硬碟去使用,當你的硬碟空間不夠了,可以直接去其他硬碟中拿容量去使用,這就是一個動態的磁碟容量管理技術。2.優點
lvm最大的優點就是可以對磁碟進行動態管理,可以提高磁碟管理的靈活性3.基本概念
PP (Physical parttion) 物理分區,lvm直接創建在物理分區上。
PV (Physical Volume) 物理捲,處於lvm的最底層,一般一個PV對應一個PP。
PE (Physical Extend) 物理拓展,PV中可以用於分配的最小存儲單位。
VG (Volume Group) 捲組,捲組創建在PV之上,可以劃分為多個PV。
LE (Logical Extends) 邏輯擴展單元,邏輯擴展單元,LE是組成LV的基本單元,一個LE對應一個PE。
LV (Logical Volume) 邏輯捲,創建在VG之上,是一個可以動態擴展的分區概念。-LVM動態擴容大小,其實就是通過互相交換PE的過程,達到能夠彈性擴容分區大小
-想要減少空間容量,就是剔除PE的大小
-想要擴大容量,就是把其他的PE添加到自己的LV當中
-PE預設大小一般都是4M,LVM最多是可以創建出65534個PE,因此LVM最大的VG捲組單位是256G
-PE其實是LVM最小的存儲單位,類似於操作系統的block (4k)
-LV邏輯捲的概念(理解為普通分區的概念,/dev/sdb /dev/sdc)
lvm的創建流程
`1.創建PV` [root@localhost ~]# pvcreate /dev/sdb /dev/sdc Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created. `2.創建捲組` [root@localhost ~]# vgcreate xuxuvg1 /dev/sdb /dev/sdc Volume group "xuxuvg1" successfully created `3.查看pv vg信息` [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb xuxuvg1 lvm2 a-- <10.00g <10.00g /dev/sdc xuxuvg1 lvm2 a-- <10.00g <10.00g [root@localhost ~]# pvscan PV /dev/sdb VG xuxuvg1 lvm2 [<10.00 GiB / <10.00 GiB free] PV /dev/sdc VG xuxuvg1 lvm2 [<10.00 GiB / <10.00 GiB free] PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free] Total: 3 [<38.99 GiB] / in use: 3 [<38.99 GiB] / in no VG: 0 [0 ] [root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb VG Name xuxuvg1 PV Size 10.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 2559 Free PE 2559 Allocated PE 0 PV UUID NuXbh4-5URD-N3gP-CXQM-WUw4-uzAe-20br2v --- Physical volume --- PV Name /dev/sdc VG Name xuxuvg1 PV Size 10.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 2559 Free PE 2559 Allocated PE 0 PV UUID TsQu1V-2KZ0-gZtV-feuX-nnhO-iD3m-qUlc3m --- Physical volume --- PV Name /dev/sda2 VG Name centos PV Size <19.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 4863 Free PE 0 Allocated PE 4863 PV UUID 6ipoOT-021J-hgZV-Ftku-zFGU-wj8u-AQB5FO [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 xuxuvg1 2 0 0 wz--n- 19.99g 19.99g [root@localhost ~]# vgscan Reading volume groups from cache. Found volume group "xuxuvg1" using metadata type lvm2 Found volume group "centos" using metadata type lvm2 [root@localhost ~]# vgdisplay --- Volume group --- VG Name xuxuvg1 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 19.99 GiB PE Size 4.00 MiB Total PE 5118 Alloc PE / Size 0 / 0 Free PE / Size 5118 / 19.99 GiB VG UUID VWU7sx-xiWc-bTvw-1nCf-holz-7uu3-ksV5hN --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size <19.00 GiB PE Size 4.00 MiB Total PE 4863 Alloc PE / Size 4863 / <19.00 GiB Free PE / Size 0 / 0 VG UUID 1qSTmy-1mDg-ZuGi-GP1o-kK1U-sUvk-qXznQV `4.嘗試擴容,縮小vg捲組` [root@localhost ~]# pvcreate /dev/sdd Physical volume "/dev/sdd" successfully created. [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb xuxuvg1 lvm2 a-- <10.00g <10.00g /dev/sdc xuxuvg1 lvm2 a-- <10.00g <10.00g /dev/sdd lvm2 --- 10.00g 10.00g [root@localhost ~]# vgextend xuxuvg1 /dev/sdd Volume group "xuxuvg1" successfully extended `5.顯示一下捲組的信息,容量等` [root@localhost ~]# vgdisplay --- Volume group --- VG Name xuxuvg1 System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size <29.99 GiB PE Size 4.00 MiB Total PE 7677 Alloc PE / Size 0 / 0 Free PE / Size 7677 / <29.99 GiB VG UUID VWU7sx-xiWc-bTvw-1nCf-holz-7uu3-ksV5hN `6.還可以縮小捲組大小,剔除/dev/sdd` [root@localhost ~]# vgreduce xuxuvg1 /dev/sdd Removed "/dev/sdd" from volume group "xuxuvg1" `7.刪除/dev/sdd的物理捲` [root@localhost ~]# pvremove /dev/sdd Labels on physical volume "/dev/sdd" successfully wiped. `8.使用此時的捲組,創建邏輯捲,進行使用/dev/sdb /dev/sdc` [root@localhost ~]# lvcreate -n lv1 -L +500M xuxuvg1 Logical volume "lv1" created. [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g lv1 xuxuvg1 -wi-a----- 500.00m [root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/xuxuvg1/lv1 LV Name lv1 VG Name xuxuvg1 LV UUID VgzEKy-SlDf-oYed-LP0I-531x-wpt1-RcNZbR LV Write Access read/write LV Creation host, time localhost.localdomain, 2023-07-05 00:50:00 +0800 LV Status available # open 0 LV Size 500.00 MiB Current LE 125 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2 `9.對剛創建的lv1邏輯捲進行格式化文件系統` [root@localhost ~]# mkfs.xfs /dev/xuxuvg1/lv1 meta-data=/dev/xuxuvg1/lv1 isize=512 agcount=4, agsize=32000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=128000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=855, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 `10.向lv1邏輯捲中,進行掛載,以及數據寫入(就可以當作一個普通分區來使用了)` [root@localhost ~]# mkdir /xuxu_lv1 [root@localhost ~]# mount /dev/xuxuvg1/lv1 /xuxu_lv1/ [root@localhost ~]# df -Th 文件系統 類型 容量 已用 可用 已用% 掛載點 devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 487M 0 487M 0% /dev/shm tmpfs tmpfs 487M 7.7M 479M 2% /run tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 2.3G 15G 14% / /dev/sda1 xfs 1014M 138M 877M 14% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs 497M 26M 472M 6% /xuxu_lv1 `11.向磁碟中寫入數據,查看空間容量` [root@localhost xuxu_lv1]# echo {1..3000000} > test.txt [root@localhost xuxu_lv1]# df -Th 文件系統 類型 容量 已用 可用 已用% 掛載點 devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 487M 0 487M 0% /dev/shm tmpfs tmpfs 487M 7.7M 479M 2% /run tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 2.3G 15G 14% / /dev/sda1 xfs 1014M 138M 877M 14% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs 497M 48M 450M 10% /xuxu_lv1 [root@localhost xuxu_lv1]# echo {1..2000000} > test2.txt [root@localhost xuxu_lv1]# df -Th 文件系統 類型 容量 已用 可用 已用% 掛載點 devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 487M 0 487M 0% /dev/shm tmpfs tmpfs 487M 7.7M 479M 2% /run tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 2.3G 15G 14% / /dev/sda1 xfs 1014M 138M 877M 14% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs 497M 62M 436M 13% /xuxu_lv1 `12.修改/etc/fstab 開機自動掛載` [root@localhost xuxu_lv1]# vim /etc/fstab /dev/xuxuvg1/lv1 /xuxu_lv1 xfs defaults 0 0 [root@localhost xuxu_lv1]# ls /xuxu_lv1/ test2.txt test.txt
lv邏輯捲的擴容
`擴容 給lv1+10G` `只要捲組中的容量夠用,就可以對lv邏輯捲擴容` `1.先取消掛載lv1設備` [root@localhost /]# umount /xuxu_lv1/ `2.使用lvextend命令擴容邏輯捲的大小` [root@localhost /]# lvextend -L +10G /dev/xuxuvg1/lv1 Size of logical volume xuxuvg1/lv1 changed from 500.00 MiB (125 extents) to <10.49 GiB (2685 extents). Logical volume xuxuvg1/lv1 successfully resized. `3.掛載邏輯捲開始使用` [root@localhost /]# mount /dev/xuxuvg1/lv1 /xuxu_lv1/ [root@localhost /]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 487M 0 487M 0% /dev/shm tmpfs tmpfs 487M 7.7M 479M 2% /run tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 2.3G 15G 14% / /dev/sda1 xfs 1014M 138M 877M 14% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs 497M 62M 436M 13% /xuxu_lv1 `可以看到還是顯示500M` `4.重新調整xfs文件系統大小` [root@localhost /]# xfs_growfs /dev/xuxuvg1/lv1 meta-data=/dev/mapper/xuxuvg1-lv1 isize=512 agcount=4, agsize=32000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=128000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=855, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 128000 to 2749440 [root@localhost /]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 devtmpfs devtmpfs 475M 0 475M 0% /dev tmpfs tmpfs 487M 0 487M 0% /dev/shm tmpfs tmpfs 487M 7.7M 479M 2% /run tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 17G 2.3G 15G 14% / /dev/sda1 xfs 1014M 138M 877M 14% /boot tmpfs tmpfs 98M 0 98M 0% /run/user/0 /dev/mapper/xuxuvg1-lv1 xfs 11G 66M 11G 1% /xuxu_lv1
刪除邏輯捲
`1.生產環境下需要先把文件都備份,這裡實驗就不做演示了` `2.取消掛載邏輯捲` [root@localhost /]# umount /xuxu_lv1/ `3.刪除邏輯捲` [root@localhost /]# lvremove /dev/xuxuvg1/lv1 Do you really want to remove active logical volume xuxuvg1/lv1? [y/n]: y Logical volume "lv1" successfully removed `4.刪除捲組` [root@localhost /]# vgremove xuxuvg1 Volume group "xuxuvg1" successfully removed `5.刪除物理捲設備` [root@localhost /]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb lvm2 --- 10.00g 10.00g /dev/sdc lvm2 --- 10.00g 10.00g [root@localhost /]# pvremove /dev/sdb /dev/sdc Labels on physical volume "/dev/sdb" successfully wiped. Labels on physical volume "/dev/sdc" successfully wiped. `6.最後檢查一下所有lvm相關信息` [root@localhost /]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 [root@localhost /]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 [root@localhost /]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g `可以看到lvm相關信息都被刪除` 文章內容主要參考:https://www.bilibili.com/video/BV1LF411G7xh?p=40&vd_source=0318a6d26fb028b832726d62a0e9e2cb