🍑あわもり教室🫧 クラウドの「手前」を、ちゃんとやる。 はじめる
SET 0330分

仮想ディスクとデータを守る

イメージ、仮想ディスク、ファイルシステム、スナップショット、バックアップを区別します。

このレッスンのメニュー

仮想マシンを作り直すとき、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 を実行します。 この操作はファイルシステムへの読み書きです。 仮想ディスクの追加、スナップショット、バックアップは仮想マシンの外側で行う別の操作です。

三つの役割を区別する

次のどれに当たるかを考えます。

  • 新しい仮想マシンを作るためのひな型:仮想マシンのイメージ
  • 更新前の状態へ短時間で戻すための記録:スナップショット
  • 元の環境を失っても復元するためのコピー:バックアップ

このレッスンは完了

このページで扱った流れを確認したら、次の内容へ進みます。