Ersätter mindre diskar med större diskar i Linux

Hej alla. På tröskeln till starten av en ny kursgrupp "Linux-administratör" Vi publicerar användbart material skrivet av vår student, såväl som kursmentor, teknisk supportspecialist för REG.RU företagsprodukter - Roman Travin.

Den här artikeln kommer att överväga två fall av utbyte av diskar och överföring av information till nya diskar med större kapacitet med ytterligare expansion av arrayen och filsystemet. Det första fallet gäller utbyte av diskar med samma MBR/MBR- eller GPT/GPT-partitionering, det andra fallet gäller utbyte av diskar med MBR-partitionering med diskar med en kapacitet på mer än 2 TB, som du måste installera på en GPT-partition med en biosboot-partition. I båda fallen är diskarna som vi överför data till redan installerade på servern. Filsystemet som används för rotpartitionen är ext2.

Fall 1: Byta ut mindre diskar med större diskar (upp till 2TB)

Uppgift: Byt ut nuvarande diskar mot större diskar (upp till 2 TB) med informationsöverföring. I det här fallet har vi 2 x 240 GB SSD (RAID-1)-diskar med systemet installerat och 2 x 1 TB SATA-diskar som systemet behöver överföras till.

Låt oss titta på den nuvarande disklayouten.

