Menggantikan cakera yang lebih kecil dengan cakera yang lebih besar di Linux

Hai semua. Pada malam permulaan kumpulan kursus baru "Pentadbir Linux" Kami sedang menerbitkan bahan berguna yang ditulis oleh pelajar kami, serta mentor kursus, pakar sokongan teknikal untuk produk korporat REG.RU - Roman Travin.

Artikel ini akan mempertimbangkan 2 kes menggantikan cakera dan memindahkan maklumat ke cakera baharu dengan kapasiti yang lebih besar dengan pengembangan lanjut tatasusunan dan sistem fail. Kes pertama melibatkan penggantian cakera dengan pembahagian MBR/MBR atau GPT/GPT yang sama, kes kedua melibatkan penggantian cakera dengan pembahagian MBR dengan cakera dengan kapasiti lebih daripada 2 TB, di mana anda perlu memasang partition GPT dengan partition biosboot. Dalam kedua-dua kes, cakera yang kami pindahkan data telah dipasang pada pelayan. Sistem fail yang digunakan untuk partition root ialah ext4.

Kes 1: Menggantikan cakera yang lebih kecil dengan cakera yang lebih besar (sehingga 2TB)

Tugas: Gantikan cakera semasa dengan cakera yang lebih besar (sehingga 2 TB) dengan pemindahan maklumat. Dalam kes ini, kami mempunyai cakera 2 x 240 GB SSD (RAID-1) dengan sistem dipasang dan cakera SATA 2 x 1 TB yang sistem perlu dipindahkan.

Mari lihat susun atur cakera semasa.

