Bytte ut mindre disker med større disker i Linux

Hei alle sammen. På tampen av oppstart av ny kursgruppe "Linux-administrator" Vi publiserer nyttig materiale skrevet av studenten vår, samt kursmentor, teknisk støttespesialist for REG.RU bedriftsprodukter - Roman Travin.

Denne artikkelen vil vurdere 2 tilfeller av utskifting av disker og overføring av informasjon til nye disker med større kapasitet med ytterligere utvidelse av matrisen og filsystemet. Det første tilfellet vil gjelde utskifting av disker med samme MBR/MBR- eller GPT/GPT-partisjonering, det andre tilfellet gjelder utskifting av disker med MBR-partisjonering med disker med en kapasitet på mer enn 2 TB, som du må installere på en GPT-partisjon med en biosboot-partisjon. I begge tilfeller er diskene som vi overfører dataene til allerede installert på serveren. Filsystemet som brukes for rotpartisjonen er ext4.

Tilfelle 1: Bytte ut mindre disker med større disker (opptil 2 TB)

Mål: Bytt ut nåværende disker med større disker (opptil 2 TB) med informasjonsoverføring. I dette tilfellet har vi 2 x 240 GB SSD (RAID-1)-disker med systemet installert og 2 x 1 TB SATA-disker som systemet må overføres til.

La oss se på gjeldende diskoppsett.

