LoginSignup
9
6

More than 3 years have passed since last update.

Btrfs を練習してみた

Posted at

これはなに

Btrfsに初めて触るひと(ぼく)がこの手順で試行錯誤すれば、一定の理解に達する手順書です。
Btrfsはとても便利なファイルシステムと聞いたんだけど、説明を読んでも意味が分からなかった。
subvolume(サブボリューム)、snapshot(スナップショット)、ってなに? 具体的にどう使うの? ていう人向け。
理解が間違っている点があると思います。コメントいただけると幸いです。

Btrfs って、こういうことかな?

実際に使ってみた。

  • サブボリュームを作ったり、スナップショットをとったりしてみた。
  • Btrfsには、サブボリュームとディレクトリを自由に配置できる。
  • サブボリュームのスナップショットをとることができるが、サブボリュームの中のサブボリュームは、スナップショットでは空のディレクトリになる。
  • トップレベルのスナップショットもとることができる。例えば、トップレベルのスナップショットをサブボリュームA内にとることもできる。
  • スナップショットのスナップショットもとれる。
  • スナップショットはどのサブボリューム、どのディレクトリ、どこでも配置できる。

で、これらを任意のマウントポイントにマウントできる。

  • トップレベルのサブボリュームは、マウントできる。
  • 任意のサブボリュームも、マウントできる。
  • スナップショットは、実はサブボリュームの一種なので、マウントできる。

概念図

やってみるときの手順

  • 追加のパッケージのインストール

必要なパッケージを追加する

sudo apt install btrfs-progs 
  • 新しいパーティションの作成

/dev/sda の空き領域に、新しいパーティションを作る。

# fdisk /dev/sda

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
( 略 )
Command (m for help): w

  • Btrfsを作成する

/dev/sda3に新しいパーティションを作成したので、そこにBtrfsを作成。Btrfs_partition ラベルを付けた。


# mkfs.btrfs -f -L Btrfs_partition /dev/sda3
Label:              Btrfs_partition
UUID:               9******f-d**3-a**6-1**5-7**********e
Node size:          16384
Sector size:        4096
Filesystem size:    3.63TiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP               1.00GiB
  System:           DUP               8.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     3.63TiB  /dev/sda3

- サブボリューム作成

マウントポイント /mnt/disk_btrfs/ を mkdir し、マウントする。
サブボリューム@nasを作成する。(名前は何でもよい)

# mount -t btrfs  /dev/sda3 /mnt/disk_btrfs/
# btrfs subvolume create /mnt/disk_btrfs/@nas
Create subvolume '/mnt/disk_btrfs/@nas'
  • /etc/fstabに追記して、起動時にマウントするようにする

NAS用に、いろいろオプション付けた。

/etc/fstab
##Btrfs ファイルシステム本体(メンテ用)
UUID=9******f-d**3-a**6-1**5-7**********e /mnt/disk_btrfs      btrfs   defaults,noatime,autodefrag,compress-force=lzo,space_cache        0       0

##Btrfs subvolume @nas()
UUID=9******f-d**3-a**6-1**5-7**********e /mnt/nas      btrfs   defaults,noatime,autodefrag,compress-force=lzo,space_cache,subvol=@nas        0       0

マウントしてみる

# mount -a

/mnt/disk_btrfs と/mnt/nas が読み書きできれば成功。
スナップショットをとってみる。

# btrfs subvolume snapshot @nas/ snapshot_20200414
Create a snapshot of '@nas/' in './snapshot_20200414'

サブボリュームのリストを表示し、スナップショットのIDを調べる

# /mnt/disk_btrfs$ sudo btrfs subvolume list .
ID 257 gen 20 top level 5 path @nas
ID 263 gen 20 top level 5 path snapshot_20200414

/dev/sda3上のID=263のスナップショットを/mnt/testにマウントする

# mkdir /mnt/test
# mount -t btrfs -o subvolid=263 /dev/sda3 /mnt/test/

ファイルシステムの状態を表示

# btrfs filesystem df /mnt/disk_btrfs
Data, single: total=8.00MiB, used=256.00KiB
System, DUP: total=8.00MiB, used=16.00KiB
Metadata, DUP: total=1.00GiB, used=192.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B

参考

Btrfs - ArchWiki
https://wiki.archlinux.jp/index.php/Btrfs
btrfs - GreenLeaf
https://greenleaf.mydns.jp/pukiwiki/?btrfs
takapiのブログ
Btrfsについて軽く調べた

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6