Arch Linuxでbtrfsサブボリュームとsnapperスナップショットを設定する方法

Arch Linuxでbtrfsサブボリュームを作成し、snapperを使ってスナップショットを自動取得・管理する手順を解説。初心者向けにステップバイステップで紹介。

Arch Linuxbtrfsサブボリュームスナップショットsnapperバックアップ2026/5/25

はじめに

このチュートリアルでは、Arch Linuxにbtrfsファイルシステムを導入し、サブボリュームを作成した上で、snapperを使ってスナップショットの自動取得・管理を設定します。スナップショットを使うことで、システム更新前の状態に簡単に戻せるようになり、バックアップとしても活用できます。

目標

  • btrfsサブボリュームの作成とマウント
  • snapperのインストールと設定
  • 自動スナップショットの有効化
  • スナップショットからの復元方法の理解
  • 前提条件

  • Arch Linuxがインストール済みであること(インストール時にbtrfsを選択するか、後から変換しても構いません)
  • root権限で操作できること
  • 基本的なLinuxコマンドの知識
  • ステップ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で復元できることを確認。
  • 発展リソース

  • btrfs Wiki
  • snapper公式ドキュメント
  • Arch Linux btrfs ガイド

  • *この記事はArch Linuxを実機で日常運用しているSioが、実際のインストール・設定経験に基づいてAI生成コンテンツをレビュー・補完しています。btrfsサブボリュームとLUKS暗号化環境で検証済みです。*

    まとめ

    このチュートリアルでは、Arch Linuxでbtrfsサブボリュームを作成し、snapperを使ってスナップショットの自動取得と管理を行う方法を学びました。定期的なスナップショットにより、システム障害やミスからの復旧が容易になります。ぜひ実践して、安心してArch Linuxを運用してください。