Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
lpi2:raid [2019/07/02 13:41] ingo_wichmann [Vorraussetzung] |
lpi2:raid [2025/09/27 06:42] (aktuell) ingo_wichmann |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Einfaches Beispiel Software RAID 1 ====== | + | ====== Beispiel Software RAID 1 ====== |
===== Voraussetzung ===== | ===== Voraussetzung ===== | ||
- | Laufendes Linuxsystem auf einer Festplatte, zusätzliche mindestens gleich große zweite neue Festplatte. | + | 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 Partitionen auf der selben Festplatte genutzt werden. | + | |
+ | Zum Testen können auch zwei bzw. drei gleich große Partitionen auf derselben Festplatte genutzt werden. | ||
===== Partitionierung ===== | ===== Partitionierung ===== | ||
- | Große Partition für RAID und kleine für Swap auf der zweiten Festplatte anlegen. | + | Partitionstabelle mit einer Partition [[admin_grundlagen:partitionierung|anlegen]] |
- | ==== RAID Partition taggen ==== | + | Vorsichtshalber betroffene Blockdevices wipen: |
- | parted /dev/sda set 4 raid on | + | wipefs -af /dev/sdb |
- | fdisk -l /dev/sda | grep -i raid | + | ==== RAID Partitionen taggen ==== |
- | <file> | + | Bevorzugt mit ''gdisk'', hier vereinfacht mit ''parted'': |
- | /dev/sda4 63500288 126414847 31457280 fd Linux raid autodetect | + | 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: | ||
+ | <file txt GPT Partitionstabelle> | ||
+ | /dev/sdb1 2048 3907028991 3907026944 1.8T Linux RAID | ||
+ | … | ||
+ | /dev/sdc1 2048 3907028991 3907026944 1.8T Linux RAID | ||
</file> | </file> | ||
===== Pakete installieren ===== | ===== Pakete installieren ===== | ||
- | === Debian (ab 7) ==== | + | === Debian (ab 9) ==== |
- | apt-get install mdadm | + | apt install mdadm |
Autoerkennung auf ''none'' stellen. | Autoerkennung auf ''none'' stellen. | ||
+ | === CentOS (ab 8) ==== | ||
+ | dnf install mdadm | ||
===== RAID 1 anlegen ===== | ===== RAID 1 anlegen ===== | ||
- | ((falls die Blockdevices zuvor schon verwendet wurden sicherheitshalber: | + | ((falls die Blockdevices zuvor schon verwendet wurden, sicherheitshalber: |
- | mdadm --zero-superblock /dev/sda2 | + | mdadm --zero-superblock /dev/sdb1 |
- | mdadm --zero-superblock /dev/sda4 | + | mdadm --zero-superblock /dev/sdc1 |
)) | )) | ||
- | mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sda4 | + | mdadm --create /dev/md0 --level=1 --raid-devices=2 --assume-clean /dev/sdb1 /dev/sdc1 |
watch cat /proc/mdstat | watch cat /proc/mdstat | ||
- | mkfs.ext4 /dev/md0 | + | mkfs.ext4 /dev/md0 |
- | mkdir /mnt/md0 | + | (( alternativ: |
- | mount /dev/md0 /mnt/md0 | + | mkfs.xfs /dev/md0 |
+ | )) | ||
+ | mount -m /dev/md0 /mnt/md0 | ||
+ | cp -a /usr/share/. /mnt/md0 | ||
====== Ausfall einer Platte simulieren ====== | ====== Ausfall einer Platte simulieren ====== | ||
- | mdadm /dev/md0 --fail /dev/sda2 | + | ===== Platte entfernen ===== |
+ | mdadm /dev/md0 --fail /dev/sdb1 | ||
cat /proc/mdstat | cat /proc/mdstat | ||
- | mdadm /dev/md0 --remove /dev/sda2 | + | mdadm /dev/md0 --remove /dev/sdb1 |
+ | -> Ergebnis: | ||
cat /proc/mdstat | cat /proc/mdstat | ||
- | Wiederherstellen: | + | mdadm --detail /dev/md0 |
- | mdadm /dev/md0 --add /dev/vdb1 | + | 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 | 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 zu RAID 5 erweitern ====== | ||
RAID 1 in RAID 5 konvertieren: | RAID 1 in RAID 5 konvertieren: | ||
mdadm --grow /dev/md0 --level=5 | mdadm --grow /dev/md0 --level=5 | ||
mdadm --detail /dev/md0 | mdadm --detail /dev/md0 | ||
- | Platte als Spare hinzufügen: | + | Platte hinzufügen: |
- | mdadm /dev/md0 --add /dev/vdd1 | + | mdadm /dev/md0 --add /dev/sdd1 |
mdadm --detail /dev/md0 | mdadm --detail /dev/md0 | ||
+ | -> ''Raid Level : raid5'' | ||
+ | |||
+ | -> ''Active Devices : 2'' | ||
+ | |||
Platte aktivieren: | Platte aktivieren: | ||
mdadm --grow /dev/md0 --raid-devices=3 | mdadm --grow /dev/md0 --raid-devices=3 | ||
+ | mdadm --detail /dev/md0 | ||
+ | -> ''Active Devices : 3'' | ||
watch cat /proc/mdstat | watch cat /proc/mdstat | ||
- | Dateisystem erweitern: | + | Dateisystem erweitern: (( bei XFS: |
+ | xfs_growfs /dev/md0 | ||
+ | )) | ||
resize2fs /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 ====== | ||
+ | |||
+ | ++++ Bestehendes System auf Software RAID 1 migrieren | | ||
===== Voraussetzung ===== | ===== Voraussetzung ===== | ||
Laufendes Linuxsystem auf einer Festplatte, zusätzliche mindestens gleich große zweite neue Festplatte. | 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. | + | Zum Testen können auch zwei Partitionen auf derselben Festplatte genutzt werden. |
===== Partitionierung ===== | ===== Partitionierung ===== | ||
Zeile 114: | Zeile 178: | ||
mdadm --manage --add /dev/md/0 /dev/sda2 | mdadm --manage --add /dev/md/0 /dev/sda2 | ||
watch cat /proc/mdstat | watch cat /proc/mdstat | ||
+ | ++++ | ||
====== Doku ====== | ====== Doku ====== | ||
- | http://www.thomas-krenn.com/de/wiki/Linux_Software_RAID | + | * 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 | ||