Menü Schließen

Debian – Softwareraid – Raid6 mit mdadm vergrößern

Unix Shell

System ist ein Debian Wheezy. Ziel soll es sein das Raid für Root (md0), SWAP (md1) und Datenspeicher (md2) zu vergrößern. Das Dateisystem ist EXT4 bzw. XFS (md2).

Hardware

Seagate ST3000DM001 mit 3TB Größe.

Status Quo

cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md2 : active raid6 sda4[0] sdf4[5] sde4[4] sdd4[3] sdc4[2] sdb4[1]
11700619264 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]

md1 : active (auto-read-only) raid6 sda3[0] sdf3[5] sde3[4] sdd3[3] sdc3[2] sdb3[1]
7804928 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]

md0 : active raid6 sda2[0] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1]
11708416 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]

unused devices: <none>

Detailierter Status MD0


mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Sep 18 20:56:39 2013
Raid Level : raid6
Array Size : 11708416 (11.17 GiB 11.99 GB)
Used Dev Size : 2927104 (2.79 GiB 3.00 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent

Update Time : Sat Apr 26 23:33:19 2014
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : node01:0&amp;nbsp; (local to host node01)
UUID : 2bd8ce30:0a6ac7ea:d695d7f2:33a58e50
Events : 27

Detail MD1


mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Wed Sep 18 20:57:00 2013
Raid Level : raid6
Array Size : 7804928 (7.44 GiB 7.99 GB)
Used Dev Size : 1951232 (1905.82 MiB 1998.06 MB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent

Update Time : Tue Dec 24 22:55:03 2013
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : node01:1&amp;nbsp; (local to host node01)
UUID : 966dfd87:f2d195b2:f9b1dd15:0a6073e9
Events : 22

Detail MD2


mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Wed Sep 18 20:57:17 2013
Raid Level : raid6
Array Size : 11700619264 (11158.58 GiB 11981.43 GB)
Used Dev Size : 2925154816 (2789.65 GiB 2995.36 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent

Update Time : Sat Apr 26 23:13:25 2014
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : node01:2&amp;nbsp; (local to host node01)
UUID : 94f3531e:20b308d6:aa1db813:2d37c71d
Events : 360

Formatierung von SDA als Beispiel:

parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) print
Model: ATA ST3000DM001-9YN1 (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name    Flags
1      1049kB  99,6MB  98,6MB               bios    bios_grub
2      99,6MB  3100MB  3000MB               root    raid
3      3100MB  5099MB  2000MB               swap    raid
4      5099MB  3001GB  2995GB               node01  raid

Mit parted die neuen Partitionen anlegen

parted /dev/sdg
GNU Parted 2.3
Using /dev/sdg
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel gpt
(parted) unit MB

1. Partition für Grup Bios

(parted) mkpart primary 1049kB 99,6MB
(parted) set 1 bios_grub on
(parted) name 1 bios

2. Partition für Root

(parted) mkpart primary 99,6MB 3100MB
(parted) set 2 raid on
(parted) name 2 root

3. Partition für SWAP

(parted) mkpart primary 3100MB 5099MB
(parted) set 3 raid on
(parted) name 3 swap

4. Partition für die Daten

(parted) mkpart primary 5099MB 3001GB
(parted) set 4 raid on
(parted) name 4 node01

ODER mittels sgdisk

# sgdisk --replicate=/dev/sdg /dev/sda (kurz sgdisk -R/dev/target /dev/source) The operation has completed successfully. Nun noch eine einmalige Datenträger-ID = GUID zuweisen

sgdisk -G /dev/sdg
The operation has completed successfully.

Kontrolle mittels: sgdisk -p /dev/sdg

Disk /dev/sdg: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 08AE7727-8FD8-410E-BA0A-26DB608F5056
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2925 sectors (1.4 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
1            2048          194559   94.0 MiB    EF02  bios
2          194560         6053887   2.8 GiB     FD00  root
3         6053888         9959423   1.9 GiB     FD00  swap
4         9959424      5860532223   2.7 TiB     FD00  node01

Im übrigen muss für sgdisk das Paket gdisk, was für MBR Datenträger ist, installiert werden:
aptitude install gdisk (hier ist sgdisk enthalten)

Kontrolle

print
Model: ATA ST3000DM001-1CH1 (scsi)
Disk /dev/sdg: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name    Flags
1      1049kB  99,6MB  98,6MB               bios    bios_grub
2      99,6MB  3100MB  3000MB               root    raid
3      3100MB  5099MB  2000MB               swap    raid
4      5099MB  3001GB  2995GB               node01  raid

(parted) quit
Information: You may need to update /etc/fstab.

Hinzufügen der Partitionen zu den Raids

# mdadm –add /dev/md0 /dev/sdg2
mdadm: added /dev/sdg2
# mdadm –add /dev/md1 /dev/sdg3
mdadm: added /dev/sdg3
# mdadm –add /dev/md2 /dev/sdg4
mdadm: added /dev/sdg4

Kontrolle ob die Partitionen hinzugefügt wurden

# mdadm –detail /dev/md0
6       8       98        –      spare   /dev/sdg2

# mdadm –detail /dev/md1
6       8       99        –      spare   /dev/sdg3

# mdadm –detail /dev/md2
6       8      100        –      spare   /dev/sdg4

Erweitern der Raids

Während der Vergrößerung sollte das Raid nicht eingebunden sein, es geht manchmal nicht anders und dann klappt es auch mit der Onlinevergrößerung.

# mdadm -v –grow –raid-devices=7 /dev/md0 –backup-file=/mnt/usb/md0.bak
mdadm: Need to backup 10240K of critical section..
# mdadm -v –grow –raid-devices=7 /dev/md1 –backup-file=/mnt/usb/md0.bak
mdadm: Need to backup 10240K of critical section..
# mdadm -v –grow –raid-devices=7 /dev/md2 –backup-file=/mnt/usb/md0.bak
mdadm: Need to backup 10240K of critical section..

Die Option  -v dient der erweiterten Ausgabe, während raid-devices=7 die neue Anzahl der Laufwerke angibt. mit der zusätzlichen Option (muss nicht aber wird empfohlen) –backup-file werden kritische Bereiche (wenige MBs) auf ein anderes Medium gesichert. Sollte grow fehlschlagen (Absturz z.B.) kann die Erweiterung später fortgesetzt werden:

# mdadm /dev/md0 –continue –backup-file=/mnt/usb/md0.bak

Beschleunigen des Resync und Rebuilds

Es gibt diverse Möglichkeiten wie ein Resync oder Rebuild beschleunigt werden kann. Hier mal ein Beitrag dazu: MADM Raid Resync oder Rebuild beschleunigen

Kontrolle, Warten und Kontrolle

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md2 : active raid6 sdg4[6] sda4[0] sdf4[5] sde4[4] sdd4[3] sdc4[2] sdb4[1]
11700619264 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
resync=DELAYED

md1 : active raid6 sdg3[6] sda3[0] sdf3[5] sde3[4] sdd3[3] sdc3[2] sdb3[1]
7804928 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
resync=DELAYED

md0 : active raid6 sdg2[6] sda2[0] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1]
11708416 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]
[============>……..]  reshape = 60.8% (1781760/2927104) finish=0.7min speed=26299K/sec

unused devices: <none>

Finish – 7 Disk hinzugefügt

cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md2 : active raid6 sdg4[6] sda4[0] sdf4[5] sde4[4] sdd4[3] sdc4[2] sdb4[1]
14625774080 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]

md1 : active raid6 sdg3[6] sda3[0] sdf3[5] sde3[4] sdd3[3] sdc3[2] sdb3[1]
9756160 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]

