カスタムストレージボリュームをバックアップするには#

カスタムストレージボリュームをバックアップするには以下の方法があります。

どの方法を選ぶかはユースケースと使用しているストレージドライバによります。

一般的に、スナップショットは高速で空間効率がよい (ストレージドライバによります) ですが、ボリュームと同じストレージプール内に置かれますので信頼性はそれほど高くはありません。 エクスポートファイルは別のディスクに保管できますので、より信頼性が高いです。 これはボリュームを別のストレージプールに復元するのにも使えます。 もし別のネットワークで接続された LXD サーバがある場合、ボリュームをこの別のサーバに定期的にコピーすることで信頼性を高められますし、この方法はボリュームのスナップショットをバックアップするのにも使用できます。

注釈

カスタムストレージボリュームはインスタンスにアタッチされるかもしれませんが、インスタンスの一部ではありません。 そのため、カスタムストレージボリュームの内容はインスタンスをバックアップする際に保存されません。 ストレージボリュームのバックアップは別途行う必要があります。

スナップショットをバックアップに使う#

スナップショットは指定した日時のストレージボリュームの状態を保存します。ボリュームを元の状態に簡単に戻せるようになります。 スナップショットはボリュームと同じストレージプールに保存されます。

ほとんどのストレージドライバは最適化されたスナップショット作成をサポートします (機能比較 参照)。 これらのドライバではスナップショットの作成は高速で空間効率も良いです。 dir ドライバでは、スナップショット機能は利用できますが、効率的ではありません。 lvm ドライバでは、スナップショットの作成は高速ですが、スナップショットの復元は thin-pool モードを使っているときのみ効率的です。

カスタムストレージボリュームのスナップショットを作成する#

カスタムストレージボリュームのスナップショットを作成するには以下のコマンドを使用します。

lxc storage volume snapshot <pool_name> <volume_name> [<snapshot_name>]

既存のスナップショットを置き換えるにはスナップショット名に --reuse フラグを追加します。

ストレージボリュームに snapshots.expiry 設定オプションが設定されていない限り、デフォルトではスナップショットは永遠に保持されます。 特定のスナップショットをこの期限が切れても維持するには --no-expiry フラグを使用します。

スナップショットを閲覧、編集、削除する#

ストレージのスナップショットを表示するには以下のコマンドを使用します。

lxc storage volume info <pool_name> <volume_name>

スナップショットの閲覧と編集はスナップショットを <volume_name>/<snapshot_name> で参照することでカスタムストレージボリュームと同様に行うことができます。

スナップショットの情報を表示するには以下のコマンドを使用します。

lxc storage volume show <pool_name> <volume_name>/<snapshot_name>

スナップショットを編集する (例えば、説明を追加したり保管期限を変更する) には以下のコマンドを使用します。

lxc storage volume edit <pool_name> <volume_name>/<snapshot_name>

スナップショットを削除するには以下のコマンドを使用します。

lxc storage volume delete <pool_name> <volume_name>/<snapshot_name>

カスタムストレージボリュームのスナップショットをスケジュールする#

特定の日時にスナップショットを自動で作成するようにカスタムストレージボリュームを設定できます。 そのためにはストレージボリュームに snapshots.schedule 設定オプションを設定してください (ストレージボリュームを設定する 参照)。

例えば、日次スナップショットを設定するには以下のコマンドを使用します。

lxc storage volume set <pool_name> <volume_name> snapshots.schedule @daily

毎日午前 6 時にスナップショットをとるように設定するには以下のコマンドを使用します。

lxc storage volume set <pool_name> <volume_name> snapshots.schedule "0 6 * * *"

定期的にスナップショット作成をスケジュールする場合は、自動破棄 (snapshots.expiry) とスナップショットの命名規則 (snapshots.pattern) の設定も検討してください。 これらの設定オプションについてより詳しい情報は ストレージドライバ ドキュメントを参照してください。

カスタムストレージボリュームのスナップショットを復元する#

カスタムストレージボリュームを任意のスナップショットの状態に復元できます。

このために、まずカスタムストレージボリュームを使用している全てのインスタンスを停止する必要があります。 次に以下のコマンドを使用します。

lxc storage volume restore <pool_name> <volume_name> <snapshot_name>

スナップショットを同じストレージプール内あるいは別のストレージプール内 (リモートのストレージプールでも可) の新しいカスタムストレージボリュームに復元することもできます。 このためには以下のコマンドを使用します。

lxc storage volume copy <source_pool_name>/<source_volume_name>/<source_snapshot_name> <target_pool_name>/<target_volume_name>

エクスポートファイルをバックアップに使用する#

カスタムストレージボリュームの完全な内容をスタンドアロンのファイルにエクスポートできます。このファイルは任意の場所に保管できます。 最大の信頼性のためには、バックアップが失われたり破損されたりしないよう別のファイルシステム上にバックアップファイルを保管してください。

カスタムストレージボリュームをエクスポートする#

圧縮されたファイル (例: /path/to/my-backup.tgz) にカスタムストレージボリュームをエクスポートするには以下のコマンドを使用します。

lxc storage volume export <pool_name> <volume_name> [<file_path>]

ファイルパスを指定しない場合、エクスポートされたファイルは作業ディレクトリに backup.tar.gz という名前で保存されます。

警告

出力ファイル (backup.tar.gz あるいは指定したファイルパス) が既に存在する場合、このコマンドは既存のファイルを警告なしに上書きします。

コマンドに以下のフラグを追加できます。

--compression

デフォルトでは出力ファイルは gzip 圧縮を使います。 別の圧縮アリゴリズム (例えば bzip2) を指定することもできますし --compression=none で圧縮をオフにすることもできます。

--optimized-storage

ストレージプールが btrfszfs ドライバを使用している場合、 --optimized-storage フラグを指定すると個別のファイルのアーカイブの代わりにドライバ固有のバイナリー blob としてデータを保存できます。 この場合、エクスポートされたファイルは同じストレージドライバを使うプールでのみ利用できます。

ボリュームを最適化されたモードでエクスポートするのは個別のファイルをエクスポートするより通常速いです。 スナップショットはメインボリュームからの差分としてエクスポートされるので、サイズが小さくなりアクセスが容易になります。

--volume-only

デフォルトではエクスポートファイルはストレージボリュームの全てのスナップショットを含みます。 このフラグを追加するとスナップショット無しでボリュームをエクスポートします。

エクスポートファイルからカスタムストレージボリュームを復元する#

エクスポートファイル (例えば /path/to/my-backup.tgz) を新しいカスタムストレージボリュームとしてインポートできます。 このためには以下のコマンドを使用します。

lxc storage volume import <pool_name> <file_path> [<volume_name>]

ボリューム名を指定しない場合、エクスポートしたストレージボリュームの元の名前が新しいボリュームの名前として使われます。 指定したストレージプールにその名前のボリュームが既に (あるいは引き続き) 存在する場合、コマンドはエラーを返します。 この場合、バックアップをインポートする前に既存のボリュームを削除するかインポート用に別のボリューム名を指定してください。