Disk Konfiguration

Aus Neobiker\\\'s Wiki
Zur Navigation springen Zur Suche springen

Anforderungen an das Setup

Mein RAID[1] / LUKS / LVM Setup mit unterschiedlichen Disks.

Anforderungen:

  1. Eine Disk kann ausfallen, ohne Datenverlust (bis auf den "Verschnitt" in vg_single -> Backup)
  2. Eine Volume Group vg_single nimmt die Partitionen auf, die in kein RAID mehr passen ("Verschnitt")
  3. Alle Daten auf mindestens drei unterschiedlichen Disks, soweit möglich
  4. Alle Daten (Dokumente und VM's) sind verschlüsselt (md3_crypt), oder
  5. im RAID5 (Medien: Musik und Filme) über mindestens drei Disks verteilt (vg_disk) (cryptdisk möglich, aber nicht notwendig)
  6. Alle aktiven VM's liegen auf der einzigen verschlüsselten SSD (sdf3_crypt)
  7. Alle VM's haben ein Snapshot auf einer verschlüsselten Disk (md3_crypt)
  8. Der XEN-Host und alle VM'S können im Notfall von allen Disks (md0 oder md1) gebootet werden (auf einem beliebigen anderem Rechner, sofern ein USB-Stick mit dem dem LUKS-Key verfügbar ist)

Mein Bootscript liest den LUKS-Schlüssel zum Booten meines XEN-Servers auf mehreren Devices (USB-Sticks oder Festplatten).

Vorher mit 2 TB Disk XEN-Disk-Setup.jpg

Nach Tausch der 2 TB Disk durch 8TB Disk Xen-Disk-Setup2.jpg

Austausch der 2 TB Disk durch eine neue 8 TB Disk

Wo wird die 2TB Disk verwendet?

Welche Disk und welche RAID Verbunde sind betroffen?

# fdisk -l /dev/sdb
Disk /dev/sdb: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: WDC WD20EFRX-68A
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 1FB146D4-AEFD-1C4B-90AF-315105C08C34

Device          Start        End    Sectors   Size Type
/dev/sdb1        2048       4095       2048     1M BIOS boot
/dev/sdb2        4096     514047     509952   249M Linux RAID
/dev/sdb3      514048 1049090047 1048576000   500G Linux RAID
/dev/sdb4  1049090048 2097666047 1048576000   500G Linux RAID
/dev/sdb5  2097666048 3907029134 1809363087 862,8G Linux RAID

# cat /proc/mdstat | grep sdb | sort
md0 : active raid1 sda2[2] sdb2[1] sdf2[0]
md3 : active raid1 sde3[2](S) sda3[0] sdb3[1]
md4 : active raid5 sde4[5] sdd4[3] sdc4[2] sda4[0] sdb4[1]
md6 : active raid5 sde6[3] sda6[0] sdb5[1]

Disk aus RAID Verbund lösen

RAID 1

md0

### md0 : active raid1 sda2[2] sdb2[1] sdf2[0]
###       254912 blocks [3/3] [UUU]

# mdadm /dev/md0 --fail /dev/sdb2 --remove /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md0
mdadm: hot removed /dev/sdb2 from /dev/md0

# mdadm --grow /dev/md0 --raid-devices=2
raid_disks for /dev/md0 set to 2

### md0 : active raid1 sda2[1] sdf2[0]
###      254912 blocks [2/2] [UU]

### console (dmesg)
[436568.811061] md/raid1:md0: Disk failure on sdb2, disabling device.
                md/raid1:md0: Operation continuing on 2 devices.

md3

### md3 : active raid1 sde3[2](S) sda3[0] sdb3[1]
###       524287936 blocks [2/2] [UU]
###       bitmap: 0/4 pages [0KB], 65536KB chunk

# mdadm /dev/md3 --fail /dev/sdb3 --remove /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md3
mdadm: hot removed /dev/sdb3 from /dev/md3


### md3 : active raid1 sde3[2] sda3[0]
###      524287936 blocks [2/1] [U_]
###      [>....................]  recovery =  0.2% (1372800/524287936) finish=50.7min speed=171600K/sec
###      bitmap: 0/4 pages [0KB], 65536KB chunk

### console (dmesg)
[437831.642672] md/raid1:md3: Disk failure on sdb3, disabling device.
                md/raid1:md3: Operation continuing on 1 devices.
[437831.681725] md: recovery of RAID array md3
[440886.670057] md: md3: recovery done.

RAID 5

Zuerst ein Spare Device hinzufügen, bevor der RAID 5 Verbund aufgelöst wird, anschliessend die Disk entfernen.

VolumeGroup vg_single hat 1x 500GB Platz um den Spare für md4 aufzunehmen.

# vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  ssd         1  17   0 wz--n- 232,62g   12,62g
  vg_disk     4   2   0 wz--n-   9,38t <291,20g
  vg_single   2   5   0 wz--n-   3,77t    1,03t
  vm          1   8   0 wz--n- 499,98g   46,98g

# pvs
  PV                     VG        Fmt  Attr PSize   PFree
  /dev/mapper/md2_crypt  vg_disk   lvm2 a--  499,98g <291,20g
  /dev/mapper/md3_crypt  vm        lvm2 a--  499,98g   46,98g
  /dev/mapper/sda7_crypt vg_single lvm2 a--   68,71g   68,71g
  /dev/mapper/sde7_crypt vg_single lvm2 a--   <3,71t <986,73g
  /dev/mapper/sdf3_crypt ssd       lvm2 a--  232,62g   12,62g
  /dev/md4               vg_disk   lvm2 a--    1,95t       0
  /dev/md5               vg_disk   lvm2 a--   <5,26t       0
  /dev/md6               vg_disk   lvm2 a--    1,68t       0

# lvcreate -L 500G vg_single -n spare_md4

# fdisk -l /dev/vg_single/spare_md4
Disk /dev/vg_single/spare_md4: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

# fdisk -l /dev/vg_single/spare_md4
### 1048576000 sectors
# fdisk -l /dev/sdb4
### 1048576000 sectors

md4

Braucht es eigentlich nicht: Zuerst ein Spare Device hinzufügen, bevor der RAID 5 Verbund aufgelöst wird, anschliessend die Disk entfernen.

Das Spare in den RAID hängen, bevor die neue Disk reinkommt bringt hier nix, denn sobald ich die alte Disk aus dem RAID5 nehme, fängt der SPARE an zu syncen. D.h. bis der Sync fertig ist, ist das RAID online, und bekommt ein Problem wenn eine weitere Disk ausfällt. Also kann ich auch gleich den RAID auf die neue Disk syncen - der RAID Verbund ist damit genauso lange ohne Redundanz wie mit einem Spare.

### md4 : active raid5 sde4[5] sdd4[3] sdc4[2] sda4[0] sdb4[1]
###       2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
###       bitmap: 0/4 pages [0KB], 65536KB chunk

# mdadm /dev/md4 --add /dev/vg_single/spare_md4
mdadm: added /dev/vg_single/spare_md4

### md4 : active raid5 dm-37[6](S) sde4[5] sdd4[3] sdc4[2] sda4[0] sdb4[1]
###       2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
###       bitmap: 0/4 pages [0KB], 65536KB chunk

# mdadm /dev/md4 --fail /dev/sdb4 --remove /dev/sdb4

### md4 : active raid5 dm-37[6] sde4[5] sdd4[3] sdc4[2] sda4[0]
###       2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/4] [U_UUU]
###       [>....................]  recovery =  0.0% (157824/524155904) finish=331.9min speed=26304K/sec
###       bitmap: 0/4 pages [0KB], 65536KB chunk

md6

## machen wir nicht, aber wenn's nötig gewesen wäre ein LV zu verkleinern (2T -> 1.5T):
## lvresize --resizefs --size 1.5T /dev/vg_single/media3


### md6 : active raid5 sde6[3] sda6[0] sdb5[1]
###       1809098752 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
###       bitmap: 0/7 pages [0KB], 65536KB chunk


# mdadm /dev/md6 --fail /dev/sdb5 --remove /dev/sdb5


### md6 : active raid5 sde6[3] sda6[0]
###       1809098752 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
###       bitmap: 0/7 pages [0KB], 65536KB chunk

Neue Disk dem RAID Verbund hinzufügen

Alte 2TB (ziehe den richtigen SATA-Stecker) ausbauen, neue 8TB Disk einhängen und entsprechend partitionieren (analog der vorhandenen 8TB Disk).

Disk Partitionieren [2]

## Partitionslayout prüfen
# sgdisk -p /dev/sde
Disk /dev/sde: 15628053168 sectors, 7.3 TiB
Model: WDC WD80EFAX-68L
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 9142152D-B739-404A-8FD0-B8053DBDAB6A
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15628053134
Partitions will be aligned on 2048-sector boundaries
Total free space is 5056 sectors (2.5 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02
   2            4096          514047   249.0 MiB   FD00
   3          514048      1049090047   500.0 GiB   FD00
   4      1049090048      2097666047   500.0 GiB   FD00
   5      2097666048      5860533134   1.8 TiB     FD00
   6      5860534272      7669897358   862.8 GiB   FD00
   7      7669899264     15628053134   3.7 TiB     8300


## sicherstellen dass die neue Disk wieder sde ist:
# cat /proc/mdstat | grep sde
# pvs | grep sde
# fdisk -l /dev/sde
Disk /dev/sde: 7,3 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: WDC WD80EFAX-68K
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


## Disk Partition Layout kopieren und mit neuer GUID versehen
# sgdisk -R /dev/sde /dev/sdb
The operation has completed successfully.


# sgdisk -p /dev/sde
Disk /dev/sde: 15628053168 sectors, 7.3 TiB
Model: WDC WD80EFAX-68K
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 9142152D-B739-404A-8FD0-B8053DBDAB6A
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15628053134
Partitions will be aligned on 2048-sector boundaries
Total free space is 5056 sectors (2.5 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02
   2            4096          514047   249.0 MiB   FD00
   3          514048      1049090047   500.0 GiB   FD00
   4      1049090048      2097666047   500.0 GiB   FD00
   5      2097666048      5860533134   1.8 TiB     FD00
   6      5860534272      7669897358   862.8 GiB   FD00
   7      7669899264     15628053134   3.7 TiB     8300


# sgdisk -G /dev/sdb


# sgdisk -p /dev/sdb | grep GUID
Disk identifier (GUID): 996B3469-25F8-4D4E-B815-755FCF7D0BAD

Vorhandenen RAID Verbund erweitern

Die Partitionen der Ersatz-Disk wieder den entsprechenden RAID hinzufügen:

vorherige RAID 1 und RAID 5 wieder herstellen

# mdadm /dev/md6 --add /dev/sdb6
# cat /proc/mdstat
md6 : active raid5 sdb6[4] sde6[3] sda6[0]
      1809098752 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
      [>....................]  recovery =  0.0% (286044/904549376) finish=105.3min speed=143022K/sec
      bitmap: 2/7 pages [8KB], 65536KB chunk


# mdadm /dev/md4 --add /dev/sdb4
# cat /proc/mdstat
md4 : active raid5 sdb4[7](S) dm-35[6] sdd4[3] sdc4[2] sda4[0] sde4[5]
      2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

# mdadm /dev/md4 --fail /dev/vg_single/spare_md4 --remove /dev/vg_single/spare_md4
mdadm: set /dev/vg_single/spare_md4 faulty in /dev/md4
mdadm: hot removed /dev/vg_single/spare_md4 from /dev/md4


# cat /proc/mdstat
md4 : active raid5 sdb4[7] sdd4[3] sdc4[2] sda4[0] sde4[5]
      2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/4] [U_UUU]
      [>....................]  recovery =  1.2% (6544540/524155904) finish=62.0min speed=138952K/sec
      bitmap: 0/4 pages [0KB], 65536KB chunk


# mdadm /dev/md3 --add /dev/sdb3
mdadm: hot added /dev/sdb3

# mdadm /dev/md0 --add /dev/sdb2
mdadm: hot added /dev/sdb2

# mdadm --grow /dev/md0 --raid-devices=3
raid_disks for /dev/md0 set to 3


# cat /proc/mdstat
md0 : active raid1 sdb2[2] sda2[1] sdf2[0]
      254912 blocks [3/3] [UUU]

# dmesg
[24027.083101] md: recovery of RAID array md0
[24028.592467] md: md0: recovery done.

# cat /proc/mdstat | grep sdb | sort
md0 : active raid1 sdb2[2] sda2[1] sdf2[0]
md3 : active raid1 sdb3[2](S) sda3[0] sde3[1]
md4 : active raid5 sdb4[7] sdd4[3] sdc4[2] sda4[0] sde4[5]
md6 : active raid5 sdb6[4] sde6[3] sda6[0]

Disk-Kapazität eines RAID erweitern

Jetzt habe ich noch 2x Partitionen der 8TB Disk frei, die ich den vorhandenen Bereichen noch zurodnen kann:

  • sdb5 mit 1.8 TB kann dem RAID md5 hinzugefügt werden -> zusätzliche 1.8 TB Nettokapazität in RAID 5
  • sdb7 mit 3.71 TB kann mit der Partition sde7 jetzt ein RAID 1 md7 erzeugen -> 3.71 TB jetzt durch RAID 1 gesichert


Der einfache Teil:

# pvs | grep md5
  /dev/md5               vg_disk   lvm2 a--   <5,26t       0

### md5 : active raid5 sdd5[2] sda5[0] sdc5[1] sde5[4]
###       5643902976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
###       bitmap: 0/15 pages [0KB], 65536KB chunk


# mdadm --grow /dev/md5 --add /dev/sdb5 --raid-devices=5
mdadm: hot added /dev/sdb5

### md5 : active raid5 sdb5[5] sdd5[2] sda5[0] sdc5[1] sde5[4]
###       5643902976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
###       [>....................]  reshape =  0.8% (16784524/1881300992) finish=776.2min speed=40029K/sec
###       bitmap: 0/15 pages [0KB], 65536KB chunk

[100928.214940] md: reshape of RAID array md5
[154854.879387] md: md5: reshape done.
[154856.021848] md5: detected capacity change from 5779356647424 to 7705808863232


# pvresize /dev/md5
  Physical volume "/dev/md5" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

# pvs | grep md5
  /dev/md5               vg_disk   lvm2 a--   <7,01t    1,75t

Verschlüsseltes RAID erstellen

Etwas aufwendiger: sde7 ist verschlüsselt (sde7_crypt) in der Volume Group sg_single eingebunden. Zusammen mit sdb7 soll ein RAID 1 erstellt werden. Da wir mit 2 Disks kein RAID 5 erstellen wollen, soll das neue RAID md7 verschlüsselt (md7_crypt) werden, bevor wir es der vorhandenen Volume Group vg_disk hinzufügen. Dabei müssen die auf sde7 vorhandenen Dateien auf das neue RAID umgezogen werden.

### md7 erzeugen als RAID 1 mit einer Disk (sde7 fügen wir später hinzu, nachdem wir sie freigeräumt haben)
# mdadm --create /dev/md7 --level=1 --raid-devices=2 /dev/sdb7 missing
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md7 started.

### md7 : active raid1 sdb7[0]
###       3978944832 blocks super 1.2 [2/1] [U_]
###       bitmap: 0/30 pages [0KB], 65536KB chunk


### md7_crypt erstellen: md7 mit LUKS verschlüsseln, und einen zusätzlichen Schlüssel hinterlegen (USB-Schlüssel)
root@corsair:~# cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/md7

WARNING!
========
Hiermit werden die Daten auf »/dev/md7« unwiderruflich überschrieben.

Are you sure? (Type uppercase yes): YES
Geben Sie die Passphrase für »/dev/md7« ein:
Passphrase bestätigen:

### 2x USB Sticks können die Verschlüsselung öffnen
# cryptsetup luksAddKey /dev/md7 /etc/cryptkey/usb.FSC_MEMORYBIRD
Geben Sie irgendeine bestehende Passphrase ein:
# cryptsetup luksAddKey /dev/md7 /etc/cryptkey/usb.DELL_16M
Geben Sie irgendeine bestehende Passphrase ein:


### erstelle md7_crypt Eintrag
# echo "md7_crypt $(blkid | grep md7 | cut -d\  -f2 | tr -d \" ) /etc/cryptkey/usb.FSC_MEMORYBIRD luks,tries=3" >> /etc/crypttab

# # cryptdisks_start md7_crypt
[ ok ] Starting crypto disk...md7_crypt (starting)...md7_crypt (started)...done.


### md7_crypt in Volume Group vg_single ergänzen
# pvcreate /dev/mapper/md7_crypt
  Physical volume "/dev/mapper/md7_crypt" successfully created.

Daten eines Logical Volume auf RAID migrieren

Die vorhandenen Daten im ungeschützten LV (ohne RAID) sollen auf das neue verschlüsselte RAID verschoben werden. Dazu wird die Volume Group um das neue RAID erweitert, die Daten auf das RAID verschoben. Anschliessend wird das bisher noch "degraded RAID" mit dem vorher geleerten Device erweitert, sodass der RAID-Schutz zukünftig gegeben ist.

# vgextend vg_single /dev/mapper/md7_crypt
  Volume group "vg_single" successfully extended

# pvs | grep vg_single
  /dev/mapper/md7_crypt  vg_single lvm2 a--   <3,71t   <3,71t
  /dev/mapper/sda7_crypt vg_single lvm2 a--   68,71g   68,71g
  /dev/mapper/sde7_crypt vg_single lvm2 a--   <3,71t <486,73g

### sde7 freiräumen und aus Volume Group entfernen
# screen pvmove /dev/mapper/sde7_crypt /dev/mapper/md7_crypt
  /dev/mapper/sde7_crypt: Moved: 0,01%


# vgreduce vg_single /dev/mapper/sde7_crypt
  Removed "/dev/mapper/sde7_crypt" from volume group "vg_single"


### sde7_crypt auflösen
# cryptdisks_stop sde7_crypt
[ ok ] Stopping crypto disk...sde7_crypt (stopping)...done.

# cat /etc/crypttab | grep -v sde7_crypt > /etc/crypttab

### sde7 zu RAID md7 hinzufügen
# mdadm --add /dev/md7 /dev/sde7
mdadm: added /dev/sde7

# cat /proc/mdstat | grep md7 -A 4
md7 : active raid1 sde7[2] sdb7[0]
      3978944832 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.1% (4827840/3978944832) finish=483.9min speed=136862K/sec
      bitmap: 26/30 pages [104KB], 65536KB chunk

RAID in andere Volume Group verschieben

Das RAID md7_crypt jetzt einen echten RAID Level erreicht und soll daher aus von vg_single nach vg_disk verschoben werden.

# xen shutdown ucsmail
# lvchange -an vg_single

### md7_crypt aus Volume Group vg_single in Volume Group vg_disk verschieben
# vgsplit vg_single vg_disk /dev/mapper/md7_crypt
  Existing volume group "vg_disk" successfully split from "vg_single"

# vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  ssd         1  17   0 wz--n- 232,62g 12,62g
  vg_disk     5   7   0 wz--n- <14,84t <3,00t
  vg_single   1   0   0 wz--n-  68,71g 68,71g
  vm          1   8   0 wz--n- 499,98g 46,98g

# lvchange -ay vg_disk
  7 logical volume(s) in volume group "vg_disk" now active

# vorher: XEN Konfiguration anpassen vg_single -> vg_disk 
# xen create ucsmail

Volume Group vg_disk ist um 3.71 TB gewachsen, während der Verschnitt in vg_single mit nur noch 68 GB vernachlässigbar ist. Sämtliche Daten sind jetzt in einem RAID gesichert, abgesehen von vg_single, die ist jetzt unbenutzt.

Sobald ich die nächste Disk ersetzen muss, wiederhole ich diese Prozedur. Ob ich dann wieder 8 TB oder evtl. 12 TB oder 16 TB Disk kaufe wird sich zeigen, aber vermutlich reicht mir, wenn ich irgendwann 5x 8TB Bruttokapazität habe.

Austausch der 8 TB Disk durch eine neue 8 TB Disk

Meine ältere 8TB meldet seit ein paar Tagen defekte Sektoren. Da sie erst 1 Jahr alt ist schwupps die Amazon Bestellung rausgesucht und im Support Chat die Email des smartd eingestellt, mit der Bitte um Austausch. Nach 3 Minuten hatte ich meinen Rücksendeschein und volle Preiserstattung, also gleich eine Ersatzdisk bestellt. Dabei habe ich erstmal wieder den c't Artikel rausgekramt, welchen Typ ich bestellen muss, da bei den WD RED Disks für ein SAN ja auf den CMR Typ geachtet werden muss.

This message was generated by the smartd daemon running on:

   host name:  corsair
   DNS domain: friedrichnet.de

The following warning/error was logged by the smartd daemon:

Device: /dev/sde [SAT], 7 Offline uncorrectable sectors

Device info:
WDC WD80EFAX-68LHPN0, S/N:2SGJYJWJ, WWN:5-000cca-27dc7b4d8, FW:83.H0A83, 8.00 TB

For details see host's SYSLOG.

Wo wird die 8TB alte Disk verwendet? -> überall ;-)

Welche Disk und welche RAID Verbunde sind betroffen?

root@corsair:/etc# fdisk -l /dev/sde
Disk /dev/sde: 7,3 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: WDC WD80EFAX-68L
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 9142152D-B739-404A-8FD0-B8053DBDAB6A

Device          Start         End    Sectors   Size Type
/dev/sde1        2048        4095       2048     1M BIOS boot
/dev/sde2        4096      514047     509952   249M Linux RAID
/dev/sde3      514048  1049090047 1048576000   500G Linux RAID
/dev/sde4  1049090048  2097666047 1048576000   500G Linux RAID
/dev/sde5  2097666048  5860533134 3762867087   1,8T Linux RAID
/dev/sde6  5860534272  7669897358 1809363087 862,8G Linux RAID
/dev/sde7  7669899264 15628053134 7958153871   3,7T Linux filesystem

root@corsair:~# cat /proc/mdstat | grep 'sde' | sort
md1 : active raid1 sdc2[0] sdd2[1] sde2[2]
md3 : active raid1 sda3[0] sdb3[2](S) sde3[1]
md4 : active (auto-read-only) raid5 sdc4[2] sdd4[3] sde4[5] sdb4[7] sda4[0]
md5 : active raid5 sdc5[1] sdd5[2] sde5[4] sdb5[5] sda5[0]
md6 : active raid5 sde6[3] sdb6[4] sda6[0]
md7 : active raid1 sde7[2] sdb7[0]

Disk aus RAID Verbund lösen

RAID 1

md1

root@corsair:~# cat /proc/mdstat | egrep -A2 'md1'
md1 : active raid1 sdc2[0] sdd2[1] sde2[2]
      254912 blocks [3/3] [UUU]

# mdadm /dev/md1 --fail /dev/sde2 --remove /dev/sde2
mdadm: set /dev/sde2 faulty in /dev/md1
mdadm: hot removed /dev/sde2 from /dev/md1

root@corsair:/etc# mdadm --grow /dev/md1 --raid-devices=2
raid_disks for /dev/md1 set to 2

root@corsair:/etc# cat /proc/mdstat | egrep -A2 md1
md1 : active raid1 sdc2[0] sdd2[1]
      254912 blocks [2/2] [UU]

### console (dmesg)
md/raid1:md1: Disk failure on sde2, disabling device.
md/raid1:md1: Operation continuing on 2 devices.

md3

root@corsair:~# cat /proc/mdstat | egrep -A2 'md3'
md3 : active raid1 sda3[0] sdb3[2](S) sde3[1]
      524287936 blocks [2/2] [UU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

root@corsair:/etc# mdadm --grow /dev/md3 --raid-devices=3
raid_disks for /dev/md3 set to 3

root@corsair:/etc# cat /proc/mdstat | egrep -A2 'md3'
md3 : active raid1 sda3[0] sdb3[3] sde3[1]
      524287936 blocks [3/2] [UU_]
      [>....................]  recovery =  2.7% (14360320/524287936) finish=46.0min speed=184437K/sec

# mdadm /dev/md3 --fail /dev/sde3 --remove /dev/sde3
mdadm: set /dev/sde3 faulty in /dev/md3
mdadm: hot removed /dev/sde3 from /dev/md3

### console (dmesg)
[437831.642672] md/raid1:md3: Disk failure on sdb3, disabling device.
                md/raid1:md3: Operation continuing on 1 devices.
[437831.681725] md: recovery of RAID array md3
[440886.670057] md: md3: recovery done.


md7

root@corsair:~# cat /proc/mdstat | egrep -A2 'md7'
md7 : active raid1 sde7[2] sdb7[0]
      3978944832 blocks super 1.2 [2/2] [UU]
      bitmap: 0/30 pages [0KB], 65536KB chunk

# mdadm /dev/md7 --fail /dev/sde7 --remove /dev/sde7
mdadm: set /dev/sde7 faulty in /dev/md7
mdadm: hot removed /dev/sde7 from /dev/md7


RAID 5

md4

root@corsair:~# cat /proc/mdstat | egrep -A2 'md4'
md4 : active (auto-read-only) raid5 sdc4[2] sdd4[3] sde4[5] sdb4[7] sda4[0]
      2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/4 pages [0KB], 65536KB chunk

# mdadm /dev/md4 --fail /dev/sde4 --remove /dev/sde4
mdadm: set /dev/sde4 faulty in /dev/md4
mdadm: hot removed /dev/sde4 from /dev/md4


md5

root@corsair:~# cat /proc/mdstat | egrep -A2 'md5'
md5 : active raid5 sdc5[1] sdd5[2] sde5[4] sdb5[5] sda5[0]
      7525203968 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/15 pages [0KB], 65536KB chunk

# mdadm /dev/md5 --fail /dev/sde5 --remove /dev/sde5
mdadm: set /dev/sde5 faulty in /dev/md5
mdadm: hot removed /dev/sde5 from /dev/md5

md6

root@corsair:~# cat /proc/mdstat | egrep -A2 'md6'
md6 : active raid5 sde6[3] sdb6[4] sda6[0]
      1809098752 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      bitmap: 0/7 pages [0KB], 65536KB chunk

# mdadm /dev/md6 --fail /dev/sde6 --remove /dev/sde6
mdadm: set /dev/sde6 faulty in /dev/md6
mdadm: hot removed /dev/sde6 from /dev/md6

Ersatz Disk wieder in RAID Verbund einfügen

Die Partitionen wieder den RAID hinzufügen: Rechner ausschalten, alte Disk ausbauen und neue Disk einsetzen.

RAID 5: md4 neu starten

Ein RAID (md4) kam nach dem booten nicht hoch. Ich starte es neu, ein resync war nicht notwendig.

root@corsair:~# cat /proc/mdstat | egrep -A2 'md4'
md4 : inactive sdc4[2](S) sdd4[3](S) sda4[0](S) sdb4[7](S)
      2096623616 blocks super 1.2

root@corsair:~# mdadm --stop /dev/md4
mdadm: stopped /dev/md4

root@corsair:~# mdadm --assemble /dev/md4
mdadm: /dev/md4 has been started with 4 drives (out of 5).

root@corsair:~/xen# cat /proc/mdstat | egrep -A2 'md4'
md4 : active (auto-read-only) raid5 sda4[0] sdd4[3] sdc4[2] sdb4[7]
      2096623616 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/4] [UUUU_]
      bitmap: 0/4 pages [0KB], 65536KB chunk

vorherige Disk Partitionierung wieder herstellen

Übernehme die Formatierung der anderen 8TB (sdb) Disk

Sicherstellen dass wir nichts kaputt machen, ist die neue Disk (sde) wirklich wieder auf dem alten Platz (sde) gelandet?

root@corsair:~/xen# cat /proc/mdstat | grep sde
root@corsair:~/xen# pvs | grep sde
root@corsair:~/xen# fdisk -l /dev/sde
Disk /dev/sde: 7,3 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: WDC WD80EFBX-68A
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Partitionstabelle sichern

root@corsair:~/xen# sgdisk -b ~/Backup_sdb.GPT /dev/sdb  

root@corsair:~/xen# sgdisk -p /dev/sdb
Disk /dev/sdb: 15628053168 sectors, 7.3 TiB
Model: WDC WD80EFAX-68K
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): 996B3469-25F8-4D4E-B815-755FCF7D0BAD
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15628053134
Partitions will be aligned on 2048-sector boundaries
Total free space is 5056 sectors (2.5 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02
   2            4096          514047   249.0 MiB   FD00
   3          514048      1049090047   500.0 GiB   FD00
   4      1049090048      2097666047   500.0 GiB   FD00
   5      2097666048      5860533134   1.8 TiB     FD00
   6      5860534272      7669897358   862.8 GiB   FD00
   7      7669899264     15628053134   3.7 TiB     8300

Partitionstabelle von sdb nach sde übertragen und neue Datenträger-GUID zuweisen

root@corsair:~/xen# sgdisk -R /dev/sde /dev/sdb
root@corsair:~/xen# sgdisk -G /dev/sde

root@corsair:~# sgdisk -p /dev/sde | grep GUID
Disk identifier (GUID): EF58D3BB-5B53-4A33-B005-B734D9000B1D

vorherige RAID 1 und RAID 5 wieder herstellen

Binde die Partitionen der neuen Disk in die entsprechenden RAID wieder ein.

root@corsair:~# mdadm /dev/md1 --add /dev/sde1
mdadm: added /dev/sde1
root@corsair:/etc# mdadm --grow /dev/md1 --raid-devices=3
raid_disks for /dev/md1 set to 3
root@corsair:~# cat /proc/mdstat | grep -A2 md1

root@corsair:~# mdadm /dev/md3 --add /dev/sde3
mdadm: added /dev/sde3
root@corsair:/etc# mdadm --grow /dev/md3 --raid-devices=3
raid_disks for /dev/md3 set to 3
root@corsair:~# cat /proc/mdstat | grep -A2 md3
md3 : active raid1 sde3[3] sda3[0] sdb3[1]
      524287936 blocks [3/2] [UU_]
      [>....................]  recovery =  0.1% (536192/524287936) finish=48.8min speed=178730K/sec

root@corsair:~# mdadm /dev/md4 --add /dev/sde4
mdadm: added /dev/sde4
root@corsair:~# cat /proc/mdstat | grep -A2 md4


root@corsair:~# mdadm /dev/md5 --add /dev/sde5
mdadm: added /dev/sde5
root@corsair:~# watch "cat /proc/mdstat | grep -A2 md5"
Every 2,0s: cat /proc/mdstat | grep -A2 md5                                  corsair: Sun Apr 25 08:27:20 2021

md5 : active raid5 sde5[6] sdc5[1] sdd5[2] sdb5[5] sda5[0]
      7525203968 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/4] [UUU_U]
      [=>...................]  recovery =  6.9% (131484148/1881300992) finish=233.0min speed=125120K/sec

