帶有校驗和的文件系統?
我只有一個硬碟。我想使用一個可以減少儲存空間的文件系統,但作為權衡,給我校驗和或任何其他方法來幫助保持數據完整性。
據我了解,像 ext4 或 xfs 之類的東西不會這樣做,因此您可能會遭受靜默數據損壞,也就是 bitrot。
zfs 看起來是個不錯的選擇,但我讀到的所有內容都表明您需要多個磁碟才能使用它。為什麼是這樣?我意識到只有一個磁碟不會容忍單個磁碟故障,但這就是多個備份方案的用途。備份無濟於事的是 bitrot 之類的東西。
那麼我可以在單個硬碟驅動器上使用 zfs 來防止比特腐爛嗎?如果沒有,你有什麼推薦的?
您可以使用 ZFS 或 btrfs。
它們都是具有錯誤檢測(以及糾正,如果有足夠的冗餘來修復原始數據 - 例如鏡像驅動器或 RAID-Z)、透明壓縮、快照等的寫時復製文件系統。
ZFS 允許您
copies
在數據集上設置屬性以保留一個文件的多個副本 - 例如,在 ZFS 上,您可以執行zfs set copies=2 pool/dataset
以告訴 ZFS 在該特定數據集上保留所有內容的兩個副本 - 查看man zfsprops
並蒐索copies=
。我認為 btrfs 也有類似的功能,但是我已經很久沒有使用 btrfs 並且在文件中找不到它。這些額外的副本確實為糾錯提供了冗餘(在 bitrot 的情況下),但不會保護您免受磁碟故障的影響。為此,您至少需要一個鏡像 vdev(即 RAID-1),或進行定期備份(但無論如何您都應該這樣做——ZFS 或 btrfs 等 RAID 或類似 RAID 的技術不能替代備份)。
備份可以像使用
zfs snapshot
和zfs send
/zfs receive
將初始備份和增量備份發送到通過 USB 插入的單驅動器 zfs 池一樣簡單。或者通過網路到另一台機器上的池。即使使用zfs send
將備份儲存在非 ZFS 文件系統上的文件中也總比沒有好。如果您的機器具有支持第二個驅動器的物理空間和硬體,則應該添加一個。您可以在首次創建池時執行此操作,也可以隨時使用
zpool attach pool device new-device
.注意:重要的是使用
zpool attach
,而不是zpool add
為此。attach
將鏡像添加到 vdev 中的現有驅動器,同時add
將另一個 vdev 添加到現有池。將單驅動器 vdev 添加到現有池中將有效地與池中的其他 vdev 組成 RAID-0,從而使所有數據面臨風險。這是一個相當常見的錯誤,並且(如果池包含任何 RAID-Z vdev),唯一的解決方法是備份整個池,銷毀它,從頭開始重新創建它,然後恢復。如果池僅具有鏡像或單驅動器 vdev(即沒有 RAID-Z vdev),則可以用於zpool remove
刪除意外添加的單個驅動器。