zfsからディレクトリツリーを新しいファイルシステムに効率的に変換する

zfsからディレクトリツリーを新しいファイルシステムに効率的に変換する

私は、ルートファイルシステムに「/opt」(および他の大規模ディレクトリツリー)が格納されているシステムの管理を「継承」しました。

私の目標は、rpoolで/ opt用の新しいファイルシステムを作成することです(十分簡単です)。しかし、/-filesystemの/ optディレクトリツリーを新しいファイルシステムに効果的に移動できるzfs魔法が欲しいです。つまり、コピーする必要はありません。そしてオリジナルを削除してください。

zfsの私の素朴な理解は、それが素晴らしいことであり、すでにスナップショット間で保存された情報を共有できることです。また、一括データを移動せずに別のファイルシステムに表示されるようにディレクトリを並べ替えることができることを願っています。

直接的な方法はありますか?それでも機能しない場合は、「cp&rm」を実行できます。

PS:「理由」を知りたい人がいれば? Solaris のブート環境から削除します。

答え1

その間私は私の質問に答えることができます。

/opt("非常に大きい") をルートファイルシステムから移動する必要があるとします。

重要! ! !閉鎖すべてのサービス/optでファイルを開くことができます。Oracleデータベース・サーバー- /optの下にインストールされている場合)

基本的に私がすることは次のとおりです。

  • zfs snapshot -r rpool@opt-out (スナップショットが作成されます。現在のブート環境のスナップショットで十分ですが、とにかくスナップショットは問題になりません。)
  • zfs clone rpool/ROOT/11.4.23.69.3@opt-out rpool/opt(元の/ rpool / optにマウントされている現在のブート環境のスナップショットから新しいファイルシステムを複製します。11.4.23.69.3は現在のブート環境であり、後続の読者とは異なる場合があります。)
  • mv /opt /OPT; mkdir /opt(ルートファイルシステムから/ optマウントポイントを削除して再作成します。/ OPTは後で削除できます。)
  • cd /rpool/opt; mkdir rest; mv * rest; mv rest/opt/* . (「rest」は後で削除されます。「.dot-entries」も確認し、各ステップで手動で移動します)
  • zfs set mountpoint=/opt rpool/opt (/opt に新しいファイルシステムを再インストール)

完璧。

最後に、以前に終了したサービスを再起動します。

関連情報