Mengganti disk yang lebih kecil dengan disk yang lebih besar di Linux

Halo semua. Menjelang dimulainya kelompok kursus baru "Pengelola Linux" Kami menerbitkan materi bermanfaat yang ditulis oleh siswa kami, serta mentor kursus, spesialis dukungan teknis untuk produk korporat REG.RU - Roman Travin.

Artikel ini akan membahas 2 kasus penggantian disk dan mentransfer informasi ke disk baru dengan kapasitas lebih besar dengan perluasan lebih lanjut dari array dan sistem file. Kasus pertama menyangkut penggantian disk dengan partisi MBR/MBR atau GPT/GPT yang sama, kasus kedua menyangkut penggantian disk dengan partisi MBR dengan disk dengan kapasitas lebih dari 2 TB, yang mana Anda perlu menginstal partisi GPT dengan partisi biosboot. Dalam kedua kasus tersebut, disk tempat kami mentransfer data sudah diinstal di server. Sistem file yang digunakan untuk partisi root adalah ext4.

Kasus 1: Mengganti disk yang lebih kecil dengan disk yang lebih besar (hingga 2 TB)

Tugas: Ganti disk saat ini dengan disk yang lebih besar (hingga 2 TB) dengan transfer informasi. Dalam hal ini, kami memiliki disk SSD (RAID-2) 240 x 1 GB dengan sistem terinstal dan disk SATA 2 x 1 TB tempat sistem perlu ditransfer.

Mari kita lihat tata letak disk saat ini.