[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  

Låt oss kontrollera det filsystemsutrymme som för närvarande används.

[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

Storleken på filsystemet innan du byter diskar är 204 GB, 2 md126 mjukvaruuppsättningar används, som är monterade i /boot и md127, som används som fysisk volym för VG-gruppen vg0.

1. Ta bort diskpartitioner från arrayer

Kontrollerar arrayens tillstånd

[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 använder 2 arrayer: md126 (monteringspunkt /boot) - består av en sektion /dev/sda1 и /dev/sdb1, md127 (LVM för byta och roten av filsystemet) - består av /dev/sda2 и /dev/sdb2.

Vi markerar partitionerna på den första disken som används i varje array som dåliga.

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

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

Vi tar bort /dev/sda block enhetspartitionerna från arrayerna.

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

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

Efter att vi har tagit bort disken från arrayen kommer blockenhetsinformationen att se ut så här.

[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  

Tillstånd för arrayer efter borttagning av diskar.

[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. Kopiera partitionstabellen till en ny disk

Du kan kontrollera den använda partitionstabellen på disken med följande kommando.

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

Utdata för MBR skulle vara:

Disk label type: dos

för GPT:

Disk label type: gpt

Kopiera partitionstabellen för MBR:

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

I det här laget först disk indikeras с varav markeringen kopieras, andra - var kopiera.

VARNING: För GPT först disk indikeras på vilken kopiera uppmärkning, andra disk indikerar disken från vilken kopiera uppmärkning. Om du blandar ihop diskarna kommer den initialt bra partitionen att skrivas över och förstöras.

Kopiera layouttabellen för GPT:

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

Tilldela sedan ett slumpmässigt UUID till disken (för GPT).


sgdisk -G /dev/sdc

Efter att kommandot har körts bör partitionerna visas 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  

Om, efter att åtgärden har utförts, partitionerna i systemet på disken /dev/sdc obestämd, sedan kör vi kommandot för att läsa om partitionstabellen.

sfdisk -R /dev/sdc

Om de nuvarande diskarna använder MBR-tabellen och information behöver överföras till diskar större än 2 TB, måste du på nya diskar manuellt skapa GPT-partitionering med hjälp av biosboot-partitionen. Detta fall kommer att diskuteras i del 2 av denna artikel.

3. Lägga till partitioner för den nya disken till arrayen

Låt oss lägga till diskpartitioner till motsvarande arrayer.

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

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

Vi kontrollerar att avsnitten har lagts till.

[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  

Efter detta väntar vi på att arrayerna ska synkroniseras.

[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 kontinuerligt övervaka synkroniseringsprocessen med hjälp av verktyget watch.

watch -n 2 cat /proc/mdstat

Parameter -n anger med vilka intervaller i sekunder kommandot måste utföras för att kontrollera framstegen.

Upprepa steg 1 - 3 för nästa ersättningsskiva.

Vi markerar partitionerna på den andra disken som används i varje array som dåliga.

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

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

Ta bort blockenhetspartitioner /dev/sdb från arrayer.

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

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

Efter att vi har tagit bort disken från arrayen kommer blockenhetsinformationen att se ut så här.

[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  

Tillstånd för arrayer efter borttagning av diskar.

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

Kopierar MBR-partitionstabellen från disken /dev/sdс till disk /dev/sdd.

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

Efter att kommandot har körts bör partitionerna visas 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  

Lägga till diskpartitioner till arrayer.

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

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

Vi kontrollerar att avsnitten har lagts till.

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

Efter detta väntar vi på att arrayerna ska synkroniseras.

[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. Installera GRUB på nya enheter

För CentOS:

grub2-install /dev/sdX

Till Debian/Ubuntu:

grub-install /dev/sdX

där X — bokstaven för blockanordningen. I det här fallet måste du installera GRUB på /dev/sdc и /dev/sdd.

6. Filsystemtillägg (ext4) för rotpartitionen

På nya diskar /dev/sdc и /dev/sdd 931.5 GB tillgängligt. På grund av det faktum att partitionstabellen kopierades från mindre diskar, kommer partitionerna /dev/sdc2 и /dev/sdd2 222.5 GB tillgängligt.

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 är nödvändigt:

  1. Utöka partition 2 på var och en av diskarna,
  2. Expandera array md127,
  3. Expandera PV (fysisk volym),
  4. Expandera LV (logisk volym) vg0-root,
  5. Expandera filsystemet.

Använda verktyget parted låt oss utöka avsnittet /dev/sdc2 till maxvärdet. Utför kommandot parted /dev/sdc (1) och visa den aktuella partitionstabellen med kommandot p (2).

Ersätter mindre diskar med större diskar i Linux

Som du kan se slutar slutet av partition 2 på 240 GB. Låt oss utöka partitionen med kommandot resizepart 2, där 2 är sektionens nummer (3). Vi anger värdet i digitalt format, till exempel 1000 GB, eller använder indikeringen av diskandelen - 100%. Vi kontrollerar igen att partitionen har den nya storleken (4).

Upprepa stegen ovan för disken /dev/sdd. Efter att ha expanderat partitioner /dev/sdc2 и /dev/sdd2 blev lika 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]

Efter detta utökar vi arrayen md127 maximalt.

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

Vi kontrollerar att arrayen har utökats. Nu har storleken blivit 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]

Förlängning av förlängningen fysisk volym. Innan vi expanderar, låt oss kontrollera det aktuella läget för 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 kan ses, PV /dev/md127 använder 222.4 GB utrymme.

Vi utökar PV med följande kommando.

pvresize /dev/md127

Kontrollerar resultatet av PV-expansion.

[

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   ]

Expanderar logisk volym. Innan vi expanderar, låt oss kontrollera det aktuella läget för 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 använder 206.41 GB.

Vi expanderar LV med följande kommando (2).

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

Vi kontrollerar den genomförda åtgärden (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 att ha utökat LV, blev mängden upptaget diskutrymme 914.39 GB.

Ersätter mindre diskar med större diskar i Linux

LV-volymen har ökat (4), men filsystemet upptar fortfarande 204 GB (5).

1. Låt oss utöka filsystemet.

resize2fs /dev/mapper/vg0-root

Efter att kommandot har körts kontrollerar vi storleken 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

Storleken på rotfilsystemet kommer att öka till 900 GB. När du har slutfört stegen kan du ta bort de gamla diskarna.

Fall 2: Byta ut mindre diskar med större diskar (mer än 2TB)

inställning: Byt ut de nuvarande diskarna mot större diskar (2 x 3TB) samtidigt som informationen bevaras. I det här fallet har vi 2 x 240 GB SSD (RAID-1)-diskar med systemet installerat och 2 x 3 TB SATA-diskar som systemet behöver överföras till. Aktuella diskar använder MBR-partitionstabellen. Eftersom nya diskar har en kapacitet som är större än 2 TB måste de använda en GPT-tabell, eftersom MBR inte kan fungera med diskar som är större än 2 TB.

Låt oss titta på den nuvarande disklayouten.

[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  

Låt oss kontrollera partitionstabellen som används på disken /dev/sda.

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

På disk /dev/sdb en liknande partitionstabell används. Låt oss kontrollera det använda diskutrymmet 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 av filsystemet upp 204 GB. Låt oss kontrollera det aktuella tillståndet för mjukvaru-RAID-arrayen.

1. Installera en GPT-partitionstabell och diskpartitionering

Låt oss kontrollera disklayouten per 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 nya 3TB-disken måste vi skapa 3 partitioner:

  1. Avsnitt bios_grub 2MiB storlek för GPT BIOS-kompatibilitet,
  2. Partitionen för RAID-arrayen som kommer att monteras i /boot.
  3. Partitionen för RAID-arrayen som det kommer att finnas på LV rot и LV-byte.

Installera verktyget parted team yum install -y parted (för CentOS), apt install -y parted (för Debian/Ubuntu).

med användning av parted Låt oss köra följande kommandon för att partitionera disken.

Utför kommandot parted /dev/sdc och gå till redigeringsläge för disklayout.

Skapa en GPT-partitionstabell.

(parted) mktable gpt

Skapa 1 avsnitt bios_grub sektion och ställ in en flagga för den.

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

Skapa partition 2 och ställ in en flagga för den. Partitionen kommer att användas som ett block för en RAID-array och monteras in /boot.

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

Vi skapar partition 3, som också kommer att användas som ett arrayblock där LVM kommer att finnas.

(parted) mkpart primary 1028MiB 100% 

I det här fallet är det inte nödvändigt att ställa in flaggan, men vid behov kan den ställas in med följande kommando.

(parted) set 3 raid on

Vi kontrollerar den skapade 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 tilldelar en ny slumpmässig GUID till disken.

sgdisk -G /dev/sdd

2. Ta bort partitioner från den första disken från arrayer

Kontrollerar arrayens tillstånd

[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 använder 2 arrayer: md126 (monteringspunkt /boot) - består av /dev/sda1 и /dev/sdb1, md127 (LVM för swap och roten av filsystemet) - består av /dev/sda2 и /dev/sdb2.

Vi markerar partitionerna på den första disken som används i varje array som dåliga.

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

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

Ta bort blockenhetspartitioner /dev/sda från arrayer.

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

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

Kontrollerar arrayens tillstånd efter att skivan tagits bort.

[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. Lägga till partitioner för den nya disken till arrayen

Nästa steg är att lägga till partitioner av den nya disken till arrayerna för synkronisering. Låt oss titta på det nuvarande tillståndet för disklayouten.

[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  

Avsnitt /dev/sdc1 är bios_grub sektionen och är inte involverad i skapandet av arrayer. Arrayerna kommer endast att använda /dev/sdc2 и /dev/sdc3. Vi lägger till dessa sektioner till motsvarande arrayer.

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

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

Sedan väntar vi på att arrayen ska synkroniseras.

[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 att ha lagt till partitioner till arrayen.

[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. Ta bort partitioner på den andra disken från arrayer

Vi markerar partitionerna på den andra disken som används i varje array som dåliga.

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

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

Ta bort blockenhetspartitioner /dev/sda från arrayer.

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

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

5. Kopiera GPT-layouttabellen och synkronisera arrayen

För att kopiera GPT-uppmärkningstabellen använder vi verktyget sgdisk, som ingår i paketet för att arbeta med diskpartitioner och en GPT-tabell - gdisk.

Installation gdisk för CentOS:

yum install -y gdisk

Installation gdisk för Debian/Ubuntu:

apt install -y gdisk

VARNING: För GPT först disk indikeras på vilken kopiera markeringen, andra disk indikerar disken från vilken kopiera uppmärkningen. Om du blandar ihop diskarna kommer den initialt bra partitionen att skrivas över och förstöras.

Kopiera GPT-uppmärkningstabellen.

sgdisk -R /dev/sdd /dev/sdc

Diskpartitionering efter överföring av en tabell till 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  

Därefter lägger vi till var och en av partitionerna som deltar i mjukvaru-RAID-arrayer.

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

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

Vi väntar på att arrayen ska synkroniseras.

[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 att ha kopierat GPT-partitionen till den andra nya disken kommer partitionen att se ut så här.

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

Installera sedan GRUB på de nya diskarna.

Installation för CentOS:

grub2-install /dev/sdX

Installation för Debian/Ubuntu:

grub-install /dev/sdX

där X — drivbokstav, i vårt fall driver /dev/sdc и /dev/sdd.

Vi uppdaterar information om arrayen.

För CentOS:

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

Till Debian/Ubuntu:

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

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

Uppdaterar bilden initrd:
För CentOS:

dracut -f -v --regenerate-all

Till Debian/Ubuntu:

update-initramfs -u -k all

Vi uppdaterar GRUB-konfigurationen.

För CentOS:

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

Till Debian/Ubuntu:

update-grub

När du har slutfört stegen kan de gamla diskarna tas bort.

6. Filsystemtillägg (ext4) för rotpartitionen

Diskpartitionering före filsystemsexpansion efter migrering av systemet till 2 x 3TB-diskar (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 avsnitt /dev/sdc3 и /dev/sdd3 upptar 2.7 TB. Eftersom vi skapade en ny disklayout med en GPT-tabell, sattes storleken på partition 3 omedelbart till maximalt möjliga diskutrymme, i det här fallet finns det inget behov av att utöka partitionen.

Det är nödvändigt:

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

1. Expandera arrayen md126 maximalt.

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

Efter arrayexpansion md126 storleken på det upptagna utrymmet har ökat till 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]

Expanderar fysisk volym.

Innan du expanderar, kontrollera det aktuella värdet för det upptagna utrymmet PV /dev/md126.

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

Vi utökar PV med följande kommando.

pvresize /dev/md126

Vi kontrollerar den genomförda åtgärden.

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

Expanderar logisk volym vg0-root.

Efter att ha utökat PV, låt oss kontrollera det upptagna utrymmet VG.

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

Låt oss kontrollera utrymmet som upptas 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-rootvolymen upptar 206.41 GB.

Vi utökar LV till maximalt diskutrymme.

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

Kontrollera LV-utrymmet efter expansion.

[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

Utöka filsystemet (ext4).

Låt oss kontrollera den aktuella storleken 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

Volymen /dev/mapper/vg0-root upptar 204 GB efter LV-expansion.

Utöka filsystemet.

resize2fs /dev/mapper/vg0-root 

Kontrollera storleken på filsystemet efter att ha expanderat 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 storlek har utökats för att täcka hela volymen.

Källa: will.com

Lägg en kommentar