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

Halo semuanya. Untuk mengantisipasi dimulainya grup baru kursus Administrator Linux, kami menerbitkan materi bermanfaat yang ditulis oleh siswa kami, serta mentor kursus, spesialis dukungan teknis produk perusahaan REG.RU Roman Travin.

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



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


Tugas: Ganti disk saat ini dengan disk yang lebih besar (hingga 2 TB) dengan transfer informasi. Dalam hal ini, kami memiliki disk SSD 2 x 240 GB (RAID-1) dengan sistem yang diinstal dan disk SATA 2 x 1 TB yang Anda perlukan untuk mentransfer sistem.

Pertimbangkan 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 

Periksa ruang sistem file saat ini yang 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 dan md127 , yang digunakan sebagai volume fisik untuk grup VG vg0 .

1. Menghapus partisi disk dari array


Periksa 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 ini menggunakan 2 array: md126 (mount point /boot ) - terdiri dari /dev/sda1 dan /dev/sdb1 , md127 (LVM untuk swap dan root sistem file) - terdiri dari /dev/sda2 dan /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 bagian dari perangkat blok / dev / sda dari array.

 mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2 

Setelah kami menghapus disk dari array, informasi tentang 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 menghapus 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. Menyalin 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 

Salin tabel markup untuk MBR:

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

Dalam perintah ini, yang pertama adalah drive tempat markup disalin, yang kedua adalah tempat untuk menyalin.

PERHATIAN : Untuk GPT, drive untuk menyalin markup ke adalah yang pertama kali ditunjukkan, drive untuk menyalin markup ke dari drive kedua . Jika Anda mencampur disk, maka markup yang awalnya sehat akan ditimpa dan dihancurkan.

Menyalin tabel markup 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 yang dilakukan, partisi di sistem pada disk /dev/sdc tidak didefinisikan, maka kami menjalankan perintah untuk membaca kembali tabel partisi.

 sfdisk -R /dev/sdc 

Jika disk saat ini menggunakan tabel MBR dan informasi perlu ditransfer ke disk dengan kapasitas lebih dari 2 TB, maka disk baru harus secara manual membuat markup GPT menggunakan bagian biosboot. Kasus ini akan dipertimbangkan di bagian 2 artikel ini.

3. Menambahkan partisi disk baru ke array


Tambahkan partisi disk ke array yang sesuai.

 mdadm /dev/md126 --add /dev/sdc1 mdadm /dev/md127 --add /dev/sdc2 

Periksa bagian yang 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 itu, kami menunggu sinkronisasi array.

 [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 

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

Ulangi langkah 1 - 3 untuk drive 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 

Kami menghapus bagian dari perangkat blok /dev/sdb dari array.

 mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2 

Setelah kami menghapus disk dari array, informasi tentang 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 menghapus 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> 

Salin tabel markup MBR dari drive /dev/sd ke drive /dev/sdd .

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

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

Tambahkan partisi disk ke array.

 mdadm /dev/md126 --add /dev/sdd1 mdadm /dev/md127 --add /dev/sdd2 

Periksa bagian yang 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 itu, kami menunggu sinkronisasi array.

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


Untuk CentOS:

 grub2-install /dev/sdX 

Untuk Debian / Ubuntu:

 grub-install /dev/sdX 

di mana X adalah huruf perangkat blok. Dalam hal ini, instal GRUB di /dev/sdc dan /dev/sdd .

6. Perpanjangan sistem file (ext4) dari partisi root


931.5 GB tersedia pada drive baru /dev/sdc dan /dev/sdd . Karena kenyataan bahwa tabel partisi disalin dari disk yang lebih kecil, 222,5 GB tersedia di /dev/sdc2 dan /dev/sdd2 .

 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] 

Itu perlu:

  1. Perpanjang bagian 2 pada setiap drive,
  2. Perpanjang array md127,
  3. Perluas PV (volume fisik),
  4. Perpanjang LV (volume logis) vg0-root,
  5. Perpanjang sistem file.

Menggunakan utilitas parted, perluas /dev/sdc2 ke nilai maksimum. parted /dev/sdc (1) dan melihat tabel partisi saat ini dengan perintah p (2).



Seperti yang Anda lihat, akhir bagian 2 berakhir dengan 240 GB. Mari kita memperluas bagian dengan perintah resizepart 2 , di mana 2 adalah nomor bagian (3). Kami menunjukkan nilai dalam format digital, misalnya 1000 GB, atau kami menggunakan indikasi berbagi disk - 100%. Sekali lagi kami memeriksa bahwa bagian tersebut memiliki ukuran baru (4).

Ulangi langkah-langkah di atas untuk drive /dev/sdd . Setelah memperluas partisi, /dev/sdc2 dan /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 itu, kami memperluas array md127 secara maksimal.

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

Pastikan array telah diperluas. Sekarang ukurannya telah 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] 

Kami melakukan ekspansi volume fisik . Sebelum ekspansi, periksa status 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 Anda lihat, PV /dev/md127 menggunakan 222,4 GB ruang.

Perluas PV dengan perintah berikut.

 pvresize /dev/md127 

