GNU/Linux >> Linux Esercitazione >  >> Linux

Come sostituire un disco rigido guasto nel software RAID Linux

Questa guida mostra come rimuovere un disco rigido guasto da un array RAID1 Linux (RAID software) e come aggiungere un nuovo disco rigido all'array RAID1 senza perdere dati. Userò gdisk per copiare lo schema di partizione, quindi funzionerà anche con dischi rigidi di grandi dimensioni con GPT (GUID Partition Table).

1 Nota preliminare

In questo esempio ho due dischi rigidi, /dev/sda e /dev/sdb, con le partizioni /dev/sda1 e /dev/sda2 così come /dev/sdb1 e /dev/sdb2.

/dev/sda1 e /dev/sdb1 costituiscono l'array RAID1 /dev/md0.

/dev/sda2 e /dev/sdb2 costituiscono l'array RAID1 /dev/md1.

/dev/sda1 + /dev/sdb1 = /dev/md0
/dev/sda2 + /dev/sdb2 = /dev/md1

/dev/sdb non è riuscito e vogliamo sostituirlo.

2 Come faccio a sapere se un disco rigido è guasto?

Se un disco è guasto, probabilmente troverai molti messaggi di errore nei file di registro, ad es. /var/log/messages o /var/log/syslog.

Puoi anche correre

cat /proc/mdstat

e invece della stringa [UU] vedrai [U_] se hai un array RAID1 degradato.

3 Rimozione del disco guasto

Per rimuovere /dev/sdb, contrassegneremo /dev/sdb1 e /dev/sdb2 come non riusciti e li rimuoveremo dai rispettivi array RAID (/dev/md0 e /dev/md1).

Per prima cosa contrassegniamo /dev/sdb1 come non riuscito:

mdadm --manage /dev/md0 --fail /dev/sdb1

L'output di

cat /proc/mdstat

dovrebbe assomigliare a questo:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Quindi rimuoviamo /dev/sdb1 da /dev/md0:

mdadm --manage /dev/md0 --remove /dev/sdb1

L'output dovrebbe essere questo:

server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1

E

cat /proc/mdstat

dovrebbe mostrare questo:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Ora eseguiamo di nuovo gli stessi passaggi per /dev/sdb2 (che fa parte di /dev/md1):

mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[2](F)
      24418688 blocks [2/1] [U_]

unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
      24418688 blocks [2/1] [U_]

unused devices: <none>

Quindi spegni il sistema:

shutdown -h now

e sostituisci il vecchio disco rigido /dev/sdb con uno nuovo (deve avere almeno le stesse dimensioni di quello vecchio - se è solo qualche MB più piccolo di quello vecchio, la ricostruzione degli array fallirà).

4 Aggiunta del nuovo disco rigido

Dopo aver modificato il disco rigido /dev/sdb, avvia il sistema.

La prima cosa che dobbiamo fare ora è creare lo stesso partizionamento di /dev/sda. Possiamo farlo con il comando sgdisk dal pacchetto gdisk. Se non hai ancora installato gdisk, esegui questo comando per installarlo su Debian e Ubuntu:

apt-get install gdisk

Per le distribuzioni Linux basate su RedHat come CentOS usa:

yum install gdisk

e per l'uso di OpenSuSE:

yast install gdisk

Il passaggio successivo è facoltativo ma consigliato. Per assicurarti di avere un backup dello schema di partizione, puoi usare sgdisk per scrivere gli schemi di partizione di entrambi i dischi in un file. Memorizzerò il backup nella cartella /root.

sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb

In caso di errore puoi ripristinare le tabelle delle partizioni con l'opzione --load-backup del comando sgdisk.

Ora copia lo schema di partizione da /dev/sda a /dev/sdb run:

sgdisk -R /dev/sdb /dev/sda

in seguito, devi randomizzare il GUID sul nuovo disco rigido per assicurarti che siano univoci

sgdisk -G /dev/sdb

Puoi correre

sgdisk -p /dev/sda
sgdisk -p /dev/sdb

per verificare se entrambi i dischi rigidi hanno ora lo stesso partizionamento.

Quindi aggiungiamo /dev/sdb1 a /dev/md0 e /dev/sdb2 a /dev/md1:

mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2

Ora entrambi gli aray (/dev/md0 e /dev/md1) saranno sincronizzati. Corri

cat /proc/mdstat

per vedere quando è finito.

Durante la sincronizzazione l'output sarà simile a questo:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  9.9% (2423168/24418688) finish=2.8min speed=127535K/sec

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/1] [U_]
      [=>...................]  recovery =  6.4% (1572096/24418688) finish=1.9min speed=196512K/sec

unused devices: <none>

Al termine della sincronizzazione, l'output sarà simile al seguente:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
      24418688 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]

unused devices: <none>

Ecco fatto, hai sostituito con successo /dev/sdb!


Linux
  1. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  2. Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

  3. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

  4. Come codificare in base64 /dev/random o /dev/urandom?

  5. Come si scambia /dev/sda con /dev/sdb?

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Linux:cosa significa la lettera "u" in /dev/urandom?

Cosa sono i file /dev/zero e /dev/null in Linux

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp