冬至展望RS❄️
@RSChiang
已經
Sun, Jan 24, 2021 7:52 PM
3
修檔案系統到開始讀 FS block information。(哈欠)
背脂拉麵
@ajisaiiii
Mon, Jan 25, 2021 2:43 AM
是硬碟出事ㄇ
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 2:57 AM
Mon, Jan 25, 2021 2:59 AM
JaidTw
: APFS copy-on-write 好像在最後階段 swap B-tree 的時候 fail 了就整個硬碟讀不到。只是 transaction ID 對不起來而已啊不能直接 fallback 到舊版本的 FS tree 嗎
原本想說沒啥重要資料就來試試看的不過還是不想重新 download 所以先手動 (raw) 修修看,果然還是 ExFAT 比較靠譜嗎
背脂拉麵
@ajisaiiii
Mon, Jan 25, 2021 3:03 AM
為什麼會突然就fail啊 而且也沒突然斷電難道沒recover機制嗎 好慘
開放原始碼的Osiris
@s8321414
Mon, Jan 25, 2021 3:04 AM
XD
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 3:10 AM
Mon, Jan 25, 2021 3:11 AM
JaidTw
: 沒耶
fsck_apfs
才試一下下就放棄治療了
我
inspect
了一番就是 HEAD 的 transaction 更新到一半、指到了一塊還沒 initialize 的 block,應該回退一版就好OAO)
開放原始碼的Osiris
@s8321414
Mon, Jan 25, 2021 3:10 AM
APFS 吧XD
天津風
@yamato_han
Mon, Jan 25, 2021 4:43 AM
沒辦法自動 Failback 到上一個狀態,那 APFS 搞 copy-on-write 的最大效用不就消失了嗎……
背脂拉麵
@ajisaiiii
Mon, Jan 25, 2021 4:48 AM
感謝幫對M1有點興趣的我滅火
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 4:59 AM
JaidTw
: 跟 M1 沒有關係吧XDDD
我猜是 APFS 的 driver 沒針對外接裝置最佳化,至少 internal SSD 災情在 10.13 以後就幾乎沒聽說了
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 5:01 AM
Mon, Jan 25, 2021 5:01 AM
天津風
: 舊版本的 FS tree 都還在,但 volume transaction ID 跟 block number 已經指到新(不存在/內容不對)的版本了,我才覺得很奇怪ʕ •ᴥ•ʔ
l• ܫ•) Davyキュルッ
@david50407
Mon, Jan 25, 2021 6:43 AM
CoW 不就是有內容才指過去嗎wwwww
沒有內容就指過去是以為他有內容嗎(以為有寫/讀的到,但其實並沒有)這時候可能也要懷疑一下那個裝置是不是要死了……QQ
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:00 AM
l• ܫ•) Davyキュルッ
: 是新買的哦!
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:03 AM
剛剛在魔改按照 spec 實作的開源鑑識工具,檔案都好端端的讀出來了,資料表看起來都健氣⋯⋯真的是 superblock 出個包整個磁碟就拒絕讀取囉???
l• ܫ•) Davyキュルッ
@david50407
Mon, Jan 25, 2021 8:05 AM
不意外吧很多現代檔案格式都是這樣的
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:05 AM
總之(相對)比較重要的資料撈出來了就來改看看 superblock pointer 看能不能修好
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:06 AM
就要人工比對一下最後一次可用的 checkpoint 在哪裡然後把 superblock + FS tree 指過去 ._.)
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:07 AM
l• ܫ•) Davyキュルッ
: 但我還是不懂為什麼會指到無效的 B-tree⋯⋯
通常要先建好 tree 再 atomically 把 superblock 改過去啊
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:08 AM
而且 APFS 算是有 journaling (transaction) 的檔案系統應該也可以自己還原,我才不懂 ._.)
l• ܫ•) Davyキュルッ
@david50407
Mon, Jan 25, 2021 8:15 AM
所以我說是不是他以為有寫入(但其實沒有)
所以我會懷疑是硬體故障(例如有寫入到 cache 導致檢查的時候以為有,但其實沒有再往後寫入)
你可能買到了假的硬碟
背脂拉麵
@ajisaiiii
Mon, Jan 25, 2021 8:16 AM
不是啊買了就要用APFS(?) HFS+不是也不少問題
冬至展望RS❄️
@RSChiang
說
Mon, Jan 25, 2021 8:20 AM
JaidTw
: 外接硬碟沒打算要做 Time Machine owo)
原本用 APFS 是想說分割區調整方便,不過看起來好像還是不太妙QQ
冬至展望RS❄️
@RSChiang
說
Wed, Jan 27, 2021 7:49 AM
Wed, Jan 27, 2021 7:49 AM
l• ܫ•) Davyキュルッ
: 我檢查了老半天 + 讀 spec 對照之後的推論是,
硬碟上有塊很久沒動的可用空間,在不同的版本/transaction 都一直指到 ExtRef B-tree 裡同個 node;
APFS 解釋參照:
Inside the file system: 3 APFS containers and volume...
開放原始碼的Osiris
@s8321414
Wed, Jan 27, 2021 7:51 AM
用 F2FS
冬至展望RS❄️
@RSChiang
說
Wed, Jan 27, 2021 7:51 AM
Wed, Jan 27, 2021 7:52 AM
不知道是 bug 還是怎樣,總之這個 node 在出事前被意外回收去做 Omap block 用了,所以那個 node 底下描述的可用空間範圍就全部散佚。
會推測是被回收、而不太可能是寫入失敗或是硬體故障的原因,是那個 block 是 well-formed 的,至少檔頭是對的、只是出現在不該出現的樹裡。但這個 node 的 reference 存在這麼久,所以也不太可能是指錯格。
冬至展望RS❄️
@RSChiang
說
Wed, Jan 27, 2021 7:53 AM
Wed, Jan 27, 2021 7:56 AM
然而僅僅可用空間的資料不見了並不會導致 data loss,所以我從 FS tree 還讀得出來、資料也都還在。只是可用空間樹其中一部分不見了,會沒辦法可靠的寫東西進去。
但 macOS 會因此而直接拒絕掛載磁碟,所以我就把(其實也是不是很重要的一些東西)撈撈出來,決定直接 format 成 exFAT 先。
冬至展望RS❄️
@RSChiang
說
Wed, Jan 27, 2021 7:56 AM
開放原始碼的Osiris
: 要 FUSE 感覺還是先不要XD
開放原始碼的Osiris
@s8321414
Wed, Jan 27, 2021 8:04 AM
冬至展望RS❄️
:
載入新的回覆
原本想說沒啥重要資料就來試試看的不過還是不想重新 download 所以先手動 (raw) 修修看,果然還是 ExFAT 比較靠譜嗎
fsck_apfs
才試一下下就放棄治療了我
inspect
了一番就是 HEAD 的 transaction 更新到一半、指到了一塊還沒 initialize 的 block,應該回退一版就好OAO)感謝幫對M1有點興趣的我滅火我猜是 APFS 的 driver 沒針對外接裝置最佳化,至少 internal SSD 災情在 10.13 以後就幾乎沒聽說了
沒有內容就指過去是以為他有內容嗎(以為有寫/讀的到,但其實並沒有)這時候可能也要懷疑一下那個裝置是不是要死了……QQ
總之(相對)比較重要的資料撈出來了就來改看看 superblock pointer 看能不能修好
通常要先建好 tree 再 atomically 把 superblock 改過去啊
所以我會懷疑是硬體故障(例如有寫入到 cache 導致檢查的時候以為有,但其實沒有再往後寫入)
你可能買到了假的硬碟原本用 APFS 是想說分割區調整方便,不過看起來好像還是不太妙QQ
硬碟上有塊很久沒動的可用空間,在不同的版本/transaction 都一直指到 ExtRef B-tree 裡同個 node;
APFS 解釋參照:
用 F2FS會推測是被回收、而不太可能是寫入失敗或是硬體故障的原因,是那個 block 是 well-formed 的,至少檔頭是對的、只是出現在不該出現的樹裡。但這個 node 的 reference 存在這麼久,所以也不太可能是指錯格。
但 macOS 會因此而直接拒絕掛載磁碟,所以我就把(其實也是不是很重要的一些東西)撈撈出來,決定直接 format 成 exFAT 先。