====== Raid mit mdadm ====== * Raid 5 erstellen * Raid 5 erweitern * Raid 5 auf Raid6 mit zwei zusätzlichen Platten konvertieren vor Kernel 2.6.30 * Raid 5 auf Raid6 mit einer zusätzlichen Platten konvertieren ab Kernel 2.6.30 * Defekte Platte im Raid ersetzten * Löschen eines Raids ===== Raid 5 erstellen ===== ==== 1.) MDADM installieren ==== apt-get install mdadm ---- ==== 2.) Platten richtig partitionieren mit fdisk oder cfdisk ==== Man benötigt nicht umbedingt eine Partion. Es ist jedoch möglich eine zu machen. cfdisk ---- ==== 3.) Raid 5 erstellen: ==== mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 Dies wird eine Zeit dauern. Man kann dies aber auch beschleunigen mit echo 100000 >/proc/sys/dev/raid/speed_limit_min ---- ==== 4.) Abfrage ob das Raid schon fertig erstellt wurde ==== mdadm -D /dev/md0 cat /proc/mdstat ---- ==== 5.) Formatieren des Raids ==== mkfs.ext4 /dev/md0 ---- ==== 6.) Erstellen einer mdadm.conf ==== mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf ---- ==== 7.) Mountpoint erstellen ==== mkdir -p /mnt/raid ---- ==== 8.) Fstab editieren ==== /dev/md0 /mnt/raid ext3 defaults 1 2 ---- ==== 9.) Mounten ==== mount /dev/md0 /mnt/raid oder über fstab mount -a ---- ===== Raid5 erweitern ===== WICHTIG! Bei einem hinzufügen einer weitern Platte in einem Raid5 das verschlüsselt ist sollte man bevor man mit mdadm eine weitere Platte hinzufügt das Raid natürlich unmounten und mit cryptsetup auch schließen. Beim vergrößern vom Filesystem muss man das Device dann mit cryptsetup wieder öffnen. ==== 1. Neue Platte partitionieren (Linux raid autodetect code "fd") ==== cfdisk ---- ==== 2. Dateisystem auf dem RAID unmounten ==== umount /dev/mdX ---- ==== 3. Neue Platte dem RAID hinzufügen (als Spare): ==== mdadm --add /dev/md0 /dev/sdb1 ---- ==== 4. Nachdem die Platte als Spare hinzugefügt wurde, kann das RAID um die neue Partition erweitert werden ==== mdadm --grow /dev/md0 -n 5 Wenn es sich hier große Partitionen handelt (ab 500Gb) würde ich umbedingt sofort ein mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf empfehlen denn im Falle eines Stromausfalles würde es hier zu einem Verlust ALLER Daten kommen. ---- ==== 5. Um die Geschwindigkeit des Reshape zu erhöhen (theoretisch 100 MB/s), folgendes ausführen ==== echo 100000 >/proc/sys/dev/raid/speed_limit_min ---- ==== 6. Nach dem Reshape kann das Dateisystem vergrößert werden, um den neuen Platz zu nutzen ==== e2fsck -f /dev/md0 resize2fs /dev/md0 e2fsck -f /dev/md0 ---- ==== 7. WICHTIG: Jetzt noch die Änderungen am RAID in die mdadm.conf eintragen, damit sie beim Neustart des Systems erhalten bleiben ==== mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf Ansonsten wird versucht das RAID mit einer Platte weniger zu starten, ein Rebuild beginnt und die Daten sind verloren. Nun das Dateisystem wie gewohnt einhängen ---- ===== Raid5 auf Raid6 konfertieren mit zwei zusätzlichen Platten vor Kernel 2.6.30 ===== Dieser Weg sollte nur angewendet werden wenn es umbedingt sein muss. Ab Kernel 2.6.30 geht dies um einiges leichter. \\ Es handelt sich um ein Raid5 mit drei Platten (SDA1, SDB1, SDC1) \\ Dieses soll auf ein Raid6 mit zwei zusätzlichen Platten (SDD1, SDE1) konvertiert werden. ==== 1.) Eine Platte aus dem Raid 5 lösen ==== mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1 ---- ==== 2.) Raid 6 erstellen mit der einen Platte vom Raid 5 plus zwei neuen. ==== Es wird eine Warnung kommen das sdc1 ein Teil vom Raid5 ist aber das wissen wir und können wir ignorieren. mdadm --create /dev/md1 --level=6 --raid-devices=5 missing missing /dev/sdc1 /dev/sdd1 /dev/sde1 ---- ==== 3.) Das Raid 5 stoppen ==== mdadm --stop /dev/md0 ---- ==== 4.) Das Raid 6 vervollständigen ==== mdadm /dev/md1 --add /dev/sda1 /dev/sdb1 ---- ==== 5.) Auch hier sollte man natürlich die Geschwindigkeit erhöhen ==== echo 100000 >/proc/sys/dev/raid/speed_limit_min ---- ==== 6.) Anpassen der mdadm.conf WICHTIG! ==== mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf Nach einigen Stunden sollte wir dann fertig sein. ---- ===== Raid5 auf Raid6 konfertieren mit einer zusätzlichen Platten vor Kernel 2.6.30 ===== Dieser Weg ist seit Kernel 2.6.30 möglich! \\ Ich gehe hier von 4 Platten in einem Raid5 aus das auf ein Raid6 mit einer weiteren Platten konvertiert werden soll. \\ Die 4 Platten im Raid5 sind SDA1, SDB1, SDC1, SDD1 \\ Die eine Platte die für das Raid6 dazu kommt ist SDE1 ==== 1.) Unmount vom Raid-Device ==== umount /dev/md0 ---- ==== 2.) Eine Weiter Platte zu einem Raid5 hinzufügen ==== mdadm --add /dev/md0 /dev/sde1 ---- ==== 3.) Umstellung auf Raid6 erzwingen ==== echo raid6 > /sys/block/md0/md/level ---- ==== 4.) Anpassen der mdadm.conf WICHTIG! ==== mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf ---- ===== Ausfall einer defekten Platte ===== Ersetzten einer defekten Platten (Raid1/10/5/6) \\ Hier gehen wir davon aus das /dev/sdb defekt ist. ==== 1.) Defekte Festplatte aus dem Raid nehmen ==== mdadm --manage /dev/md0 --fail /dev/sdb1 mdadm /dev/md0 --remove /dev/sdb1 ---- ==== 2.) Festplatte tauschen ==== Die Festplatte die defekt ist aus dem Server ausbauen und gegen eine neue ersetzten mit dem gleichen Speicherplatz bzw. einer größeren. \\ Bei Geräten die nicht Hotplug fähig sein muss der Server runtergefahren werden. ---- ==== 3.) Neue Platte partitionieren (Funktioniert bei msdos Partions) ==== Neue Platte so partitionieren das sie zum Rest der Platten im Raid passt. \\ Es könnte sein das man dem Kernel die Platte danach neu einlesen muss. \\ sda = bestehende Platte im Raid \\ sdb = defekte, jetzt neue Platte dd if=/dev/sda of=/dev/sdb bs=512 count=1 sfdisk -d /dev/sda > /dev/sdb partprobe ---- ==== 4.) Neue Platte ins Raid hinzufügen ==== Danach werden die Daten im Raid neu synchronisiert. mdadm /dev/md0 --add /dev/sdb1 ---- ==== 5.) Anpassen der mdadm.conf (Muss nicht gemacht werden) ==== Dies ist nur nötig wenn sich die Laufwerks-benennung ändert. \\ Also wenn zB. sdb1 ausgefallen ist und gegen sdn1 ersetzt wird. \\ Es kann aber nicht schaden wenn dies einmal ausgeführt wird. mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf ---- ===== Löschen eines Raids ===== ==== 1.) Unmount ==== Entfernen des Mounts LVM usw... ==== 2.) Stoppen des Arrays ==== mdadm --stop /dev/md[X] mdadm --zero-superblock /dev/sd[X] mdadm --zero-superblock /dev/sd[Y] mdadm --zero-superblock /dev/sd[Z] ... ...