Solaris
將 ZFS 文件系統從一個池移動到另一個池
除了根 rpool 之外,我正在擴展一個帶有額外儲存池的 Solaris 10 U8 伺服器。
將特定 ZFS 文件系統從 rpool 移動到這個新儲存池的最有效/簡單/可靠的方法是什麼?
可以線上完成還是我應該先關閉使用這些池的服務?
關於禁用服務的問題本質上取決於服務本身:
- 他們是否正在積極寫入您計劃移動的文件系統?
- 他們是否儲存您想要保留的持久數據。
無論如何,發送 ZFS 文件系統可能需要很長時間。通過使服務大部分時間保持線上,可以最大限度地減少服務不可用性:
- 創建快照
- 以先前建議的方式發送該快照,但同時保持所有服務處於活動狀態
- 當在另一個池上收到 fs 時,禁用對該文件系統的關鍵服務限制。確保目標池上的新文件系統未被修改,因為無論如何更改都會被丟棄。
- 創建第二個快照(例如 snapshot2)
- 以增量方式發送第二個快照,這將比之前的傳輸快得多。例如:
zfs send -i rpool/filesystem@snapshot rpool/filesystem@snapshot2 \ | zfs receive -F destinationpool/filesystem
- 完成後,將文件系統掛載點從舊數據集移動到新數據集。例如:
zfs set mountpoint=/application/directory.old rpool/filesystem zfs set mountpoint=/application/directory destination/filesystem
您需要確保沒有綁定任何程序
/application/directory
(例如:訪問文件或將其作為目前目錄)來實現這一點。
- 重新啟用服務,您就完成了。