我這裡有兩個基於常見設定的問題。快速免責聲明:我正在使用 freenas,並且還沒有完全消化 ZFS 術語和 freenas 屠夫在其 UI 中的 ZFS 術語。我將接受使用終端機或 Freenas UI 的答案(兩者都有獎勵點;))。
我有一個磁碟區(zpool?),其中有 1 個映像 vdev,由兩個 3TB 磁碟組成。
是什麼恰當的物理移除其中一個磁碟然後將其放回去的過程?
可能是不明智的,我沒有執行任何命令就刪除了其中一個磁碟。我立即收到警報,音量已降級(預期)。在我將驅動器放回原位後,這種狀態仍然存在(它似乎沒有將該驅動器識別為已刪除的驅動器 - 或者如果是,我也不知道如何重新連接它)。我重新啟動了伺服器,它現在顯示該卷正常,但在“捲管理器”->“卷統計”下,其中一個驅動器的校驗和列中有182,但另一個驅動器沒有(儘管我不知道事先是否存在該值) )。
- 我應該如何處理這種情況?
- 這會導致資料遺失嗎?
- 如果它可能導致資料遺失/損壞/什麼,我該如何檢查並從中恢復?
最後,額外的獎勵點是指向簡潔的 ZFS 引物的鏈接,這些引物不是教科書,也不會深入研究 ZF 中無用的晦澀部分。 :P
答案1
免責聲明:我個人沒有使用過 FreeNAS,所以有些答案可能不是規範的方法 - 請事先查閱手冊。也就是說,它們是 Oracle 推薦的方式,因此背後應該有一些道理。
- 這取決於您的目標:
- 如果你想更換故障的驅動器使用替代品,您可以在 FreeNAS Web UI 中執行此操作,或使用
zpool replace poolname olddevice newdevice
. - 如果你想從鏡像 vdev 中永久刪除磁碟(並將鏡像減少到基本,在此過程中丟失所有冗餘),您可以在 GUI 中或從控制台使用
zpool detach poolname olddevice
(用於zpool attach poolname olddevice newdevice
重新附加)執行此操作。 - 如果你想暫時將設備從活動池中取出,而不刪除或分離它、使用 GUI 或從控制台使用
zpool offline poolname olddevice
.如果對較大的數組進行故障排除,這很有用,我在這裡只是為了完整性而寫它。
- 如果你想更換故障的驅動器使用替代品,您可以在 FreeNAS Web UI 中執行此操作,或使用
- 重新啟動會匯出所有池,然後匯入它們。匯入時,ZFS 檢查所有磁碟是否都存在。因此,您也可以執行
zpool export poolname
以下操作來zpool import poolname
實現相同的目的,而不是重新啟動。您可能必須在插入後配置磁碟(這是標準 illumos 系統上的情況),然後再匯入池。如果您不想關閉池,也可以移除故障設備,然後進行更換。這樣您就沒有停機時間,而是重新同步。我個人總是選擇第一個解決方案,除了大型陣列,因為它更安全。 - 請參閱下一個問題。
- 如果校驗和僅在一個驅動器上,那就沒問題。用於
zpool clear poolname
刪除錯誤訊息。如果兩個磁碟機上都有校驗和錯誤,則取決於具體情況。通常,ZFS 會告訴您文件是否受到影響以及哪些文件受到影響。
- 重新啟動會匯出所有池,然後匯入它們。匯入時,ZFS 檢查所有磁碟是否都存在。因此,您也可以執行
答案加分:
- Oracle 說明和文件頁面,如上面鏈接
man zpool
,man zfs
以及man /usr/bin/chmod
zpool、檔案系統和 ACL 配置。它們也可以從 Oracle 在線獲得,而且非常非常好。事實上,您幾乎不需要其他任何東西,因為它們也有大量現實世界的範例(比 GNU 手冊頁好得多)。- Solaris 最佳實務指南
- FreeNAS 最差實踐(要避免的陷阱)
- Nex7 無人告訴您的 ZFS 的事情
- 康斯坦丁·岡薩雷斯的博客
- ZFS 備忘單以緊湊的形式提供了最有用的命令