[Eisfair] Volle root-Partition E1 mit Software-Raid 5

Thomas Zweifel t2fel at gmx.net
So Jan 4 00:44:44 CET 2015


Hallo Jürgen

Am 03.01.2015 um 21:09 schrieb Jürgen Witt:
> Danke für Deine Informationen. Damit komme ich jetzt etwas weiter.
> 
> Beim Lesen Deiner Anleitung, schien mir oberflächlich halbwegs klar zu
> sein, was bei dem Ablauf passiert. Jetzt beim Probieren habe ich aber
> diverse Verständnisprobleme. So z.B. bei den zu wählenden Größen.
> 
> eis # mdadm -G --bitmap=none /dev/md4
> eis # mdadm -G -z65G /dev/md4
> mdadm: Cannot set device size for /dev/md4: No space left on device
> eis # mdadm -G -z60G /dev/md4
> mdadm: component size of /dev/md4 has been set to 62914560K
> 
> Das war jetzt trial and error, aber eigentlich will man ja um eine
> definierte Größe Änderungen vollziehen. Da es im Testsystem ein Raid-1
> aus zwei 80GB-Platte ist und ich 10GB für / definiert hatte, habe ich es
> mit einer Verkleinerung auf 65GB im ersten Versuch probiert. Das war
> aber zu viel.

Dein md4 ist ca. 15853968 blocks à 4k Blockgrösse, also rund 60.5GB
Deshalb konntest Du es nicht auf 65GB 'verkleinern'. ;-)


> Wie hätte ich das wissentschaftlicher" machen können? Bzw. wo vorher
> nachsehen oder was errechnen? Normaler Weise will man ja um eine

Das Dateisystem hast Du ja bereits auf

> The filesystem on /dev/md4 is now 3200000 (4k) blocks long.

ca. 12.2GB verkleinert, somit könntest Du das md4 auf ca. 15-20GB
verkleinern.
Die Formel ist:
---------------------------------------------------------------
Anzahl Blöcke * Blockgrösse / Anzahl Nutzplatten + etwas Zugabe
---------------------------------------------------------------

In dem Fall also: 3200000 * 4k / 1 + ca. 3GB  -->  15GB

mdadm -G -z15G /dev/md4

Bei dem Test (mit dem Raid1) hast du 1 Nutzplatte (und eine
Redundanzplatte).
Bei deinem Kunden (beim Raid5 mit 3 Platten) ist die Anzahl Nutzplatten 2.

Umso kleiner Du es an der Stelle machst, desto schneller ist der Rebuild
später durch, und das wiederholst Du beim Kunden ja drei mal.

Also 3 * 500 GB / 0.1 GB/s = 15000s --> ca. 4h
Oder 3 * 890 GB / 0.1 GB/s = 26700s --> ca. 7.4h

Kann je nach Rechner / Platten auch etwas länger dauern......


> definierte Größe (z.B. md4 soll um 10GB kleiner) reduzieren. Beim System
> des Kunden würde ich md4 auch nicht auf 500GB verkleinern wollen sondern
> um z.B. genau 10GB

Das geht leider nicht.
Wie ich in der Anleitung schon angedeutet habe - Das ist der knifflige Teil.
Den zeitlichen Aspekt sollte man ab einer gewissen Grösse durchaus mit
einbeziehen. ;-)


> OK, jetzt habe ich /dev/md4 also irgendwie stümperhaft verkleinert.
> 
> Jetzt aber weiter in Deiner Anleitung:
> 
> eis # e2fsck -f -C0 /dev/md4
> e2fsck 1.42.12 (29-Aug-2014)
> Pass 1: Checking inodes, blocks, and sizes
> Pass 2: Checking directory structure
> Pass 3: Checking directory connectivity
> Pass 4: Checking reference counts
> Pass 5: Checking group summary information
> /dev/md4: 1340/802816 files (8.0% non-contiguous), 2667859/3200000 blocks
> 
> eis # resize2fs -p /dev/md4
> resize2fs 1.42.12 (29-Aug-2014)
> Resizing the filesystem on /dev/md4 to 15728640 (4k) blocks.
> The filesystem on /dev/md4 is now 15728640 (4k) blocks long.

