スナップショット——巻き戻せる保険
スナップショットは、ある瞬間のディスクの状態をまるごと凍結する仕組みです。フルコピーを作るわけではなく変更点だけを追跡するので、作成は一瞬で容量もほとんど食いません。LVMやbtrfs、デスクトップ向けのTimeshiftなど作り方はいくつもありますが、共通するのは「気軽に元へ戻せる保険」だという点です。ただしバックアップとは別物という注意点も併せて押さえます。
設定ファイルを書き換える前や、大きなアップデートをかける直前、「失敗したら元に戻したい」と思ったことは誰にでもあるはずだ。そのための保険がスナップショットだ。
スナップショットは、ある瞬間のディスクの状態をまるごと凍結して記録する仕組みだ。名前だけ聞くとフルバックアップのように思えるが、実際の仕組みはまったく違う。
🧊 なぜ一瞬で終わるのか——差分管理の仕組み
スナップショットが高速な理由は、コピーオンライト(Copy on Write)という考え方にある。スナップショットを取った時点では、実はデータを1バイトもコピーしない。
その後、元のファイルシステム側でデータが書き換えられるタイミングで初めて、「書き換えられる前の古いデータ」がこっそり退避される。つまり、変更が起きた分だけ裏で少しずつコピーが積み上がっていく仕組みだ。
書き換えが起きるたびに「昔のデータ」が退避されていくので、スナップショットの側から見ると、いつまでも取得した瞬間の状態が保たれて見える。これがコピーオンライトの正体だ。
🛠️ 作り方はいくつもある
スナップショットの仕組みはファイルシステムやツールによって実装が異なるが、考え方の骨格は共通している。代表的な3つを押さえておこう。
1つ目はLVMのスナップショットだ。すでに学んだ論理ボリューム(LV)に対して、lvcreate に -s(snapshotの略)を付けて実行する。ファイルシステムの種類を問わず使える汎用性の高さが特徴になる。
2つ目はbtrfsのサブボリュームスナップショットだ。btrfsというファイルシステム自体にスナップショット機能が組み込まれているため、lvcreateのような別レイヤーを挟まず、btrfs subvolume snapshot コマンド1つで完結する。
3つ目はTimeshiftだ。これはデスクトップ向けの見やすいツールで、内部ではrsyncまたはbtrfsの仕組みを使いながら、GUIで「この時点に戻す」を選ぶだけで復元できるようにしてくれる。個人のデスクトップ環境で定番の選択肢だ。
⏪ 元に戻すとき
LVMスナップショットから元に戻す場合は lvconvert --merge を使い、スナップショットの内容を元のLVへ合体させる。btrfsの場合は、壊れた現在のサブボリュームを退避し、スナップショットを本来の場所にリネームして使う、という手順になる。
🚫 バックアップとは別物と心得る
ここが一番誤解されやすい点だが、スナップショットはバックアップの代わりにはならない。
なぜなら、スナップショットはあくまで同じディスク(同じストレージ装置)の上に作られる記録だからだ。そのディスクそのものが物理的に壊れたり、装置ごと盗まれたり火事にあったりすれば、元データもスナップショットも道連れで失われる。
実務では、この2つを競わせるのではなく重ねて使う。日々の細かい失敗からはスナップショットで素早く復旧し、ディスクごとの喪失に備えては別の場所へのバックアップを取っておく。両方を持って初めて、安心できる保険になる。
作業前の一手間としてスナップショットを取る癖をつけておくと、大きな変更にも思い切って挑めるようになる。次は、メモリが足りなくなったときの避難先であるスワップを見ていこう。