Disk Konfiguration: Unterschied zwischen den Versionen
(102 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= | = Anforderungen an das Setup = | ||
Mein RAID<ref>https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm</ref> Setup mit unterschiedlichen Disks. | Mein RAID<ref>https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm</ref> / LUKS / LVM Setup mit unterschiedlichen Disks. | ||
Anforderungen: | Anforderungen: | ||
Zeile 6: | Zeile 6: | ||
# Eine Volume Group ''vg_single'' nimmt die Partitionen auf, die in kein RAID mehr passen ("Verschnitt") | # Eine Volume Group ''vg_single'' nimmt die Partitionen auf, die in kein RAID mehr passen ("Verschnitt") | ||
# Alle Daten auf mindestens drei unterschiedlichen Disks, soweit möglich | # Alle Daten auf mindestens drei unterschiedlichen Disks, soweit möglich | ||
# Alle Daten (Dokumente und VM's) sind verschlüsselt, oder | # Alle Daten (Dokumente und VM's) sind verschlüsselt (md3_crypt), oder | ||
# im RAID5 (Medien: Musik und Filme) über mindestens drei Disks verteilt (''cryptdisk'' möglich, aber nicht notwendig) | # im RAID5 (Medien: Musik und Filme) über mindestens drei Disks verteilt (vg_disk) (''cryptdisk'' möglich, aber nicht notwendig) | ||
# Alle aktiven VM's liegen auf der einzigen verschlüsselten SSD | # Alle aktiven VM's liegen auf der einzigen verschlüsselten SSD (sdf3_crypt) | ||
# Alle VM's haben ein Snapshot auf einer verschlüsselten Disk | # Alle VM's haben ein Snapshot auf einer verschlüsselten Disk (md3_crypt) | ||
# 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) | # 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|LUKS-Schlüssel zum Booten meines XEN-Servers auf mehreren Devices]] (USB-Sticks oder Festplatten). | Mein Bootscript liest den [[LUKS|LUKS-Schlüssel zum Booten meines XEN-Servers auf mehreren Devices]] (USB-Sticks oder Festplatten). | ||
Vorher mit 2 TB Disk | |||
[[Bild:XEN-Disk-Setup.jpg]] | [[Bild:XEN-Disk-Setup.jpg]] | ||
Nach Tausch der 2 TB Disk durch 8TB Disk | |||
[[Bild:Xen-Disk-Setup2.jpg]] | |||
= Austausch der 2 TB Disk durch eine neue 8 TB Disk = | = Austausch der 2 TB Disk durch eine neue 8 TB Disk = | ||
Zeile 20: | Zeile 24: | ||
Wo wird die 2TB Disk verwendet? | Wo wird die 2TB Disk verwendet? | ||
'''Welche Disk und welche RAID | '''Welche Disk und welche RAID Verbunde sind betroffen?''' | ||
<pre> | <pre> | ||
# fdisk -l /dev/sdb | # fdisk -l /dev/sdb | ||
Zeile 46: | Zeile 50: | ||
== Disk aus RAID Verbund lösen == | == Disk aus RAID Verbund lösen == | ||
=== RAID 1=== | |||
=== RAID 1 | ==== md0 ==== | ||
<pre> | <pre> | ||
### md0 : active raid1 sda2[2] sdb2[1] sdf2[0] | ### md0 : active raid1 sda2[2] sdb2[1] sdf2[0] | ||
Zeile 67: | Zeile 71: | ||
</pre> | </pre> | ||
=== | ==== md3 ==== | ||
<pre> | <pre> | ||
### md3 : active raid1 sde3[2](S) sda3[0] sdb3[1] | ### md3 : active raid1 sde3[2](S) sda3[0] sdb3[1] | ||
Zeile 127: | Zeile 131: | ||
</pre> | </pre> | ||
=== | ==== md4 ==== | ||
Zuerst ein Spare Device hinzufügen, bevor der RAID 5 Verbund aufgelöst wird, anschliessend die Disk entfernen. | 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. | |||
<pre> | <pre> | ||
Zeile 150: | Zeile 156: | ||
</pre> | </pre> | ||
=== | ==== md6 ==== | ||
<pre> | <pre> | ||
## machen wir nicht, aber wenn's nötig gewesen wäre ein LV zu verkleinern (2T -> 1.5T): | ## machen wir nicht, aber wenn's nötig gewesen wäre ein LV zu verkleinern (2T -> 1.5T): | ||
Zeile 173: | Zeile 175: | ||
</pre> | </pre> | ||
== Neue Disk | == 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). | Alte 2TB (ziehe den richtigen SATA-Stecker) ausbauen, neue 8TB Disk einhängen und entsprechend partitionieren (analog der vorhandenen 8TB Disk). | ||
=== Disk Partitionieren === | === Disk Partitionieren <ref>https://wiki.ubuntuusers.de/gdisk/</ref>=== | ||
<pre> | <pre> | ||
## Partitionslayout prüfen | ## Partitionslayout prüfen | ||
Zeile 200: | Zeile 202: | ||
## sicherstellen dass die neue Disk wieder | ## sicherstellen dass die neue Disk wieder sde ist: | ||
# cat /proc/mdstat | grep | # cat /proc/mdstat | grep sde | ||
# pvs | grep | # pvs | grep sde | ||
# fdisk -l /dev/ | # fdisk -l /dev/sde | ||
Disk /dev/ | Disk /dev/sde: 7,3 TiB, 8001563222016 bytes, 15628053168 sectors | ||
Disk model: WDC WD80EFAX-68K | Disk model: WDC WD80EFAX-68K | ||
Units: sectors of 1 * 512 = 512 bytes | Units: sectors of 1 * 512 = 512 bytes | ||
Zeile 211: | Zeile 213: | ||
## Disk Partition Layout kopieren und mit neuer | ## Disk Partition Layout kopieren und mit neuer GUID versehen | ||
# sgdisk /dev/sde | # sgdisk -R /dev/sde /dev/sdb | ||
The operation has completed successfully. | The operation has completed successfully. | ||
# sgdisk -p /dev/ | # sgdisk -p /dev/sde | ||
Disk /dev/ | Disk /dev/sde: 15628053168 sectors, 7.3 TiB | ||
Model: WDC WD80EFAX-68K | Model: WDC WD80EFAX-68K | ||
Sector size (logical/physical): 512/4096 bytes | Sector size (logical/physical): 512/4096 bytes | ||
Zeile 244: | Zeile 246: | ||
</pre> | </pre> | ||
=== RAID | === Vorhandenen RAID Verbund erweitern === | ||
Die Partitionen wieder den RAID hinzufügen: | Die Partitionen der Ersatz-Disk wieder den entsprechenden RAID hinzufügen: | ||
==== vorherige RAID 1 und RAID 5 wieder herstellen ==== | |||
<pre> | <pre> | ||
# mdadm /dev/md6 --add /dev/sdb6 | # mdadm /dev/md6 --add /dev/sdb6 | ||
Zeile 298: | Zeile 301: | ||
</pre> | </pre> | ||
Jetzt habe ich noch | ==== Disk-Kapazität eines RAID erweitern ==== | ||
* sdb5 mit 1. | |||
* sdb7 kann | 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: | |||
<pre> | |||
# 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 | |||
</pre> | |||
==== 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. | |||
<pre> | |||
### 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. | |||
</pre> | |||
==== 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. | |||
<pre> | |||
# 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 | |||
</pre> | |||
==== 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. | |||
<pre> | |||
# 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 | |||
</pre> | |||
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. | |||
<pre> | |||
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. | |||
</pre> | |||
Wo wird die 8TB alte Disk verwendet? -> überall ;-) | |||
'''Welche Disk und welche RAID Verbunde sind betroffen?''' | |||
<pre> | |||
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] | |||
</pre> | |||
== Disk aus RAID Verbund lösen == | |||
=== RAID 1 === | |||
==== md1 ==== | |||
<pre> | |||
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. | |||
</pre> | |||
==== md3 ==== | |||
<pre> | |||
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. | |||
</pre> | |||
==== md7 ==== | |||
<pre> | |||
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 | |||
</pre> | |||
=== RAID 5 === | |||
==== md4 ==== | |||
<pre> | |||
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 | |||
</pre> | |||
==== md5 ==== | |||
<pre> | |||
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 | |||
</pre> | |||
==== md6 ==== | |||
<pre> | |||
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 | |||
</pre> | |||
== 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. | |||
<pre>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 | |||
</pre> | |||
=== 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? | |||
<pre> | <pre> | ||
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 | |||
</pre> | </pre> | ||
====Partitionstabelle sichern==== | |||
<pre> | |||
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 | |||
</pre> | |||
====Partitionstabelle von sdb nach sde übertragen und neue Datenträger-GUID zuweisen==== | |||
<pre> | |||
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 | |||
</pre> | |||
=== vorherige RAID 1 und RAID 5 wieder herstellen === | |||
Binde die Partitionen der neuen Disk in die entsprechenden RAID wieder ein. | |||
<pre> | |||
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 | |||
</pre> | |||
= 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: | |||
<pre># sgdisk --backup=GPT_sdb.backup /dev/sdb | |||
# sgdisk --load-backup=GPT_sdb.backup /dev/sdh | |||
# sgdisk -G /dev/sdh | |||
</pre> | |||
Disk mit SMART prüfen, indem wir einen DISK-internen TEST=long starten (das dauert bei 8TB ein paar Stunden): | |||
<pre># smartctl --test=long /dev/sdh | |||
</pre> | |||
Verweise: |
Aktuelle Version vom 15. August 2021, 18:42 Uhr
Anforderungen an das Setup
Mein RAID[1] / LUKS / LVM Setup mit unterschiedlichen Disks.
Anforderungen:
- Eine Disk kann ausfallen, ohne Datenverlust (bis auf den "Verschnitt" in vg_single -> Backup)
- Eine Volume Group vg_single nimmt die Partitionen auf, die in kein RAID mehr passen ("Verschnitt")
- Alle Daten auf mindestens drei unterschiedlichen Disks, soweit möglich
- Alle Daten (Dokumente und VM's) sind verschlüsselt (md3_crypt), oder
- im RAID5 (Medien: Musik und Filme) über mindestens drei Disks verteilt (vg_disk) (cryptdisk möglich, aber nicht notwendig)
- Alle aktiven VM's liegen auf der einzigen verschlüsselten SSD (sdf3_crypt)
- Alle VM's haben ein Snapshot auf einer verschlüsselten Disk (md3_crypt)
- 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).
Nach Tausch der 2 TB Disk durch 8TB Disk
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: