Disk Konfiguration

Aus Neobikers Wiki
Zur Navigation springen Zur Suche springen

RAID Setup

Mein RAID[1] 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, oder
  5. im RAID5 (Medien: Musik und Filme) über mindestens drei Disks verteilt (cryptdisk möglich, aber nicht notwendig)
  6. Alle aktiven VM's liegen auf der einzigen verschlüsselten SSD
  7. Alle VM's haben ein Snapshot auf einer verschlüsselten Disk
  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).

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!

# mdadm md5 -add /dev/sdb5


### 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
# 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