md0 : active raid6 sdg2[6] sda2[0] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1]
14635520 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]

Raid’s mit Dateisystem ext4 vergrößern
Aktuell können wir noch die alte Größe der Raids sehen “du -h” . Daher müssen sie als nächstes vergrößert werden. Normalerweise sollte man sie aushängen:

# umount /mnt/raid

Danach dann überprüfen:

fsck.ext4 -f /dev/md0
fsck.ext4 -f /dev/md1

Da md0 und md1 jedoch System und Swap sind, kann ich sie nicht einfach ausshängen sodass sie Online vergrößert werden müssen:

# resize2fs /dev/md0
resize2fs 1.42.5 (29-Jul-2012)
Das Dateisystem auf /dev/md0 ist auf / eingehängt; Online-Grössenveränderung nötig
old_desc_blocks = 1, new_desc_blocks = 1
Eine Online-Grössenänderung von /dev/md0 auf 3658880 (4k) Blöcke wird durchgeführt.
Das Dateisystem auf /dev/md0 ist nun 3658880 Blöcke groß.

# resize2fs /dev/md2
resize2fs 1.42.5 (29-Jul-2012)
Das Dateisystem auf /dev/md2 ist auf /media/node01 eingehängt; Online-Grössenveränderung nötig
old_desc_blocks = 698, new_desc_blocks = 872
Eine Online-Grössenänderung von /dev/md2 auf 3656443520 (4k) Blöcke wird durchgeführt.
Das Dateisystem auf /dev/md2 ist nun 3656443520 Blöcke groß.

