在 Linux 中用較大的磁碟取代較小的磁碟

大家好。 新課程組開課前夕 《Linux 管理員》 我們正在發布由我們的學生、課程導師、REG.RU 公司產品技術支援專家 Roman Travin 撰寫的有用資料。

本文將考慮更換磁碟並將資訊轉移到更大容量的新磁碟並進一步擴展陣列和檔案系統的兩種情況。 第一種情況涉及更換具有相同MBR/MBR或GPT/GPT分割區的磁碟,第二種情況涉及將具有MBR分割區的磁碟更換為容量大於2TB的磁碟,您需要在該磁碟上安裝具有BIOSboot 分割區的GPT 分割區。 在這兩種情況下,我們將資料傳輸到的磁碟都已安裝在伺服器上。 根分割區使用的檔案系統是ext2。

案例 1:用更大的磁碟(最大 2TB)替換較小的磁碟

任務: 將目前磁碟替換為具有資訊傳輸功能的更大磁碟(最多 2 TB)。 在本例中,我們有 2 個已安裝系統的 240 GB SSD (RAID-1) 磁碟和 2 個 1 TB SATA 磁碟需要將系統轉移到其中。

讓我們看看當前的磁碟佈局。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sda2           8:2    0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0 931,5G  0 disk  
sdd              8:48   0 931,5G  0 disk  

讓我們檢查一下目前使用的檔案系統空間。

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                32G            0   32G            0% /dev
tmpfs                   32G            0   32G            0% /dev/shm
tmpfs                   32G         9,6M   32G            1% /run
tmpfs                   32G            0   32G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   204G         1,3G  192G            1% /
/dev/md126            1007M         120M  837M           13% /boot
tmpfs                  6,3G            0  6,3G            0% /run/user/0

換盤前檔案系統大小為204GB,使用2個md126軟體陣列,掛載在 /boot и md127,用作 物理體積 VG組 vg0.

1. 從陣列中刪除磁碟分割區

檢查數組的狀態

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sda1[0] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sda2[0] sdb2[1]
      233206784 blocks super 1.2 [2/2] [UU]
      bitmap: 0/2 pages [0KB], 65536KB chunk

unused devices: <none>

系統使用2個陣列: md126 (掛載點 /boot) - 由一個部分組成 /dev/sda1 и /dev/sdb1, md127 (LVM 為 交換 和檔案系統的根) - 包括 /dev/sda2 и /dev/sdb2.

我們將每個陣列中使用的第一個磁碟的分割區標記為壞分割區。

mdadm /dev/md126 --fail /dev/sda1

mdadm /dev/md127 --fail /dev/sda2

我們從陣列中刪除 /dev/sda 區塊裝置分割區。

mdadm /dev/md126 --remove /dev/sda1

mdadm /dev/md127 --remove /dev/sda2

當我們從陣列中刪除磁碟後,區塊設備資訊將如下所示。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0 931,5G  0 disk  
sdd              8:48   0 931,5G  0 disk  

刪除磁碟後陣列的狀態。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdb1[1]
      1047552 blocks super 1.2 [2/1] [_U]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      bitmap: 1/2 pages [4KB], 65536KB chunk

unused devices: <none>

2.將分割區表複製到新磁碟

您可以使用下列命令查看磁碟上已使用的分割區表。

fdisk -l /dev/sdb | grep 'Disk label type'

MBR 的輸出將是:

Disk label type: dos

對於 GPT:

Disk label type: gpt

複製MBR分區表:

sfdisk -d /dev/sdb | sfdisk /dev/sdc

在這個團隊中 第一個 磁碟已指示 с 其中 標記被複製, 第二個 - 哪裡 複製。

注意:對於 GPT 第一個 磁碟已指示 其上 複製標記, 第二個 disk表示磁碟 從中 複製標記。 如果混用磁碟,最初好的分割區將被覆蓋並損壞。

複製 GPT 的佈局表:

sgdisk -R /dev/sdс /dev/sdb

