Mdadm Howto
Einrichten
Installation
- apt-get install mdadm
Raid 0
- mdadm -C /dev/md0 -l 0 -n 2 /dev/vda5 /dev/vda6
Raid 1
- mdadm -C /dev/md1 -l 1 -n 2 /dev/vda7 /dev/vda8
Raid 5
- mdadm -C /dev/md2 -l 5 -n 3 /dev/vda9 /dev/vda10 /dev/vda11
Raid 10
- mdadm -C /dev/md3 -l 10 -n 4 /dev/vda12 /dev/vda13 /dev/vda14 /dev/vda15
Mit Sparedisks
- mdadm -C /dev/md3 -l 10 -n 4 -x 2 /dev/vda12 /dev/vda13 /dev/vda14 /dev/vda15 /dev/vdb1 /dev/vdb2
Mountpoints erzeugen
- mkdir /mnt/raid{0,1,5,10}
Dateisystem aufbringen
- mkfs.ext4 /dev/md0
- mkfs.ext4 /dev/md1
- mkfs.ext4 /dev/md2
- mkfs.ext4 /dev/md3
Mounten
- mount /dev/md0 /mnt/raid0
- mount /dev/md1 /mnt/raid1
- mount /dev/md2 /mnt/raid5
- mount /dev/md3 /mnt/raid10
Verfügbarer Speicher
- df -h -t ext4
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf /dev/vda1 50G 25G 23G 53% / /dev/md0 20G 24K 19G 1% /mnt/raid0 /dev/md1 9,8G 24K 9,3G 1% /mnt/raid1 /dev/md2 20G 24K 19G 1% /mnt/raid5 /dev/md3 20G 24K 19G 1% /mnt/raid10
Geschwindigkeitsmessung
- dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
Kontrolle
- cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md3 : active raid10 vda15[3] vda14[2] vda13[1] vda12[0]
20953088 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
[=============>.......] resync = 68.4% (14344640/20953088) finish=0.5min speed=202328K/sec
md2 : active raid5 vda11[3] vda10[1] vda9[0]
20953088 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md1 : active raid1 vda8[1] vda7[0]
10476544 blocks super 1.2 [2/2] [UU]
md0 : active raid0 vda6[1] vda5[0]
20953088 blocks super 1.2 512k chunks
Bootvorgang
- Entweder wird die Konfiguration im Persistent Superlock ausgelesen
- oder in der Konfigurationsdatei /etc/mdadm/mdadm.conf
- Raid Funktion ist in der Regel in der Ramdisk vorhanden
- Es werden bei 0xFD Partitionstyp die Partitionen automatisch zu md-Devices assembliert und gestartet
Manuelles Zusammenbauen
- mdadm -A /dev/md0 /dev/vda5 /dev/vda6
- mdadm -A /dev/md1 /dev/vda7 /dev/vda7
- mdadm -A /dev/md2 /dev/vda9 /dev/vda10 /dev/vda11
- mdadm -A /dev/md3 /dev/vda12 /dev/vda13 /dev/vda14 /dev/vda15
Erstellen der Datei /etc/mdadm/mdadm.conf
- Normalerweise nicht notwendig
- cd /etc/mdadm
- echo 'DEVICE /dev/vd*[0-15] ' > mdadm.conf
- mdadm --detail --scan >> mdadm.conf
Arbeiten am Raid
Partition fehlerhaft setzen
- mdadm /dev/md1 -f /dev/vda8
Partition entfernen
- mdadm /dev/md1 --remove /dev/vda8
Partition hinzufügen
- mdadm /dev/md1 -a /dev/vda16
Raid stoppen
- umount /mnt/raid0
- mdadm -S /dev/md0
Raid wieder starten
- mdadm -A /dev/md0 /dev/vda5 /dev/vda6
- mount -t ext4 /dev/md0 /mnt/raid0
Raid Info
- mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Mar 3 09:55:06 2022
Raid Level : raid0
Array Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Thu Mar 3 09:55:06 2022
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : -unknown-
Chunk Size : 512K
Consistency Policy : none
Name : debian-template:0 (local to host debian-template)
UUID : 3b7816b2:787704c6:db24d9de:55dbcfe8
Events : 0
Number Major Minor RaidDevice State
0 254 5 0 active sync /dev/vda5
1 254 6 1 active sync /dev/vda6
Superblock untersuchen
Dieser liegt redundant auf allen Partionen des Raid
- mdadm -E /dev/vda7
/dev/vda7:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 1568fb90:9dd8bc83:f06bc9fe:2dcba200
Name : debian-template:1 (local to host debian-template)
Creation Time : Thu Mar 3 09:58:15 2022
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 20953088 (9.99 GiB 10.73 GB)
Array Size : 10476544 (9.99 GiB 10.73 GB)
Data Offset : 18432 sectors
Super Offset : 8 sectors
Unused Space : before=18280 sectors, after=0 sectors
State : clean
Device UUID : 8e4801ba:56f5569e:8e03aa0e:e73190c6
Update Time : Thu Mar 3 10:33:11 2022
Bad Block Log : 512 entries available at offset 136 sectors
Checksum : 360eb7a9 - correct
Events : 45
Device Role : Active device 0
Array State : AA ('A' == active, '.' == missing, 'R' == replacing)
Scanne alle Partitionen und Devices und baue sie zu md0 sofern im Superblock 0 aufgeführt
- mdadm -Ac partitions -m 0 /dev/md0
Scanne alle Partitionen und Devices und baue sie zu md1 sofern im Superblock 1 aufgeführt
- mdadm -Ac partitions -m 1 /dev/md1
Konfiguration updaten
- mdadm -Ds > /etc/mdadm.conf
Superblock löschen
- mdadm --zero-superblock /dev/vda8
Partition anschalten
- mdadm --run /dev/sd11
Partition schreibbar setzen
- mdadm --readwrite /dev/sd11
Synchronisationsgeschwindigkeit anzeigen
- cat /proc/sys/dev/raid/speed_limit_max
200000 cat /proc/sys/dev/raid/speed_limit_min 1000
erhöhen
echo 50000 > /proc/sys/dev/raid/speed_limit_min
Raid 5 vergrössern
Erstellen des RAID 5 Arrays
- mdadm -C /dev/md2 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
- mkdir /mnt/raid5
- mkfs.ext4 /dev/md2
- mount /dev/md2 /mnt/raid5
Hinzufügen der zusätzlichen Festplatte
- mdadm --add /dev/md2 /dev/sde1
Erweitern des RAID 5 Arrays
- mdadm --grow /dev/md2 --raid-devices=4
Überprüfen des Fortschritts der Erweiterung
- watch cat /proc/mdstat
Vergrößern des Dateisystems
- resize2fs /dev/md2
Überprüfen des neuen Speicherplatzes
- df -h /mnt/raid5
Raid 10 vergrössern
Erstellen des RAID 10 Arrays
- mdadm -C /dev/md3 -l 10 -n 4 /dev/sdb3 /dev/sdc3 /dev/sdd3 /dev/sde3
- mkdir /mnt/raid10
- mkfs.ext4 /dev/md3
- mount /dev/md3 /mnt/raid10
Hinzufügen der zusätzlichen Festplatten
- mdadm --add /dev/md3 /dev/sdb4
- mdadm --add /dev/md3 /dev/sdc4
Erweitern des RAID 10 Arrays
- mdadm --grow /dev/md3 --raid-devices=6
Überprüfen des Fortschritts der Erweiterung
- watch cat /proc/mdstat
Vergrößern des Dateisystems
- resize2fs /dev/md3
Überprüfen des neuen Speicherplatzes
- df -h /mnt/raid10