[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 semak ruang sistem fail yang sedang 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

Saiz sistem fail sebelum menggantikan cakera ialah 204 GB, 2 tatasusunan perisian md126 digunakan, yang dipasang dalam /boot и md127, yang digunakan sebagai isipadu fizikal untuk kumpulan VG vg0.

1. Mengalih keluar partition cakera daripada tatasusunan

Menyemak keadaan tatasusunan

[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 tatasusunan: md126 (titik lekap /boot) - terdiri daripada bahagian /dev/sda1 и /dev/sdb1, md127 (LVM untuk swap dan akar sistem fail) - terdiri daripada /dev/sda2 и /dev/sdb2.

Kami menandakan partition cakera pertama yang digunakan dalam setiap tatasusunan sebagai buruk.

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

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

Kami mengalih keluar partition peranti blok /dev/sda daripada tatasusunan.

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

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

Selepas kami telah mengalih keluar cakera daripada tatasusunan, maklumat peranti blok akan kelihatan 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 tatasusunan selepas mengeluarkan cakera.

[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 jadual partition ke cakera baharu

Anda boleh menyemak jadual partition yang digunakan pada cakera dengan arahan berikut.

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

Output untuk MBR ialah:

Disk label type: dos

untuk GPT:

Disk label type: gpt

Menyalin jadual partition untuk MBR:

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

Dalam pasukan ini первым cakera ditunjukkan с yang mana markup disalin, kedua - di mana salinan.

PERHATIAN: Untuk GPT первым cakera ditunjukkan yang mana salin markup, kedua cakera menunjukkan cakera dari mana salin markup. Jika anda mencampurkan cakera, partition yang pada mulanya baik akan ditimpa dan dimusnahkan.

Menyalin jadual reka letak untuk GPT:

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

Seterusnya, tetapkan UUID rawak pada cakera (untuk GPT).


sgdisk -G /dev/sdc

Selepas arahan itu dilaksanakan, partition harus muncul pada cakera /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, selepas tindakan dilakukan, partition dalam sistem pada cakera /dev/sdc belum membuat keputusan, maka kami melaksanakan arahan untuk membaca semula jadual partition.

sfdisk -R /dev/sdc

Jika cakera semasa menggunakan jadual MBR dan maklumat perlu dipindahkan ke cakera yang lebih besar daripada 2 TB, maka pada cakera baharu anda perlu mencipta partition GPT secara manual menggunakan partition biosboot. Kes ini akan dibincangkan dalam Bahagian 2 artikel ini.

3. Menambah partition cakera baharu pada tatasusunan

Mari tambah partition cakera pada tatasusunan yang sepadan.

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

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

Kami menyemak bahawa bahagian 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  

Selepas ini, kami menunggu tatasusunan untuk disegerakkan.

[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 boleh terus memantau proses penyegerakan menggunakan utiliti watch.

watch -n 2 cat /proc/mdstat

Parameter -n menentukan pada selang masa dalam beberapa saat arahan mesti dilaksanakan untuk menyemak kemajuan.

Ulang langkah 1 - 3 untuk cakera gantian seterusnya.

Kami menandakan partition cakera kedua yang digunakan dalam setiap tatasusunan sebagai buruk.

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

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

Mengalih keluar sekatan peranti blok /dev/sdb daripada tatasusunan.

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

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

Selepas kami telah mengalih keluar cakera daripada tatasusunan, maklumat peranti blok akan kelihatan 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 tatasusunan selepas mengeluarkan cakera.

[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 jadual partition MBR dari cakera /dev/sdс ke cakera /dev/sdd.

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

Selepas arahan itu dilaksanakan, partition harus muncul pada cakera /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  

Menambah partition cakera pada tatasusunan.

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

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

Kami menyemak bahawa bahagian 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]

Selepas ini, kami menunggu tatasusunan untuk disegerakkan.

[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. Memasang GRUB pada pemacu baharu

Untuk CentOS:

grub2-install /dev/sdX

Untuk Debian/Ubuntu:

grub-install /dev/sdX

mana X — huruf peranti blok. Dalam kes ini, anda perlu memasang GRUB pada /dev/sdc и /dev/sdd.

6. Sambungan sistem fail (ext4) bagi partition root

Pada cakera baharu /dev/sdc и /dev/sdd 931.5 GB tersedia. Disebabkan oleh fakta bahawa jadual partition telah disalin dari cakera yang lebih kecil, partition /dev/sdc2 и /dev/sdd2 222.5 GB tersedia.

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]

Perlu:

  1. Panjangkan partition 2 pada setiap cakera,
  2. Kembangkan tatasusunan md127,
  3. Kembangkan PV (isipadu fizikal),
  4. Kembangkan LV (volum logik) vg0-root,
  5. Kembangkan sistem fail.

Menggunakan utiliti berpisah mari luaskan bahagian /dev/sdc2 kepada nilai maksimum. Laksanakan arahan parted /dev/sdc (1) dan lihat jadual partition semasa dengan arahan p (2).

Menggantikan cakera yang lebih kecil dengan cakera yang lebih besar di Linux

Seperti yang anda lihat, penghujung partition 2 berakhir pada 240 GB. Mari kembangkan partition dengan arahan resizepart 2, dengan 2 ialah bilangan bahagian (3). Kami menunjukkan nilai dalam format digital, contohnya 1000 GB, atau menggunakan petunjuk bahagian cakera - 100%. Kami menyemak semula bahawa partition mempunyai saiz baharu (4).

Ulangi langkah di atas untuk cakera /dev/sdd. Selepas mengembangkan partition /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]

Selepas ini kami mengembangkan tatasusunan md127 secara maksimum.

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

Kami menyemak bahawa tatasusunan telah berkembang. Kini saiznya 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]

Memanjangkan sambungan isipadu fizikal. Sebelum mengembangkan, mari kita semak keadaan semasa 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   ]

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

Kami mengembangkan PV dengan arahan berikut.

pvresize /dev/md127

Menyemak hasil pengembangan 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   ]

Mengembangkan isipadu logik. Sebelum mengembangkan, mari kita semak keadaan semasa 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 menggunakan 206.41 GB.

Kami mengembangkan LV dengan arahan berikut (2).

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

Kami menyemak 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, selepas mengembangkan LV, jumlah ruang cakera yang diduduki menjadi 914.39 GB.

Menggantikan cakera yang lebih kecil dengan cakera yang lebih besar di Linux

Jumlah LV telah meningkat (4), tetapi sistem fail masih menduduki 204 GB (5).

1. Mari kembangkan sistem fail.

resize2fs /dev/mapper/vg0-root

Selepas arahan itu dilaksanakan, kami menyemak saiz sistem fail.