接下來,為磁碟分配一個隨機 UUID(對於 GPT)。


sgdisk -G /dev/sdc

執行命令後,分割區應該會出現在磁碟上 /dev/sdc.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
└─sdc2           8:34   0 222,5G  0 part  
sdd              8:48   0 931,5G  0 disk  

如果執行該操作後,磁碟上的系統分割區 /dev/sdc 拿不定主意,那我們執行指令重新讀取分割區表。

sfdisk -R /dev/sdc

如果目前磁碟使用MBR表,並且需要將資訊轉移到大於2TB的磁碟,那麼在新磁碟上,您將需要使用biosboot分割區手動建立GPT分割區。 此案例將在本文的第 2 部分中討論。

3. 將新磁碟的分割區加入到陣列中

讓我們將磁碟分割區新增到對應的陣列中。

mdadm /dev/md126 --add /dev/sdc1

mdadm /dev/md127 --add /dev/sdc2

我們檢查這些部分是否已新增。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  

之後,我們等待數組同步。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdc1[2] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdc2[2] sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      [==>..................]  recovery = 10.6% (24859136/233206784) finish=29.3min speed=118119K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

您可以使用該實用程式持續監控同步過程 watch.

watch -n 2 cat /proc/mdstat

參數 -n 指定必須以秒為單位執行指令以檢查進度的時間間隔。

對下一個替換磁碟重複步驟 1 - 3。

我們將每個陣列中使用的第二個磁碟的分割區標記為壞分割區。

mdadm /dev/md126 --fail /dev/sdb1

mdadm /dev/md127 --fail /dev/sdb2

刪除區塊設備分割區 /dev/sdb 來自數組。

mdadm /dev/md126 --remove /dev/sdb1

mdadm /dev/md127 --remove /dev/sdb2

當我們從陣列中刪除磁碟後,區塊設備資訊將如下所示。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  

刪除磁碟後陣列的狀態。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdc1[2]
      1047552 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdc2[2]
      233206784 blocks super 1.2 [2/1] [U_]
      bitmap: 1/2 pages [4KB], 65536KB chunk

unused devices: <none>

從磁碟複製 MBR 分割區表 /dev/sdс 到磁碟 /dev/sdd.

sfdisk -d /dev/sdс | sfdisk /dev/sdd

執行命令後,分割區應該會出現在磁碟上 /dev/sdd.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
└─sdd2           8:50   0 222,5G  0 part  

將磁碟分割區新增至陣列。

mdadm /dev/md126 --add /dev/sdd1

mdadm /dev/md127 --add /dev/sdd2

我們檢查這些部分是否已新增。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

之後,我們等待數組同步。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdd1[3] sdc1[2]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdd2[3] sdc2[2]
      233206784 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.5% (1200000/233206784) finish=35.4min speed=109090K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

5. 在新磁碟機上安裝 GRUB

對於 CentOS:

grub2-install /dev/sdX

對於 Debian/Ubuntu:

grub-install /dev/sdX

哪裡 X — 塊設備的字母。 在這種情況下,您需要安裝 GRUB /dev/sdc и /dev/sdd.

6.根分割區的檔案系統副檔名(ext4)

在新磁碟上 /dev/sdc и /dev/sdd 931.5 GB 可用空間。 由於分割區表是從較小的磁碟複製的,因此分割區 /dev/sdc2 и /dev/sdd2 可用空間為 222.5 GB。

sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

有必要:

  1. 在每個磁碟上擴展分割區 2,
  2. 展開數組 md127,
  3. 擴大PV(物理量),
  4. 展開 LV(邏輯磁碟區)vg0-root,
  5. 擴展檔案系統。

使用該實用程式 分手 讓我們擴展該部分 /dev/sdc2 到最大值。 執行命令 parted /dev/sdc (1)並以指令查看目前分區表 p (2)。

在 Linux 中用較大的磁碟取代較小的磁碟

