Arch Linuxでbtrfsサブボリュームとsnapperスナップショットを設定する方法
Arch Linuxでbtrfsサブボリュームを作成し、snapperを使ってスナップショットを自動取得・管理する手順を解説。初心者向けにステップバイステップで紹介。
はじめに
このチュートリアルでは、Arch Linuxにbtrfsファイルシステムを導入し、サブボリュームを作成した上で、snapperを使ってスナップショットの自動取得・管理を設定します。スナップショットを使うことで、システム更新前の状態に簡単に戻せるようになり、バックアップとしても活用できます。
目標
前提条件
ステップ1: btrfsサブボリュームの作成
まず、既存のbtrfsファイルシステム上にサブボリュームを作成します。ここでは、ルートファイルシステムが/dev/sda2にマウントされていると仮定します。適宜、自分の環境に合わせてデバイスを変更してください。
<h1>マウントポイントを確認</h1>
lsblk
ルートパーティションを一時的にマウントし、サブボリュームを作成します。
<h1>ルートパーティションを/mntにマウント</h1>
mount /dev/sda2 /mnt
<h1>@と@homeのサブボリュームを作成(@はルート、@homeは/home用)</h1>
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
<h1>アンマウント</h1>
umount /mnt
次に、これらのサブボリュームを適切なマウントポイントにマウントします。/etc/fstabを編集して、起動時に自動マウントされるようにします。
<h1>fstabを編集</h1>
nano /etc/fstab
以下の行を追加します(デバイス名は環境に合わせて変更)。
/dev/sda2 / btrfs rw,noatime,compress=zstd,subvol=@ 0 0
/dev/sda2 /home btrfs rw,noatime,compress=zstd,subvol=@home 0 0
マウントオプションの説明:
noatime: アクセス時刻を更新しない(パフォーマンス向上)compress=zstd: Zstandard圧縮を有効化subvol=@: 使用するサブボリュームを指定マウントして確認します。
<h1>マウント</h1>
mount -a
<h1>確認</h1>
df -h
ステップ2: snapperのインストールと設定
snapperはbtrfsスナップショットを管理するツールです。
<h1>snapperをインストール</h1>
pacman -S snapper
snapperの設定ファイルを作成します。ルートファイルシステム(/)用の設定を作成します。
<h1>設定を作成(設定名はroot)</h1>
snapper -c root create-config /
このコマンドで、/etc/snapper/configs/rootが作成され、スナップショットは/.snapshotsに保存されます。
設定を編集して、スナップショットの保持数を調整します。
nano /etc/snapper/configs/root
以下の項目を編集します(例)。
SUBVOLUME="/"
ALLOW_USERS=""
ALLOW_GROUPS=""
TIMELINE_CREATE="yes"
TIMELINE_CLEANUP="yes"
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="5"
TIMELINE_LIMIT_DAILY="7"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"
NUMBER_LIMIT="50"
NUMBER_LIMIT_IMPORTANT="10"
TIMELINE_CREATE: タイムラインスナップショットを有効にするTIMELINE_LIMIT_*: 各期間の最大保持数NUMBER_LIMIT: 手動スナップショットの最大保持数ステップ3: 自動スナップショットの有効化
snapperにはタイマーが付属しており、定期的にスナップショットを作成します。
<h1>snapper-timeline.timerを有効化</h1>
systemctl enable snapper-timeline.timer
systemctl start snapper-timeline.timer
<h1>snapper-cleanup.timerも有効化(古いスナップショットを削除)</h1>
systemctl enable snapper-cleanup.timer
systemctl start snapper-cleanup.timer
タイマーの状態を確認します。
systemctl list-timers | grep snapper
ステップ4: スナップショットの管理
手動スナップショットの作成
<h1>スナップショットを作成(説明付き)</h1>
snapper -c root create -d "更新前のバックアップ"
スナップショットの一覧表示
snapper -c root list
出力例:
# | Type | Pre # | Date | User | Cleanup | Description
---+--------+-------+---------------------------------+------+----------+-------------
0 | single | | | root | | current
1 | single | | Tue 01 Jan 2023 12:00:00 AM UTC | root | timeline | timeline
スナップショットの削除
<h1>スナップショット番号1を削除</h1>
snapper -c root delete 1
ステップ5: スナップショットからの復元
注意: 復元は慎重に行ってください。現在のデータが失われる可能性があります。
<h1>スナップショット番号1にロールバック</h1>
snapper -c root undochange 1..0
または、スナップショットを別のディレクトリにマウントして必要なファイルだけを取り出すこともできます。
<h1>スナップショットをマウント</h1>
mount -o subvol=.snapshots/1/snapshot /dev/sda2 /mnt/snapshot
動作確認
snapper listで表示されることを確認。journalctl -u snapper-timeline.timerで確認。snapper undochangeで復元できることを確認。発展リソース
*この記事はArch Linuxを実機で日常運用しているSioが、実際のインストール・設定経験に基づいてAI生成コンテンツをレビュー・補完しています。btrfsサブボリュームとLUKS暗号化環境で検証済みです。*
まとめ
このチュートリアルでは、Arch Linuxでbtrfsサブボリュームを作成し、snapperを使ってスナップショットの自動取得と管理を行う方法を学びました。定期的なスナップショットにより、システム障害やミスからの復旧が容易になります。ぜひ実践して、安心してArch Linuxを運用してください。