前のチュートリアルでは、LVMボリュームを実装することは、ホスト上のスペースを管理するために非常に有益であることを見てきました。
論理ボリューム管理レイヤーは、システムの実行中に自由にスペースを追加または削除するために使用できるAPIを公開します。
ただし、システム管理者にとって非常に有益なLVMによって公開されている別の重要な機能があります:LVMスナップショット。
コンピュータサイエンスでは、スナップショットはある特定の時点でのシステムの状態を記述するために使用されます。
このチュートリアルでは、LVMスナップショットを簡単に実装する方法を見ていきます。
また、スナップショットを使用してファイルシステム全体をバックアップし、自由に復元する方法も見ていきます。
目次
前提条件
LVMスナップショットを作成するには、システム上に少なくとも論理ボリュームを作成する必要があります。
これが事実であるかどうかわからない場合は、既存の論理ボリュームを表示するために”lvs”コマンドを実行することができます。
$ lvs

この状況では、システム上に3GBの論理ボリュームが作成されています。
しかし、3GBの論理ボリュームを持つことは、必ずしも我々のシステム上でスペース全体が使用されていることを意味するものではありません。
論理ボリュームの実際のサイズを確認するには、”df”コマンドを使用して使用されているディスク領域を確認します。
$ df -h
メモ : 使用されるスペースを確認するには、論理ボリュームをマウントする必要があります。.
論理ボリュームまたはパーティションのマウントについて不明な場合は、ファイルシステムのマウントに関するチュートリアルを

ここでわかるように、論理ボリュームの容量は3GBですが、ファイルシステムでは3.1MBしか使用されません。
例として、サーバーの/etcフォルダをバックアップしたいとしましょう。
$ cp -R /etc /mnt/lv_mount
構成フォルダが論理ボリュームにコピーされたので、このファイルシステムのLVMスナップショットを作成する方法を見てみましょう。
lvcreateを使用したLVMスナップショットの作成
論理ボリュームのLVMスナップショットを作成するには、”snapshot”の”-s”オプション、論理ボリュームのサイズと名前の”-L”オプ
オプションで、”-n”オプションを使用してスナップショットの名前を指定できます。
$ lvcreate -s -n <snapshot_name> -L <size> <logical_volume>

注:予約済みのキーワードであるため、名前に”snapshot”を含むスナップショット名を作成することはできません。
スナップショットはデフォルトで同じボリュームグループに作成されるため、ボリュームグループに十分な残りの領域があることを確認する必要があ
スナップショットが作成されたので、”lvs”コマンドまたは”lvdisplay”コマンドを直接実行することで、スナップショットを検査できます。
$ lvs$ lvdisplay <snapshot_name>

ご覧のように、論理ボリュームには、元の論理ボリュームと比較して異なる属性のセットがあります:
- s:スナップショットの場合、”o”はスナップショットにコピーされた元の論理ボリュームの原点を意味します。
- w:書き込み可能な場合は、スナップショットに読み取りと書き込み権限があることを意味します。
- i:”継承”の場合。
- a:”割り当てられた”の場合は、実際のスペースがこの論理ボリュームに専用されていることを意味します。
- o : (第六フィールド内)論理ボリュームがマウントされていることを示す”オープン”を意味します。
- s:両方の論理ボリュームのスナップショットターゲットタイプ
スナップショット論理ボリュームが作成されたので、ファイルシステムのバックアップを実行するためにマウントする必要があります。
mountを使用したLVMスナップショットのマウント
LVMスナップショットをマウントするには、”mount”コマンドを使用し、論理ボリュームへのフルパスを指定し、使用するマウントポイントを指定する必要があります。例として、”/dev/vg_1/lvol0″をシステム上の”/mnt/lv_snapshot”マウントポイントにマウントしたいとしましょう。
これを実現するには、次のコマンドを実行します:
$ mount /dev/vg_1/lvol0 /mnt/snapshot
“lsblk”コマンドを再度実行することで、マウント動作が有効であることをすぐに確認できます。
$ lsblk

LVMスナップショットのバックアップ
スナップショットがマウントされたので、tarまたはrsyncコマンドを使用してバックアップを実行できます。
バックアップを実行する場合、基本的にはローカルコピーを実行するか、アーカイブをリモートバックアップサーバーに直接転送するかを選択できます。
ローカルLVMスナップショットバックアップの作成
LVMスナップショットをバックアップする最も簡単な方法は、gzipファイルを作成するために”create”に”-c”オプ
$ tar -cvzf backup.tar.gz <snapshot_mount>
ここでは、スナップショットが”/mnt/lv_snapshot”マウントポイントにマウントされているため、backupコマンドは次のようになります :
$ tar -cvzf backup.tar.gz /mnt/lv_snapshot
このコマンドを実行すると、現在の作業ディレクトリにバックアップが作成されます。
LVMスナップショットバックアップの作成と転送
場合によっては、LVMバックアップを定期的に保存するために使用できるバックアップサーバーを所有
このようなバックアップを作成するには、”rsync”コマンドを使用し、バックアップするファイルシステムと使用する宛先サーバーを指定します。
# If rsync is not installed already, you will have to install using apt$ sudo apt-get install rsync$ rsync -aPh <snapshot_mount> <remote_user>@<destination_server>:<remote_destination>
注:Linuxでのファイル転送について不明な場合は、この件について書いたチュートリアルを確認する必要があります。例として、スナップショットが”/mnt/lv_snapshot”にマウントされており、”192.168.178.33″IPアドレスにあるバックアップサーバーにスナップショットを送信したいとします。
リモートバックアップサーバーに接続するには、”kubuntu”アカウントを使用し、”/backups”フォルダにファイルを保存することを選択します。
$ rsync -aPh /mnt/lv_snapshot :/backups
論理ボリュームスナップショットがバックアップされたので、オンデマンドで簡単に復元できます。
Lvmスナップショットの復元
LVMがバックアップされたので、ローカルシステムに復元することができます。
LVM論理ボリュームを復元するには、”–mergesnapshot”オプションを指定して”lvconvert”コマンドを使用し、論理ボリュームスナップショットの名前を指定する必要があります。
“–mergesnapshot”を使用すると、スナップショットは元の論理ボリュームにマージされ、その直後に削除されます。
$ lvconvert --mergesnapshot <snapshot_logical_volume>
私たちの場合、論理ボリュームスナップショットの名前はlvol0だったので、次のコマンドを実行します
$ lvconvert --mergesnapshot vg_1/lvol0
おそらくお気づきのように、マージ操作が成功するためには、元のデバイスとスナップショットの両方を開くことはできません。
または、”lvchange”を使用して、最新のメタデータを使用して論理ボリュームを更新して再アクティブ化することもできます”
$ lvchange --refresh vg_1/lv_1
マージ操作が成功したら、使用可能な論理ボリュームのリストから論理ボリュームが正常に削除されたことを確認できます。
$ lvs
終わった!
論理ボリュームスナップショットが削除され、変更が元の論理ボリュームにマージされました。
結論
このチュートリアルでは、LVMスナップショットとは何か、ファイルシステムのバックアップと復元に使用する方法について学びました。
バックアップを定期的に作成することは、特に中規模から大規模な会社で作業している場合には不可欠です。
バックアップを持ち、簡単に復元できることは、システム上の大きなデータ損失を防ぐことができることを確認するための最良の方法です。
Linuxシステム管理に興味がある方は、ウェブサイトにそれに特化した完全なセクションがありますので、それをチェックアウトしてください!