Disk Konfiguration: Unterschied zwischen den Versionen
Zeile 309: | Zeile 309: | ||
'''Work in progress...''' to be finalized! | '''Work in progress...''' to be finalized! | ||
Der einfache Teil: | Der einfache Teil: | ||
<pre> | <pre> |
Version vom 12. Februar 2021, 19:57 Uhr
RAID Setup
Mein RAID[1] 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).
Austausch der 2 TB Disk durch eine neue 8 TB Disk
Wo wird die 2TB Disk verwendet?
Welche Disk und welche RAID Verbünde 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.
RAID 1: 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
RAID 5: md4
Zuerst ein Spare Device hinzufügen, bevor der RAID 5 Verbund aufgelöst wird, anschliessend die Disk entfernen.
### 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
RAID 5: md6
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.
## 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 in RAID Verbund geben
Alte 2TB (ziehe den richtigen SATA-Stecker) ausbauen, neue 8TB Disk einhängen und entsprechend partitionieren (analog der vorhandenen 8TB Disk).
Disk Partitionieren
## 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 sdb ist: # cat /proc/mdstat | grep sdb # pvs | grep sdb # fdisk -l /dev/sdb Disk /dev/sdb: 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 UUID versehen # sgdisk /dev/sde -R /dev/sdb The operation has completed successfully. # 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): 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
RAID wieder erweitern
Die Partitionen wieder den 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]
Zusätzliche Disk-Kapazität den RAID zuordnen
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
Dann bleibt nur noch die Partition sda7 mit 68 GB als Verschnitt ohne RAID-Level übrig, bis die nächste(n) Disk(s) durch 8 TB ersetzt werden.
Work in progress... to be finalized!
Der einfache Teil:
# mdadm md5 -add /dev/sdb5
Etwas komplizierter:
### md7 erzeugen als RAID 1 mit einer Disk (sde7 fügen wir später hinzu, nachdem wir sie vorher freigeräumt haben) # mdadm --assemble md7 /dev/sdb7 -- raid 1 --disk=1 ### md7_crypt erstellen: md7 mit LUKS verschlüsseln # luks -create ... # edit /etc/crypttab (erstelle md7_crypt Eintrag) # cryptdisk_start md7_crypt ### md7_crypt in Volume Group vg_single ergänzen # pvcreate md7_crypt # vgextend vg_single /dev/md7_crypt ### sde7 freiräumen = # pvmove /dev/sde7_crypt ### sde7_crypt auflösen # cryptdisk_stop md7_crypt ## edit /etc/crypttab (lösche sde7_crypt Eintrag) ### sde7 zu RAID md7 hinzufügen # mdadm --add md7 /dev/sde7 ### md7_crypt aus Volume Group vg_single in Volume Group vg_disk verschieben # vgsplit -n