Hi,
ich benötige Hilfe zum wiederherstellen der Superblöcke eines Ext4 Dateisystems. Google kommt damit an seine Grenzen. Folgendes ist passiert:
- 2x HP-N45L mit Debian 7 (openmediavault) mit 3.16 BPO-Kernel - einer davon mit 4x 4TB RAID5 (/dev/md0) - neues RAID5 im zweiten Server mit 3x 10TB (mdadm) gebaut - altes /dev/md0 read-only remounted - altes /dev/md0 mit dd über ssh auf das neue md0 kopiert (Erhalt aller UUID usw.) - das dd lief mehrere Tage! :-/
Bis hier her alles Perfekt.
- e2fschk (1.42x?) ok - resize2fs (1.42x?) /dev/md0 schlägt fehl, da das md > 16TB ist - also erst mal resize2fs /dev/md0 16000G
auch noch ok.
- da "noch Luft war": resize2fs /dev/md0 17000G - sehr schnell, ohne Fehlermeldung zu Ende! - keine verdächtigen Einträge in /var/log/messages - e2fschk (1.42x?) Fehlermeldung ähnlich: ext2fs_open2: Der Ext2-Superblock ist defekt - resize2fs /dev/md0 resize2fs 1.42.x resize2fs: Der Ext2-Superblock ist defekt beim Versuch, /dev/md0 zu öffnen Es kann kein gültiger Dateisystem-Superblock gefunden werden. - e2fsprogs-1.43.8 runter geladen und installiert. (die sollten mit
16TB klar kommen)
- resize2fs /dev/md0 - selber Fehler - dumpe2fs /dev/md0 dumpe2fs 1.43.8 (1-Jan-2018) dumpe2fs: Der Ext2-Superblock ist defekt beim Versuch, /dev/md0 zu öffnen Es kann kein gültiger Dateisystem-Superblock gefunden werden. - mke2fs -n /dev/md0 mke2fs 1.43.8 (1-Jan-2018) /dev/md0 hat ein ext4-Dateisystem mit Namen „4TB“ Trotzdem fortfahren? (j,n) j mke2fs: Die Größe des Gerätes /dev/md0 (0x1230eff00 Blöcke) kann bei einer Blockgröße von 4096 nicht mit 32 Bits dargestellt werden.
Nun zum Problem: Ich kann /dev/md0 immer noch mounten und auch benutzen. Aber sonst nichts mehr damit machen. D.h. kein resize2fs, kein fsck! Demzufolge bootet der Server auch nicht sauber! Ich würde aber gern wieder einen "wartbaren" Zustand haben, ohne noch mal mehrere Tage das md0 über das Netzwerk zu kopieren und dann mit dem "neuen" resize2fs -b /dev/md0 auf die maximale Größe zu kommen.
Hat jemand eine Idee, wie ich eine Position eines Superblocks herausfinden kann um damit einen fsck zu machen und die defekten Superblöcke zu reparieren?
danke und Grüße Andi
PS. Das alte 4x4TB-Raid ist ja noch OK. Also kann nicht wirklich was kaputt gemacht werden.
Moin,
Andi andi.ruppmann@arcor.de (Mi 17 Jan 2018 23:02:13 CET):
Nun zum Problem: Ich kann /dev/md0 immer noch mounten und auch benutzen. Aber sonst nichts mehr damit machen. D.h. kein resize2fs, kein fsck! Demzufolge bootet der Server auch nicht sauber! Ich würde aber gern wieder einen "wartbaren" Zustand haben, ohne noch mal mehrere Tage das md0 über das Netzwerk zu kopieren und dann mit dem "neuen" resize2fs -b /dev/md0 auf die maximale Größe zu kommen.
Hat jemand eine Idee, wie ich eine Position eines Superblocks herausfinden kann um damit einen fsck zu machen und die defekten Superblöcke zu reparieren?
Guckst Du in e2fsck(8), da steht bei -b etwas zur Position der Superblöcke und zu Möglichkeiten, mit mke2fs, diese auch nachträglich rauszufinden.
Und dann - ohne Gewähr, daß es bei Dir gut geht - hat mir mal mke2fs mit der Option -S geholfen, das macht nicht komplett ein neues Filesystem, sondern schreibt nur neue Superblöcke, die z.B. zur Devicegröße passen. Der Rest wird nicht angetastet. Du müsstest aber vielleicht aufpassen, daß es bei dieser Aktion nicht wegen der großen Partition auch mal eigenmächtig die Blockgröße ändert.
Hallo Heiko,
Am 17.01.2018 um 23:28 schrieb Heiko Schlittermann:
Moin,
Guckst Du in e2fsck(8), da steht bei -b etwas zur Position der Superblöcke und zu Möglichkeiten, mit mke2fs, diese auch nachträglich rauszufinden.
Und dann - ohne Gewähr, daß es bei Dir gut geht - hat mir mal mke2fs mit der Option -S geholfen, das macht nicht komplett ein neues Filesystem, sondern schreibt nur neue Superblöcke, die z.B. zur Devicegröße passen. Der Rest wird nicht angetastet. Du müsstest aber vielleicht aufpassen, daß es bei dieser Aktion nicht wegen der großen Partition auch mal eigenmächtig die Blockgröße ändert.
Das habe ich auch alles schon durch, in meiner ersten Mail nur nicht erwähnt. 5h Probieren und googlen - da merkt man sich nicht alles und die Mail wäre noch länger. ;-) Meine Vermutung, das resize2fs hat einen "64-bit Flag" teilweise eingetragen, womit die 32bit-Variante (max 16TB) nicht klar kommt. Ich meine hier das FS, nicht meinen 64-bit Kernel! Die e2fsprogs 1.43.6 sollten das doch aber können.
Ich habe erschiedene Superblöcke probiert. Immer wieder dieselbe Ausgabe:
e2fsck -b 229376 /dev/md0 e2fsck 1.43.8 (1-Jan-2018) e2fsck: Ungültige magische Zahl im Superblock beim Versuch, /dev/md0 zu öffnen
Der Superblock ist unlesbar bzw. beschreibt kein gültiges ext2/ext3/ext4- Dateisystem. Wenn das Gerät gültig ist und ein ext2/ext3/ext4- Dateisystem (kein swap oder ufs usw.) enthält, dann ist der Superblock beschädigt, und Sie könnten versuchen, e2fsck mit einem anderen Superblock zu starten: e2fsck -b 8193 <Gerät> oder e2fsck -b 32768 <Gerät>
/dev/md0 hat ein ext4-Dateisystem mit Namen „4TB“ ______________________________________________________
dumpe2fs /dev/md0 dumpe2fs 1.43.8 (1-Jan-2018) dumpe2fs: Der Ext2-Superblock ist defekt beim Versuch, /dev/md0 zu öffnen Es kann kein gültiger Dateisystem-Superblock gefunden werden. ______________________________________________________
mke2fs -S /dev/md0 mke2fs 1.43.8 (1-Jan-2018) /dev/md0 hat ein ext4-Dateisystem mit Namen „4TB“ Trotzdem fortfahren? (j,n) j mke2fs: Die Größe des Gerätes /dev/md0 (0x1230eff00 Blöcke) kann bei einer Blockgröße von 4096 nicht mit 32 Bits dargestellt werden. ______________________________________________________ Hier sieht es zwar gut aus, nützt aber nix.
lsblk -o NAME,FSTYPE,UUID,RO,RM,SIZE,STATE,MOUNTPOINT NAME FSTYPE UUID RO RM SIZE STATE MOUNTPOINT sda linux_raid_member ab850c1f-2e65-2e60-deb4-cf6abc2435cf 0 0 9,1T running └─md0 ext4 f130241c-a6bb-435d-9565-955f5c7d036b 0 0 18,2T sdb linux_raid_member ab850c1f-2e65-2e60-deb4-cf6abc2435cf 0 0 9,1T running └─md0 ext4 f130241c-a6bb-435d-9565-955f5c7d036b 0 0 18,2T sdc linux_raid_member ab850c1f-2e65-2e60-deb4-cf6abc2435cf 0 0 9,1T running └─md0 ext4 f130241c-a6bb-435d-9565-955f5c7d036b 0 0 18,2T ______________________________________________________
Ich dachte, vielleicht kann man mit 'nem HEX-Editor direkt einen Superblock finden: xxd /dev/md0 | less
vorher alles NULL 00003e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00003f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000400: 0000 6842 0000 a009 0000 0000 9f8f 225e ..hB.........."^ 0000410: 5e6b 1942 0000 0000 0200 0000 0200 0000 ^k.B............ 0000420: 0080 0000 0080 0000 0020 0000 45bd 5f5a ......... ..E._Z 0000430: 1ac0 5f5a 0600 1b00 53ef 0100 0100 0000 .._Z....S....... 0000440: e87a 5f5a 004e ed00 0000 0000 0100 0000 .z_Z.N.......... 0000450: 0000 0000 0b00 0000 0001 0000 2c00 0000 ............,... 0000460: 5202 0000 7b00 0000 f130 241c a6bb 435d R...{....0$...C] 0000470: 9565 955f 5c7d 036b 3454 4200 0000 0000 .e._}.k4TB..... 0000480: 0000 0000 0000 0000 2f6d 6564 6961 2f66 ......../media/f 0000490: 3133 3032 3431 632d 6136 6262 2d34 3335 130241c-a6bb-435 00004a0: 642d 3935 3635 2d39 3535 6635 6337 6430 d-9565-955f5c7d0 00004b0: 3336 6200 0032 b11c 0188 ffff fc8d 785f 36b..2........x_ 00004c0: 0000 0000 2400 0000 0000 0000 0000 0000 ....$........... 00004d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00004e0: 0800 0000 0000 0000 0000 0000 af31 9d77 .............1.w 00004f0: 54da 4aa5 b9e1 4510 f05f deaa 0101 0000 T.J...E.._...... 0000500: 0000 0000 0004 0000 a559 1651 0af3 0200 .........Y.Q....
______________________________________________________
Hier noch ein Vergleich: diff /etc/mke2fs.conf.e2fsprogs-new /etc/mke2fs.conf 2c2 < base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr ---
base_features =
sparse_super,filetype,resize_inode,dir_index,ext_attr 14c14,15 < features = has_journal,extent,huge_file,flex_bg,uninit_bg,64bit,dir_nlink,extra_isize ---
features =
has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
auto_64-bit_support = 1
15a17,21
} ext4dev = { features =
has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
inode_size = 256 options = test_fs=1
______________________________________________________
Aber auch die neue mke2fs.conf hilft mir nicht weiter... ______________________________________________________
Geniale Seite, aber sehr anspruchsvoll... https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout Könnte die mir irgendwie weiter helfen?
VG Andi
lug-dd@mailman.schlittermann.de