Pinapalitan ang mas maliliit na disk ng mas malalaking disk sa Linux

Kamusta kayong lahat. Sa bisperas ng pagsisimula ng isang bagong grupo ng kurso "Linux Administrator" Naglalathala kami ng kapaki-pakinabang na materyal na isinulat ng aming mag-aaral, pati na rin ang tagapayo ng kurso, espesyalista sa teknikal na suporta para sa mga produkto ng kumpanya ng REG.RU - Roman Travin.

Isasaalang-alang ng artikulong ito ang 2 kaso ng pagpapalit ng mga disk at paglilipat ng impormasyon sa mga bagong disk na may mas malaking kapasidad na may karagdagang pagpapalawak ng array at file system. Ang unang kaso ay tungkol sa pagpapalit ng mga disk na may parehong MBR/MBR o GPT/GPT partitioning, ang pangalawang kaso ay tungkol sa pagpapalit ng mga disk na may MBR partitioning na may mga disk na may kapasidad na higit sa 2 TB, kung saan kakailanganin mong mag-install isang GPT partition na may biosboot partition. Sa parehong mga kaso, ang mga disk kung saan kami naglilipat ng data ay naka-install na sa server. Ang file system na ginamit para sa root partition ay ext4.

Kaso 1: Pagpapalit ng mas maliliit na disk ng mas malalaking disk (hanggang sa 2TB)

Problema: Palitan ang mga kasalukuyang disk ng mas malalaking disk (hanggang 2 TB) ng paglilipat ng impormasyon. Sa kasong ito, mayroon kaming 2 x 240 GB SSD (RAID-1) na mga disk na may naka-install na system at 2 x 1 TB SATA disk kung saan kailangang ilipat ang system.

Tingnan natin ang kasalukuyang layout ng disk.

