Lxcコンテナのバックアップを取りたいのですが。 12.04 LTS ubuntu server
を備えたサーバーがあり、LXC - 1.0.0.alpha2
をインストールしています。私のubuntuサーバーを14.04 LTSに更新したいと思いました。だから私がやりたいのはLXCコンテナーをバックアップする-> OSを14.04にアップグレードする-> LXCコンテナーを復元することだ。以前のバージョン(おそらく0.7.5)ではlxc-backupとlxc-restoreがありましたが、1.0.0.alpha2ではバックアップと復元の操作はありません。 lxcコンテナをバックアップするにはどうすればよいですか。コンテナーフォルダー(/ var/lib/lxc/my_container /)をペンドライブにコピーし、別の12.04 LTSサーバーに貼り付けて3時間以上費やしましたが、機能していません。エラーが発生しています。
#Sudo lxc-start -n my_container
lxc-start: invalid sequence number 1, expected 4.
lxc-start: failed to spwan "my_container"
次に、アップグレードされた14.04サーバーOSで動作することをどのように期待できますか。
Lxc-containerバックアップを作成するアイデアはありますか?
あなたがこの投稿を偶然見つけた場合、私の答えは本当にmovingシステム間のLXCコンテナーについてです。それは質問されているように思えたからです。
backup LXCコンテナにしたい場合は、@ Stuartの回答でいくつかの優れたオプションを確認してください。
これは、システム間でLXCコンテナを移行する方法です。私はubuntuベースの12.04コンテナーを14.04ホストに正常に移動しました。
コンテナをシャットダウン
# lxc-stop -n $NAME
アーカイブコンテナーrootfs&設定
# cd /var/lib/lxc/$NAME/
# tar --numeric-owner -czvf container_fs.tar.gz ./*
--numeric-owner
フラグは非常に重要です。これがないと、抽出されたファイルシステムでuid/gidsが破損するため、コンテナーが起動しない可能性があります。tarがアーカイブを作成すると、ユーザー/グループの所有権情報が保持されます。デフォルトでは、tarは解凍時に、tarを実行しているシステムのIDでアーカイブユーザー/グループの所有権名を解決しようとします。これは、UID数値がシステム間で異なる場合に、ユーザーの所有権が新しいシステムで解決されるようにすることを目的としています。
数値のuid/gid所有権はファイルシステム全体で保持されることを意図しているため、これはLXCファイルシステムにとっては悪いことです。別の値に解決されると、悪いことが起こります。
ファイルを新しいサーバーにコピーします
# rsync -avh container_fs.tar.gz user@newserver:/var/lib/lxc/
rootfsを抽出する
# mkdir /var/lib/lxc/$NAME/
# cd /var/lib/lxc/$NAME/
# tar --numeric-owner -xzvf container_fs.tar.gz .
オーバーレイバッキングコンテナーを使用している場合は、この新しいコンテナーの基になっているコンテナーも移行する必要があります。最後に、スキップされたソケットファイルに関するいくつかの警告が表示される場合があります。
tar: /var/lib/lxc/$NAME/rootfs/dev/log: socket ignored
私はこのエラーを無視し、管理しているどのコンテナにも問題がありませんでした。さらに問題がある場合は、元の投稿にエラーメッセージを追加してください。詳しく説明します。
lxc
コンテナをremote
ファイルシステムなしでbtrfs
ホストにすばやくバックアップするには、remote
ホストからファイルシステムをsshfs
&でマウントしますcd
をマウントに入れます。コンテナを停止して、コンテナのtar.xz
アーカイブを作成します。
lxc
コンテナーをbtrfs
ファイルシステムで実行して、実行中のコンテナーのsnapshot
を簡単に取得できるようにします。 btrfs sub snap
は、proc run sys
が仮想ファイルシステムであることを検出し、スナップショットに含めません。
Duply を使用してLXCコンテナーをバックアップします。通常のマシンのバックアップとは異なり、[〜#〜] do [〜#〜]は、LXCコンテナの/dev
をバックアップ。
apt-get install duply
duply mybackup create
~/.duply/mybackup/exclude
では、次を使用しました:
- /cdrom
- /dev
- /lost+found
- /media
- /mnt
- /proc
- /run
- /sys
- /tmp
- /var/backup/restore/*
- /var/backup/tmp/*
- /var/lib/lxc/*/rootfs/lost+found
- /var/lib/lxc/*/rootfs/media/*
- /var/lib/lxc/*/rootfs/mnt/*
- /var/lib/lxc/*/rootfs/proc/*
- /var/lib/lxc/*/rootfs/run/*
- /var/lib/lxc/*/rootfs/sys/*
- /var/lib/lxc/*/rootfs/tmp/*
- /var/lib/lxcfs/*
上記はマシン全体とすべてのLXCコンテナをバックアップします。
コンテナをバックアップするには、~/.duply/mybackup/conf
を編集してSOURCE='/'
をSOURCE='/var/lib/lxc'
に変更し、~/.duply/mybackup/exclude
からlxc以外の行を削除します
Alpine Linux LXCコンテナ を実行してテスト-Debianでも動作します。
Duplyを使用した単純なバックアップ -非常に単純な暗号化されていないバックアップをローカルファイルに実行することもできます(TARGET='file://[relative|/absolute]/local/path'
で~/.duply/mybackup/conf
を設定)
Duply バックアップに署名するには、 GnuPG in Automated Environments を参照してください(パスワードをプレーンテキストで保存する代わりに、パスワードなしの署名キー)。
CronジョブのDuply conf
ファイルにGPG_TEST='disabled'
を設定します。
行う場合notプレーンテキストのパスワードをconf
に保存しますnotrestoresでGPG_TEST
を無効にする-そう gpg-agent
キャッシュパスワード。
私はブラッド・ジャスパーンに同意します。私はこのようにします:
lxc-clone -KMP /path/to/backup name name
コンテナーに問題が発生し、ダウンタイムのコストが大きい場合は、コピーを実行できます。
lxc-start -n name -P /path/to/backup
そして停止:
lxc-stop -n name -P /path/to/backup
後で適切なタイミングでコピーして戻すことができます。幸運を!
コンテナーをバックアップする最も簡単な方法は、lxc-cloneを実行することです。
lxc-clone -o NAMEOFCONTAINER -n NAMEOFCONTAINER -P BACKUPDIR
バックアップを/ var/lib/lxcにコピーまたは移動するのと同じくらい簡単に復元できます。スペースを節約するためにtarすることもできます。