(更新:

Ubuntu 26.04 LTS:Btrfsで内蔵ストレージを並行運用する実践ガイド


1. はじめに

執筆時点(2026年4月)でも、本手順は「正式リリース前の先行構築」だけでなく、リリース直後の移行作業にも適用できます。この記事は時期に依存しない手順と具体的なコマンド例を中心にまとめています。

本記事では、内蔵ストレージの空き領域を使い、26.04を**「次期メイン環境」**として構築し、必要に応じて正式版公開時に「格上げ」するための実行手順(コマンド例含む)を示します。

TL;DR

  • Ubuntu 26.04 を内蔵ストレージ上の Btrfs サブボリュームで並行運用する手順と注意点を示す。
  • 事前に必ずバックアップを取得し、btrfs subvolume snapshot を活用してロールバック可能な構成で作業する。
  • 最小実行サマリは下の「実行サマリ」を参照。

実行サマリ(最小限)

# デバイス確認
sudo lsblk -f

# パーティション作成(例: /dev/sda3 を btrfs 用に確保)
sudo parted /dev/sda -- mkpart primary btrfs 100GiB 200GiB
sudo mkfs.btrfs -f /dev/sda3

# マウントしてサブボリューム作成
sudo mount /dev/sda3 /mnt
sudo btrfs subvolume create /mnt/@noble_next
sudo btrfs subvolume create /mnt/@home
sudo umount /mnt

# Ansible 実行例
ansible-playbook -i localhost, -c local site.yml

2. 内蔵ストレージでの「共存と格上げ」戦略

この節で得られること: Btrfsサブボリュームを使った共存設計の考え方と基本コマンドを理解できます。

「正式リリースを待たずに作る」ことの不安は、Btrfsファイルシステムの「サブボリューム」技術で解消します。

モダンな「サブボリューム」共存

従来の「パーティション分割(sda1, sda2…)」は、後からサイズの変更が難しく、管理が煩雑でした。 モダンなLinux構築では、一つの大きなパーティションの中に、複数のOSを論理的に共存させます。

graph TD
    Disk[内蔵ストレージ] --> Partition[Btrfsパーティション]
    subgraph "同一の空き容量を共有"
        Partition --> SV1["@ (現在の24.04)"]
        Partition --> SV2["@noble_next (26.04 開発版)"]
        Partition --> SV3["@home (共通データ)"]
    end
  • メリット: 24.04と26.04でストレージの空き容量を「共有」できます。26.04を使い始めて容量が増えても、わざわざパーティションサイズを変える必要がありません。
  • 格上げ: 正式リリース後は、26.04側のサブボリュームをデフォルトの起動設定(@)に変更するだけで「メイン環境」へ昇格できます。

コマンド例(Btrfsサブボリューム作成 — 最小限の流れ)

# デバイス確認
sudo lsblk -f
sudo parted /dev/sda print

# 新しいパーティションを作る(例: /dev/sda3 を作成済みとする)
sudo mkfs.btrfs -f /dev/sda3
sudo mkdir -p /mnt/newbtrfs
sudo mount /dev/sda3 /mnt/newbtrfs

# サブボリュームを作成
sudo btrfs subvolume create /mnt/newbtrfs/@noble_next
sudo btrfs subvolume create /mnt/newbtrfs/@home

# アンマウント
sudo umount /mnt/newbtrfs

インストーラーで直接サブボリューム指定する場合は、ターゲットパーティションを /dev/sda3 として、インストール時に手動マウントし、/subvol=@noble_next を指定してください。

注意(格上げ時のブート):

  • fstab にサブボリューム指定が必要です。例(UUIDは blkid で確認して置き換えてください):
UUID=YOUR-UUID / btrfs defaults,subvol=@noble_next,compress=zstd,relatime 0 1
  • UUID の取得例:
sudo blkid /dev/sda3
sudo lsblk -o NAME,UUID /dev/sda
  • ブートローダ更新例(Debian/Ubuntu 系):
sudo update-grub
# 必要ならブートローダを再インストール
sudo grub-install --recheck /dev/sda
  • ブート設定変更はシステムが起動しなくなるリスクがあるため、リカバリ手順(ライブUSBでの chroot、mount -o subvol= による復旧など)を準備してください。

3. 「きれいな環境」を維持するためのIaC(Ansible)

新環境を「本拠地」にする以上、一時の迷いで打ち込んだコマンドを将来に引きずってはいけません。 この節で得られること: Ansibleで環境を宣言的に構築・再現する最小サンプルを示します。

構築をコードで固定する

  • 構築期: 触ってよい設定はすぐにAnsibleへ書き込み、手作業の痕跡を残さないようにします。
  • 移行期(リリース前後): リリースのタイミングに関係なく、Ansibleで再構築・再現できる状態を保っておけば、いつでもクリーンな環境へ切り替えられます。

Ansibleの最小サンプル(パッケージ導入)

- hosts: localhost
  become: yes
  tasks:
    - name: update apt cache
      apt:
        update_cache: yes

    - name: Ensure common packages installed
      apt:
        name:
          - curl
          - git
          - ca-certificates
        state: present

サブボリューム操作は command モジュールで btrfs subvolume create を呼び出すか、必要に応じてコミュニティ提供のモジュールを利用してください。


4. インストールと運用のステップ

  1. 内蔵ストレージに空きを作る(概略): GUI の gparted を推奨しますが、CLI で行う場合は parted 等でパーティションを操作します(操作は破壊的なので必ずバックアップを取ること)。

CLI 例(パーティション新規作成→Btrfsフォーマット)

# 事前確認: 対象デバイスを必ず確認する
sudo lsblk -f
# パーティション操作後にカーネルへ反映が必要な場合
sudo partprobe /dev/sda || true

# mkpart の例(環境により挙動が異なるため注意)
sudo parted /dev/sda -- mkpart primary btrfs 100GiB 200GiB
sudo mkfs.btrfs -f /dev/sda3
  1. 26.04をインストール(Daily/ISO使用時の手順):

    • インストーラーで「手動パーティション」を選択し、先ほど作成した /dev/sda3 を Btrfs としてマウントします。
    • インストール後、ライブ環境や chroot で以下のようにサブボリュームを切り、マウントオプションを指定します。
# マウント(例)
sudo mount -o compress=zstd,subvol=@noble_next /dev/sda3 /mnt
sudo mkdir -p /mnt/home
sudo mount -o compress=zstd,subvol=@home /dev/sda3 /mnt/home
  1. Ansibleで環境を固定化(実行例):
# Playbook の実行
ansible-playbook -i localhost, -c local site.yml

Ansible Playbook 内では、パッケージ導入・ユーザ作成・/usr/local/bin へのバイナリ配置・Docker リポジトリ追加などを宣言的に記述します。

補足: 重要な操作(パーティション変更・フォーマット)は失敗するとデータを失うため、必ずバックアップを取得してから実行してください。


検証とスナップショット(ロールバック)

作業前後は必ず以下で検証し、重要変更前にスナップショットを取ってください。

# サブボリューム一覧
sudo btrfs subvolume list /mnt

# ファイルシステム使用量確認
sudo btrfs filesystem df /dev/sda3

# スナップショット作成(例)
sudo btrfs subvolume snapshot /mnt/@noble_next /mnt/.snapshots/pre-change-$(date +%Y%m%d%H%M)

# ロールバックの概略(既存マウントを外して差し替え)
sudo umount /mnt
sudo mount -o subvol=.snapshots/pre-change-YYYYMMDDHHMM /dev/sda3 /mnt

スナップショットを使えば、万が一の時にマウント先をスナップショットに切り替えることで復旧できます。ロールバックでは fstab の subvol 指定やブートローダ設定の整合性も確認してください。