[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  

La oss sjekke filsystemplassen som brukes for øyeblikket.

[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 utskifting av disker er 204 GB, det brukes 2 md126 programvarematriser, som er montert i /boot и md127, som brukes som fysisk volum for VG-gruppen vg0.

1. Fjerne diskpartisjoner fra arrays

Kontrollerer matrisens 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 bruker 2 arrays: md126 (monteringspunkt /boot) - består av en seksjon /dev/sda1 и /dev/sdb1, md127 (LVM for swap og roten til filsystemet) - består av /dev/sda2 и /dev/sdb2.

Vi merker partisjonene til den første disken som brukes i hver array som dårlige.

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

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

Vi fjerner /dev/sda-blokkenhetspartisjonene fra arrayene.

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

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

Etter at vi har fjernet disken fra arrayet, vil blokkeringsenhetsinformasjonen se slik ut.

[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 etter fjerning av disker.

[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 partisjonstabellen til en ny disk

Du kan sjekke den brukte partisjonstabellen på disken med følgende kommando.

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

Utgangen for MBR vil være:

Disk label type: dos

for GPT:

Disk label type: gpt

Kopierer partisjonstabellen for MBR:

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

I dette laget første disk er indikert с hvorav markeringen er kopiert, andre - hvor kopiere.

FORSIKTIG: For GPT første disk er indikert på hvilken kopier markering, andre disk indikerer disken hvorfra kopier markering. Hvis du blander opp diskene, vil den opprinnelig gode partisjonen bli overskrevet og ødelagt.

Kopiering av layouttabellen for GPT:

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

Deretter tilordner du en tilfeldig UUID til disken (for GPT).


sgdisk -G /dev/sdc

Etter at kommandoen er utført, skal partisjonene 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, etter at handlingen er utført, partisjonene i systemet på disken /dev/sdc ikke bestemt, så utfører vi kommandoen for å lese partisjonstabellen på nytt.

sfdisk -R /dev/sdc

Hvis de nåværende diskene bruker MBR-tabellen og informasjonen må overføres til disker større enn 2 TB, må du på nye disker manuelt opprette en GPT-partisjon ved å bruke biosboot-partisjonen. Denne saken vil bli diskutert i del 2 av denne artikkelen.

3. Legge til partisjoner av den nye disken til matrisen

La oss legge til diskpartisjoner til de tilsvarende matrisene.

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

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

Vi sjekker at seksjonene er lagt til.

[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  

Etter dette venter vi på at arrayene skal 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 kontinuerlig overvåke synkroniseringsprosessen ved å bruke verktøyet watch.

watch -n 2 cat /proc/mdstat

Parameter -n angir med hvilke intervaller i sekunder kommandoen må utføres for å sjekke fremdriften.

Gjenta trinn 1 - 3 for neste erstatningsdisk.

Vi merker partisjonene til den andre disken som brukes i hver array som dårlige.

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

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

Fjerner blokkenhetspartisjoner /dev/sdb fra arrays.

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

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

Etter at vi har fjernet disken fra arrayet, vil blokkeringsenhetsinformasjonen se slik ut.

[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 etter fjerning av disker.

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

Kopierer MBR-partisjonstabellen fra disken /dev/sdс til disk /dev/sdd.

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

Etter at kommandoen er utført, skal partisjonene 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  

Legge til diskpartisjoner til arrays.

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

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

Vi sjekker at seksjonene er lagt til.

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

Etter dette venter vi på at arrayene skal 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. Installere GRUB på nye stasjoner

For CentOS:

grub2-install /dev/sdX

Del Debian/Ubuntu:

grub-install /dev/sdX

der X — bokstaven til blokkanordningen. I dette tilfellet må du installere GRUB på /dev/sdc и /dev/sdd.

6. Filsystemutvidelse (ext4) av rotpartisjonen

På nye disker /dev/sdc и /dev/sdd 931.5 GB tilgjengelig. På grunn av det faktum at partisjonstabellen ble kopiert fra mindre disker, ble partisjonene /dev/sdc2 и /dev/sdd2 222.5 GB tilgjengelig.

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ødvendig:

  1. Utvid partisjon 2 på hver av diskene,
  2. Utvid array md127,
  3. Utvid PV (fysisk volum),
  4. Utvid LV (logisk volum) vg0-root,
  5. Utvid filsystemet.

Bruke verktøyet skiltes la oss utvide delen /dev/sdc2 til maksimumsverdien. Utfør kommandoen parted /dev/sdc (1) og se gjeldende partisjonstabell med kommandoen p (2).

Bytte ut mindre disker med større disker i Linux

Som du kan se, ender slutten av partisjon 2 på 240 GB. La oss utvide partisjonen med kommandoen resizepart 2, hvor 2 er nummeret på seksjon (3). Vi angir verdien i digitalt format, for eksempel 1000 GB, eller bruker indikasjonen på diskandelen - 100%. Vi sjekker igjen at partisjonen har den nye størrelsen (4).

Gjenta trinnene ovenfor for disken /dev/sdd. Etter utvidelse av partisjoner /dev/sdc2 и /dev/sdd2 ble lik 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]

Etter dette utvider vi matrisen md127 maksimalt.

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

Vi sjekker at matrisen har utvidet seg. Nå har størrelsen blitt 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]

Forlengelse av utvidelsen fysisk volum. Før vi utvider, la oss sjekke den nåværende tilstanden til 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 sees, PV /dev/md127 bruker 222.4 GB plass.

Vi utvider PV med følgende kommando.

pvresize /dev/md127

Kontrollerer resultatet av PV-utvidelse.

[

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   ]

Utvider logisk volum. Før vi utvider, la oss sjekke den nåværende tilstanden til 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 bruker 206.41 GB.

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

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

Vi sjekker den fullførte handlingen (3).

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

Som du kan se, etter utvidelse av LV, ble mengden okkupert diskplass 914.39 GB.

Bytte ut mindre disker med større disker i Linux

LV-volumet har økt (4), men filsystemet opptar fortsatt 204 GB (5).

1. La oss utvide filsystemet.

resize2fs /dev/mapper/vg0-root

Etter at kommandoen er utfø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 på rotfilsystemet vil øke til 900 GB. Etter å ha fullført trinnene, kan du fjerne de gamle diskene.

Tilfelle 2: Bytte ut mindre disker med større disker (mer enn 2 TB)

Oppgaven: Bytt ut de nåværende diskene med større disker (2 x 3TB) mens du beholder informasjonen. I dette tilfellet har vi 2 x 240 GB SSD (RAID-1)-disker med systemet installert og 2 x 3 TB SATA-disker som systemet må overføres til. Gjeldende disker bruker MBR-partisjonstabellen. Siden nye disker har en kapasitet større enn 2 TB, må de bruke en GPT-tabell, siden MBR ikke kan fungere med disker som er større enn 2 TB.

La oss se på gjeldende diskoppsett.

[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  

La oss sjekke partisjonstabellen som brukes på disken /dev/sda.

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

På disk /dev/sdb en lignende partisjonstabell brukes. La oss sjekke den brukte diskplassen 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, tar roten til filsystemet opp 204 GB. La oss sjekke den nåværende tilstanden til programvare-RAID-arrayet.

1. Installere en GPT-partisjonstabell og diskpartisjonering

La oss sjekke diskoppsettet etter 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-disken må vi lage 3 partisjoner:

  1. Seksjon bios_grub 2MiB størrelse for GPT BIOS-kompatibilitet,
  2. Partisjonen for RAID-arrayet som skal monteres i /boot.
  3. Partisjonen for RAID-arrayet som det vil være LV rot и LV bytte.

Installere verktøyet skiltes team yum install -y parted (for CentOS), apt install -y parted (for Debian/Ubuntu).

Hjelp skiltes La oss kjøre følgende kommandoer for å partisjonere disken.

Utfør kommandoen parted /dev/sdc og gå til redigeringsmodus for disklayout.

Lag en GPT-partisjonstabell.

(parted) mktable gpt

Opprett 1 seksjon bios_grub seksjonen og sett et flagg for den.

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

Lag partisjon 2 og sett et flagg for den. Partisjonen vil bli brukt som en blokk for et RAID-array og montert i /boot.

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

Vi lager en tredje seksjon, som også vil bli brukt som en array-blokk der LVM vil bli plassert.

(parted) mkpart primary 1028MiB 100% 

I dette tilfellet er det ikke nødvendig å sette flagget, men om nødvendig kan det settes med følgende kommando.

(parted) set 3 raid on

Vi sjekker den opprettede tabellen.

(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 tilfeldig GUID til disken.

sgdisk -G /dev/sdd

2. Fjerne partisjoner på den første disken fra arrays

Kontrollerer matrisens 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 bruker 2 arrays: md126 (mount point /boot) - består av /dev/sda1 и /dev/sdb1, md127 (LVM for swap og roten til filsystemet) - består av /dev/sda2 и /dev/sdb2.

Vi merker partisjonene til den første disken som brukes i hver array som dårlige.

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

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

Fjerner blokkenhetspartisjoner /dev/sda fra arrays.

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

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

Kontrollerer statusen til arrayet etter fjerning av 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. Legge til partisjoner av den nye disken til matrisen

Det neste trinnet er å legge til partisjoner av den nye disken til arrayene for synkronisering. La oss se på den nåværende tilstanden til diskoppsett.

[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  

Seksjon /dev/sdc1 er bios_grub seksjonen og er ikke involvert i opprettelsen av arrays. Arrayene vil bare bruke /dev/sdc2 и /dev/sdc3. Vi legger til disse seksjonene til de tilsvarende matrisene.

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

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

Deretter venter vi på at matrisen skal synkroniseres.

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

Diskoppsett etter å ha lagt til partisjoner i 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. Fjerning av partisjoner på den andre disken fra arrays

Vi merker partisjonene til den andre disken som brukes i hver array som dårlige.

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

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

Fjerner blokkenhetspartisjoner /dev/sda fra arrays.

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

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

5. Kopier GPT-layouttabellen og synkroniser matrisen

For å kopiere GPT-markeringstabellen bruker vi verktøyet sgdisk, som er inkludert i pakken for arbeid med diskpartisjoner og en GPT-tabell - gdisk.

Installasjon gdisk for CentOS:

yum install -y gdisk

Installasjon gdisk for Debian/Ubuntu:

apt install -y gdisk

FORSIKTIG: For GPT første disk er indikert på hvilken kopier markeringen, andre disk indikerer disken hvorfra kopier markeringen. Hvis du blander opp diskene, vil den opprinnelig gode partisjonen bli overskrevet og ødelagt.

Kopier GPT-markeringstabellen.

sgdisk -R /dev/sdd /dev/sdc

Diskpartisjonering etter overføring av en tabell 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  

Deretter legger vi til hver av partisjonene som deltar i programvare RAID-matriser.

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

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

Vi venter på at matrisen skal synkroniseres.

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

Etter å ha kopiert GPT-partisjonen til den andre nye disken, vil partisjonen se slik ut.

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

Deretter installerer du GRUB på de nye diskene.

Installasjon for CentOS:

grub2-install /dev/sdX

Installasjon for Debian/Ubuntu:

grub-install /dev/sdX

der X — stasjonsbokstav, i vårt tilfelle stasjoner /dev/sdc и /dev/sdd.

Vi oppdaterer informasjon om arrayet.

For CentOS:

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

Del Debian/Ubuntu:

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

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

Oppdaterer bildet initrd:
For CentOS:

dracut -f -v --regenerate-all

Del Debian/Ubuntu:

update-initramfs -u -k all

Vi oppdaterer GRUB-konfigurasjonen.

For CentOS:

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

Del Debian/Ubuntu:

update-grub

Etter å ha fullført trinnene, kan de gamle diskene fjernes.

6. Filsystemutvidelse (ext4) av rotpartisjonen

Diskpartisjonering før filsystemutvidelse etter migrering av systemet til 2 x 3TB disker (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]

Nå seksjoner /dev/sdc3 и /dev/sdd3 opptar 2.7 TB. Siden vi opprettet et nytt diskoppsett med en GPT-tabell, ble størrelsen på partisjon 3 umiddelbart satt til maksimalt mulig diskplass; i dette tilfellet er det ikke nødvendig å utvide partisjonen.

Det er nødvendig:

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

1. Utvid matrisen md126 maksimalt.

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

Etter utvidelse av array md126 størrelsen på den okkuperte plassen har økt 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]

Utvider fysisk volum.

Før du utvider, kontroller gjeldende verdi for den okkuperte plassen PV /dev/md126.

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

Vi utvider PV med følgende kommando.

pvresize /dev/md126

Vi sjekker den fullførte handlingen.

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

Utvider logisk volum vg0-root.

Etter å ha utvidet PV, la oss sjekke den okkuperte plassen VG.

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

La oss sjekke plassen som er okkupert av 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-rotvolumet opptar 206.41 GB.

Vi utvider LV til maksimal diskplass.

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

Kontrollerer LV-plassen etter utvidelse.

[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

Utvide filsystemet (ext4).

La oss sjekke gjeldende 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

Volumet /dev/mapper/vg0-root opptar 204 GB etter LV-utvidelse.

Utvide filsystemet.

resize2fs /dev/mapper/vg0-root 

Kontrollerer størrelsen på filsystemet etter å ha utvidet 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

Filsystemstørrelsen er økt for å dekke hele volumet.

Kilde: www.habr.com

Legg til en kommentar