[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  

Suriin natin ang kasalukuyang ginagamit na espasyo ng file system.

[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

Ang laki ng file system bago palitan ang mga disk ay 204 GB, 2 md126 software arrays ang ginagamit, na naka-mount sa /boot и md127, na ginagamit bilang pisikal na dami para sa VG group vg0.

1. Pag-alis ng mga partisyon ng disk mula sa mga array

Sinusuri ang estado ng 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>

Gumagamit ang system ng 2 array: md126 (Mount point /boot) - binubuo ng isang seksyon /dev/sda1 и /dev/sdb1, md127 (LVM para sa magpalitan at ang ugat ng file system) - binubuo ng /dev/sda2 и /dev/sdb2.

Minarkahan namin ang mga partisyon ng unang disk na ginagamit sa bawat array bilang masama.

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

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

Inalis namin ang /dev/sda block device partition mula sa mga array.

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

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

Pagkatapos naming alisin ang disk mula sa array, magiging ganito ang hitsura ng impormasyon ng block device.

[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  

Katayuan ng mga array pagkatapos alisin ang mga 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. Kopyahin ang partition table sa isang bagong disk

Maaari mong suriin ang ginamit na talahanayan ng partisyon sa disk gamit ang sumusunod na utos.

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

Ang output para sa MBR ay:

Disk label type: dos

para sa GPT:

Disk label type: gpt

Pagkopya ng partition table para sa MBR:

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

Sa pangkat na ito una disk ay ipinahiwatig с kung saan ang markup ay kinopya, pangalawa - saan kopya.

Pansin: Para sa GPT una disk ay ipinahiwatig kung saan kopyahin ang markup, pangalawa disk ay nagpapahiwatig ng disk mula saan kopyahin ang markup. Kung pinaghalo mo ang mga disk, ang unang magandang partisyon ay mapapatungan at masisira.

Pagkopya ng talahanayan ng layout para sa GPT:

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

Susunod, magtalaga ng random na UUID sa disk (para sa GPT).


sgdisk -G /dev/sdc

Matapos maisakatuparan ang utos, dapat na lumitaw ang mga partisyon sa 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  

Kung, pagkatapos maisagawa ang aksyon, ang mga partisyon sa system sa disk /dev/sdc undecided, pagkatapos ay isagawa namin ang utos na basahin muli ang partition table.

sfdisk -R /dev/sdc

Kung ang kasalukuyang mga disk ay gumagamit ng MBR table at ang impormasyon ay kailangang ilipat sa mga disk na mas malaki kaysa sa 2 TB, pagkatapos ay sa mga bagong disk kakailanganin mong manu-manong lumikha ng GPT partition gamit ang biosboot partition. Ang kasong ito ay tatalakayin sa Bahagi 2 ng artikulong ito.

3. Pagdaragdag ng mga partisyon ng bagong disk sa array

Magdagdag tayo ng mga partisyon ng disk sa kaukulang mga array.

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

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

Sinusuri namin na ang mga seksyon ay naidagdag.

[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  

Pagkatapos nito, hinihintay namin na mag-synchronize ang mga 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>

Maaari mong patuloy na subaybayan ang proseso ng pag-synchronize gamit ang utility watch.

watch -n 2 cat /proc/mdstat

Parametro -n tumutukoy sa kung anong mga agwat sa mga segundo ang utos ay dapat isagawa upang suriin ang pag-unlad.

Ulitin ang mga hakbang 1 - 3 para sa susunod na kapalit na disk.

Minarkahan namin ang mga partisyon ng pangalawang disk na ginagamit sa bawat array bilang masama.

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

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

Pag-alis ng mga block partition ng device /dev/sdb mula sa mga arrays.

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

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

Pagkatapos naming alisin ang disk mula sa array, magiging ganito ang hitsura ng impormasyon ng block device.

[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  

Katayuan ng mga array pagkatapos alisin ang mga 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>

Pagkopya ng MBR partition table mula sa disk /dev/sdс sa disk /dev/sdd.

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

Matapos maisakatuparan ang utos, dapat na lumitaw ang mga partisyon sa 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  

Pagdaragdag ng mga partisyon ng disk sa mga array.

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

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

Sinusuri namin na ang mga seksyon ay naidagdag.

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

Pagkatapos nito, hinihintay namin na mag-synchronize ang mga 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. Pag-install ng GRUB sa mga bagong drive

Para sa CentOS:

grub2-install /dev/sdX

Para sa Debian/Ubuntu:

grub-install /dev/sdX

saan X — titik ng block device. Sa kasong ito, kailangan mong i-install ang GRUB sa /dev/sdc и /dev/sdd.

6. File system extension (ext4) ng root partition

Sa mga bagong disk /dev/sdc и /dev/sdd Available ang 931.5 GB. Dahil sa ang katunayan na ang partition table ay kinopya mula sa mas maliit na mga disk, ang mga partisyon /dev/sdc2 и /dev/sdd2 Available ang 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]

Kinakailangan:

  1. Palawakin ang partition 2 sa bawat isa sa mga disk,
  2. Palawakin ang array md127,
  3. Palawakin ang PV (pisikal na volume),
  4. Palawakin ang LV (logical-volume) vg0-root,
  5. Palawakin ang file system.

Gamit ang utility nahati palawakin natin ang seksyon /dev/sdc2 sa pinakamataas na halaga. Isagawa ang utos parted /dev/sdc (1) at tingnan ang kasalukuyang partition table gamit ang command p Na (2).

Pinapalitan ang mas maliliit na disk ng mas malalaking disk sa Linux

Tulad ng nakikita mo, ang dulo ng partition 2 ay nagtatapos sa 240 GB. Palawakin natin ang partisyon gamit ang command resizepart 2, kung saan ang 2 ay ang bilang ng seksyon (3). Ipinapahiwatig namin ang halaga sa digital na format, halimbawa 1000 GB, o gamitin ang indikasyon ng disk share - 100%. Muli naming suriin na ang partisyon ay may bagong laki (4).

Ulitin ang mga hakbang sa itaas para sa disk /dev/sdd. Pagkatapos ng pagpapalawak ng mga partisyon /dev/sdc2 и /dev/sdd2 naging katumbas ng 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]

Pagkatapos nito pinalawak namin ang array md127 sa maximum.

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

Sinusuri namin na ang array ay lumawak. Ngayon ang laki nito ay naging 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]

Pagpapalawak ng extension pisikal na dami. Bago palawakin, tingnan natin ang kasalukuyang estado ng 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   ]

Tulad ng makikita, PV /dev/md127 gumagamit ng 222.4 GB na espasyo.

Pinalawak namin ang PV gamit ang sumusunod na command.

pvresize /dev/md127

Sinusuri ang resulta ng pagpapalawak ng 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   ]

Lumalawak lohikal na dami. Bago palawakin, suriin natin ang kasalukuyang estado ng 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 gumagamit ng 206.41 GB.

Pinalawak namin ang LV gamit ang sumusunod na command (2).

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

Sinusuri namin ang nakumpletong aksyon (3).

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

Tulad ng nakikita mo, pagkatapos ng pagpapalawak ng LV, ang dami ng sinasakop na puwang sa disk ay naging 914.39 GB.

Pinapalitan ang mas maliliit na disk ng mas malalaking disk sa Linux

Ang LV volume ay tumaas (4), ngunit ang file system ay sumasakop pa rin ng 204 GB (5).

