Centos8中遷移邏輯卷

夢共裡醉發表於2022-09-07
遷移邏輯卷是透過將分割槽從一個PV(物理卷)移動至另一個PV。遷移邏輯卷是替換磁碟最安全的方法之一。

將要執行遷移的方法是使用 pvmove操作。

假設在我們的設定中,只有一個磁碟  /dev/sda1,大小為20gb。此時  /dev/sda1處於故障警告狀態,需要更換新的同等容量的硬碟。讓我們使用 pvmove選項將分割槽移動到一個新的PV中。

使用 pvmove 是透過將底層舊物理卷替換為新的物理卷。此外,使用檔案系統的使用者將不會注意到在底層發生的更改。

為什麼需要遷移邏輯卷?

1. 更換故障磁碟。

2. 將現有的磁碟替換為較大的磁碟。

建立PV、VG和LV
# 建立PV
[root@localhost ~]# pvcreate /dev/sda1 
  Physical volume "/dev/sda1" successfully created.
# 建立VG
[root@localhost ~]# vgcreate vg_data /dev/sda1 
  Volume group "vg_data" successfully created
# 建立LV,使用所有空間。
[root@localhost ~]# lvcreate -l 100%FREE -n lv_data vg_data
  Logical volume "lv_data" created.

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
建立完成之後格式化並掛載檔案系統。

[root@localhost ~]# mkfs.xfs /dev/vg
[root@localhost ~]# mkfs.xfs /dev/vg_data/lv_data 
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/vg_data/lv_data /data

Centos8中遷移邏輯卷Centos8中遷移邏輯卷

列出現有的邏輯卷

下面列出邏輯卷使用率:

[root@localhost ~]# df -h /data
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data   20G  2.2G   18G  11% /data

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
下面列出所有的物理卷、卷組、邏輯卷:

[root@localhost ~]# pvs
  PV             VG      Fmt  Attr PSize   PFree 
  /dev/nvme0n1p2 cl      lvm2 a--  <19.00g <2.00g
  /dev/sda1      vg_data lvm2 a--  <20.00g     0 
[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  cl        1   2   0 wz--n- <19.00g <2.00g
  vg_data   1   1   0 wz--n- <20.00g     0 
[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                                                    
  lv_data vg_data -wi-a----- <20.00g

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
下面檢驗一下邏輯卷使用到的磁碟是哪塊,使用lvs 並使用 -o +devices選項,可以顯示邏輯卷使用到的是哪塊磁碟:

[root@localhost ~]# lvs -o +devices /dev/vg_data/lv_data
  LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices     
  lv_data vg_data -wi-ao---- <20.00g                                                     /dev/sda1(0)

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
使用dmsetup命令獲取邏輯卷的主編號和次編號。

[root@localhost ~]# dmsetup deps /dev/vg_data/lv_data 
1 dependencies : (8, 1)

記住主編號和次編號。一旦我們將故障PV替換為另一個PV,它將改變。

開始遷移邏輯卷

可以透過執行 pvmove命令來執行邏輯卷的遷移。下面首先開始建立一個新的物理卷:

[root@localhost ~]# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created.

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
然後將新建立的物理卷新增到已存在的卷組中,下面圖中可看到vg_data卷組容量增加了:

[root@localhost ~]# vgextend vg_data /dev/sdb1 
  Volume group "vg_data" successfully extended

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
使用pvs命令新增 -o +pv_used選項可以顯示物理卷的使用情況:

[root@localhost ~]# pvs -o +pv_used
  PV             VG      Fmt  Attr PSize   PFree   Used   
  /dev/nvme0n1p2 cl      lvm2 a--  <19.00g  <2.00g  17.00g
  /dev/sda1      vg_data lvm2 a--  <20.00g      0  <20.00g
  /dev/sdb1      vg_data lvm2 a--  <20.00g <20.00g      0

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
下面就可以使用 pvmove命令遷移邏輯卷啦,下面是用法:

# pvmove -n

下面是常用選項解釋:

  • -n 指定邏輯卷的名稱。
  • -b 可以新增-b選項,意思是在後臺執行,如果容量大,檔案多可以配合screen在後臺執行。
  • -i 5 表示每5秒列印一次狀態。

下面將邏輯卷lv_data從/dev/sda1遷移到/dev/sdb1中:

[root@localhost ~]# pvmove -n /dev/vg_data/lv_data /dev/sda1 /dev/sdb1 
  /dev/sda1: Moved: 1.29%
  /dev/sda1: Moved: 39.99%
  /dev/sda1: Moved: 73.90%
  /dev/sda1: Moved: 100.00%

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
遷移完成後,執行命令 lvs -o +devices。在這裡,我們看到舊磁碟 /dev/sda1已經被 /dev/sdb1替換了。

[root@localhost ~]# lvs -a -o +devices /dev/vg_data/lv_data
  LV      VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices     
  lv_data vg_data -wi-ao---- <20.00g                                                     /dev/sdb1(0)

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
執行 pvs -o +pv_used命令檢視可看到,/dev/sda1使用空間為0。/dev/sdb1的使用空間用滿了。

[root@localhost ~]# pvs -o +pv_used
  PV             VG      Fmt  Attr PSize   PFree   Used   
  /dev/nvme0n1p2 cl      lvm2 a--  <19.00g  <2.00g  17.00g
  /dev/sda1      vg_data lvm2 a--  <20.00g <20.00g      0 
  /dev/sdb1      vg_data lvm2 a--  <20.00g      0  <20.00g

與此同時我們檢查一下/data目錄中的內容仍然保留,邏輯卷仍然掛載著。這就說明遷移邏輯卷的時候不影響使用者使用該邏輯卷。

[root@localhost ~]# df -h /data
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data   20G  2.2G   18G  11% /data
[root@localhost ~]# ll /data/
total 2097152
-rw-r--r-- 1 root root 2147483648 Apr 26 15:17 disk.img

Centos8中遷移邏輯卷Centos8中遷移邏輯卷

移除故障磁碟

下面我們可以使用 vgreduce命令將故障的物理卷移除。

[root@localhost ~]# vgreduce vg_data /dev/sda1 
  Removed "/dev/sda1" from volume group "vg_data"

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
移除故障的物理卷:

[root@localhost ~]# pvremove /dev/sda1 
  Labels on physical volume "/dev/sda1" successfully wiped.

下面使用 dmsetup命令檢視邏輯卷的主編號和次編號是否變了:

[root@localhost ~]# dmsetup deps /dev/vg_data/lv_data 
1 dependencies : (8, 17)

Centos8中遷移邏輯卷Centos8中遷移邏輯卷
就這樣,我們已經完成遷移邏輯捲了。

總結

本文使用了pvmove命令從邏輯卷遷移資料而無需停機。


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

相關文章