Centos8中建立LVM精簡邏輯卷

夢共裡醉發表於2022-04-26
精簡卷是可以建立大於可用磁碟的邏輯卷。使用精簡卷,你可以管理可用空間的儲存池(稱為精簡池),可以在應用程式需要時將其分配給任意數量的裝置。精簡池可以在需要時進行動態擴充套件,以節省成本。
系統環境

8

建立精簡池

下面我們新增一塊硬碟。建立物理卷,然後建立卷組:

[root@localhost ~]# pvcreate /dev/sda
  Physical volume "/dev/sda" successfully created.
[root@localhost ~]# vgcreate vg_thin /dev/sda
  Volume group "vg_thin" successfully created
[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree  
  cl        1   2   0 wz--n- <19.00g  <2.00g
  vg_thin   1   0   0 wz--n- <20.00g <20.00g

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
上面已經建立好一個新的卷組了,名字為 vg_thin。然後在現有卷組的中建立一個精簡池:

[root@localhost ~]# lvcreate -L 1G -T vg_thin/thin_pool
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "thin_pool" created.
[root@localhost ~]# lvs
  LV        VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root      cl      -wi-ao---- 15.00g                                                    
  swap      cl      -wi-ao----  2.00g                                                    
  thin_pool vg_thin twi-a-tz--  1.00g             0.00   10.94

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷

建立精簡卷

建立精簡池之後,我們就可以從精簡池中建立精簡卷。在本實驗中建立四個精簡卷,每個精簡卷的大小為200 MB。

[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user1
  Logical volume "tp_lv_user1" created.
[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user2
  Logical volume "tp_lv_user2" created.
[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user3
  Logical volume "tp_lv_user3" created.
[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user4
  Logical volume "tp_lv_user4" created.

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷

格式化並掛載精簡卷

將上面建立的四個精簡卷格式化為xfs格式:

[root@localhost ~]# mkfs.xfs /dev/vg_thin/tp_lv_user1 
[root@localhost ~]# mkfs.xfs /dev/vg_thin/tp_lv_user2
[root@localhost ~]# mkfs.xfs /dev/vg_thin/tp_lv_user3 
[root@localhost ~]# mkfs.xfs /dev/vg_thin/tp_lv_user4

建立掛載點,並掛載:

[root@localhost ~]# mkdir -p /mnt/user{1..4}
[root@localhost ~]# mount /dev/vg_thin/tp_lv_user1 /mnt/user1
[root@localhost ~]# mount /dev/vg_thin/tp_lv_user2 /mnt/user2
[root@localhost ~]# mount /dev/vg_thin/tp_lv_user3 /mnt/user3
[root@localhost ~]# mount /dev/vg_thin/tp_lv_user4 /mnt/user4

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
向這四個目錄寫入一些檔案:

[root@localhost ~]# dd if=/dev/zero of=/mnt/user1/test.img bs=1M count=100
[root@localhost ~]# dd if=/dev/zero of=/mnt/user2/test.img bs=1M count=100
[root@localhost ~]# dd if=/dev/zero of=/mnt/user3/test.img bs=1M count=100
[root@localhost ~]# dd if=/dev/zero of=/mnt/user4/test.img bs=1M count=100

然後執行下面 檢視以下使用空間:

[root@localhost ~]# lvs

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
我們可以注意到精簡池利用率為41.41%

開啟防止精簡池空間耗盡的保護

再建立兩個200 MB的精簡卷。可以發現建立這兩個精簡卷會超過所設定的精簡池的大小,雖然可以建立成功,但這樣做會有更大的風險,並提示一些超額的警告。

[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user5
  Logical volume "tp_lv_user5" created.
[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user6
  WARNING: Sum of all thin volume sizes (1.17 GiB) exceeds the size of thin pool vg_thin/thin_pool (1.00 GiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "tp_lv_user6" created.

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
下面我們刪掉剛才建立的tp_lv_user5和tp_lv_user6,在lvm.conf配置檔案中開啟超額保護,並重新建立這兩個精簡卷:

[root@localhost ~]# lvremove -f /dev/vg_thin/tp_lv_user5
  Logical volume "tp_lv_user5" successfully removed
[root@localhost ~]# lvremove -f /dev/vg_thin/tp_lv_user6
  Logical volume "tp_lv_user6" successfully removed

編輯 /etc/lvm/lvm.conf配置檔案,將下兩個引數的值修改一下:

# 當精簡池的使用率超過此百分比時,將自動擴充套件該池,將其更改為100將禁用自動擴充套件。可接受的最小值是50。
        thin_pool_autoextend_threshold = 80
# 透過自動擴充套件精簡池,會增加這個百分比的額外空間。新增到精簡池的額外空間量是其當前大小的百分比。
        thin_pool_autoextend_percent = 20

下面建立tp_lv_user5和tp_lv_user6兩個精簡卷:

[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user5
  Logical volume "tp_lv_user5" created.
[root@localhost ~]# lvcreate -V 200M -T vg_thin/thin_pool -n tp_lv_user6
  Logical volume "tp_lv_user6" created.
[root@localhost ~]# mkfs.xfs /dev/vg_thin/tp_lv_user5 
[root@localhost ~]# mkfs.xfs /dev/vg_thin/tp_lv_user6
[root@localhost ~]# mkdir -p /mnt/user{5..6}
[root@localhost ~]# mount /dev/vg_thin/tp_lv_user5 /mnt/user5
[root@localhost ~]# mount /dev/vg_thin/tp_lv_user6 /mnt/user6

看一下使用的情況:
Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
下面我們向/mnt/user5和/mnt/user6填充內容,直到thin_pool精簡池的使用率超過80%,我們可以看到精簡池的容量擴容了。

[root@localhost ~]# lvs
  LV          VG      Attr       LSize   Pool      Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root        cl      -wi-ao----  15.00g                                                         
  swap        cl      -wi-ao----   2.00g                                                         
  thin_pool   vg_thin twi-aotz--   1.20g                  75.94  22.66                           
  tp_lv_user1 vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user2 vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user3 vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user4 vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user5 vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user6 vg_thin Vwi-aotz-- 200.00m thin_pool        77.97

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
可以看到上面,thin_pool精簡池的容量提升了200M,這就說明當精簡池的使用率超過80%時,提升20%的容量。

如何擴充套件精簡池

擴充套件精簡池時,我們需要遵循兩個步驟:

  • 1. 擴充套件精簡池的後設資料
  • 2. 然後再擴充套件精簡池。

要擴充套件精簡池,我們不應該立即繼續擴充套件精簡池。首先,透過執行 lvs -a檢視現有後設資料使用的大小情況。

[root@localhost ~]# lvs -a
  LV                VG      Attr       LSize   Pool      Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root              cl      -wi-ao----  15.00g                                                         
  swap              cl      -wi-ao----   2.00g                                                         
  [lvol0_pmspare]   vg_thin ewi-------   4.00m                                                         
  thin_pool         vg_thin twi-aotz--   1.20g                  75.94  22.66                           
  [thin_pool_tdata] vg_thin Twi-ao----   1.20g                                                         
  [thin_pool_tmeta] vg_thin ewi-ao----   4.00m                                                         
  tp_lv_user1       vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user2       vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user3       vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user4       vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user5       vg_thin Vwi-aotz-- 200.00m thin_pool        77.97                                  
  tp_lv_user6       vg_thin Vwi-aotz-- 200.00m thin_pool        77.97

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷

擴充套件精簡池metadata的大小

後設資料的當前大小僅為4 MB。讓我們在當前大小的基礎上新增4MB。

[root@localhost ~]# lvextend --poolmetadatasize +4M vg_thin/thin_pool

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
可以看到 [thin_pool_tmeta]已經變成8M了。

擴充套件精簡池的大小

完成擴充套件後設資料後,開始將精簡池擴充套件到所需的大小。將精簡池擴容量再新增1G容量。

[root@localhost ~]# lvextend -L +1G /dev/vg_thin/thin_pool

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷
現在大小已變成2.2G了。

擴充套件精簡卷

擴充套件精簡卷和擴充套件精簡池類似:

[root@localhost ~]# lvextend -L +200M /dev/vg_thin/tp_lv_user1

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷

刪除精簡卷、精簡池

要刪除精簡池,首先需要解除安裝所有檔案系統,然後刪除所有精簡卷,最後刪除精簡池。

# 解除安裝分割槽
[root@localhost ~]# umount /mnt/user{1..6}
# 刪除精簡卷
[root@localhost ~]# lvremove -y /dev/vg_thin/tp_lv_user[1-6]
  Logical volume "tp_lv_user1" successfully removed
  Logical volume "tp_lv_user2" successfully removed
  Logical volume "tp_lv_user3" successfully removed
  Logical volume "tp_lv_user4" successfully removed
  Logical volume "tp_lv_user5" successfully removed
  Logical volume "tp_lv_user6" successfully removed
# 刪除精簡池
[root@localhost ~]# lvremove -y /dev/vg_thin/thin_pool
  Logical volume "thin_pool" successfully removed

使用lvs  檢視以下,是否已經刪除乾淨:

[root@localhost ~]# lvs -a
  LV   VG Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root cl -wi-ao---- 15.00g                                                    
  swap cl -wi-ao----  2.00g

Centos8中建立LVM精簡邏輯卷Centos8中建立LVM精簡邏輯卷

總結

精簡卷是可以建立大於可用磁碟的邏輯卷。使用精簡卷,你可以管理可用空間的儲存池(稱為精簡池),可以在應用程式需要時將其分配給任意數量的裝置。精簡池可以在需要時進行動態擴充套件,以節省成本。

本文原創地址: 編輯:逄增寶,稽核員:逄增寶


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2888927/,如需轉載,請註明出處,否則將追究法律責任。

相關文章