Ich habe ursprünglich ein Software-RAID mit einem Controller erstellt, der nur 2 TB pro Festplatte adressieren konnte. Die Festplatten sind 3 TB-Festplatten. Es hat gut funktioniert, aber nur die ersten 2 TB jeder Festplatte verwendet.
Ich habe jetzt den Controller geändert, um die vollen 3 TB zu sehen. Ich möchte daher /dev/md0
auch die letzten 1 TB verwenden.
Ich habe versucht:
# mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 2147479552K
Aber wie Sie sehen können, sieht es nur die 2 TB. Wenn ich versuche, es höher zu erzwingen:
# mdadm --grow /dev/md0 --size=2147483648
mdadm: Cannot set device size for /dev/md0: No space left on device
Das System kann also irgendwie erkennen, dass die Festplatten 3 TB (in /proc/partitions
) groß sind , aber das RAID kann sie nicht als 3 TB anzeigen.
mdadm Details:
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Mar 2 15:14:46 2012
Raid Level : raid6
Array Size : 38654631936 (36863.93 GiB 39582.34 GB)
Used Dev Size : 2147479552 (2048.00 GiB 2199.02 GB)
Raid Devices : 20
Total Devices : 21
Persistence : Superblock is persistent
Update Time : Wed Apr 25 19:47:09 2012
State : active
Active Devices : 20
Working Devices : 21
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 4096K
Name : node5:1
UUID : 8603c3df:b740ba22:8c9c82fd:a18b3133
Events : 845
Number Major Minor RaidDevice State
20 65 32 0 active sync /dev/sds
1 65 64 1 active sync /dev/sdu
2 65 80 2 active sync /dev/sdv
3 65 96 3 active sync /dev/sdw
4 8 192 4 active sync /dev/sdm
5 8 32 5 active sync /dev/sdc
6 8 48 6 active sync /dev/sdd
7 8 64 7 active sync /dev/sde
8 8 80 8 active sync /dev/sdf
9 8 96 9 active sync /dev/sdg
10 8 112 10 active sync /dev/sdh
11 8 128 11 active sync /dev/sdi
12 8 144 12 active sync /dev/sdj
13 8 160 13 active sync /dev/sdk
14 8 176 14 active sync /dev/sdl
15 8 208 15 active sync /dev/sdn
16 8 224 16 active sync /dev/sdo
17 8 240 17 active sync /dev/sdp
18 65 0 18 active sync /dev/sdq
19 65 16 19 active sync /dev/sdr
21 65 48 - spare /dev/sdt
Festplattengrößen:
# cat /proc/partitions |grep 2930266584
8 48 2930266584 sdd
8 32 2930266584 sdc
8 112 2930266584 sdh
8 96 2930266584 sdg
8 80 2930266584 sdf
8 128 2930266584 sdi
8 176 2930266584 sdl
8 64 2930266584 sde
65 32 2930266584 sds
8 192 2930266584 sdm
8 144 2930266584 sdj
65 80 2930266584 sdv
8 224 2930266584 sdo
8 208 2930266584 sdn
8 160 2930266584 sdk
8 240 2930266584 sdp
65 0 2930266584 sdq
65 64 2930266584 sdu
65 16 2930266584 sdr
65 48 2930266584 sdt
65 96 2930266584 sdw
Bearbeiten:
# mdadm --version
mdadm - v3.1.4 - 31st August 2010
# uname -a
Linux lemaitre 3.2.0-0.bpo.1-amd64 #1 SMP Sat Feb 11 08:41:32 UTC 2012 x86_64 GNU/Linux
Das RAID6 verwendet die vollständigen Festplatten (dh keine Partitionen).
Heute Morgen ist das System abgestürzt. Nach einem Neustart fand das System das RAID nicht (was schrecklich war). Alle Festplatten wurden als Ersatzteile (S) angezeigt:
cat /proc/mdstat
Personalities :
md0 : inactive sdr[20](S) sds[21](S) sdq[18](S) sdp[17](S) sdo[16](S) sdn[15](S) sdl[14](S) sdk[13](S) sdj[12](S) sdi[11](S) sdh[10](S) sdg[9](S) sdf[8](S) sde[7](S) sdd[6](S) sdc[5](S) sdm[4](S) sdv[3](S) sdu[2](S) sdt[1](S)
42949652460 blocks super 1.2
Auch hier ist klar, dass mdadm
die 3 TB Größe nicht gefunden wurde.
Ich rannte mdadm --stop /dev/md0
. Der Eintrag in /etc/mdadm/mdadm.conf wurde entfernt. Ran
mdadm -A --scan --force
, wodurch das RAID online ging und neu erstellt wurde.
quelle
fdisk -l /dev/sdd
zeigt? Welches Betriebssystem benutzt du, was ist die mdadm-Version?Antworten:
Ich stöberte in / sys herum und kam der Antwort viel näher.
Das stimmt mit dem überein, was wir zuvor gesehen haben. Aber dieses:
scheint zu erklären, warum das RAID die falsche Größe sieht: Die meisten Laufwerke werden als 2 TB angezeigt, während die 2, die ersetzt wurden, als 3 TB angezeigt werden. Alle Laufwerke sind das gleiche Modell. Lassen Sie uns also sehen, ob wir die wahrgenommene Größe ändern können:
Voila. Component_size ist jedoch immer noch klein:
Vielleicht kann es von mdadm geändert werden:
Dies
mdadm
blockiert leider und der nachfolgende Zugriff auf / dev / md0 wird blockiert. Und so ist der Zugriff auf component_size:Saugt. Aber das Gute daran ist, dass im Syslog steht:
Das Dateisystem unter / dev / md0 lief noch.
Nach einem Neustart musste ich 'mdadm --grow / dev / md0 --size = max' erneut ausführen. Warten Sie dann, bis der Vorgang
resync
abgeschlossen ist. Wieder wurde der Zugriff auf / dev / md0 blockiert. Also noch ein Neustart, gefolgt vonxfs_growfs /dev/md0
und dann war die Größenänderung abgeschlossen.quelle
Ich denke, während der Erstellung wurde die Größe des Geräts irgendwo in den Metadaten registriert. Durch Ändern des Controllers werden die Metadaten nicht geändert.
Entfernen Sie das Ersatzlaufwerk aus dem MD und fügen Sie es erneut als neues Laufwerk zum RAID-Set hinzu. Sie müssen wahrscheinlich die Metadaten entfernen (überprüfen Sie die Manpage auf --zero-superblock oder löschen Sie die gesamte Festplatte). Wenn dies für eine einzelne Festplatte funktioniert, wiederholen Sie den Vorgang auch für alle verbleibenden Laufwerke. Dann mach endlich das --wachsen.
Entfernen Sie keine zusätzlichen Festplatten, bis die Synchronisierung abgeschlossen ist !!
quelle
fail
ein Laufwerk, dannremove
es, dannzero-superblock
es, um die Metadaten zu entfernen. Da Ihr RAID-Set verwendet wird, können Sie es entweder als Ersatz hinzufügen. Dies bedeutet, dass es erst synchronisiert wird, wenn ein anderes Laufwerk ausfällt (dies ist normal), aber es funktioniert nur für ein einzelnes Laufwerk ODER für Sieadd
und es erfordert eine Synchronisierung. Ich weiß, dass es ewig dauert. Oder Sie akzeptieren die Tatsache, dass Sie nicht den gesamten verfügbaren Speicher hinzufügen können. Einer der Vorteile der Verwendung einer Partitionstabelle, die Sie nicht hatten. Es ist nicht schlecht, keine Partitionstabelle zu verwenden, aber in diesem speziellen Fall hätte es Ihnen geholfen.