1. Palawakin natin ang file system.

resize2fs /dev/mapper/vg0-root

Matapos maisakatuparan ang utos, sinusuri namin ang laki ng file system.

[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

Ang laki ng root file system ay tataas sa 900 GB. Pagkatapos makumpleto ang mga hakbang, maaari mong alisin ang mga lumang disk.

Kaso 2: Pagpapalit ng mas maliliit na disk ng mas malalaking disk (higit sa 2TB)

Ehersisyo: Palitan ang kasalukuyang mga disk ng mas malalaking disk (2 x 3TB) habang pinapanatili ang impormasyon. Sa kasong ito, mayroon kaming 2 x 240 GB SSD (RAID-1) na mga disk na may naka-install na system at 2 x 3 TB SATA disk kung saan kailangang ilipat ang system. Ginagamit ng mga kasalukuyang disk ang MBR partition table. Dahil ang mga bagong disk ay may kapasidad na higit sa 2 TB, kakailanganin nilang gumamit ng GPT table, dahil hindi maaaring gumana ang MBR sa mga disk na mas malaki sa 2 TB.

Tingnan natin ang kasalukuyang layout ng disk.

[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  

Suriin natin ang partition table na ginamit sa disk /dev/sda.

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

Sa disk /dev/sdb isang katulad na partition table ang ginagamit. Suriin natin ang ginamit na espasyo sa disk sa system.

[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

Tulad ng nakikita mo, ang ugat ng file system ay tumatagal ng hanggang 204 GB. Suriin natin ang kasalukuyang estado ng software RAID array.

1. Pag-install ng GPT partition table at disk partitioning

Suriin natin ang layout ng disk ayon sa 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

Sa bagong 3TB disk kakailanganin naming lumikha ng 3 partition:

  1. Seksyon bios_grub 2MiB size para sa GPT BIOS compatibility,
  2. Ang partition para sa RAID array na mai-mount /boot.
  3. Ang partition para sa RAID array kung saan magkakaroon ugat ng LV и Pagpalit ng LV.

Pag-install ng utility nahati koponan yum install -y parted (para sa CentOS), apt install -y parted (para sa Debian/Ubuntu).

Paggamit nahati Patakbuhin natin ang sumusunod na mga utos upang mahati ang disk.

Isagawa ang utos parted /dev/sdc at pumunta sa disk layout editing mode.

Gumawa ng GPT partition table.

(parted) mktable gpt

Lumikha ng 1 seksyon bios_grub seksyon at magtakda ng bandila para dito.

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

Lumikha ng partition 2 at magtakda ng bandila para dito. Ang partition ay gagamitin bilang isang bloke para sa isang RAID array at naka-mount in /boot.

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

Gumawa kami ng ika-3 seksyon, na gagamitin din bilang array block kung saan matatagpuan ang LVM.

(parted) mkpart primary 1028MiB 100% 

Sa kasong ito, hindi kinakailangan na itakda ang bandila, ngunit kung kinakailangan, maaari itong itakda gamit ang sumusunod na utos.

(parted) set 3 raid on

Sinusuri namin ang nilikha na talahanayan.

(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

Nagtatalaga kami ng bagong random na GUID sa disk.

sgdisk -G /dev/sdd

2. Pag-alis ng mga partisyon ng unang disk mula sa mga array

Sinusuri ang estado ng 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>

Gumagamit ang system ng 2 array: md126 (mount point /boot) - binubuo ng /dev/sda1 и /dev/sdb1, md127 (LVM para sa swap at ang ugat ng file system) - binubuo ng /dev/sda2 и /dev/sdb2.

Minarkahan namin ang mga partisyon ng unang disk na ginagamit sa bawat array bilang masama.

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

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

Pag-alis ng mga block partition ng device /dev/sda mula sa mga arrays.

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

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

Sinusuri ang estado ng array pagkatapos alisin ang 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. Pagdaragdag ng mga partisyon ng bagong disk sa array

Ang susunod na hakbang ay magdagdag ng mga partisyon ng bagong disk sa mga arrays para sa pag-synchronize. Tingnan natin ang kasalukuyang estado ng layout ng disk.

[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  

Seksyon /dev/sdc1 ay bios_grub seksyon at hindi kasangkot sa paglikha ng mga array. Ang mga array ay gagamitin lamang /dev/sdc2 и /dev/sdc3. Idinaragdag namin ang mga seksyong ito sa kaukulang mga array.

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

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

Pagkatapos ay hihintayin namin na mag-synchronize ang 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>

Disk partitioning pagkatapos magdagdag ng mga partisyon sa 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. Pag-alis ng mga partisyon ng pangalawang disk mula sa mga array

Minarkahan namin ang mga partisyon ng pangalawang disk na ginagamit sa bawat array bilang masama.

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

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

Pag-alis ng mga block partition ng device /dev/sda mula sa mga arrays.

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

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

5. Kopyahin ang GPT layout table at i-synchronize ang array

Upang kopyahin ang GPT markup table gagamitin namin ang utility sgdisk, na kasama sa pakete para sa pagtatrabaho sa mga partisyon ng disk at isang talahanayan ng GPT - gdisk.

Instalasyon gdisk para sa CentOS:

yum install -y gdisk

Instalasyon gdisk para sa Debian/Ubuntu:

apt install -y gdisk

Pansin: Para sa GPT una disk ay ipinahiwatig kung saan kopyahin ang markup, pangalawa disk ay nagpapahiwatig ng disk mula saan kopyahin ang markup. Kung pinaghalo mo ang mga disk, ang unang magandang partisyon ay mapapatungan at masisira.

Kopyahin ang GPT markup table.

sgdisk -R /dev/sdd /dev/sdc

Disk partitioning pagkatapos maglipat ng table sa 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  

Susunod, idinagdag namin ang bawat isa sa mga partisyon na lumalahok sa mga arrays ng software RAID.

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

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

Hinihintay namin na mag-synchronize ang 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>

Matapos kopyahin ang partisyon ng GPT sa pangalawang bagong disk, magiging ganito ang hitsura ng partisyon.

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

Susunod, i-install ang GRUB sa mga bagong disk.

Pag-install para sa CentOS:

grub2-install /dev/sdX

Pag-install para sa Debian/Ubuntu:

grub-install /dev/sdX

saan X — drive letter, sa aming kaso drive /dev/sdc и /dev/sdd.

Ina-update namin ang impormasyon tungkol sa array.

Para sa CentOS:

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

Para sa Debian/Ubuntu:

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

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

Ina-update ang larawan initrd:
Para sa CentOS:

dracut -f -v --regenerate-all

Para sa Debian/Ubuntu:

update-initramfs -u -k all

Ina-update namin ang configuration ng GRUB.

Para sa CentOS:

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

Para sa Debian/Ubuntu:

update-grub

Matapos makumpleto ang mga hakbang, maaaring alisin ang mga lumang disk.

6. File system extension (ext4) ng root partition

Pag-partition ng disk bago ang pagpapalawak ng file system pagkatapos i-migrate ang system sa 2 x 3TB disks (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]

Ngayon mga seksyon /dev/sdc3 и /dev/sdd3 sumasakop sa 2.7 TB. Dahil gumawa kami ng bagong layout ng disk na may GPT table, ang laki ng partition 3 ay agad na itinakda sa maximum na posibleng espasyo sa disk; sa kasong ito, hindi na kailangang palawakin ang partition.

Kinakailangan:

  1. Palawakin ang array md126,
  2. Palawakin ang PV (pisikal na volume),
  3. Palawakin ang LV (logical-volume) vg0-root,
  4. Palawakin ang file system.

1. Palawakin ang array md126 sa maximum.

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

Pagkatapos ng pagpapalawak ng array md126 ang laki ng inookupahang espasyo ay tumaas sa 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]

Lumalawak pisikal na dami.

Bago palawakin, suriin ang kasalukuyang halaga ng inookupahang espasyo PV /dev/md126.

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

Pinalawak namin ang PV gamit ang sumusunod na command.

pvresize /dev/md126

Sinusuri namin ang nakumpletong pagkilos.

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

Lumalawak lohikal na dami ng vg0-root.

Pagkatapos palawakin ang PV, tingnan natin ang occupied space na VG.

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

Suriin natin ang espasyong inookupahan ng 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            

Ang vg0-root volume ay sumasakop sa 206.41 GB.

Pinapalawak namin ang LV sa maximum na espasyo sa disk.

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

Sinusuri ang LV space pagkatapos ng pagpapalawak.

[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

Pagpapalawak ng file system (ext4).

Suriin natin ang kasalukuyang laki ng file system.

[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

Ang volume /dev/mapper/vg0-root ay sumasakop sa 204 GB pagkatapos ng pagpapalawak ng LV.

Pagpapalawak ng file system.

resize2fs /dev/mapper/vg0-root 

Sinusuri ang laki ng file system pagkatapos palawakin ito.

[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

Ang laki ng file system ay nadagdagan upang masakop ang buong volume.

Pinagmulan: www.habr.com

Magdagdag ng komento