Sabit EXT4-fs geometrisi düzeltildi (blok sayısı aygıt boyutunu aşıyor)


23

FAT32 bölümü ve EXT4 bölümü olan bir mikro SD kartım var. EXT4 bölümü artık bağlanmayacak. dmesg aşağıdaki hatayı gösterir:

EXT4-fs (sdb2): bad geometry: block count 2199023779840 exceeds size of device (524288 blocks)

Googled'im, fakat hala sorunun nerede olduğunu (bölüm tablosunda? Dosya sisteminde?) Ne de tam olarak anlayamadım. Bir takım çözümler denedim:

  • Bölüm tablosu yazmak için testdisk kullanma
  • Superblock'u yedeklerden geri yüklemek için fsck kullanma (hepsini denedim). Örneğinfsck.ext4 -b 163840 -B 4096 /dev/sdb2
  • fsck -ccBozuk blokları kontrol etmek için kullanma
  • Bölümün boyutunu ayarlamak için resize2fs kullanımı. Çıktı:The combination of flex_bg and !resize_inode features is not supported by resize2fs.

Fsck'i çalıştırdığımda, düzeltmeyi iddia ettiği bir sürü hatayla (aşağıda tam çıktı) ortaya çıkıyor. Ancak tekrar çalıştırırsam, her seferinde aynı hataları tekrar tekrar gösterir.

Kötü geometri sorununu nasıl düzeltebilir ve dosya sistemimi tekrar monte edilebilir hale getirebilirim? Bu nasıl oldu?

fsck çıkışı:

e2fsck 1.42 (29-Nov-2011)
One or more block group descriptor checksums are invalid.  Fix<y>? yes

Group descriptor 0 checksum is invalid.  FIXED.
Group descriptor 1 checksum is invalid.  FIXED.
Group descriptor 2 checksum is invalid.  FIXED.
Group descriptor 3 checksum is invalid.  FIXED.
Group descriptor 4 checksum is invalid.  FIXED.
Group descriptor 5 checksum is invalid.  FIXED.
Group descriptor 6 checksum is invalid.  FIXED.
Group descriptor 7 checksum is invalid.  FIXED.
Group descriptor 8 checksum is invalid.  FIXED.
Group descriptor 9 checksum is invalid.  FIXED.
Group descriptor 10 checksum is invalid.  FIXED.
Group descriptor 11 checksum is invalid.  FIXED.
Group descriptor 12 checksum is invalid.  FIXED.
Group descriptor 13 checksum is invalid.  FIXED.
Group descriptor 14 checksum is invalid.  FIXED.
Group descriptor 15 checksum is invalid.  FIXED.
/dev/sdb2 contains a file system with errors, check forced.
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
Free blocks count wrong for group #0 (24465, counted=24466).
Fix<y>? yes

Free blocks count wrong for group #2 (4788, counted=5812).
Fix<y>? yes

Free blocks count wrong for group #3 (8710, counted=8881).
Fix<y>? yes

Free blocks count wrong for group #8 (5682, counted=22066).
Fix<y>? yes

Free blocks count wrong (299742, counted=317322).
Fix<y>? yes

Inode bitmap differences:  -(8193--8194) -8197 -8208 -(8225--8226) -8229 -(8240--8241) -(8257--8258) -8261 -8272 -8274 -(8289--8290) -8293 -(8304--8306) -(8321--8322) -8325 -8336 -8339 -16387 -16389 -16400 -16419 -16421 -(16432--16433) -16451 -16453 -16464 -16466 -16483 -16485 -(16496--16498) -16515 -16517 -16528 -16531 -24577 -24579 -24581 -24592 -24609 -24611 -24613 -(24624--24625) -24641 -24643 -24645 -24656 -24658 -24673 -24675 -24677 -(24688--24690) -24705 -24707 -24709 -24720 -24723 -(32770--32771) -32773 -32784 -(32802--32803) -32805 -(32816--32817) -(32834--32835) -32837 -32848 -32850 -(32866--32867) -32869 -(32880--32882) -(32898--32899) -32901 -32912 -32915 -(40961--40963) -40965 -40976 -(40993--40995) -40997 -(41008--41009) -(41025--41027) -41029 -41040 -41042 -(41057--41059) -41061 -(41072--41074) -(41089--41091) -41093 -41104 -41107 -(49156--49157) -49168 -(49188--49189) -(49200--49201) -(49220--49221) -49232 -49234 -(49252--49253) -(49264--49266) -(49284--49285) -49296 -49299 -57345 -(57348--57349) -57360 -57377 -(57380--57381) -(57392--57393) -57409 -(57412--57413) -57424 -57426 -57441 -(57444--57445) -(57456--57458) -57473 -(57476--57477) -57488 -57491 -65538 -(65540--65541) -65552 -65570 -(65572--65573) -(65584--65585) -65602 -(65604--65605) -65616 -65618 -65634 -(65636--65637) -(65648--65650) -65666 -(65668--65669) -65680 -65683 -(73729--73730) -(73732--73733) -73744 -(73761--73762) -(73764--73765) -(73776--73777) -(73793--73794) -(73796--73797) -73808 -73810 -(73825--73826) -(73828--73829) -(73840--73842) -(73857--73858) -(73860--73861) -73872 -73875 -(81923--81925) -81936 -(81955--81957) -(81968--81969) -(81987--81989) -82000 -82002 -(82019--82021) -(82032--82034) -(82051--82053) -82064 -82067 -90113 -(90115--90117) -90128 -90145 -(90147--90149) -(90160--90161) -90177 -(90179--90181) -90192 -90194 -90209 -(90211--90213) -(90224--90226) -90241 -(90243--90245) -90256 -90259 -(98306--98309) -98320 -(98338--98341) -(98352--98353) -(98370--98373) -98384 -98386 -(98402--98405) -(98416--98418) -(98434--98437) -98448 -98451 -(106497--106501) -106512 -(106529--106533) -(106544--106545) -(106561--106565) -106576 -106578 -(106593--106597) -(106608--106610) -(106625--106629) -106640 -106643 -114694 -114704 -114726 -(114736--114737) -114758 -114768 -114770 -114790 -(114800--114802) -114822 -114832 -114835 -122881 -122886 -122896 -122913 -122918 -(122928--122929) -122945 -122950 -122960 -122962 -122977 -122982 -(122992--122994) -123009 -123014 -123024 -123027
Fix<y>? yes