如您所見,分割區 2 的末端為 240 GB。 讓我們用命令擴展分區 resizepart 2,其中 2 是第 (3) 部分的編號。 我們以數字格式指示該值,例如 1000 GB,或使用磁碟共享的指示 - 100%。 我們再次檢查分割區是否具有新的大小 (4)。

對磁碟重複上述步驟 /dev/sdd。 擴展分區後 /dev/sdc2 и /dev/sdd2 等於 930.5 GB。

[root@localhost ~]# lsblk                                                 
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 930,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 930,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

之後我們擴展數組 md127 到最大。

mdadm --grow /dev/md127 --size=max

我們檢查數組是否已擴展。 現在它的大小變成了930.4 GB。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0 931,5G  0 disk  
├─sdc1           8:33   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc2           8:34   0 930,5G  0 part  
  └─md127        9:127  0 930,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0 931,5G  0 disk  
├─sdd1           8:49   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd2           8:50   0 930,5G  0 part  
  └─md127        9:127  0 930,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

擴充擴展 物理體積。 在展開之前,我們先檢查一下PV的目前狀態。

[root@localhost ~]# pvscan
  PV /dev/md127   VG vg0             lvm2 [222,40 GiB / 0    free]
  Total: 1 [222,40 GiB] / in use: 1 [222,40 GiB] / in no VG: 0 [0   ]

可以看出,PV /dev/md127 使用 222.4 GB 空間。

我們使用以下命令擴展 PV。

pvresize /dev/md127

檢查PV擴容結果。

[

root@localhost ~]# pvscan
  PV /dev/md127   VG vg0             lvm2 [930,38 GiB / 707,98 GiB free]
  Total: 1 [930,38 GiB] / in use: 1 [930,38 GiB] / in no VG: 0 [0   ]

擴充 邏輯卷。 在展開之前,我們先檢查一下 LV(1) 的目前狀態。

[root@localhost ~]# lvscan
  ACTIVE            '/dev/vg0/swap' [<16,00 GiB] inherit
  ACTIVE            '/dev/vg0/root' [<206,41 GiB] inherit

LV /dev/vg0/root 使用 206.41 GB。

我們使用以下命令 (2) 擴充 LV。

lvextend -l +100%FREE /dev/mapper/vg0-root

我們檢查已完成的操作 (3)。

[root@localhost ~]# lvscan 
  ACTIVE            '/dev/vg0/swap' [<16,00 GiB] inherit
  ACTIVE            '/dev/vg0/root' [<914,39 GiB] inherit

可以看到,擴容LV後,佔用磁碟空間變成914.39GB。

在 Linux 中用較大的磁碟取代較小的磁碟

LV 磁碟區增加了 (4),但檔案系統仍佔用 204 GB (5)。

1. 讓我們擴展檔案系統。

resize2fs /dev/mapper/vg0-root

命令執行後,我們檢查檔案系統的大小。

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                32G            0   32G            0% /dev
tmpfs                   32G            0   32G            0% /dev/shm
tmpfs                   32G         9,5M   32G            1% /run
tmpfs                   32G            0   32G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   900G         1,3G  860G            1% /
/dev/md126            1007M         120M  837M           13% /boot
tmpfs                  6,3G            0  6,3G            0% /run/user/0

根檔案系統的大小將增加到 900 GB。 完成這些步驟後,您可以刪除舊磁碟。

案例2:用更大的磁碟(超過2TB)替換較小的磁碟

鍛鍊: 將目前磁碟替換為更大的磁碟 (2 x 3TB),同時保留資訊。 在本例中,我們有 2 個已安裝系統的 240 GB SSD (RAID-1) 磁碟和 2 個 3 TB SATA 磁碟需要將系統轉移到其中。 目前的磁碟使用MBR分割區表。 由於新磁碟的容量大於 2 TB,因此需要使用 GPT 表,因為 MBR 無法與大於 2 TB 的磁碟一起使用。

讓我們看看當前的磁碟佈局。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sda2           8:2    0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0   2,7T  0 disk  
sdd              8:48   0   2,7T  0 disk  

