web-dev-qa-db-ja.com

BTRFSサブボリュームはどこにありますか?

Ubuntuインストーラー(マウントされたISOイメージから)を使用して、VPSにUbuntu 18.04サーバーをインストールしました。インストールの手動パーティション分割フェーズで、ファイルシステムタイプとしてBTRFSを選択しました。

インストールが完了したので、サーバー以外のインストールで通常表示されるような@または@homeが表示されません。ここでは@homeサブボリュームは気にしませんが、/にトップレベルのボリュームをマウントしたくありません。

lsblk:

vda    252:0    0   25G  0 disk
|-vda1 252:1    0    1M  0 part
|-vda2 252:2    0   20G  0 part /
`-vda3 252:3    0    5G  0 part [SWAP]

結果は生成されません:

btrfs su li /

私はこれを次に試しました:

btrfs filesystem show | awk '/ path /{print $NF}'
/dev/vda2

そして:

# findmnt
TARGET    SOURCE     FSTYPE     OPTIONS
/         /dev/vda2  btrfs      rw,relatime,space_cache,subvolid=5,subvol=/

18.04サーバーのインストール中にBTRFSサブボリュームを作成するにはどうすればよいですか?

@/の場合)と@varlog/var/logの場合)、その他を作成したいと思います。

1時間ごとのスナップショットにSnapperを使用したいと思います。 BTRFSとSnapperを使用してUbuntuサーバーをセットアップするための推奨される方法はありますか?

3
MountainX

次の方法で/をサブボリュームに移動できます。

  1. ファイルシステムのスナップショットを作成します。

    btrfs sub snap / /@
    
  2. 新しいサブボリュームを/mntにマウントします。

    mount -o subvol=@ /dev/vda2 /mnt
    
  3. サブボリュームにchrootします。

    cd /mnt
    mount -o bind /dev  dev
    mount -o bind /sys  sys
    mount -o bind /proc proc
    chroot /mnt
    update-grub
    exit
    
  4. オプションとして/mnt/@/etc/fstabを追加subvol=@を追加します。

  5. リブート。サブボリュームから起動します。それが事実であることを確認してください

    mount | grep vda2
    

それは次のように表示されるはずです

   /dev/vda2 on / type btrfs (rw,relatime,space_cache,subvolid=257,subvol=/@) 
  1. これで、トップサブボリュームをどこかにマウントし、/@以外の内容を削除できます。
1
Pilot6

Ubuntu Server 20.04で動作するソリューションは次のとおりです。最初の起動前に@サブボリュームを作成し、/ボリュームからすべてのファイルを削除します。

  1. BTRFSルートパーティションを使用してUbuntu 20.04をインストールしますが、システムのインストール後に再起動しないでください。
  2. 端末に切り替えます(Alt + F2)。
  3. Rootユーザーに切り替えて、BTRFSパーティション以外のすべてのデバイスをアンマウントします。
    Sudo -i
    umount /target/boot/efi
    umount -l /target/run
    umount /target/cdrom
    
    他のマウントポイントがある場合(つまり、/home)、それらもマウント解除します。
  4. @サブボリュームを作成し、すべてのファイルをそのボリュームに移動します:
    cd /target
    btrfs subvolume create @
    ls | grep -v @ | xargs mv -t @
    
  5. bTRFSパーティションをアンマウントして、今回は@サブボリュームを指すように再度マウントします。また、追加のマウントオプションをいくつか定義する良い機会でもあります(この例では、SSDデバイスの推奨オプションがいくつかあります)。 BTRFSボリュームが/dev/sda2(適切に調整)未満であると思います。
    cd /
    umount /target
    mount -o subvol=@,ssd,noatime,space_cache,commit=120,compress=zstd:2 /dev/sda2 /mnt 
    
  6. 次に、必要なデバイスをすべてマウントしてシステムを完成させ、chrootを使用してシステムに切り替えます(ブートパーティションは/dev/sda1であると想定しています)
    mount /dev/sda1 /target/boot/efi
    mount --bind /proc /target/proc
    mount --bind /dev /target/dev
    mount --bind /sys /target/sys
    chroot /target
    
    他のパーティションを作成した場合(つまり、/home)、ここにもマウントします
  7. エディターでfstabを開きます:
    vi /etc/fstab
    
    BTRFSパーティションで行を更新します。つまり、
    UUID=xxx / btrfs default,subvol=@,ssd,noatime,space_cache,commit=120,compress=zstd:2  0 0
    
  8. 最後に、ブートローダーをセットアップします(私は/dev/sdaを想定しています)
    update-initramfs -u -k all
    grub-install --recheck /dev/sda
    update-grub 
    exit
    
  9. インストーラー(Alt + F1)に戻り、再起動します。 Ubuntuは@サブボリュームで起動するはずです。
2
ytropek