root@corsair:~# mdadm /dev/md6 --add /dev/sde6
mdadm: added /dev/sde6
root@corsair:~# cat /proc/mdstat | grep -A2 md6
md6 : active raid5 sde6[3] sdb6[4] sda6[0]
      1809098752 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [>....................]  recovery =  0.1% (1751676/904549376) finish=120.2min speed=125119K/sec


root@corsair:~# mdadm /dev/md7 --add /dev/sde7
mdadm: added /dev/sde7
root@corsair:~# cat /proc/mdstat | grep -A2 md7
md7 : active raid1 sde7[2] sdb7[0]
      3978944832 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.5% (21491776/3978944832) finish=398.1min speed=165674K/sec

Defekte 3TB Disk austauschen durch 8TB Disk ersetzen

Disk per USB-Dockingstation an Server anschliesen. Disk wird als /dev/sdh eingehängt. Als erstes erstelle ich eine GPT Partitionstabelle aus einer anderen 8TB Disk (/dev/sdb).

GPT Partitionstabelle von /dev/sdb sichern, auf /dev/sdh kopieren und dann neue GUID erzeugen:

# sgdisk --backup=GPT_sdb.backup /dev/sdb
# sgdisk --load-backup=GPT_sdb.backup /dev/sdh
# sgdisk -G /dev/sdh

Disk mit SMART prüfen, indem wir einen DISK-internen TEST=long starten (das dauert bei 8TB ein paar Stunden):

# smartctl --test=long /dev/sdh

Verweise: