2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【2023年07月】Btrfs メモ

Last updated at Posted at 2023-06-18

はじめに

Btrfs を学習した際のメモ

Btrfs は バターエフエス と読む、 B-tree file system の略
オンラインデフラグができる
マウントしたままファイルシステムの拡張と縮小ができる
スナップショットがとれる

構築できるRAIDの種類は以下

  • RAID0 : 2台以上
  • RAID1 : 2台以上
  • RAID10 : 4台以上
  • RAID5 : 3台以上(実験中)
  • RAID6 : 4台以上(実験中)

特殊なモードの singledup がある

  • single
    各データブロックをストレージプールの一部として配置するモード。
    このモードは冗長性や冗長性に対する保護を提供せず、データは単一のデバイスにのみ書き込まれる。

  • dup
    各データブロックを同じデバイス上の2箇所に書き込むモード。
    単一のデバイス内での読み取りエラーから保護する一定の冗長性が提供さる。
    しかし、デバイス全体が故障した場合には保護されない。

ファイルシステムの作成

シングルデバイス

  • デバイスは /dev/sdb (2GB) と、 /dev/sdc (2GB)
$ sudo mkfs.btrfs /dev/sdb
btrfs-progs v5.16.2
See http://btrfs.wiki.kernel.org for more information.

Performing full device TRIM /dev/sdb (2.00GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

Label:              (null)
UUID:               ********-****-****-****-************
Node size:          16384
Sector size:        4096
Filesystem size:    2.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             102.38MiB
  System:           DUP               8.00MiB
SSD detected:       yes
Zoned device:       no
Incompat features:  extref, skinny-metadata, no-holes
Runtime features:   free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1     2.00GiB  /dev/sdb

RAID 0 (ストライピング)

  • デバイスは /dev/sdb (2GB) と、 /dev/sdc (2GB)
$ sudo mkfs.btrfs -f -d raio0 /dev/sdb /dev/sdc
btrfs-progs v5.16.2
See http://btrfs.wiki.kernel.org for more information.

Performing full device TRIM /dev/sdb (2.00GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

Performing full device TRIM /dev/sdc (2.00GiB) ...
Label:              (null)
UUID:               ********-****-****-****-************
Node size:          16384
Sector size:        4096
Filesystem size:    4.00GiB
Block group profiles:
  Data:             RAID0           409.50MiB
  Metadata:         RAID1           256.00MiB
  System:           RAID1             8.00MiB
SSD detected:       yes
Zoned device:       no
Incompat features:  extref, skinny-metadata, no-holes
Runtime features:   free-space-tree
Checksum:           crc32c
Number of devices:  2
Devices:
   ID        SIZE  PATH
    1     2.00GiB  /dev/sdb
    2     2.00GiB  /dev/sdc

RAID 1 (ミラーリング)

  • デバイスは /dev/sdb (2GB) と、 /dev/sdc (2GB)
$ sudo mkfs.btrfs -f -d raid1 /dev/sdb /dev/sdc
btrfs-progs v5.16.2
See http://btrfs.wiki.kernel.org for more information.

Performing full device TRIM /dev/sdb (2.00GiB) ...
NOTE: several default settings have changed in version 5.15, please make sure
      this does not affect your deployments:
      - DUP for metadata (-m dup)
      - enabled no-holes (-O no-holes)
      - enabled free-space-tree (-R free-space-tree)

Performing full device TRIM /dev/sdc (2.00GiB) ...
Label:              (null)
UUID:               ********-****-****-****-************
Node size:          16384
Sector size:        4096
Filesystem size:    4.00GiB
Block group profiles:
  Data:             RAID1           204.75MiB
  Metadata:         RAID1           256.00MiB
  System:           RAID1             8.00MiB
SSD detected:       yes
Zoned device:       no
Incompat features:  extref, skinny-metadata, no-holes
Runtime features:   free-space-tree
Checksum:           crc32c
Number of devices:  2
Devices:
   ID        SIZE  PATH
    1     2.00GiB  /dev/sdb
    2     2.00GiB  /dev/sdc

ファイルシステムの情報確認

  • 複数デバイスでストレージプールを構築している場合、構成している1つのデバイスを btrfs filesystem show すると、ストレージプール全体が表示される
  • 複数デバイスでストレージプールを構築している場合、構成している1つのデバイスを mount すると、ストレージプール全体がマウントされる
  • 2023/06 時点で、mountせずに、サブボリュームの情報やファイルシステム全体の利用可能なスペースを知る方法はないらしい

RAID 0 (ストライピング)

sudo btrfs filesystem df /exportData, RAID0: と表示される

$ sudo btrfs filesystem show /dev/sdb
Label: none  uuid: ********-****-****-****-************
	Total devices 2 FS bytes used 144.00KiB
	devid    1 size 2.00GiB used 272.00MiB path /dev/sdb
	devid    2 size 2.00GiB used 264.00MiB path /dev/sdc
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FS AVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       btrfs                      ********-****-****-****-************                  
sdc                       btrfs                      ********-****-****-****-************                  
  :
  :
$ sudo mount /dev/sdb /export
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/sdb                           4.0G  3.6M  3.5G   1% /export
  :
  :
$ sudo btrfs filesystem df /export
Data, RAID0: total=409.50MiB, used=0.00B
System, RAID1: total=8.00MiB, used=16.00KiB
Metadata, RAID1: total=256.00MiB, used=160.00KiB
GlobalReserve, single: total=3.25MiB, used=0.00B

RAID 1 (ミラーリング)

sudo btrfs filesystem df /exportData, RAID1: と表示される

$ sudo btrfs filesystem show /dev/sdb
Label: none  uuid: ********-****-****-****-************
	Total devices 2 FS bytes used 176.00KiB
	devid    1 size 2.00GiB used 468.75MiB path /dev/sdb
	devid    2 size 2.00GiB used 468.75MiB path /dev/sdc
$ lsblk -f
NAME                      FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
  :
  :
sdb                       btrfs                      ********-****-****-****-************      1.7G     0% /export
sdc                       btrfs                      ********-****-****-****-************ 
  :
  :
$ sudo mount /dev/sdb /export
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/sdb                           2.0G  3.4M  1.8G   1% /export
  :
  :
$ sudo umount /dev/sdb
$ sudo mount /dev/sdc /export
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
  :
  :
/dev/sdb                           2.0G  3.4M  1.8G   1% /export
  :
  :
$ sudo btrfs filesystem df /export
Data, RAID1: total=204.75MiB, used=0.00B
System, RAID1: total=8.00MiB, used=16.00KiB
Metadata, RAID1: total=256.00MiB, used=160.00KiB
GlobalReserve, single: total=3.25MiB, used=0.00B

ファイルシステムのチェック

マウントしたままチェック、チェックはバックグラウンドで行われる、自動的に修復も行われる

  • チェック開始
$ sudo btrfs scrub start /export
  • 進行状況の確認
$ sudo btrfs scrub status /export
  • キャンセル
$ sudo btrfs scrub cancel /mountpoint

アンマウントしてチェック

$ sudo umount /dev/sdb
$ sudo btrfs check

アンマウントしてチェックし、復旧も行う

$ sudo umount /dev/sdb
$ sudo btrfs check --repair 

ストレージプールのデバイスを入れ替える

/dev/sdb (2GB)、 /dev/sdc (2GB) で構成されているストレージプールで、/dev/sdc が故障したので、ストレージプールから削除し、デバイスを入れ替えて、再度ストレージプールを構成し直す

  • ストレージプールから /dev/sdc を削除
$ sudo btrfs device delete /dev/sdc /export
  • 一度、ストレージプールのバランスをとる
$ sudo btrfs filesystem balance /export
  • /dev/sdc を入れ替える
  • ストレージプールにデバイスを追加する
$ sudo btrfs device add /dev/sdc /export
  • ストレージプールのバランスをとる(/dev/sdb から /dev/sdc へデータがコピーされる)
$ sudo btrfs filesystem balance /export

さいごに

かんたんでしたね

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?