Periksa hasil ekstensi 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 ekstensi, periksa status LV saat ini (1).

 [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 


Periksa tindakan yang dilakukan (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 ekspansi LV, volume ruang disk yang ditempati menjadi 914,39 GB.



Volume LV telah meningkat (4), tetapi sistem file masih membutuhkan 204 GB (5).

1. Lakukan ekstensi sistem file.

 resize2fs /dev/mapper/vg0-root 

Kami memeriksa setelah perintah dieksekusi 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-langkah, Anda dapat menghapus drive lama.

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


Tugas: Ganti disk saat ini dengan disk yang lebih besar (2 x 3TB) dengan menyimpan informasi. Dalam hal ini, kami memiliki disk SSD 2 x 240 GB (RAID-1) dengan sistem yang diinstal dan disk SATA 2 x 3 TB tempat Anda harus mentransfer sistem. Drive saat ini menggunakan tabel partisi MBR. Karena disk baru memiliki kapasitas lebih dari 2 TB, mereka harus menggunakan tabel GPT, karena MBR tidak dapat bekerja dengan disk yang lebih besar dari 2TB.

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 

Periksa tabel partisi yang digunakan pada drive /dev/sda .

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

Drive /dev/sdb menggunakan tabel partisi yang sama. Periksa ruang disk yang digunakan dalam 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 dari sistem file adalah 204 GB. Periksa status RAID perangkat lunak saat ini.

1. Instal tabel partisi GPT dan partisi disk


Periksa tata letak disk menurut 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 drive 3TB baru, kita perlu membuat 3 partisi:

  1. bios_grub bagian bios_grub untuk kompatibilitas GPT dengan BIOS,
  2. Partisi untuk array RAID yang akan dipasang di /boot .
  3. Partisi untuk array RAID yang akan menjadi root dan swap LV LV .

Instal utilitas parted dengan perintah yum install -y parted (untuk CentOS), apt install -y parted (untuk Debian / Ubuntu).

Menggunakan parted, jalankan perintah berikut untuk mempartisi disk.

parted /dev/sdc dan beralih ke mode edit tata letak disk.

Buat tabel partisi GPT.

 (parted) mktable gpt 

Buat 1 bagian bagian bios_grub dan tetapkan bendera untuk itu.

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

Buat 2 bagian dan atur bendera untuk itu. Partisi akan digunakan sebagai blok untuk array RAID dan memasangnya di /boot .

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

Kami membuat 3 bagian, yang juga akan digunakan sebagai blok array di mana akan ada LVM.

 (parted) mkpart primary 1028MiB 100% 

Dalam hal ini, pengaturan flag tidak diperlukan, tetapi jika perlu, dimungkinkan untuk mengaturnya dengan perintah berikut.

 (parted) set 3 raid on 

Periksa 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 

Tetapkan drive GUID acak baru.

 sgdisk -G /dev/sdd 

2. Menghapus partisi disk pertama dari array


Periksa 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 ini menggunakan 2 array: md126 (mount point / boot) - terdiri dari /dev/sda1 dan /dev/sdb1 , md127 (LVM untuk swap dan root dari sistem file) - terdiri dari /dev/sda2 dan /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 bagian dari perangkat blok /dev/sda dari array.

 mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2 

Periksa status array setelah menghapus 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. Kami melihat kondisi 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 

/dev/sdc1 bios_grub partisi bios_grub dan tidak terlibat dalam membuat array. /dev/sdc2 hanya akan menggunakan /dev/sdc2 dan /dev/sdc3 . Tambahkan bagian ini ke array yang sesuai.

 mdadm /dev/md126 --add /dev/sdc2 mdadm /dev/md127 --add /dev/sdc3 

Kemudian kita menunggu sinkronisasi array.

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

Mempartisi 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 

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

 mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2 

5. Salin tabel markup GPT dan sinkronkan array


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

Instal gdisk untuk CentOS:

 yum install -y gdisk 

Instal gdisk untuk Debian / Ubuntu:

 apt install -y gdisk 

PERHATIAN : Untuk GPT, disk tempat markup disalin pertama kali ditunjukkan, disk kedua adalah disk tempat markup disalin. Jika Anda mencampur disk, maka markup yang awalnya sehat akan ditimpa dan dihancurkan.

Salin tabel markup GPT.

 sgdisk -R /dev/sdd /dev/sdc 

Mempartisi disk setelah mentransfer tabel ke drive /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 sinkronisasi array.

 [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 markup GPT ke disk baru kedua, markup 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 drive baru.

Instalasi untuk CentOS:

 grub2-install /dev/sdX 

Instalasi untuk Debian / Ubuntu:

 grub-install /dev/sdX 

di mana X adalah huruf drive, dalam kasus kami drive /dev/sdc dan /dev/sdd .

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 

Memperbarui konfigurasi GRUB.

Untuk CentOS:

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

Untuk Debian / Ubuntu:

 update-grub 

Setelah langkah-langkah selesai, disk lama dapat dihapus.

6. Perpanjangan sistem file (ext4) dari partisi root


Mempartisi disk sebelum memperluas sistem file setelah memindahkan 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] 

/dev/sdc3 dan /dev/sdd3 menempati 2,7 TB. Karena kami membuat partisi baru disk dengan tabel GPT, ukuran 3 partisi segera diatur ke ruang disk maksimum yang mungkin, dalam hal ini, memperluas partisi tidak diperlukan.

Itu perlu:

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

1. md126 array md126 maksimal.

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

Setelah memperluas array md126 ukuran ruang yang ditempati 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 ekspansi, kami memeriksa 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 

Perluas PV dengan perintah berikut.

 pvresize /dev/md126 

Periksa tindakan yang selesai.

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

Memperluas kelas volume logis vg0-akar .

Setelah memperluas PV, kami memeriksa ruang yang ditempati VG.

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

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 membutuhkan 206.41 GB.

Perluas 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).

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 membutuhkan 204 GB setelah ekstensi LV.

Memperluas sistem file.

 resize2fs /dev/mapper/vg0-root 

Periksa ukuran sistem file setelah ekspansi.

 [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 ditingkatkan oleh seluruh volume volume.

Source: https://habr.com/ru/post/id486084/


All Articles