Da Du vorhin das md4 viel zu wenig verkleinert hast, ist das Dateisystem
nun wieder fast so gross, wie es am Anfang war. :-(


> eis # cat /proc/partitions
> major minor  #blocks  name
>    8        3   10490443 sda3
>    8        4   63448716 sda4
>    8       19   12582912 sdb3
>    8       20   61358168 sdb4
>    9        3   10482176 md3
>    9        4   59904000 md4

Das wäre OK, sdb4 ist etwas grösser als das md4.

> Mein Raid-1-Testsystem besteht aus sda und sdb. Ich habe mit den
> Größenänderungen mit sdb angefangen.
> 
> Das hier sieht aber für mich nicht OK aus:
> 
> eis # sfdisk -luM

Sieht hier auch nicht anders aus:

service02test # sfdisk -luM /dev/sde
Disk /dev/sde: 121601 cylinders, 255 heads, 63 sectors/track
sfdisk: Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units: 1MiB = 1024*1024 bytes, blocks of 1024 bytes, counting from 0
   Device Boot Start   End    MiB    #blocks   Id  System
/dev/sde1   *     1     28     28      28672   fd  Linux raid autodetect
/dev/sde2        29    540    512     524288   fd  Linux raid autodetect
/dev/sde3       541  12828  12288   12582912   fd  Linux raid autodetect
sfdisk:          end: (c,h,s) expected (1023,254,63) found (611,119,20)
/dev/sde4     12829  953869- 941041- 963625688    5  Extended
sfdisk:        start: (c,h,s) expected (1023,254,63) found (611,119,21)
sfdisk:          end: (c,h,s) expected (1023,254,63) found (769,80,63)
/dev/sde5     12830  64029  51200   52428800   fd  Linux raid autodetect
sfdisk:        start: (c,h,s) expected (1023,254,63) found (611,151,53)
sfdisk:          end: (c,h,s) expected (1023,254,63) found (994,173,11)
.....

service02test # fdisk -l /dev/sde

Disk /dev/sde: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
   Device Boot  Start         End     Blocks   Id  System
/dev/sde1   *    2048       59391      28672   fd  Linux raid autodetect
/dev/sde2       59392     1107967     524288   fd  Linux raid autodetect
/dev/sde3     1107968    26273791   12582912   fd  Linux raid autodetect
/dev/sde4    26273792  1953525167  963625688    5  Extended
/dev/sde5    26275840   131133439   52428800   fd  Linux raid autodetect
....


Nimm am besten das Tool, das Du immer zum Partitionieren verwendest.


> 
> Ich habe trotzdem einfach 'mal weiter gemacht:
> 
> for i in 1 2 3 4 ; do mdadm --add /dev/md$i /dev/sdb$i ; done
> 
> Nach einer Weile:
> 
> eis # cat /proc/mdstat
> Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5]
> [raid4] [multipath]
> md4 : active raid1 sdb4[2] sda4[1]
>       59904000 blocks super 1.2 [2/2] [UU]
> md3 : active raid1 sdb3[2] sda3[1]
>       10482176 blocks super 1.2 [2/2] [UU]
>       bitmap: 0/1 pages [0KB], 65536KB chunk
> md2 : active raid1 sdb2[2] sda2[1]
>       4150720 blocks super 1.2 [2/2] [UU]
>       bitmap: 0/1 pages [0KB], 65536KB chunk
> md1 : active raid1 sdb1[0] sda1[1]
>       55104 blocks [2/2] [UU]
>       bitmap: 0/1 pages [0KB], 65536KB chunk

Die bitmaps von md1-3 könntest Du ebenfalls noch löschen.

Mit

watch cat /proc/mdstat

kannst Du dir den laufenden Fortschritt anzeigen lassen.
(STRG + C zum beenden)

> Da ich glaube, daß ich hier einigen Mist gebaut habe (bzw. nicht alles
> verstanden habe), habe ich an dieser Stelle erst 'mal wieder abgebrochen
> und hoffe auf neuen Input. Das Thema ist viel komplexer, als ich dachte.

:-)



Gruss Thomas


Mehr Informationen über die Mailingliste Eisfair