[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

Saiz sistem fail akar akan meningkat kepada 900 GB. Selepas melengkapkan langkah, anda boleh mengalih keluar cakera lama.

Kes 2: Menggantikan cakera yang lebih kecil dengan cakera yang lebih besar (lebih daripada 2TB)

Senaman: Gantikan cakera semasa dengan cakera yang lebih besar (2 x 3TB) sambil mengekalkan maklumat. Dalam kes ini, kami mempunyai cakera 2 x 240 GB SSD (RAID-1) dengan sistem dipasang dan cakera SATA 2 x 3 TB yang sistem perlu dipindahkan. Cakera semasa menggunakan jadual partition MBR. Memandangkan cakera baharu mempunyai kapasiti lebih daripada 2 TB, ia perlu menggunakan jadual GPT, memandangkan MBR tidak boleh berfungsi dengan cakera yang lebih besar daripada 2 TB.

Mari lihat susun atur cakera semasa.

[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 semak jadual partition yang digunakan pada cakera /dev/sda.

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

Pada cakera /dev/sdb jadual partition yang serupa digunakan. Mari kita semak ruang cakera 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, akar sistem fail memerlukan 204 GB. Mari kita semak keadaan semasa tatasusunan RAID perisian.

1. Memasang jadual partition GPT dan partitioning cakera

Mari kita semak susun atur cakera mengikut 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 cakera 3TB baharu kita perlu mencipta 3 partition:

  1. Seksyen bios_grub Saiz 2MiB untuk keserasian GPT BIOS,
  2. Pembahagian untuk tatasusunan RAID yang akan dipasang /boot.
  3. Pembahagian untuk tatasusunan RAID yang akan ada akar LV и pertukaran LV.

Memasang utiliti berpisah pasukan yum install -y parted (untuk CentOS), apt install -y parted (untuk Debian/Ubuntu).

Menggunakan berpisah Mari jalankan arahan berikut untuk membahagikan cakera.

Laksanakan arahan parted /dev/sdc dan pergi ke mod penyuntingan susun atur cakera.

Buat jadual partition GPT.

(parted) mktable gpt

Buat 1 bahagian bios_grub bahagian dan tetapkan bendera untuknya.

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

Buat partition 2 dan tetapkan bendera untuknya. Partition akan digunakan sebagai blok untuk tatasusunan RAID dan dipasang /boot.

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

Kami mencipta bahagian ke-3, yang juga akan digunakan sebagai blok tatasusunan di mana LVM akan ditempatkan.

(parted) mkpart primary 1028MiB 100% 

Dalam kes ini, tidak perlu menetapkan bendera, tetapi jika perlu, ia boleh ditetapkan dengan arahan berikut.

(parted) set 3 raid on

Kami menyemak jadual 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 rawak baharu pada cakera.

sgdisk -G /dev/sdd

2. Mengalih keluar sekatan cakera pertama daripada tatasusunan

Menyemak keadaan tatasusunan

[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 tatasusunan: md126 (mount point /boot) - terdiri daripada /dev/sda1 и /dev/sdb1, md127 (LVM untuk swap dan akar sistem fail) - terdiri daripada /dev/sda2 и /dev/sdb2.

Kami menandakan partition cakera pertama yang digunakan dalam setiap tatasusunan sebagai buruk.

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

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

Mengalih keluar sekatan peranti blok /dev/sda daripada tatasusunan.

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

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

Menyemak keadaan tatasusunan selepas mengeluarkan cakera.

[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. Menambah partition cakera baharu pada tatasusunan

Langkah seterusnya ialah menambah partition cakera baharu pada tatasusunan untuk penyegerakan. Mari kita lihat keadaan semasa susun atur cakera.

[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  

Seksyen /dev/sdc1 adalah bios_grub bahagian dan tidak terlibat dalam penciptaan tatasusunan. Tatasusunan hanya akan digunakan /dev/sdc2 и /dev/sdc3. Kami menambah bahagian ini pada tatasusunan yang sepadan.

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

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

Kemudian kita tunggu array untuk disegerakkan.

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

Pembahagian cakera selepas menambah partition pada tatasusunan.

[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. Mengalih keluar sekatan cakera kedua daripada tatasusunan

Kami menandakan partition cakera kedua yang digunakan dalam setiap tatasusunan sebagai buruk.

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

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

Mengalih keluar sekatan peranti blok /dev/sda daripada tatasusunan.

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

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

5. Salin jadual susun atur GPT dan segerakkan tatasusunan

Untuk menyalin jadual markup GPT kami akan menggunakan utiliti sgdisk, yang disertakan dalam pakej untuk bekerja dengan partition cakera dan jadual GPT - gdisk.

Pemasangan gdisk untuk CentOS:

yum install -y gdisk

Pemasangan gdisk untuk Debian/Ubuntu:

apt install -y gdisk

PERHATIAN: Untuk GPT первым cakera ditunjukkan yang mana salin markup, kedua cakera menunjukkan cakera dari mana salin markup. Jika anda mencampurkan cakera, partition yang pada mulanya baik akan ditimpa dan dimusnahkan.

Salin jadual penanda GPT.

sgdisk -R /dev/sdd /dev/sdc

Pembahagian cakera selepas memindahkan jadual ke cakera /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  

Seterusnya, kami menambah setiap partition yang mengambil bahagian dalam tatasusunan RAID perisian.

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

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

Kami sedang menunggu tatasusunan untuk disegerakkan.

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

Selepas menyalin partition GPT ke cakera baharu kedua, partition akan kelihatan 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]

Seterusnya, pasang GRUB pada cakera baharu.

Pemasangan untuk CentOS:

grub2-install /dev/sdX

Pemasangan untuk Debian/Ubuntu:

grub-install /dev/sdX

mana X — surat memandu, dalam kes kami memandu /dev/sdc и /dev/sdd.

Kami mengemas kini maklumat tentang tatasusunan.

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

Mengemas kini imej initrd:
Untuk CentOS:

dracut -f -v --regenerate-all

Untuk Debian/Ubuntu:

update-initramfs -u -k all

Kami mengemas kini konfigurasi GRUB.

Untuk CentOS:

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

Untuk Debian/Ubuntu:

update-grub

Selepas melengkapkan langkah, cakera lama boleh dialih keluar.

6. Sambungan sistem fail (ext4) bagi partition root

Pembahagian cakera sebelum pengembangan sistem fail selepas memindahkan sistem kepada cakera 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 bahagian /dev/sdc3 и /dev/sdd3 menduduki 2.7 TB. Memandangkan kami mencipta susun atur cakera baharu dengan jadual GPT, saiz partition 3 segera ditetapkan kepada ruang cakera maksimum yang mungkin; dalam kes ini, tidak perlu mengembangkan partition.

Perlu:

  1. Kembangkan tatasusunan md126,
  2. Kembangkan PV (isipadu fizikal),
  3. Kembangkan LV (volum logik) vg0-root,
  4. Kembangkan sistem fail.

1. Kembangkan tatasusunan md126 secara maksimum.

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

Selepas pengembangan tatasusunan md126 saiz ruang yang diduduki telah meningkat kepada 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]

Mengembangkan isipadu fizikal.

Sebelum mengembangkan, semak nilai semasa PV ruang yang diduduki /dev/md126.

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

Kami mengembangkan PV dengan arahan berikut.

pvresize /dev/md126

Kami menyemak tindakan yang telah selesai.

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

Mengembangkan volum logik vg0-root.

Selepas mengembangkan PV, mari semak VG ruang yang diduduki.

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

Jom semak ruang yang diduduki 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            

Jumlah vg0-root menduduki 206.41 GB.

Kami mengembangkan LV ke ruang cakera maksimum.

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

Memeriksa ruang LV selepas pengembangan.

[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 fail (ext4).

Mari kita semak saiz semasa sistem fail.

[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

Kelantangan /dev/mapper/vg0-root menduduki 204 GB selepas pengembangan LV.

Memperluas sistem fail.

resize2fs /dev/mapper/vg0-root 

Menyemak saiz sistem fail selepas 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

Saiz sistem fail telah ditingkatkan untuk menampung keseluruhan volum.

Sumber: www.habr.com

Tambah komen