Solaris

將 ZFS 文件系統從一個池移動到另一個池

  • July 26, 2020

除了根 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(例如:訪問文件或將其作為目前目錄)來實現這一點。

  • 重新啟用服務,您就完成了。

引用自:https://serverfault.com/questions/88638