====== Beispiel Software RAID 1 ======
===== Voraussetzung =====
Mindestens zwei gleich große neue Festplatten, für RAID5 mindestens drei. In der Praxis besser mindestens eine mehr.
Zum Testen können auch zwei bzw. drei gleich große Partitionen auf derselben Festplatte genutzt werden.
===== Partitionierung =====
Partitionstabelle mit einer Partition [[admin_grundlagen:partitionierung|anlegen]]
Vorsichtshalber betroffene Blockdevices wipen:
wipefs -af /dev/sdb
==== RAID Partitionen taggen ====
Bevorzugt mit ''gdisk'', hier vereinfacht mit ''parted'':
parted /dev/sdb set 1 raid on
parted /dev/sdc set 1 raid on
…
fdisk -l /dev/sd{b,c} | grep -i raid
-> gibt aus:
/dev/sdb1 2048 3907028991 3907026944 1.8T Linux RAID
…
/dev/sdc1 2048 3907028991 3907026944 1.8T Linux RAID
===== Pakete installieren =====
=== Debian (ab 9) ====
apt install mdadm
Autoerkennung auf ''none'' stellen.
=== CentOS (ab 8) ====
dnf install mdadm
===== RAID 1 anlegen =====
((falls die Blockdevices zuvor schon verwendet wurden, sicherheitshalber:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdc1
))
mdadm --create /dev/md0 --level=1 --raid-devices=2 --assume-clean /dev/sdb1 /dev/sdc1
watch cat /proc/mdstat
mkfs.ext4 /dev/md0
(( alternativ:
mkfs.xfs /dev/md0
))
mount -m /dev/md0 /mnt/md0
cp -a /usr/share/. /mnt/md0
====== Ausfall einer Platte simulieren ======
===== Platte entfernen =====
mdadm /dev/md0 --fail /dev/sdb1
cat /proc/mdstat
mdadm /dev/md0 --remove /dev/sdb1
-> Ergebnis:
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --query --examine /dev/sdb1
===== Wiederherstellen =====
mdadm /dev/md0 --add /dev/sdb1
cat /proc/mdstat
==== Wiederherstellen beschleunigen ====
Resync läuft mit angezogener Handbremse, um dem normalen I/O nicht im Weg zu sein. Aktuelle Werte auslesen:
sysctl dev.raid.speed_limit_min
sysctl dev.raid.speed_limit_max
Beschleunigen mit:
# 100000 bedeutet: mindestens mit 100.000 K/sec syncen, ohne Rücksicht
sysctl dev.raid.speed_limit_min=100000
# Niemals mit mehr als 200 MB/sec syncen
sysctl dev.raid.speed_limit_max=200000
-> Resync sollte jetzt schneller laufen:
watch cat /proc/mdstat
====== RAID entfernen =====
umount /mnt/md0
mdadm --stop /dev/md0
cat /proc/mdstat
====== RAID 1 aus einzelner Platte zusammensetzen =====
mdadm --assemble --force /dev/md0 /dev/sdb1
watch cat /proc/mdstat
Zweite Platte wieder hinzufügen:
mdadm /dev/md0 --add /dev/sdc1
Wieder mounten:
mount /dev/md0 /mnt/md0
====== RAID 1 zu RAID 5 erweitern ======
RAID 1 in RAID 5 konvertieren:
mdadm --grow /dev/md0 --level=5
mdadm --detail /dev/md0
Platte hinzufügen:
mdadm /dev/md0 --add /dev/sdd1
mdadm --detail /dev/md0
-> ''Raid Level : raid5''
-> ''Active Devices : 2''
Platte aktivieren:
mdadm --grow /dev/md0 --raid-devices=3
mdadm --detail /dev/md0
-> ''Active Devices : 3''
watch cat /proc/mdstat
Dateisystem erweitern: (( bei XFS:
xfs_growfs /dev/md0
))
resize2fs /dev/md0
Reboot/Wiederherstellung nach Crash beschleunigen: (zu Nachteilen siehe: [[https://raid.wiki.kernel.org/index.php/Write-intent_bitmap]])
mdadm --grow --bitmap=internal /dev/md0
====== Platte ersetzen, bevor sie ausgefallen ist ======
mdadm /dev/md0 --add-spare /dev/sdb1
cat /proc/mdstat
mdadm /dev/md0 --replace /dev/sdb1
watch cat /proc/mdstat
[[#wiederherstellen_beschleunigen|Beschleunigen s.o.]]
====== Bestehendes System auf Software RAID 1 migrieren ======
++++ Bestehendes System auf Software RAID 1 migrieren |
===== Voraussetzung =====
Laufendes Linuxsystem auf einer Festplatte, zusätzliche mindestens gleich große zweite neue Festplatte.
Zum Testen können auch zwei Partitionen auf derselben Festplatte genutzt werden.
===== Partitionierung =====
Große Partition für RAID und kleine für Swap auf der zweiten Festplatte anlegen.
==== RAID Partition taggen ====
parted /dev/sda set 4 raid on
fdisk -l | grep 'Linux raid autodetect'
/dev/sda4 63500288 126414847 31457280 fd Linux raid autodetect
===== Pakete installieren =====
=== Debian 7 ====
apt-get install mdadm
Autoerkennung auf ''ALL'' stellen.
===== RAID 1 anlegen =====
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sda4
mkfs.ext4 /dev/md0
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
mkdir /tmp/system
mount --bind / /tmp/system
mount --bind /boot /tmp/system/boot/
cp -a /tmp/system/. /mnt/md0
(( alternativ:
rsync -a --del /tmp/system/ /mnt/md0
))
umount /tmp/system
cd /mnt/md0
mount --rbind /dev dev
mount --bind /proc proc
mount --bind /sys sys
chroot .
mdadm --incremental --rebuild-map
grub-mkdevicemap -n
update-grub
update-initramfs -u
logout
reboot
mdadm --manage --add /dev/md/0 /dev/sda2
watch cat /proc/mdstat
++++
====== Doku ======
* https://www.thomas-krenn.com/de/wiki/Unterschiede_zwischen_Hardware_RAID_und_Linux_Software_RAID
* http://www.thomas-krenn.com/de/wiki/Linux_Software_RAID