[Eisfair] E1: Partition im Raid-Verbund verkleinern
Thomas Zweifel
t2fel at gmx.net
Fr Mai 13 20:34:25 CEST 2016
Hallo Rolf
Am 13.05.2016 um 16:31 schrieb Rolf Bensch:
> Wie mache ich das am besten?
>
> fstab:
> /dev/md0 /data ext4 defaults 0 0
>
> ibs-server # fdisk -l
> Disk /dev/sdc: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
> Device Boot Start End Sectors Size Id Type
> /dev/sdc1 2048 1953525167 1953523120 931.5G fd Linux raid
>
> Disk /dev/sdd: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
> /dev/sdd1 2048 1953525167 1953523120 931.5G fd Linux raid
>
> # df /dev/md0
> Filesystem 1K-blocks Used Available Use% Mounted on
> /dev/md0 961433544 142717184 769878288 16% /data
>
> # tune2fs -l /dev/md0 | grep "Block size"
> Block size: 4096
Damit hätten wir alle Daten, die wir benötigen.
Als erstes verkleinern wir das Dateisystem.
Da verkleinern nur Offline geht, müssen wir es aushängen. Dazu stoppst
Du alle Dienste welche auf md0 zugreifen, danach:
umount /data
und überprüfst es mit
e2fsck -f -C0 /dev/md0
Da etwa 140GiB belegt sind, verkleinern wir das Dateisystem auf 190GiB,
das Raid anschliessend auf 200GiB, der resysnc vom Raid wird dadurch
deutlich schneller erledigt sein.
resize2fs will die Grössenangabe in blöcken haben, also teilen wir die
190GB durch die Blockgrösse vom Dateisystem (4k)
--> 49807360 blöcke
resize2fs -p /dev/md0 49807360
Das dauert ca. 30-90min, je nachdem wie viel Daten umgelagert werden müssen.
Anschliessend den fsck nochmal drüber lassen:
e2fsck -f -C0 /dev/md0
Von hier an kann das Dateisystem wieder eingehängt werden, die
restlichen Schritte können während dem normalen Betrieb ausgeführt werden:
mount /data
und gegebenenfalls gestoppte Dienste wieder aktivieren.
Nun geht es ans verkleinern des Raids und neu partitionieren.
Zuerst schalten wir eventuell aktivierte bitmaps aus:
mdadm -G --bitmap=none /dev/md0
und verkleinern das Raid auf 200GiB
mdadm -G -z200G /dev/md0
Die folgenden Schritte führst Du nacheinander mit beiden Platten aus,
zuerst sdc danach für sdd:
Zuerst entfernen wir die Redundanz und löschen den Superblock:
mdadm --fail /dev/md0 /dev/sdc1
mdadm --remove /dev/md0 /dev/sdc1
mdadm --zero-superblock /dev/sdc1
den Erfolg kannst du mit:
cat /proc/mdstat
überprüfen.
Nun partitionieren wir die Platte:
fdisk /dev/sdc
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-160836479, default 2048): 2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-160836479, default
160836479): 160830000
Created a new partition 1 of type 'Linux' and of size 76.7 GiB.
Command (m for help): t
Selected partition 1
Partition type (type L to list all types): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Dies sind die Daten der 80GB Testplatte, Du wählst einen für die TB
Platte passenden Endsektor z.B. 1953520000 womit gut 2MB frei bleiben.
Mit:
cat /proc/partitions
überprüfen wir, dass die Partitionstabelle aktualisiert wurde.
Beim ersten Durchlauf sollte sdc1 etwas kleiner als sdd1 sein, beim
zweiten Durchlauf sind die Partitionen dann gleich gross.
Nun synchronisieren wir die angepasste Partition wider mit dem Raid
mdadm --add /dev/md0 /dev/sdc1
Der resync dauert etwa 45min. Den aktuellen fortschritt kannst Du dir mit
watch cat /proc/mdstat
anzeigen lassen. (CTRL-C/STRG-C zum beenden)
Jetzt ist die Zweite Platte an der Reihe, wiederhole das Ganze mit sdd.
So, nachdem die Partitionen nun ihre Zielgrösse haben und das
verkleinerte Raid synchronisiert ist, können wir das Raid und das
Dateisystem wieder vergrössern.
mdadm -G -zmax /dev/md0
vergrössert das Raid auf die ganze Partition, und
resize2fs -p /dev/md0
vergrössert das Dateisystem auf das ganze Raid.
Nachdem der resync vom restlichen Platz (ca. 700GiB) beendet ist, kannst
Du die bitmaps wieder einschalten:
mdadm -G --bitmap=internal /dev/md0
Damit wäre die Verkleinerung des Raids abgeschlossen.
Gruss Thomas
Mehr Informationen über die Mailingliste Eisfair