Raid MD2 mit Dateisystem XFS vergrößern

Da das Raid md2 zuletzt von ext4 auf xfs umgestellt wurde, muss dieses nun auch vergrößert werden. Dies ist mit nachfolgendem Befehl recht einfach, zuvor muss das Paket xfsprogs (enthält: xfs_admin, xfs_copy, xfs_freeze, xfs_info, xfs_mdrestore, xfs_ncheck, xfs_rtcp, xfs_bmap, xfs_db, xfs_fsr, xfs_io, xfs_metadump, xfs_quota, xfs_check, xfs_estimate, xfs_growfs, xfs_logprint, xfs_mkfile, xfs_repair) installiert und das Device jedoch wieder gemountet werden:

# mount /dev/md2 /media/node01
# xfs_growfs /media/node01/
Metadaten =/dev/md2               isize=256    agcount=32, agsize=45598848 blks
=                       sectsz=4096  attr=2
Daten     =                       bsize=4096   Blöcke=1459159296, imaxpct=5
=                       sunit=128    swidth=256 blks
Benennung =Version 2              bsize=4096   ascii-ci=0
Protokoll =Intern                 bsize=4096   Blöcke=521728, Version=2
=                       sectsz=4096  sunit=1 blks, lazy-count=1
Echtzeit  =keine                  extsz=4096   Blöcke=0, rtextents=0
Datenblöcke von 1459159296 auf 2188738944 geändert.

MDADM.CONF prüfen und ggf. die UUID’s erneuern

Die /etc/mdadm/mdadm.conf sollte eigentlich die selben UUID’s wie vorher anzeigen. Sollte dies nicht so sein, können die neuen Werte recht einfach gesetzt werden:

neu anlegen der Inahlte (alten werden gelöscht!)
# mdadm –examine –scan –config=mdadm.conf >> /etc/mdadm/mdadm.conf
oder mittels
# mdadm –detail –scan >> /etc/mdadm/mdadm.conf
Hier müssen dann aber die alte Zeile auskommentiere oder gelöscht werden.

Falls beim Booten einen Fehler der metadate=00.90 angezeigt wird, muss dieser Wert in der mdadm.conf auf 0.90 abgeändert werden.

Grub in den Bootloader der Disk installieren

grub-install /dev/sdg
Installation finished. No error reported.

Ende

Das wars alle Punkte wurden kontrolliert, Einhängepunkte erneut hergestellt, das System kann neugestartet werden.

Info

Das Hinzufügen der 7. Disk hat mehr als 24h gedauert. Da es nachts abgeschlossen war waren es ca. 26-30h, ohne der Tipps für die Beschleunigung. Mit der Beschleunigung dauerte es ca. halb so lange, also 13-13h.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert