====== Beispiel Software RAID 1 ======
===== Voraussetzung =====
Laufendes Linuxsystem auf einer Festplatte, zusätzliche mindestens gleich große zweite neue Festplatte.
Zum Testen können auch zwei Partitionen auf der selben Festplatte genutzt werden.
===== Partitionierung =====
Große Partition für RAID und kleine für Swap auf der zweiten Festplatte anlegen.
Vorsichtshalber betroffene Blockdevices wipen:
wipefs -af /dev/sda4
==== RAID Partition taggen ====
parted /dev/sda set 4 raid on
fdisk -l /dev/sda | grep -i raid
gibt aus:
/dev/sda4 63500288 126414847 31457280 fd Linux raid autodetect
bzw.
/dev/sda4 851968 30212095 29360128 14G Linux RAID
===== Pakete installieren =====
=== Debian (ab 9) ====
apt install mdadm
Autoerkennung auf ''none'' stellen.
=== CentOS (8) ====
dnf install mdadm
===== RAID 1 anlegen =====
((falls die Blockdevices zuvor schon verwendet wurden sicherheitshalber:
mdadm --zero-superblock /dev/sda2
mdadm --zero-superblock /dev/sda4
))
mdadm --create /dev/md0 --level=1 --raid-devices=2 --assume-clean /dev/sda2 /dev/sda4
watch cat /proc/mdstat
mkfs.ext4 /dev/md0
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
cp -a /usr/share/. /mnt/md0
====== Ausfall einer Platte simulieren ======
===== Platte entfernen =====
mdadm /dev/md0 --fail /dev/sda2
cat /proc/mdstat
mdadm /dev/md0 --remove /dev/sda2
-> Ergebnis:
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --query --examine /dev/sda2
===== Wiederherstellen =====
mdadm /dev/md0 --add /dev/sda2
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 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/vdd1
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:
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/sda3
cat /proc/mdstat
mdadm /dev/md0 --replace /dev/sda2
watch cat /proc/mdstat
[[#wiederherstellen_beschleunigen|Beschleunigen s.o.]]
====== 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 der selben 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