Udskiftning af mindre diske med større diske i Linux

Hej alle. På tærsklen til starten af ​​en ny kursusgruppe "Linux-administrator" Vi udgiver nyttigt materiale skrevet af vores studerende, såvel som kursusmentor, teknisk supportspecialist for REG.RU virksomhedsprodukter - Roman Travin.

Denne artikel vil overveje 2 tilfælde af udskiftning af diske og overførsel af information til nye diske med større kapacitet med yderligere udvidelse af arrayet og filsystemet. Det første tilfælde drejer sig om udskiftning af diske med samme MBR/MBR eller GPT/GPT partitionering, det andet tilfælde vedrører udskiftning af diske med MBR partitionering med diske med en kapacitet på mere end 2 TB, som du skal installere på en GPT-partition med en biosboot-partition. I begge tilfælde er de diske, som vi overfører dataene til, allerede installeret på serveren. Filsystemet, der bruges til rodpartitionen, er ext4.

Case 1: Udskiftning af mindre diske med større diske (op til 2 TB)

Formål: Udskift nuværende diske med større diske (op til 2 TB) med informationsoverførsel. I dette tilfælde har vi 2 x 240 GB SSD (RAID-1)-diske med systemet installeret og 2 x 1 TB SATA-diske, som systemet skal overføres til.

Lad os se på det aktuelle disklayout.

