使用 mkfs 格式化 sdcard 會無限期掛起
我正在嘗試按照本指南格式化 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 磁碟。