Free inodes count wrong for group #0 (7803, counted=7804).
Fix<y>? yes

Free inodes count wrong (130683, counted=130684).
Fix<y>? yes


/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb2: 388/131072 files (22.7% non-contiguous), 206966/524288 blocks

fdisk -l çıktı:

Disk /dev/sdb: 16.0 GB, 16012804096 bytes
64 heads, 32 sectors/track, 15271 cylinders, total 31275008 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
Disk identifier: 0x0005ce93

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048    27080703    13539328    c  W95 FAT32 (LBA)
/dev/sdb2        27080704    31275007     2097152   83  Linux

fdisk -lBu kartın çıkışını dahil edebilir misiniz ?
Timo

@Timo üzgünüm, cevap vermeyi unuttum. Soruyu fdisk çıktısıyla güncelledim
Michael

Yanıtlar:


9

Aynı sorun, SD'nin orijinalden birkaç blok daha az olduğu SD kart görüntüsünün kesilmesinden sonra. Fdisk ile sürücüyü yeniden bölümlendirdi (yukarıya bakın), ancak "Süper bloktaki boyut bölümün fiziksel boyutundan farklı" mesajı kaldı. Çözümü burada buldum: http://www.linuxquestions.org/questions/linux-hardware-18/size-in-superblock-is-different-from-the-physical-size-of-the-partition-298175/

Öyleyse, demonte olmayan bölmede: e2fsck -f /dev/XXX resize2fs /dev/XXX


3

Dosya sistemi disk geometrisi ile ilgilenmez; bu bir bölme tablosu problemidir.

Bölüm tablosundan bir döküm yapmanı, sonucu kontrol etmeni ve bölüm tablosunu bu dökümle birlikte yazmanı öneririm. Bu CHS girişlerini düzeltmelidir.

sfdisk -d /dev/sdx >sdx.txt
cat sdx.txt
sfdisk /dev/sdx <sdx.txt

1
Bunu bilmemeniz durumunda bu komutları çalıştırmak için root olmanız gerekir.
slm

1
Cevabınız için teşekkürler. Sfdisk'in testdisk'in bulunmadığı bölüm tablosunu yazmak için çalışmasının bir nedeni var mı? Bunu denedim ve sfdisk bölümleme tablosunu başarıyla yazdığını iddia etti, ancak hala hatalı geometri hatasını alıyorum. Çıktısı sfdisk -dyazmadan önce ve sonra aynıdır. Bir şey mi kaçırdım? Başka düşüncen var mı?
Michael

@Michael Gerçeği söylemek gerekirse: Ne farkettim, ne olduğunu da bilmiyordum testdisk. İnternet bana şunu söyledi: "Kayıp bölümleri kontrol ediyor ve kurtarıyor". Eğer bu sadece kayıp bölümler içinse neden mevcut bölümleri tamir etmeli?
Hauke,

@HaukeLaging Sadece sordum çünkü bölümleme tablosunu da yeniden yazdı. Herneyse, sfdisk sonuçları hakkında bir fikriniz var mı?
Michael,

3

Ben de aynı sorunu yaşamaya başladım.

$sudo mount /dev/sda2 ./oldfs/ 
mount: wrong fs type, bad option, bad superblock on /dev/sda2,
   missing codepage or helper program, or other error
   In some cases useful info is found in syslog - try
   dmesg | tail  or so

Yukarıda belirtilen parça tablosunun yeniden yazılmasını denedim, başarı olmadan.

Böylece, nihayet sorunu fdisk ile yeniden bölümlendirerek çözebildim. 2. bölümümü sildim ve tekrar yarattım.

$fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 31.4 GB, 31440502784 bytes
64 heads, 32 sectors/track, 29984 cylinders, total 61407232 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
Disk identifier: 0x000ecdca

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    20447231    10222592   83  Linux
/dev/sda2        20447232    61406208    20479488+  83  Linux

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 
Using default value 2
First sector (20447232-61407231, default 20447232): 
Using default value 20447232
Last sector, +sectors or +size{K,M,G} (20447232-61407231, default 61407231): 
Using default value 61407231

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

saçma, mükemmel çalıştı, ama hey.
mgjk

Benim için işe yaramadı.
David Kennedy

2

Aynı görüntü dosyasıyla aynı problemi yaşadım, yani herhangi bir bölümleme tablosu olmadan, bu yüzden sorun dosya sisteminin içinde. Ben sadece bir resize2fsgörüntü dosyası üzerinde yaparak düzeltmek başardı .


Önceden biçimlendirilmiş bir eMMC kartında sorun vardı. başarısız ext4 bölümündeki resize2fs sorunu çözdü.
Peter Gloor

0

Başka bir çözüm bulamadığım için EXT4 bölümünü yeniden biçimlendirdim. Bu, hatalı geometri hatasını ortadan kaldırdı. Keşke nedenini bilseydim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.