Linux

使用 mkfs 格式化 sdcard 會無限期掛起

  • February 3, 2017

我正在嘗試按照指南格式化 SD 卡。我能夠成功創建分區表,但嘗試使用 mkfs 格式化 Linux 分區會產生以下輸出:

mke2fs 1.42.9 (4-Feb-2014)
Discarding device blocks:    4096/1900544

它似乎無限期地掛起。我已經讓程序執行了一段時間,但沒有任何變化。如果我彈出 sdcard,那麼 mkfs 會將預期的輸出寫入終端:

mke2fs 1.42.9 (4-Feb-2014)
Discarding device blocks: failed - Input/output error
Warning: could not erase sector 2: Attempt to write block to filesystem resulted in short write
warning: 512 blocks unused.

Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
476064 inodes, 1900544 blocks
95026 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1946157056
58 block groups
32768 blocks per group, 32768 fragments per group
8208 inodes per group
Superblock backups stored on blocks: 
   32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Warning: could not read block 0: Attempt to read block from filesystem resulted in short read
Warning: could not erase sector 0: Attempt to write block to filesystem resulted in short write
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:  0/58
Warning, had trouble writing out superblocks.

為什麼 mkfs 報告我們正在“丟棄”塊以及可能導致掛斷的原因?


編輯

我能夠成功創建兩個分區——一個為 100MB,另一個為 7.3GB。然後,我可以將 100MB 分區格式化並掛載為 FAT32 —— 正是 ext4 7.3GB 分區出現了這個問題。

dmesg 充斥著:

[ 9350.097112] mmc0: Got data interrupt 0x02000000 even though no data operation was in progress.
[ 9360.122946] mmc0: Timeout waiting for hardware interrupt.
[ 9360.125083] mmc_erase: erase error -110, status 0x0
[ 9360.125086] end_request: I/O error, dev mmcblk0, sector 3096576

編輯 2

當我嘗試格式化為 ext4 時,問題似乎出現了。以我將7.3GB分區格式化為FAT32為例,操作成功。

編輯 2

為了有趣地總結上述內容,我將 sdcard 插入 BeagleBone 並以與在 Mint 上完全相同的方式對其進行格式化,一切都完美無缺。我移除了 SD 卡,將其重新插入到我的主機中,並完成了將數據複製到新創建和格式化的分區。

我實際上懷疑您被核心 3 和 4 中一個廣為人知的 ext4 損壞錯誤所困擾。看看這個執行緒,

http://bugzilla.kernel.org/show_bug.cgi?id=89621

不斷有關於 ext4 文件系統損壞錯誤的報告,具有不同的設置。很多人在論壇裡抱怨。該錯誤似乎會影響更多具有 RAID 配置的人。

但是,據說它們在 4.0.3 中已修復。

“4.0.3 包含對可能導致重大數據失去的關鍵 ext4 錯誤的修復。”

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=785672

還有其他 ext4 錯誤,包括截至 11 月 30 日修復的錯誤

$$ of 2015 $$. https://lists.ubuntu.com/archives/foundations-bugs/2015-November/259035.html

這裡還有一篇非常有趣的文章,討論了 ext4 中的配置選項,以及電源故障可能導致的損壞。

http://www.pointsoftware.ch/en/4-ext4-vs-ext3-filesystem-and-why-delayed-allocation-is-bad/

我會用 ext4 以外的其他文件系統測試卡,也許是 ext3。

ext4 的那些系統性錯誤是我在工作中使用來自 Jessie 的 debian backports 儲存庫的 linux-image-4.3.0-0.bpo.1-amd64 的原因之一。

特別是您的版本,核心 3.13 似乎更受該錯誤的影響。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1298972 https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1389787

我不會把它放在一邊,也許您身邊的一些配置和硬體組合比平常更容易觸發錯誤。

SD 卡也會因磨損而損壞,並且由於日誌文件系統的原因,ext4fs 系統不是 SD 卡的理想選擇。出於好奇,我使用的是 Lamobo R1 並使用 SD 卡僅用於啟動核心,並帶有 SSD 磁碟。

http://linux-sunxi.org/Lamobo_R1

引用自:https://unix.stackexchange.com/questions/254696