19

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 をバックアップするアイデアはありますか?

4

4 に答える 4

41

編集: 2016 年 3 月 29 日

この投稿に出くわした場合、私の答えは実際にはシステム間での LXC コンテナーの移動に関するものです。

LXC コンテナーをバックアップする場合は、@Stuart の回答でいくつかの優れたオプションを参照してください。

ホストシステム間での LXC コンテナの移動

これが、システム間で 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/gid が破損するため、コンテナーが起動しない可能性があります。 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

私はこのエラーを無視しており、管理しているどのコンテナにも問題はありませんでした。さらに問題がある場合は、元の投稿にエラー メッセージを追加してください。詳しく説明します。

于 2015-12-10T05:28:41.493 に答える
11

編集:2017年11月

ファイルシステムなしでコンテナーをホストlxcにすばやくバックアップするには、 &を使用してホストからファイルシステムをマウントします。コンテナーを停止して、そのアーカイブを作成します。remotebtrfsremotesshfscdtar.xz


編集: 2016 年 3 月

実行中のlxcコンテナーをbtrfs簡単に取得できるように、ファイルシステムでコンテナーを実行するようになりましたsnapshotbtrfs sub snap検出proc run sysは仮想ファイルシステムであり、スナップショットには含まれません。


Duplyを使用して LXC コンテナーをバックアップします。通常のマシンのバックアップとは異なり、 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 コンテナーをバックアップします。

コンテナをバックアップするだけで、 lxc 以外の行を 編集して~/.duply/mybackup/conf変更SOURCE='/'し、削除しますSOURCE='/var/lib/lxc'~/.duply/mybackup/exclude

実行中のAlpine Linux LXC コンテナーでテスト済み- Debian でも動作します。

Duply を使用した単純なバックアップTARGET='file://[relative|/absolute]/local/path'- 暗号化されていない非常に単純なローカル ファイルへのバックアップを実行することもできます ( で設定~/.duply/mybackup/conf) 。

Duplyバックアップに署名するには、GnuPG in Automated Environmentsを参照してください(パスワードをプレーンテキストで保存する代わりに、パスワードのない署名キー)。

cron ジョブGPG_TEST='disabled'の Duplyファイルに設定します。conf

プレーンテキストのパスワードを保存しない場合は、復元時に無効にconfないでください-パスワードをキャッシュします。GPG_TESTgpg-agent

于 2014-09-26T22:50:19.223 に答える
2

私はブラッド・ジャスパーソンに同意します。私はこのようにします:

lxc-clone -KMP /path/to/backup name name

コンテナに問題が発生し、ダウンタイムに多大なコストがかかる場合は、コピーを実行できます。

lxc-start -n name -P /path/to/backup

そして停止します:

lxc-stop -n name -P /path/to/backup

後で適切なタイミングで元の場所にコピーできます。幸運を!

于 2016-02-28T16:57:28.627 に答える