[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  

Mari kita periksa ruang sistem file yang saat ini digunakan.

[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

Ukuran sistem file sebelum mengganti disk adalah 204 GB, 2 array perangkat lunak md126 digunakan, yang dipasang di /boot и md127, yang digunakan sebagai volume fisik untuk grup VG vg0.dll.

1. Menghapus partisi disk dari array

Memeriksa status array

[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>

Sistem menggunakan 2 array: md126 (titik pemasangan /boot) - terdiri dari satu bagian /dev/sda1 и /dev/sdb1, md127 (LVM untuk menukar dan root dari sistem file) - terdiri dari /dev/sda2 и /dev/sdb2.

Kami menandai partisi disk pertama yang digunakan di setiap array sebagai buruk.

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

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

Kami menghapus partisi perangkat blok /dev/sda dari array.

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

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

Setelah kita mengeluarkan disk dari array, informasi perangkat blok akan terlihat seperti ini.

[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  

Keadaan array setelah mengeluarkan 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. Salin tabel partisi ke disk baru

Anda dapat memeriksa tabel partisi yang digunakan pada disk dengan perintah berikut.

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

Output untuk MBR adalah:

Disk label type: dos

untuk GPT:

Disk label type: gpt

Menyalin tabel partisi untuk MBR:

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

Dalam perintah ini yang pertama disk ditunjukkan с yang mana markup disalin, kedua - dimana menyalin.

PERHATIAN: Untuk GPT yang pertama disk ditunjukkan di mana salin markup, kedua disk menunjukkan disk dari mana salin markup. Jika Anda mencampuradukkan disk, partisi yang awalnya baik akan ditimpa dan dimusnahkan.

Menyalin tabel tata letak untuk GPT:

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

Selanjutnya, tetapkan UUID acak ke disk (untuk GPT).


sgdisk -G /dev/sdc

Setelah perintah dijalankan, partisi akan muncul di disk /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  

Jika, setelah tindakan dilakukan, partisi dalam sistem pada disk /dev/sdc ragu-ragu, lalu kita jalankan perintah untuk membaca ulang tabel partisi.

sfdisk -R /dev/sdc

Jika disk saat ini menggunakan tabel MBR dan informasi perlu ditransfer ke disk yang lebih besar dari 2 TB, maka pada disk baru Anda perlu membuat partisi GPT secara manual menggunakan partisi biosboot. Kasus ini akan dibahas pada Bagian 2 artikel ini.

3. Menambahkan partisi disk baru ke array

Mari tambahkan partisi disk ke array yang sesuai.

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

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

Kami memeriksa apakah bagian tersebut telah ditambahkan.

[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  

Setelah ini, kita menunggu hingga array disinkronkan.

[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>

Anda dapat terus memantau proses sinkronisasi menggunakan utilitas watch.

watch -n 2 cat /proc/mdstat

Parameter -n menentukan pada interval berapa dalam hitungan detik perintah harus dijalankan untuk memeriksa kemajuan.

Ulangi langkah 1 - 3 untuk disk pengganti berikutnya.

Kami menandai partisi disk kedua yang digunakan di setiap array sebagai buruk.

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

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

Menghapus partisi perangkat blok /dev/sdb dari array.

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

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

Setelah kita mengeluarkan disk dari array, informasi perangkat blok akan terlihat seperti ini.

[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  

Keadaan array setelah mengeluarkan 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>

Menyalin tabel partisi MBR dari disk /dev/sdс ke disk /dev/sdd.

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

Setelah perintah dijalankan, partisi akan muncul di disk /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  

Menambahkan partisi disk ke array.

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

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

Kami memeriksa apakah bagian tersebut telah ditambahkan.

[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]

Setelah ini, kita menunggu hingga array disinkronkan.

[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. Menginstal GRUB pada drive baru

Untuk CentOS:

grub2-install /dev/sdX

Untuk Debian/Ubuntu:

grub-install /dev/sdX

dimana X — huruf perangkat blok. Dalam hal ini, Anda perlu menginstal GRUB /dev/sdc и /dev/sdd.

6. Ekstensi sistem file (ext4) dari partisi root

Pada disk baru /dev/sdc и /dev/sdd Tersedia 931.5 GB. Karena kenyataan bahwa tabel partisi disalin dari disk yang lebih kecil, partisi /dev/sdc2 и /dev/sdd2 Tersedia 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]

Hal ini diperlukan:

  1. Perluas partisi 2 pada masing-masing disk,
  2. Perluas susunan md127,
  3. Perluas PV (volume fisik),
  4. Perluas LV (volume logis) vg0-root,
  5. Perluas sistem file.

Menggunakan utilitas berpisah mari kita perluas bagiannya /dev/sdc2 ke nilai maksimum. Jalankan perintah parted /dev/sdc (1) dan lihat tabel partisi saat ini dengan perintah p (2).

Mengganti disk yang lebih kecil dengan disk yang lebih besar di Linux

Seperti yang Anda lihat, akhir partisi 2 berakhir pada 240 GB. Mari perluas partisi dengan perintah resizepart 2, dimana 2 adalah nomor bagian (3). Kami menunjukkan nilai dalam format digital, misalnya 1000 GB, atau menggunakan indikasi pembagian disk - 100%. Kami memeriksa lagi apakah partisi tersebut memiliki ukuran baru (4).

Ulangi langkah di atas untuk disk /dev/sdd. Setelah memperluas partisi /dev/sdc2 и /dev/sdd2 menjadi sama dengan 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]

Setelah ini kami memperluas arraynya md127 hingga maksimal.

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

Kami memeriksa apakah array telah diperluas. Sekarang ukurannya menjadi 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]

Memperluas ekstensi volume fisik. Sebelum memperluas, mari kita periksa kondisi PV saat ini.

[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   ]

Seperti yang bisa dilihat, PV /dev/md127 menggunakan ruang 222.4 GB.

Kami memperluas PV dengan perintah berikut.

pvresize /dev/md127

Memeriksa hasil ekspansi 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   ]

Memperluas volume logis. Sebelum memperluas, mari kita periksa kondisi LV (1) saat ini.

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

LV /dev/vg0/root menggunakan 206.41 GB.

Kami memperluas LV dengan perintah berikut (2).

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

Kami memeriksa tindakan yang telah selesai (3).

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

Seperti yang Anda lihat, setelah LV diperluas, jumlah ruang disk yang digunakan menjadi 914.39 GB.

Mengganti disk yang lebih kecil dengan disk yang lebih besar di Linux

Volume LV meningkat (4), namun sistem file masih menempati 204 GB (5).

1. Mari perluas sistem file.

resize2fs /dev/mapper/vg0-root

Setelah perintah dijalankan, kami memeriksa ukuran sistem file.

[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

Ukuran sistem file root akan meningkat menjadi 900 GB. Setelah menyelesaikan langkah-langkahnya, Anda dapat menghapus disk lama.

Kasus 2: Mengganti disk yang lebih kecil dengan disk yang lebih besar (lebih dari 2TB)

Tugas: Ganti disk saat ini dengan disk yang lebih besar (2 x 3TB) dengan tetap menjaga informasinya. Dalam hal ini, kami memiliki disk SSD (RAID-2) 240 x 1 GB dengan sistem terinstal dan disk SATA 2 x 3 TB tempat sistem perlu ditransfer. Disk saat ini menggunakan tabel partisi MBR. Karena disk baru memiliki kapasitas lebih besar dari 2 TB, disk tersebut perlu menggunakan tabel GPT, karena MBR tidak dapat bekerja dengan disk yang lebih besar dari 2 TB.

Mari kita lihat tata letak disk saat ini.

[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  

Mari kita periksa tabel partisi yang digunakan pada disk /dev/sda.

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

Di disk /dev/sdb tabel partisi serupa digunakan. Mari kita periksa ruang disk yang digunakan pada sistem.

[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

Seperti yang Anda lihat, root sistem file membutuhkan 204 GB. Mari kita periksa status array RAID perangkat lunak saat ini.

1. Menginstal tabel partisi GPT dan mempartisi disk

Mari kita periksa tata letak disk berdasarkan sektor.

[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

Pada disk 3TB yang baru kita perlu membuat 3 partisi:

  1. Bagian bios_grub Ukuran 2MiB untuk kompatibilitas GPT BIOS,
  2. Partisi untuk array RAID yang akan dipasang /boot.
  3. Partisi untuk array RAID yang akan ditempatkan Akar LV и pertukaran LV.

Menginstal utilitas berpisah tim yum install -y parted (untuk CentOS), apt install -y parted (untuk Debian/Ubuntu).

Menggunakan berpisah Mari jalankan perintah berikut untuk mempartisi disk.

Jalankan perintah parted /dev/sdc dan masuk ke mode pengeditan tata letak disk.

Buat tabel partisi GPT.

(parted) mktable gpt

Buat 1 bagian bios_grub bagian dan atur tanda untuk itu.

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

Buat partisi 2 dan atur tandanya. Partisi tersebut akan digunakan sebagai blok untuk array RAID dan dipasang di dalamnya /boot.

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

Kami membuat partisi 3, yang juga akan digunakan sebagai blok array di mana LVM akan ditempatkan.

(parted) mkpart primary 1028MiB 100% 

Dalam hal ini, tidak perlu menyetel flag, tetapi jika perlu, dapat disetel dengan perintah berikut.

(parted) set 3 raid on

Kami memeriksa tabel yang dibuat.

(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

Kami menetapkan GUID acak baru ke disk.

sgdisk -G /dev/sdd

2. Menghapus partisi disk pertama dari array

Memeriksa status array

[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>

Sistem menggunakan 2 array: md126 (mount point /boot) - terdiri dari /dev/sda1 и /dev/sdb1, md127 (LVM untuk swap dan root dari sistem file) - terdiri dari /dev/sda2 и /dev/sdb2.

Kami menandai partisi disk pertama yang digunakan di setiap array sebagai buruk.

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

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

Menghapus partisi perangkat blok /dev/sda dari array.

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

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

Memeriksa status array setelah mengeluarkan 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: 2/2 pages [8KB], 65536KB chunk

unused devices: <none>

3. Menambahkan partisi disk baru ke array

Langkah selanjutnya adalah menambahkan partisi disk baru ke array untuk sinkronisasi. Mari kita lihat keadaan tata letak disk saat ini.

[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  

Bagian /dev/sdc1 adalah bios_grub bagian dan tidak terlibat dalam pembuatan array. Array hanya akan digunakan /dev/sdc2 и /dev/sdc3. Kami menambahkan bagian ini ke array yang sesuai.

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

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

Kemudian kita menunggu array untuk melakukan sinkronisasi.

[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>

Partisi disk setelah menambahkan partisi ke array.

[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. Menghapus partisi disk kedua dari array

Kami menandai partisi disk kedua yang digunakan di setiap array sebagai buruk.

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

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

Menghapus partisi perangkat blok /dev/sda dari array.

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

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

5. Salin tabel tata letak GPT dan sinkronkan array

Untuk menyalin tabel markup GPT kita akan menggunakan utilitas sgdisk, yang disertakan dalam paket untuk bekerja dengan partisi disk dan tabel GPT - gdisk.

Instalasi gdisk untuk CentOS:

yum install -y gdisk

Instalasi gdisk untuk Debian/Ubuntu:

apt install -y gdisk

PERHATIAN: Untuk GPT yang pertama disk ditunjukkan di mana salin markupnya, kedua disk menunjukkan disk dari mana salin markupnya. Jika Anda mencampuradukkan disk, partisi yang awalnya baik akan ditimpa dan dimusnahkan.

Salin tabel markup GPT.

sgdisk -R /dev/sdd /dev/sdc

Partisi disk setelah mentransfer tabel ke disk /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  

Selanjutnya, kami menambahkan setiap partisi yang berpartisipasi dalam array RAID perangkat lunak.

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

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

Kami sedang menunggu array untuk disinkronkan.

[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>

Setelah menyalin partisi GPT ke disk baru kedua, partisi tersebut akan terlihat seperti ini.

[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]

Selanjutnya, instal GRUB pada disk baru.

Instalasi untuk CentOS:

grub2-install /dev/sdX

Instalasi untuk Debian/Ubuntu:

grub-install /dev/sdX

dimana X — huruf drive, dalam kasus kami drive /dev/sdc и /dev/sdd.

Kami memperbarui informasi tentang array.

Untuk CentOS:

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

Untuk Debian/Ubuntu:

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

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

Memperbarui gambar initrd:
Untuk CentOS:

dracut -f -v --regenerate-all

Untuk Debian/Ubuntu:

update-initramfs -u -k all

Kami memperbarui konfigurasi GRUB.

Untuk CentOS:

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

Untuk Debian/Ubuntu:

update-grub

Setelah menyelesaikan langkah-langkahnya, disk lama dapat dihapus.

6. Ekstensi sistem file (ext4) dari partisi root

Partisi disk sebelum perluasan sistem file setelah memigrasi sistem ke disk 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]

Sekarang bagian /dev/sdc3 и /dev/sdd3 menempati 2.7 TB. Karena kami membuat tata letak disk baru dengan tabel GPT, ukuran partisi 3 segera disetel ke ruang disk semaksimal mungkin; dalam hal ini, tidak perlu memperluas partisi.

Hal ini diperlukan:

  1. Perluas susunan md126,
  2. Perluas PV (volume fisik),
  3. Perluas LV (volume logis) vg0-root,
  4. Perluas sistem file.

1. Perluas arraynya md126 hingga maksimal.

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

Setelah perluasan array md126 ukuran ruang yang ditempati telah meningkat menjadi 2.7 TB.

[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]

Memperluas volume fisik.

Sebelum memperluas, periksa nilai saat ini dari ruang yang ditempati PV /dev/md126.

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

Kami memperluas PV dengan perintah berikut.

pvresize /dev/md126

Kami memeriksa tindakan yang telah selesai.

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

Memperluas volume logis vg0-root.

Setelah memperluas PV, mari kita periksa ruang yang ditempati VG.

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

Mari kita periksa ruang yang ditempati oleh 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            

Volume vg0-root menempati 206.41 GB.

Kami memperluas LV ke ruang disk maksimum.

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

Memeriksa ruang LV setelah ekspansi.

[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

Memperluas sistem file (ext4).

Mari kita periksa ukuran sistem file saat ini.

[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

Volume /dev/mapper/vg0-root menempati 204 GB setelah ekspansi LV.

Memperluas sistem file.

resize2fs /dev/mapper/vg0-root 

Memeriksa ukuran sistem file setelah mengembangkannya.

[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

Ukuran sistem file telah ditingkatkan untuk mencakup seluruh volume.

Sumber: www.habr.com

Tambah komentar