仮想ディスクとデータを守る
イメージ、仮想ディスク、ファイルシステム、スナップショット、バックアップを区別します。
このレッスンのメニュー
仮想マシンを作り直すとき、OSは同じ状態から始めたい一方で、利用者が保存したデータは失いたくありません。 そのため、起動に使うひな型、仮想マシンが読み書きするディスク、復旧に使うコピーを分けて扱います。
このページでは、まずイメージと仮想ディスクの違いを確認します。 次に、仮想ディスクをLinuxでファイルの保存先として使う仕組みと、スナップショットやバックアップの役割を学びます。
イメージはひな型、ディスクは作業中の状態
仮想マシンのイメージには、OSや初期ファイルが入っています。 イメージから作った仮想ディスクには、起動後のログ、設定変更、アプリのデータなどが書き込まれます。
仮想ディスクをLinuxへ接続しただけでは、通常はファイルを置けません。 必要に応じて領域を分け、ファイルシステムを作り、ディレクトリへ接続して使います。
起動ディスクとデータ用ディスクを分ける
OSと交換可能なアプリは起動ディスク、失いたくないデータは別のディスクや外部のデータサービスへ置くと、仮想マシンを作り直しやすくなります。 ただし、ディスクを分けただけではバックアップになりません。 同じ場所の障害で両方を失う構成もあります。
スナップショットとバックアップ
スナップショットは、ある時点の仮想ディスクの状態を短時間で記録する機能です。 更新前へ戻す用途には便利ですが、元のディスクや同じストレージに依存する方式があります。
バックアップは、元の環境を失っても復元できるように、データを別の場所へ保管する仕組みです。 次の四つを決めて初めて、復旧に使えるバックアップになります。
- 何を保存するか
- どれくらい前まで戻れるようにするか
- どれくらいの時間で復元するか
- 実際に復元できるか、いつ試すか
書き込み途中のディスクをコピーするとデータが食い違うことがある
アプリやデータベースが書き込み中にディスクだけを記録すると、互いに関係するファイルの時点がずれることがあります。 必要なら書き込みを止める、データベースのバックアップ機能を使う、記録後に整合性を確認する、といった手順を組み合わせます。
ディスクからファイルまでをたどる
Linux Labで次を実行します。
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
findmnt /
df -BM / /tmp
lsblk はLinuxから見える仮想ディスクとパーティションを表示します。
findmnt / はルートディレクトリがどのファイルシステムに接続されているか、df はその空き容量をMiB単位で表示します。
次に、32MiBの一時ファイルを書き、使用量の変化を確認します。
dd if=/dev/zero of=/tmp/awamori-storage-test bs=1M count=32 status=progress
du -h /tmp/awamori-storage-test
df -BM /tmp
rm /tmp/awamori-storage-test
ファイルを削除したあと、もう一度 df -BM /tmp を実行します。
この操作はファイルシステムへの読み書きです。
仮想ディスクの追加、スナップショット、バックアップは仮想マシンの外側で行う別の操作です。
三つの役割を区別する
次のどれに当たるかを考えます。
- 新しい仮想マシンを作るためのひな型:仮想マシンのイメージ
- 更新前の状態へ短時間で戻すための記録:スナップショット
- 元の環境を失っても復元するためのコピー:バックアップ
このレッスンは完了
このページで扱った流れを確認したら、次の内容へ進みます。