Ciao a tutti. Alla vigilia dell'inizio di un nuovo gruppo di corso
Questo articolo prenderà in considerazione 2 casi di sostituzione dei dischi e trasferimento di informazioni su nuovi dischi di capacità maggiore con ulteriore espansione dell'array e del file system. Il primo caso riguarderà la sostituzione di dischi con lo stesso partizionamento MBR/MBR o GPT/GPT, il secondo caso riguarda la sostituzione di dischi con partizionamento MBR con dischi di capacità superiore a 2 TB, sui quali sarà necessario installare una partizione GPT con una partizione biosboot. In entrambi i casi, i dischi su cui trasferiamo i dati sono già installati sul server. Il file system utilizzato per la partizione root è ext4.
Caso 1: sostituzione di dischi più piccoli con dischi più grandi (fino a 2 TB)
obiettivo: Sostituisci i dischi attuali con dischi più grandi (fino a 2 TB) con il trasferimento delle informazioni. In questo caso abbiamo 2 dischi SSD (RAID-240) da 1 GB con il sistema installato e 2 dischi SATA da 1 TB su cui è necessario trasferire il sistema.
Diamo un'occhiata al layout attuale del disco.
[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
Controlliamo lo spazio del file system attualmente utilizzato.
[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
La dimensione del file system prima della sostituzione dei dischi è di 204 GB, vengono utilizzati 2 array software md126, montati in /boot
и md127
, che viene utilizzato come volume fisico per il gruppo VG vg0.
1. Rimozione delle partizioni del disco dagli array
Controllo dello stato dell'array
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sda1[0] sdb1[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda2[0] sdb2[1]
233206784 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk
unused devices: <none>
Il sistema utilizza 2 array: md126
(punto di montaggio /boot
) - è costituito da una sezione /dev/sda1
и /dev/sdb1
, md127
(LVM per swap e la radice del file system) - è costituito da /dev/sda2
и /dev/sdb2
.
Contrassegniamo come danneggiate le partizioni del primo disco utilizzate in ciascun array.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Rimuoviamo le partizioni del dispositivo a blocchi /dev/sda dagli array.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Dopo aver rimosso il disco dall'array, le informazioni sul dispositivo a blocchi appariranno così.
[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
Stato degli array dopo la rimozione dei dischi.
[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. Copia la tabella delle partizioni su un nuovo disco
Puoi controllare la tabella delle partizioni utilizzata sul disco con il seguente comando.
fdisk -l /dev/sdb | grep 'Disk label type'
L'output per MBR sarebbe:
Disk label type: dos
per GPT:
Disk label type: gpt
Copia della tabella delle partizioni per MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdc
In questo comando prima è indicato il disco с di cui il markup viene copiato, secondo - dove copia.
ВНИМАНИЕ: Per GPT prima è indicato il disco in cui copia markup, il secondo disk indica il disco da cui copia markup. Se si confondono i dischi, la partizione inizialmente valida verrà sovrascritta e distrutta.
Copia della tabella di layout per GPT:
sgdisk -R /dev/sdс /dev/sdb
Successivamente, assegna un UUID casuale al disco (per GPT).
sgdisk -G /dev/sdc
Dopo aver eseguito il comando, le partizioni dovrebbero apparire sul disco /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
Se, dopo aver eseguito l'azione, le partizioni nel sistema sul disco /dev/sdc
indeciso, quindi eseguiamo il comando per rileggere la tabella delle partizioni.
sfdisk -R /dev/sdc
Se i dischi attuali utilizzano la tabella MBR e le informazioni devono essere trasferite su dischi di dimensioni superiori a 2 TB, sui nuovi dischi sarà necessario creare manualmente una partizione GPT utilizzando la partizione biosboot. Questo caso sarà discusso nella parte 2 di questo articolo.
3. Aggiunta delle partizioni del nuovo disco all'array
Aggiungiamo le partizioni del disco agli array corrispondenti.
mdadm /dev/md126 --add /dev/sdc1
mdadm /dev/md127 --add /dev/sdc2
Controlliamo che le sezioni siano state aggiunte.
[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
Successivamente, aspettiamo che gli array si sincronizzino.
[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>
È possibile monitorare continuamente il processo di sincronizzazione utilizzando l'utilità watch
.
watch -n 2 cat /proc/mdstat
Parametro -n
specifica con quali intervalli in secondi deve essere eseguito il comando per verificarne l'avanzamento.
Ripetere i passaggi da 1 a 3 per il successivo disco sostitutivo.
Contrassegniamo come danneggiate le partizioni del secondo disco utilizzate in ciascun array.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Rimozione delle partizioni del dispositivo a blocchi /dev/sdb
dagli array.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
Dopo aver rimosso il disco dall'array, le informazioni sul dispositivo a blocchi appariranno così.
[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
Stato degli array dopo la rimozione dei dischi.
[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>
Copia della tabella delle partizioni MBR dal disco /dev/sdс
su disco /dev/sdd
.
sfdisk -d /dev/sdс | sfdisk /dev/sdd
Dopo aver eseguito il comando, le partizioni dovrebbero apparire sul disco /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
Aggiunta di partizioni del disco agli array.
mdadm /dev/md126 --add /dev/sdd1
mdadm /dev/md127 --add /dev/sdd2
Controlliamo che le sezioni siano state aggiunte.
[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]
Successivamente, aspettiamo che gli array si sincronizzino.
[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. Installazione di GRUB su nuove unità
Per CentOS:
grub2-install /dev/sdX
Per Debian/Ubuntu:
grub-install /dev/sdX
dove X
— lettera del dispositivo di blocco. In questo caso è necessario installare GRUB su /dev/sdc
и /dev/sdd
.
6. Estensione del file system (ext4) della partizione root
Su nuovi dischi /dev/sdc
и /dev/sdd
931.5 GB disponibili. A causa del fatto che la tabella delle partizioni è stata copiata da dischi più piccoli, le partizioni /dev/sdc2
и /dev/sdd2
222.5 GB disponibili.
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]
È necessario:
- Estendi la partizione 2 su ciascuno dei dischi,
- Espandi l'array md127,
- Espandere il PV (volume fisico),
- Espandi LV (volume logico) vg0-root,
- Espandi il file system.
Utilizzando l'utilità parted espandiamo la sezione /dev/sdc2
al valore massimo. Esegui il comando parted /dev/sdc
(1) e visualizza la tabella delle partizioni corrente con il comando p
(2).
Come puoi vedere, la fine della partizione 2 termina a 240 GB. Espandiamo la partizione con il comando resizepart
2
, dove 2 è il numero della sezione (3). Indichiamo il valore in formato digitale, ad esempio 1000 GB, oppure utilizziamo l'indicazione della quota del disco - 100%. Controlliamo nuovamente che la partizione abbia la nuova dimensione (4).
Ripetere i passaggi precedenti per il disco /dev/sdd
. Dopo aver espanso le partizioni /dev/sdc2
и /dev/sdd2
è diventato pari a 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]
Successivamente espandiamo l'array md127 fino al massimo.
mdadm --grow /dev/md127 --size=max
Controlliamo che l'array si sia espanso. Ora la sua dimensione è diventata 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]
Estendere la proroga volume fisico. Prima di espandere, controlliamo lo stato attuale del fotovoltaico.
[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 ]
Come si può vedere, PV /dev/md127
utilizza 222.4 GB di spazio.
Espandiamo PV con il seguente comando.
pvresize /dev/md127
Verifica del risultato dell'espansione FV.
[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 ]
In espansione volume logico. Prima di espandere, controlliamo lo stato attuale di 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
utilizza 206.41 GB.
Espandiamo LV con il seguente comando (2).
lvextend -l +100%FREE /dev/mapper/vg0-root
Controlliamo l'azione completata (3).
[root@localhost ~]# lvscan
ACTIVE '/dev/vg0/swap' [<16,00 GiB] inherit
ACTIVE '/dev/vg0/root' [<914,39 GiB] inherit
Come puoi vedere, dopo aver espanso LV, la quantità di spazio su disco occupato è diventata 914.39 GB.
Il volume LV è aumentato (4), ma il file system occupa ancora 204 GB (5).
1. Espandiamo il file system.
resize2fs /dev/mapper/vg0-root
Dopo aver eseguito il comando, controlliamo la dimensione del file system.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9,5M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 900G 1,3G 860G 1% /
/dev/md126 1007M 120M 837M 13% /boot
tmpfs 6,3G 0 6,3G 0% /run/user/0
La dimensione del file system root aumenterà a 900 GB. Dopo aver completato i passaggi, puoi rimuovere i vecchi dischi.
Caso 2: sostituzione di dischi più piccoli con dischi più grandi (più di 2 TB)
Ambito: Sostituisci i dischi attuali con dischi più grandi (2 x 3 TB) preservando le informazioni. In questo caso abbiamo 2 dischi SSD (RAID-240) da 1 GB con il sistema installato e 2 dischi SATA da 3 TB su cui trasferire il sistema. I dischi attuali utilizzano la tabella delle partizioni MBR. Poiché i nuovi dischi hanno una capacità superiore a 2 TB, dovranno utilizzare una tabella GPT, poiché l'MBR non può funzionare con dischi più grandi di 2 TB.
Diamo un'occhiata al layout attuale del disco.
[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
Controlliamo la tabella delle partizioni utilizzata sul disco /dev/sda
.
[root@localhost ~]# fdisk -l /dev/sda | grep 'Disk label type'
Disk label type: dos
Su disco /dev/sdb
viene utilizzata una tabella delle partizioni simile. Controlliamo lo spazio su disco utilizzato nel sistema.
[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
Come puoi vedere, la radice del file system occupa 204 GB. Controlliamo lo stato corrente dell'array RAID software.
1. Installazione di una tabella delle partizioni GPT e partizionamento del disco
Controlliamo il layout del disco per settore.
[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
Sul nuovo disco da 3TB dovremo creare 3 partizioni:
- Sezione
bios_grub
Dimensione 2MiB per compatibilità BIOS GPT, - La partizione per l'array RAID in cui verrà montato
/boot
. - La partizione per l'array RAID su cui sarà presente Radice LV и Scambio LV.
Installazione dell'utilità parted Il gruppo yum install -y parted
(per CentOS), apt install -y parted
(per Debian/Ubuntu).
Utilizzo parted Eseguiamo i seguenti comandi per partizionare il disco.
Esegui il comando parted /dev/sdc
e vai alla modalità di modifica del layout del disco.
Crea una tabella delle partizioni GPT.
(parted) mktable gpt
Crea 1 sezione bios_grub
sezione e impostare un flag per esso.
(parted) mkpart primary 1MiB 3MiB
(parted) set 1 bios_grub on
Crea la partizione 2 e imposta un flag per essa. La partizione verrà utilizzata come blocco per un array RAID e montata al suo interno /boot
.
(parted) mkpart primary ext2 3MiB 1028MiB
(parted) set 2 boot on
Creiamo una terza sezione, che verrà utilizzata anche come blocco array in cui verrà posizionato LVM.
(parted) mkpart primary 1028MiB 100%
In questo caso non è necessario impostare il flag, ma se necessario è possibile impostarlo con il comando seguente.
(parted) set 3 raid on
Controlliamo la tabella creata.
(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
Assegnamo un nuovo GUID casuale al disco.
sgdisk -G /dev/sdd
2. Rimozione delle partizioni del primo disco dagli array
Controllo dello stato dell'array
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sda1[0] sdb1[1]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk
md127 : active raid1 sda2[0] sdb2[1]
233206784 blocks super 1.2 [2/2] [UU]
bitmap: 0/2 pages [0KB], 65536KB chunk
unused devices: <none>
Il sistema utilizza 2 array: md126 (mount point /boot) - è composto da /dev/sda1
и /dev/sdb1
, md127
(LVM per swap
e la radice del file system) - è costituito da /dev/sda2
и /dev/sdb2
.
Contrassegniamo come danneggiate le partizioni del primo disco utilizzate in ciascun array.
mdadm /dev/md126 --fail /dev/sda1
mdadm /dev/md127 --fail /dev/sda2
Rimozione delle partizioni del dispositivo a blocchi /dev/sda
dagli array.
mdadm /dev/md126 --remove /dev/sda1
mdadm /dev/md127 --remove /dev/sda2
Controllo dello stato dell'array dopo aver rimosso il disco.
[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. Aggiunta delle partizioni del nuovo disco all'array
Il passaggio successivo consiste nell'aggiungere partizioni del nuovo disco agli array per la sincronizzazione. Diamo un'occhiata allo stato attuale del layout del disco.
[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
Sezione /dev/sdc1
è bios_grub
sezione e non è coinvolto nella creazione di array. Gli array utilizzeranno solo /dev/sdc2
и /dev/sdc3
. Aggiungiamo queste sezioni agli array corrispondenti.
mdadm /dev/md126 --add /dev/sdc2
mdadm /dev/md127 --add /dev/sdc3
Quindi aspettiamo che l'array si sincronizzi.
[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>
Partizionamento del disco dopo l'aggiunta di partizioni all'array.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 223,6G 0 disk
├─sda1 8:1 0 1G 0 part
└─sda2 8:2 0 222,5G 0 part
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdb2 8:18 0 222,5G 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdc 8:32 0 2,7T 0 disk
├─sdc1 8:33 0 2M 0 part
├─sdc2 8:34 0 1G 0 part
│ └─md126 9:126 0 1023M 0 raid1 /boot
└─sdc3 8:35 0 2,7T 0 part
└─md127 9:127 0 222,4G 0 raid1
├─vg0-root 253:0 0 206,4G 0 lvm /
└─vg0-swap 253:1 0 16G 0 lvm [SWAP]
sdd 8:48 0 2,7T 0 disk
4. Rimozione delle partizioni del secondo disco dagli array
Contrassegniamo come danneggiate le partizioni del secondo disco utilizzate in ciascun array.
mdadm /dev/md126 --fail /dev/sdb1
mdadm /dev/md127 --fail /dev/sdb2
Rimozione delle partizioni del dispositivo a blocchi /dev/sda
dagli array.
mdadm /dev/md126 --remove /dev/sdb1
mdadm /dev/md127 --remove /dev/sdb2
5. Copia la tabella di layout GPT e sincronizza l'array
Per copiare la tabella di markup GPT utilizzeremo l'utilità sgdisk
, che è incluso nel pacchetto per lavorare con le partizioni del disco e una tabella GPT - gdisk
.
Installazione gdisk
per CentOS:
yum install -y gdisk
Installazione gdisk
per Debian/Ubuntu:
apt install -y gdisk
ВНИМАНИЕ: Per GPT prima è indicato il disco in cui copiare il markup, il secondo disk indica il disco da cui copiare il markup. Se si confondono i dischi, la partizione inizialmente valida verrà sovrascritta e distrutta.
Copia la tabella di markup GPT.
sgdisk -R /dev/sdd /dev/sdc
Partizionamento del disco dopo il trasferimento di una tabella su disco /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
Successivamente, aggiungiamo ciascuna delle partizioni che partecipano agli array RAID software.
mdadm /dev/md126 --add /dev/sdd2
mdadm /dev/md127 --add /dev/sdd3
Stiamo aspettando la sincronizzazione dell'array.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdd2[3] sdc2[2]
1047552 blocks super 1.2 [2/2] [UU]
bitmap: 1/1 pages [4KB], 65536KB chunk
md127 : active raid1 sdd3[3] sdc3[2]
233206784 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.0% (148224/233206784) finish=26.2min speed=148224K/sec
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
Dopo aver copiato la partizione GPT sul secondo nuovo disco, la partizione avrà questo aspetto.
[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]
Successivamente, installa GRUB sui nuovi dischi.
Installazione per CentOS:
grub2-install /dev/sdX
Installazione per Debian/Ubuntu:
grub-install /dev/sdX
dove X
- lettera di unità, nel nostro caso unità /dev/sdc
и /dev/sdd
.
Aggiorniamo le informazioni sull'array.
Per CentOS:
mdadm --detail --scan --verbose > /etc/mdadm.conf
Per Debian/Ubuntu:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Aggiornamento dell'immagine initrd
:
Per CentOS:
dracut -f -v --regenerate-all
Per Debian/Ubuntu:
update-initramfs -u -k all
Aggiorniamo la configurazione di GRUB.
Per CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Per Debian/Ubuntu:
update-grub
Dopo aver completato i passaggi, i vecchi dischi possono essere rimossi.
6. Estensione del file system (ext4) della partizione root
Partizionamento del disco prima dell'espansione del file system dopo la migrazione del sistema su 2 dischi da 3 TB (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]
Ora sezioni /dev/sdc3
и /dev/sdd3
occupano 2.7 TB. Poiché abbiamo creato un nuovo layout del disco con una tabella GPT, la dimensione della partizione 3 è stata immediatamente impostata sul massimo spazio possibile su disco; in questo caso non è necessario espandere la partizione.
È necessario:
- Espandi l'array md126,
- Espandere il PV (volume fisico),
- Espandi LV (volume logico) vg0-root,
- Espandi il file system.
1. Espandi la matrice md126
fino al massimo.
mdadm --grow /dev/md126 --size=max
Dopo l'espansione dell'array md126
la dimensione dello spazio occupato è aumentata a 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]
In espansione volume fisico.
Prima di espandere verificare il valore attuale dello spazio occupato PV/dev/md126
.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- 222,40g 0
Espandiamo PV con il seguente comando.
pvresize /dev/md126
Controlliamo l'azione completata.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md126 vg0 lvm2 a-- <2,73t 2,51t
In espansione volume logico vg0-root.
Dopo aver espanso PV, controlliamo lo spazio occupato VG.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 2 0 wz--n- <2,73t 2,51t
Controlliamo lo spazio occupato da 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
Il volume vg0-root occupa 206.41 GB.
Espandiamo LV allo spazio su disco massimo.
lvextend -l +100%FREE /dev/mapper/vg0-root
Controllo dello spazio LV dopo l'espansione.
[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
Espansione del file system (ext4).
Controlliamo la dimensione corrente del file system.
[root@localhost ~]# df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 9,6M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/vg0-root 204G 1,4G 192G 1% /
/dev/md127 1007M 141M 816M 15% /boot
tmpfs 3,2G 0 3,2G 0% /run/user/0
Il volume /dev/mapper/vg0-root occupa 204 GB dopo l'espansione LV.
Espansione del file system.
resize2fs /dev/mapper/vg0-root
Controllo della dimensione del file system dopo averlo espanso.
[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
La dimensione del file system è stata aumentata per coprire l'intero volume.
Fonte: habr.com