[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  

Lad os tjekke den aktuelt brugte filsystemplads.

[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

Størrelsen på filsystemet før udskiftning af diske er 204 GB, der bruges 2 md126 software arrays, som er monteret i /boot и md127, som bruges som fysisk volumen for VG-gruppen vg0.

1. Fjernelse af diskpartitioner fra arrays

Kontrol af arrayets tilstand

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

Systemet bruger 2 arrays: md126 (monteringspunkt /boot) - består af et afsnit /dev/sda1 и /dev/sdb1, md127 (LVM for bytte og roden af ​​filsystemet) - består af /dev/sda2 и /dev/sdb2.

Vi markerer partitionerne på den første disk, der bruges i hvert array, som dårlige.

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

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

Vi fjerner /dev/sda blok enhedspartitionerne fra arrays.

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

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

Efter at vi har fjernet disken fra arrayet, vil blokenhedsinformationen se sådan ud.

[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  

Status for arrays efter fjernelse af diske.

[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. Kopier partitionstabellen til en ny disk

Du kan kontrollere den brugte partitionstabel på disken med følgende kommando.

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

Outputtet for MBR ville være:

Disk label type: dos

for GPT:

Disk label type: gpt

Kopiering af partitionstabellen til MBR:

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

I dette hold den første disk er angivet с heraf markeringen kopieres, andet - hvor kopi.

FORSIGTIG: Til GPT den første disk er angivet hvor kopi markup, sekund disk angiver disken hvorfra kopi markup. Hvis du blander diskene sammen, vil den oprindeligt gode partition blive overskrevet og ødelagt.

Kopiering af layouttabellen til GPT:

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

Tildel derefter et tilfældigt UUID til disken (for GPT).


sgdisk -G /dev/sdc

Efter kommandoen er udført, bør partitionerne vises på disken /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  

Hvis, efter handlingen er udført, partitionerne i systemet på disken /dev/sdc uafklaret, så udfører vi kommandoen for at genlæse partitionstabellen.

sfdisk -R /dev/sdc

Hvis de nuværende diske bruger MBR-tabellen, og oplysningerne skal overføres til diske, der er større end 2 TB, skal du på nye diske manuelt oprette en GPT-partition ved hjælp af biosboot-partitionen. Denne sag vil blive diskuteret i del 2 af denne artikel.

3. Tilføjelse af partitioner på den nye disk til arrayet

Lad os tilføje diskpartitioner til de tilsvarende arrays.

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

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

Vi tjekker, at afsnittene er tilføjet.

[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  

Herefter venter vi på, at arrays synkroniseres.

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

Du kan løbende overvåge synkroniseringsprocessen ved hjælp af hjælpeprogrammet watch.

watch -n 2 cat /proc/mdstat

Parameter -n angiver med hvilke intervaller i sekunder kommandoen skal udføres for at kontrollere fremskridt.

Gentag trin 1 - 3 for den næste erstatningsdisk.

Vi markerer partitionerne på den anden disk, der bruges i hvert array, som dårlige.

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

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

Fjernelse af blokenhedspartitioner /dev/sdb fra arrays.

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

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

Efter at vi har fjernet disken fra arrayet, vil blokenhedsinformationen se sådan ud.

[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  

Status for arrays efter fjernelse af diske.

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

Kopiering af MBR-partitionstabellen fra disken /dev/sdс til disk /dev/sdd.

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

Efter kommandoen er udført, bør partitionerne vises på disken /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  

Tilføjelse af diskpartitioner til arrays.

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

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

Vi tjekker, at afsnittene er tilføjet.

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

Herefter venter vi på, at arrays synkroniseres.

[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. Installation af GRUB på nye drev

For CentOS:

grub2-install /dev/sdX

Til Debian/Ubuntu:

grub-install /dev/sdX

где X — bogstavet for blokanordningen. I dette tilfælde skal du installere GRUB på /dev/sdc и /dev/sdd.

6. Filsystemudvidelse (ext4) af rodpartitionen

På nye diske /dev/sdc и /dev/sdd 931.5 GB tilgængelig. På grund af det faktum, at partitionstabellen blev kopieret fra mindre diske, blev partitionerne /dev/sdc2 и /dev/sdd2 222.5 GB tilgængelig.

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]

Det er nødvendigt:

  1. Udvid partition 2 på hver af diskene,
  2. Udvid array md127,
  3. Udvid PV (fysisk volumen),
  4. Udvid LV (logisk volumen) vg0-root,
  5. Udvid filsystemet.

Brug af hjælpeprogrammet parted lad os udvide afsnittet /dev/sdc2 til den maksimale værdi. Udfør kommandoen parted /dev/sdc (1) og se den aktuelle partitionstabel med kommandoen p (2).

Udskiftning af mindre diske med større diske i Linux

Som du kan se, ender slutningen af ​​partition 2 på 240 GB. Lad os udvide partitionen med kommandoen resizepart 2, hvor 2 er nummeret på afsnit (3). Vi angiver værdien i digitalt format, for eksempel 1000 GB, eller bruger indikationen af ​​diskandelen - 100%. Vi tjekker igen, at partitionen har den nye størrelse (4).

Gentag ovenstående trin for disken /dev/sdd. Efter udvidelse af partitioner /dev/sdc2 и /dev/sdd2 blev lig med 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]

Herefter udvider vi arrayet md127 til det maksimale.

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

Vi tjekker, at arrayet er udvidet. Nu er dens størrelse blevet 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]

Udvidelse af forlængelse fysisk volumen. Før vi udvider, lad os tjekke den aktuelle tilstand af 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   ]

Som det kan ses, har PV /dev/md127 bruger 222.4 GB plads.

Vi udvider PV med følgende kommando.

pvresize /dev/md127

Kontrol af resultatet af PV-udvidelse.

[

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   ]

Udvider logisk volumen. Før vi udvider, lad os tjekke den aktuelle tilstand af 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 bruger 206.41 GB.

Vi udvider LV med følgende kommando (2).

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

Vi kontrollerer den gennemførte handling (3).

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

Som du kan se, efter at have udvidet LV, blev mængden af ​​optaget diskplads 914.39 GB.

Udskiftning af mindre diske med større diske i Linux

LV-volumen er steget (4), men filsystemet fylder stadig 204 GB (5).

1. Lad os udvide filsystemet.

resize2fs /dev/mapper/vg0-root

Efter kommandoen er udført, kontrollerer vi størrelsen på filsystemet.

[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

Størrelsen af ​​rodfilsystemet vil stige til 900 GB. Når du har gennemført trinene, kan du fjerne de gamle diske.

Tilfælde 2: Udskiftning af mindre diske med større diske (mere end 2 TB)

Indstilling: Udskift de nuværende diske med større diske (2 x 3TB), mens du bevarer oplysningerne. I dette tilfælde har vi 2 x 240 GB SSD (RAID-1) diske med systemet installeret og 2 x 3 TB SATA diske, som systemet skal overføres til. Nuværende diske bruger MBR-partitionstabellen. Da nye diske har en kapacitet på mere end 2 TB, skal de bruge en GPT-tabel, da MBR ikke kan fungere med diske, der er større end 2 TB.

Lad os se på det aktuelle disklayout.

[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  

Lad os tjekke den partitionstabel, der bruges på disken /dev/sda.

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

På disk /dev/sdb en lignende partitionstabel bruges. Lad os tjekke den brugte diskplads på systemet.

[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

Som du kan se, fylder roden af ​​filsystemet 204 GB. Lad os tjekke den aktuelle tilstand af software-RAID-arrayet.

1. Installation af en GPT-partitionstabel og diskpartitionering

Lad os tjekke disklayoutet efter 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

På den nye 3TB disk skal vi oprette 3 partitioner:

  1. Sektion bios_grub 2MiB størrelse for GPT BIOS-kompatibilitet,
  2. Partitionen for RAID-arrayet, der vil blive monteret i /boot.
  3. Partitionen for RAID-arrayet, som der vil være på LV rod и LV swap.

Installation af hjælpeprogrammet parted hold yum install -y parted (til CentOS), apt install -y parted (til Debian/Ubuntu).

Brug parted Lad os køre følgende kommandoer for at partitionere disken.

Udfør kommandoen parted /dev/sdc og gå til redigeringstilstand for disklayout.

Opret en GPT-partitionstabel.

(parted) mktable gpt

Opret 1 sektion bios_grub sektion og sæt et flag for det.

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

Opret partition 2 og sæt et flag for den. Partitionen vil blive brugt som en blok for et RAID-array og monteret i /boot.

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

Vi opretter en 3. sektion, som også vil blive brugt som en arrayblok, hvori LVM vil blive placeret.

(parted) mkpart primary 1028MiB 100% 

I dette tilfælde er det ikke nødvendigt at indstille flaget, men om nødvendigt kan det indstilles med følgende kommando.

(parted) set 3 raid on

Vi tjekker den oprettede tabel.

(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

Vi tildeler en ny tilfældig GUID til disken.

sgdisk -G /dev/sdd

2. Fjernelse af partitioner på den første disk fra arrays

Kontrol af arrayets tilstand

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

Systemet bruger 2 arrays: md126 (mount point /boot) - består af /dev/sda1 и /dev/sdb1, md127 (LVM for swap og roden af ​​filsystemet) - består af /dev/sda2 и /dev/sdb2.

Vi markerer partitionerne på den første disk, der bruges i hvert array, som dårlige.

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

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

Fjernelse af blokenhedspartitioner /dev/sda fra arrays.

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

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

Kontrol af arrayets tilstand efter fjernelse af disken.

[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. Tilføjelse af partitioner på den nye disk til arrayet

Det næste trin er at tilføje partitioner på den nye disk til arrays til synkronisering. Lad os se på den aktuelle tilstand af disklayout.

[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  

Sektion /dev/sdc1 er bios_grub sektion og er ikke involveret i oprettelsen af ​​arrays. Arrays vil kun bruge /dev/sdc2 и /dev/sdc3. Vi tilføjer disse sektioner til de tilsvarende arrays.

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

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

Så venter vi på, at arrayet synkroniserer.

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

Diskpartitionering efter tilføjelse af partitioner til arrayet.

[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. Fjernelse af partitioner på den anden disk fra arrays

Vi markerer partitionerne på den anden disk, der bruges i hvert array, som dårlige.

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

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

Fjernelse af blokenhedspartitioner /dev/sda fra arrays.

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

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

5. Kopier GPT-layouttabellen og synkroniser arrayet

For at kopiere GPT-markeringstabellen bruger vi værktøjet sgdisk, som er inkluderet i pakken til at arbejde med diskpartitioner og en GPT-tabel - gdisk.

Installation gdisk til CentOS:

yum install -y gdisk

Installation gdisk til Debian/Ubuntu:

apt install -y gdisk

FORSIGTIG: Til GPT den første disk er angivet hvor kopiere opmærkningen, sekund disk angiver disken hvorfra kopiere markeringen. Hvis du blander diskene sammen, vil den oprindeligt gode partition blive overskrevet og ødelagt.

Kopiér GPT-markeringstabellen.

sgdisk -R /dev/sdd /dev/sdc

Diskpartitionering efter overførsel af en tabel til 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  

Dernæst tilføjer vi hver af de partitioner, der deltager i software RAID-arrays.

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

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

Vi venter på, at arrayet synkroniserer.

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

Efter at have kopieret GPT-partitionen til den anden nye disk, vil partitionen se sådan ud.

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

Installer derefter GRUB på de nye diske.

Installation til CentOS:

grub2-install /dev/sdX

Installation til Debian/Ubuntu:

grub-install /dev/sdX

где X — drevbogstav, i vores tilfælde drev /dev/sdc и /dev/sdd.

Vi opdaterer information om arrayet.

For CentOS:

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

Til Debian/Ubuntu:

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

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

Opdatering af billedet initrd:
For CentOS:

dracut -f -v --regenerate-all

Til Debian/Ubuntu:

update-initramfs -u -k all

Vi opdaterer GRUB-konfigurationen.

For CentOS:

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

Til Debian/Ubuntu:

update-grub

Efter at have gennemført trinene, kan de gamle diske fjernes.

6. Filsystemudvidelse (ext4) af rodpartitionen

Diskpartitionering før filsystemudvidelse efter migrering af systemet til 2 x 3TB diske (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]

Nu afsnit /dev/sdc3 и /dev/sdd3 fylder 2.7 TB. Da vi oprettede et nyt disklayout med en GPT-tabel, blev størrelsen af ​​partition 3 straks indstillet til den maksimalt mulige diskplads; i dette tilfælde er det ikke nødvendigt at udvide partitionen.

Det er nødvendigt:

  1. Udvid array md126,
  2. Udvid PV (fysisk volumen),
  3. Udvid LV (logisk volumen) vg0-root,
  4. Udvid filsystemet.

1. Udvid arrayet md126 til det maksimale.

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

Efter udvidelse af array md126 størrelsen af ​​den besatte plads er steget til 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]

Udvider fysisk volumen.

Før du udvider, skal du kontrollere den aktuelle værdi af den besatte plads PV /dev/md126.

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

Vi udvider PV med følgende kommando.

pvresize /dev/md126

Vi kontrollerer den gennemførte handling.

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

Udvider logisk volumen vg0-root.

Efter at have udvidet PV, lad os tjekke den besatte plads VG.

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

Lad os tjekke pladsen optaget af LV.

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

Vg0-rodvolumenet fylder 206.41 GB.

Vi udvider LV til den maksimale diskplads.

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

Kontrol af LV-pladsen efter ekspansion.

[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

Udvidelse af filsystemet (ext4).

Lad os tjekke den aktuelle størrelse på filsystemet.

[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

Volumen /dev/mapper/vg0-root fylder 204 GB efter LV-udvidelse.

Udvidelse af filsystemet.

resize2fs /dev/mapper/vg0-root 

Kontrol af størrelsen på filsystemet efter at have udvidet det.

[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

Filsystemets størrelse er blevet øget til at dække hele volumen.

Kilde: www.habr.com

Tilføj en kommentar