讓我們檢查一下磁碟上使用的分割區表 /dev/sda.

[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos

在磁碟上 /dev/sdb 使用類似的分區表。 讓我們檢查一下系統上已使用的磁碟空間。

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,5M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   204G         1,3G  192G            1% /
/dev/md126            1007M         120M  837M           13% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

可以看到,檔案系統的根佔用了204GB。 讓我們檢查一下軟體 RAID 陣列的目前狀態。

1.安裝GPT分割區表和磁碟分割區

讓我們按扇區檢查磁碟佈局。

[root@localhost ~]# parted /dev/sda print
Модель: ATA KINGSTON SVP200S (scsi)
Диск /dev/sda: 240GB
Размер сектора (логич./физич.): 512B/512B
Таблица разделов: msdos
Disk Flags: 

Номер  Начало  Конец   Размер  Тип      Файловая система  Флаги
 1     1049kB  1076MB  1075MB  primary                    загрузочный, raid
 2     1076MB  240GB   239GB   primary                    raid

在新的 3TB 磁碟上,我們需要建立 3 個分割區:

  1. 章節 bios_grub 2MiB 大小用於 GPT BIOS 相容性,
  2. 將安裝的 RAID 陣列的分割區 /boot.
  3. RAID 陣列的分割區 左心室根 и LV交換.

安裝實用程式 分手 團隊 yum install -y parted (對於 CentOS), apt install -y parted (對於 Debian/Ubuntu)。

運用 分手 讓我們執行以下命令來對磁碟進行分割。

執行命令 parted /dev/sdc 並進入磁碟版面編輯模式。

建立 GPT 分割區表。

(parted) mktable gpt

建立 1 個部分 bios_grub 部分並為其設置一個標誌。

(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on  

建立分區 2 並為其設定一個標誌。 該分割區將用作 RAID 陣列的區塊並安裝在 /boot.

(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot on

我們建立第三個部分,它也將用作 LVM 所在的陣列區塊。

(parted) mkpart primary 1028MiB 100% 

在這種情況下,不需要設定該標誌,但如果需要,可以使用以下命令進行設定。

(parted) set 3 raid on

我們檢查已建立的表。

(parted) p                                                                
Модель: ATA TOSHIBA DT01ACA3 (scsi)
Диск /dev/sdc: 3001GB
Размер сектора (логич./физич.): 512B/4096B
Таблица разделов: gpt
Disk Flags: 

Номер  Начало  Конец   Размер  Файловая система  Имя      Флаги
 1     1049kB  3146kB  2097kB                    primary  bios_grub
 2     3146kB  1077MB  1074MB                    primary  загрузочный
 3     1077MB  3001GB  3000GB                    primary

我們為磁碟分配一個新的隨機 GUID。

sgdisk -G /dev/sdd

2. 從陣列中刪除第一個磁碟的分割區

檢查數組的狀態

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sda1[0] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sda2[0] sdb2[1]
      233206784 blocks super 1.2 [2/2] [UU]
      bitmap: 0/2 pages [0KB], 65536KB chunk

unused devices: <none>

系統使用 2 個陣列: md126(掛載點 /boot) - 包含 /dev/sda1 и /dev/sdb1, md127 (LVM 為 swap 和檔案系統的根) - 包括 /dev/sda2 и /dev/sdb2.

我們將每個陣列中使用的第一個磁碟的分割區標記為壞分割區。

mdadm /dev/md126 --fail /dev/sda1

mdadm /dev/md127 --fail /dev/sda2

刪除區塊設備分割區 /dev/sda 來自數組。

mdadm /dev/md126 --remove /dev/sda1

mdadm /dev/md127 --remove /dev/sda2

移除磁碟後檢查陣列的狀態。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdb1[1]
      1047552 blocks super 1.2 [2/1] [_U]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      bitmap: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

3. 將新磁碟的分割區加入到陣列中

下一步是將新磁碟的分割區新增到陣列中以進行同步。 讓我們看看磁碟佈局的當前狀態。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
└─sdc3           8:35   0   2,7T  0 part  
sdd              8:48   0   2,7T  0 disk  

章節 /dev/sdc1bios_grub 部分並且不參與數組的創建。 數組只會使用 /dev/sdc2 и /dev/sdc3。 我們將這些部分加入到相應的陣列中。

mdadm /dev/md126 --add /dev/sdc2

mdadm /dev/md127 --add /dev/sdc3

然後我們等待數組同步。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdc2[2] sdb1[1]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdc3[2] sdb2[1]
      233206784 blocks super 1.2 [2/1] [_U]
      [>....................]  recovery =  0.2% (619904/233206784) finish=31.2min speed=123980K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>

向陣列新增分割區後的磁碟佈局。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdb2           8:18   0 222,5G  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  

4. 從陣列中刪除第二個磁碟的分割區

我們將每個陣列中使用的第二個磁碟的分割區標記為壞分割區。

mdadm /dev/md126 --fail /dev/sdb1

mdadm /dev/md127 --fail /dev/sdb2

刪除區塊設備分割區 /dev/sda 來自數組。

mdadm /dev/md126 --remove /dev/sdb1

mdadm /dev/md127 --remove /dev/sdb2

5.複製GPT佈局表並同步陣列

要複製 GPT 標記表,我們將使用該實用程式 sgdisk,它包含在用於處理磁碟分割和 GPT 表的包中 - gdisk.

安裝 gdisk 對於 CentOS:

yum install -y gdisk

安裝 gdisk 對於 Debian/Ubuntu:

apt install -y gdisk

注意:對於 GPT 第一個 磁碟已指示 其上 複製標記, 第二個 disk表示磁碟 從中 複製標記。 如果混用磁碟,最初好的分割區將被覆蓋並損壞。

複製 GPT 標記表。

sgdisk -R /dev/sdd /dev/sdc

將表傳輸到磁碟後進行磁碟分割 /dev/sdd.

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
└─sdd3           8:51   0   2,7T  0 part  

接下來,我們新增參與軟體 RAID 陣列的每個分割區。

mdadm /dev/md126 --add /dev/sdd2

mdadm /dev/md127 --add /dev/sdd3

我們正在等待陣列同步。

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md126 : active raid1 sdd2[3] sdc2[2]
      1047552 blocks super 1.2 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdd3[3] sdc3[2]
      233206784 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.0% (148224/233206784) finish=26.2min speed=148224K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>

將 GPT 分割區複製到第二個新磁碟後,分割區將如下所示。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
├─sda1           8:1    0     1G  0 part  
└─sda2           8:2    0 222,5G  0 part  
sdb              8:16   0 223,6G  0 disk  
├─sdb1           8:17   0     1G  0 part  
└─sdb2           8:18   0 222,5G  0 part  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
│ └─md126        9:126  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2,7T  0 part  
  └─md127        9:127  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

接下來,在新磁碟上安裝 GRUB。

CentOS 的安裝:

grub2-install /dev/sdX

Debian/Ubuntu 安裝:

grub-install /dev/sdX

哪裡 X — 驅動器號,在我們的例子中是驅動器 /dev/sdc и /dev/sdd.

我們更新有關陣列的資訊。

對於 CentOS:

mdadm --detail --scan --verbose > /etc/mdadm.conf

對於 Debian/Ubuntu:

echo "DEVICE partitions" > /etc/mdadm/mdadm.conf

mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

更新影像 initrd:
對於 CentOS:

dracut -f -v --regenerate-all

對於 Debian/Ubuntu:

update-initramfs -u -k all

我們更新 GRUB 設定。

對於 CentOS:

grub2-mkconfig -o /boot/grub2/grub.cfg

對於 Debian/Ubuntu:

update-grub

完成這些步驟後,可以刪除舊磁碟。

6.根分割區的檔案系統副檔名(ext4)

將系統移轉到 2 x 3TB 磁碟 (RAID-1) 後,在檔案系統擴充之前進行磁碟分割。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
sdb              8:16   0 223,6G  0 disk  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md126        9:126  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2,7T  0 part  
  └─md126        9:126  0 222,4G  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

現在部分 /dev/sdc3 и /dev/sdd3 佔用2.7TB。 由於我們使用 GPT 表建立了新的磁碟佈局,因此分割區 3 的大小立即設定為最大可能的磁碟空間;在這種情況下,無需擴展分割區。

有必要:

  1. 展開數組 md126,
  2. 擴大PV(物理量),
  3. 展開 LV(邏輯磁碟區)vg0-root,
  4. 擴展檔案系統。

1. 擴充數組 md126 到最大。

mdadm --grow /dev/md126 --size=max

數組擴展後 md126 佔用空間大小增加至2.7TB。

[root@localhost ~]# lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda              8:0    0 223,6G  0 disk  
sdb              8:16   0 223,6G  0 disk  
sdc              8:32   0   2,7T  0 disk  
├─sdc1           8:33   0     2M  0 part  
├─sdc2           8:34   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdc3           8:35   0   2,7T  0 part  
  └─md126        9:126  0   2,7T  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]
sdd              8:48   0   2,7T  0 disk  
├─sdd1           8:49   0     2M  0 part  
├─sdd2           8:50   0     1G  0 part  
│ └─md127        9:127  0  1023M  0 raid1 /boot
└─sdd3           8:51   0   2,7T  0 part  
  └─md126        9:126  0   2,7T  0 raid1 
    ├─vg0-root 253:0    0 206,4G  0 lvm   /
    └─vg0-swap 253:1    0    16G  0 lvm   [SWAP]

擴充 物理體積.

擴容前先查看佔用空間目前值PV /dev/md126.

[root@localhost ~]# pvs
  PV         VG  Fmt  Attr PSize   PFree
  /dev/md126 vg0 lvm2 a--  222,40g    0 

我們使用以下命令擴展 PV。

pvresize /dev/md126

我們檢查已完成的操作。

[root@localhost ~]# pvs
  PV         VG  Fmt  Attr PSize  PFree
  /dev/md126 vg0 lvm2 a--  <2,73t 2,51t

擴充 邏輯磁碟區 vg0-root.

擴大PV後,我們來看看佔用的空間VG。

[root@localhost ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree
  vg0   1   2   0 wz--n- <2,73t 2,51t

讓我們來看看LV佔用的空間。

[root@localhost ~]# lvs
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0 -wi-ao---- <206,41g                                                    
  swap vg0 -wi-ao----  <16,00g            

vg0-root 磁碟區佔用 206.41 GB。

我們將LV擴展到最大磁碟空間。

lvextend -l +100%FREE /dev/mapper/vg0-root 

檢查擴容後LV空間。

[root@localhost ~]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0 -wi-ao----   2,71t                                                    
  swap vg0 -wi-ao---- <16,00g

擴充檔案系統(ext4)。

讓我們檢查一下檔案系統的當前大小。

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,6M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   204G         1,4G  192G            1% /
/dev/md127            1007M         141M  816M           15% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

磁碟區/dev/mapper/vg0-root擴容後佔用204GB。

擴展檔案系統。

resize2fs /dev/mapper/vg0-root 

擴充後檢查檔案系統的大小。

[root@localhost ~]# df -h
Файловая система     Размер Использовано  Дост Использовано% Cмонтировано в
devtmpfs                16G            0   16G            0% /dev
tmpfs                   16G            0   16G            0% /dev/shm
tmpfs                   16G         9,6M   16G            1% /run
tmpfs                   16G            0   16G            0% /sys/fs/cgroup
/dev/mapper/vg0-root   2,7T         1,4G  2,6T            1% /
/dev/md127            1007M         141M  816M           15% /boot
tmpfs                  3,2G            0  3,2G            0% /run/user/0

檔案系統大小已增加以覆蓋整個磁碟區。

來源: www.habr.com

添加評論