LXCコンテナ対応ストレージの移動

LXCコンテナ対応ストレージの移動

私は1台のコンピュータで複数のLXCコンテナを実行しています。そのrootfsはデフォルトの場所にあります/var/lib/lxc/*/rootfs。このディレクトリは、ホストシステムのかなり小さなパーティションにあります。はるかに大きなパーティションをインストールしました/home

バックアップストアを次に移動するオプションはありますか/home?好ましくはコンテナ当たりである。

私もやりました。今後実行中のコンテナが複数あります(lxc-create -P PATH)。しかし、今彼らが立ち上がったので、私はそれらを失いたくありません。

答え1

rootfs は設定オプションです。コンテナが停止したら、バックアップディレクトリを目的の場所に移動して設定ファイルに割り当てることができます。

lxc.rootfs = /home/utsname

これはシンボリックリンクを使用するよりも良いかもしれません。

LXCはファイルのバックアップも許可します。ブロックデバイスと生画像を使用できます。

源泉:https://linuxcontainers.org/lxc/manpages/man5/lxc.container.conf.5.html

答え2

私は個人的に異なるアプローチを好む。コンテナのOS部分が比較的小さいことを考慮すると(多くのサービスを実行しているDebian jessieサーバーの場合は最大2GB、リモートデスクトップで動作するUbuntuイメージの場合は約3GB)、OSを/var/lib/lxcに常駐します。以下を使用します。コンテナデータ別のパーティション。

単に/var/lib/lxc/container/fstabファイルを変更するだけです。

/mnt/data/container-data/ /var/lib/lxc/container/rootfs/home/        none    bind    0       0

マスターホストにフォルダ(ソースとターゲット)を作成し、コンテナを停止し、データを移動し、コンテナを再起動します!

上記の例では、両方のディレクトリはlxcホストの/ mnt / dataパーティションにあり、私の場合は大容量ディスクです。

このアプローチには多くの利点があります。オペレーティングシステムとデータを分割すると、危険なタスクを完了する必要があるときにテストコンテナをすばやくコピーして起動できます(例:「aptitude -f dist-upgrade」)。

  • コンテナを停止します(fstabのパーティションは/var/lib/lxc/container/rootfs/ディレクトリから切り離されます)。

    lxc-stop -n container
    
  • コンテナをコピーします。

    mkdir /var/lib/lxc/containertest
    rsync -Pavv /var/lib/lxc/container/ /var/lib/lxc/containertest/
    

/var/lib/lxc/containertest/config および /var/lib/lxc/containertest/fstab を適切に変更する必要があります。

  • 新しいコンテナテストを開始し、使用し、結果を確認してください!

    lxc-start -n containertest
    

また、皆さんの悩みにお答えしますと、こうしないと心配しなくてもいいです。今後:lxcの最大の利点の1つは多様性です!

答え3

怠惰な人と呼んでください。しかし、/var/lib/lxcに大きなディレクトリをマウント(バインディング)できる場合は、なぜ設定ファイルを混乱させるのですか?

コンテナを終了し、内容を/home/lxc/whateverに移動してから再バインドするだけです。完了です!

答え4

デフォルトでは、すべての新しいコンテナのパスを変更することをお勧めします。

# vim /etc/lxc/lxc.conf
lxc.lxcpath=/media/other/programs/OS/containers/

/media/other/programs/OS/containers/すべてのコンテナはディレクトリにあります。

すべての古いコンテナはこの人のように移動され、mv設定が編集されます。https://unix.stackexchange.com/a/191620/53139

関連情報