
我使用以下命令在 zfs 中建立了一個池:
zpool create data001 mirror /dev/sda /dev/sdb
但事後看來我想創造
zpool create data/001 mirror /dev/sda /dev/sdb
我發現所有重命名/移動選項都不起作用,因為“數據”不存在,但我無法創建“數據”,因為創建沒有設備的池似乎沒有意義。
答案1
我很確定您的意思是第一個“zpool create”而不是“zfs create”。所以這是你該做的:
# zpool create data mirror /dev/sda /dev/sdb
# zfs create data/001
第一個指令將取得「資料」池以及 /data 檔案系統,第二個指令將建立 /data/001 檔案系統。
答案2
zpool create data mirror /dev/sda /dev/sdb
zfs create data/001
這是我應該運行的命令集,還是仍然可以在保留資料的情況下運行的命令集?第一行看起來會在現有池的頂部建立一個新池。
這是你應該做的。現在執行此操作只會告訴您,在不破壞舊池或從中刪除磁碟的情況下,不可能將已經屬於池一部分的磁碟用於新池(除了最後一個,如果使用 raidz 而不是則不可能)鏡子)。如果您沒有備份策略,那麼考慮您的備份策略也可能是個好主意。
我是 zfs 的新手,發現 zfs 和 zpool 之間的功能劃分似乎是任意的,可能是因為對技術的一些誤解
甲骨文有一個詳細指南以及如何使用池和文件系統,還有一些濃縮的最佳實踐。從廣義概括起來,有三層:
- 您可以從具有某種冗餘功能(基本、鏡像或 raidz)的普通設備(通常是磁碟,也可以是檔案或分割區)建立虛擬設備 (vdev)。
- 您可以從多個 vdev 建置儲存池 (zpool),這些儲存池始終是條帶化(串聯)的,並為您提供這些 vdev 的總大小作為連續儲存。
- 您可以在這些池中建立檔案系統或 zvol。文件系統可以相互嵌套。理論上,池本身也是可寫的,但建議不要這樣做,因為更容易管理/屬性繼承。
我個人對這些層的建議:
- 為每個 vdev 使用相同大小、速度和品質的磁碟。更喜歡鏡像,因為它們比 raidz 更靈活、更快。避免使用基本的 vdev,因為如果發生故障,它們可能會殺死整個池。
- 為類似的 vdev 建立儲存池,例如,一個包含 SSD vdev(鏡像)的池用於 VM 存儲,另一個池包含 HDD vdev (raidz2),用於速度較慢但容量更大的備份儲存。將它們組合起來會使池像 HDD 一樣慢,並且像所有資料的單一鏡像一樣危險,因此這不是一個好主意。
- 建立任意數量的檔案系統,並使用繼承來輕鬆管理它們(SMB 或 NFS 共用等屬性可以像配額或常規 ACL 設定一樣繼承)。您的設計取決於您的組織和結構,但常見規則是「每個使用者主目錄一個檔案系統」和「每個獨立網路共用一個檔案系統」。如果內部內容本質上是關於同一主題的,但移動很頻繁,請避免拆分文件系統,因為文件系統間移動始終是一個完整且成本高昂的操作,即使在同一個池上也是如此。只有在匯出區塊儲存或使用 KVM 時才需要 zvol,因此從簡單開始(檔案系統也可以用作區塊儲存)。
- 像平常一樣使用檔案系統內的目錄(設定 ACL、隔離資料等)。