mkfs.btrfsコマンドの使い方を徹底解説!Linuxで次世代Btrfsファイルシステムを作成する方法
生徒
「Linuxのストレージ管理について勉強中なのですが、mkfs.btrfs(エムケーエフエス・ドット・ビーティーアールエフエス)というコマンドが出てきました。これはいったい何をするものですか?」
先生
「それは新しいハードディスクやパーティションをBtrfs(ビーティーアールエフエス)という形式でフォーマットするためのコマンドですよ。Windowsでいうところのディスクの初期化に近いですね。」
生徒
「初期化ですか!難しそうに聞こえますが、初心者でも実行できますか?」
先生
「コマンド自体はシンプルですが、管理者権限が必要だったり、データを消去したりするので注意点はあります。基本から一つずつ解説していきますので、一緒に学んでいきましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. mkfs.btrfsコマンドとは?
Linux(リナックス)において、ハードディスクやSSDなどの記憶装置(ストレージ)を利用できるようにするためには、ファイルシステムという管理の仕組みを作成する必要があります。この「ファイルシステムを作成する操作」を一般的にフォーマット(初期化)と呼びます。
mkfs.btrfs(エムケーエフエス・ドット・ビーティーアールエフエス)は、その名の通り「Btrfs」という種類のファイルシステムを構築するための専用コマンドです。mkfs(Make File System:メイク・ファイル・システム)という言葉が語源になっており、非常に多機能なコマンドとして知られています。
Btrfsは「B-tree File System(ビーツリー・ファイルシステム)」の略称で、耐障害性や拡張性に優れた次世代の仕組みです。多くのLinuxディストリビューションで採用が進んでおり、データのバックアップを瞬時にとるスナップショット機能などが特徴です。
2. Btrfsファイルシステムの特徴とメリット
なぜ従来のext4(イーエックスティーフォー)ではなくBtrfsを使うのでしょうか?初心者が知っておくべき主なメリットは以下の通りです。
- スナップショット機能:ある時点のファイルの状態を保存し、後から簡単に復元できます。
- コピーオンライト(CoW):データを上書きする際に、元のデータを残したまま別の場所に新しいデータを書き込む仕組みで、クラッシュ時のデータ破損を防ぎます。
- 柔軟な容量管理:複数のハードディスクを一つの大きな保存領域としてまとめたり、後から簡単に追加・削除したりできます。
- データの自己修復:保存されたデータが壊れていないかチェックし、可能であれば自動的に修復する機能があります。
これらの機能により、Btrfsはデータの安全性(アンゼンセイ)を重視するサーバーや、最新のデスクトップ環境で非常に重宝されています。
3. 事前準備:デバイス名の確認
mkfs.btrfsを実行する前に、どのデバイス(ハードディスクなど)をフォーマットするか正しく把握する必要があります。間違ったデバイスを指定すると、大切なデータが消えてしまうため、慎重に確認しましょう。
まずは、現在接続されているストレージの一覧を表示するlsblk(エルエスビーエルケー)コマンドを使います。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 100G 0 disk
└─sda1 8:1 0 100G 0 part /
sdb 8:16 0 20G 0 disk
この例では、新しく接続した20GBのディスクである「sdb(エスディービー)」を対象にすることにします。実際の環境に合わせて読み替えてください。
4. 基本的なmkfs.btrfsの使い方
もっともシンプルな方法は、デバイス名を指定してコマンドを実行することです。ファイルシステムの作成には管理者権限が必要なため、sudo(スードゥー)を付けて実行します。
ここでは、一般ユーザーがsudoを利用して、新しいパーティションをBtrfsにフォーマットする例を見てみましょう。読み方は「スードゥー・エムケーエフエス・ドット・ビーティーアールエフエス」です。
sudo mkfs.btrfs /dev/sdb
btrfs-progs v6.6.3
See http://btrfs.wiki.kernel.org for more information.
NOTE: several default settings have changed in version 5.15, please make sure
this does not affect your use case.
Label: (null)
UUID: a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6
Node size: 16384
Sector size: 4096
Filesystem size: 20.00GiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 1.00GiB
System: single 8.00MiB
SSD detected: no
Zoned device: no
Incompat features: extref, skinny-metadata, no-holes, free-space-tree, spec-out-of-order-reloc
Runtime features: free-space-tree
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 20.00GiB /dev/sdb
実行結果に「Filesystem size: 20.00GiB」といった詳細が表示されれば、無事にフォーマット完了です。
5. ラベルを指定してフォーマットする方法
作成したファイルシステムに名前(ラベル)を付けることができます。ラベルを付けておくと、複数のドライブを接続した際に管理がしやすくなり、設定ファイルなどでの指定も直感的になります。
ラベルを指定するには-Lオプションを使用します。読み方は「ハイフン・エル・オプション」です。
mkfs.btrfs -L "DATA_DISK" /dev/sdb
btrfs-progs v6.6.3
...
Label: DATA_DISK
UUID: f9e8d7c6-b5a4-3210-9876-543210fedcba
...
このようにルート(root)ユーザーとして実行する場合も、基本は同じです。ラベルが「DATA_DISK」になっていることが確認できますね。ラベルは後から変更することも可能ですが、作成時に決めておくとスムーズです。
6. 複数デバイスをまとめて作成する
Btrfsの強力な機能の一つに、複数のディスクを束ねて一つのファイルシステムにする機能があります。これを「マルチデバイス」構成と呼びます。例えば、2枚のディスクを1つの大きな保存先として扱いたい時に便利です。
コマンドの引数に、対象となる複数のデバイスを並べて記述するだけです。ここでは2つのディスク(sdbとsdc)を一つにまとめる例を紹介します。
mkfs.btrfs /dev/sdb /dev/sdc
btrfs-progs v6.6.3
...
Number of devices: 2
Devices:
ID SIZE PATH
1 20.00GiB /dev/sdb
2 20.00GiB /dev/sdc
これにより、OS側からは一つの大きなBtrfs領域として認識されます。RAID(レイド)構成のようなデータの冗長化もこの段階で設定可能ですが、初心者のうちはまずは一つのデバイスから始めるのがおすすめです。
7. 強制的にフォーマットを実行するオプション
すでに別のファイルシステム(ext4やxfsなど)が書き込まれているデバイスに対してmkfs.btrfsを実行しようとすると、誤操作防止のために警告が出て停止することがあります。もし、中身をすべて消して上書きして良いことが確実な場合は、-fオプションを使用します。
-fは「force(フォース:強制)」の略で、読み方は「ハイフン・エフ」です。このコマンドを実行すると、元のデータには二度とアクセスできなくなるため、非常に注意が必要です。
sudo mkfs.btrfs -f /dev/sdb
btrfs-progs v6.6.3
/dev/sdb appears to contain an existing filesystem (ext4).
Forcing overwrite.
...
既存のファイルシステムが検出されても、強制的にBtrfsとして初期化が進行します。コマンドを実行する前には、必ずデバイス名が正しいか、重要なバックアップは取ってあるかを指差し確認(サシカクニン)してくださいね。
8. フォーマット後のマウント操作
ファイルシステムを作成しただけでは、まだファイルを保存することはできません。Linuxのディレクトリツリーの中に組み込む「マウント(Mount)」という作業が必要です。読み方は主記憶装置(シュキオクソウチ)などと同様にカタカナで「マウント」です。
まずはマウント用のディレクトリ(マウントポイント)を作成し、そこにmountコマンドを使って接続します。今回は /mnt/data という場所に接続してみましょう。
sudo mkdir -p /mnt/data
sudo mount /dev/sdb /mnt/data
df -h /mnt/data
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 20G 1.1M 18G 1% /mnt/data
df -h(ディーエフ・ハイフン・エイチ)コマンドで確認して、指定した場所が表示されていれば成功です。これでBtrfsの高度な機能を利用する準備が整いました。ファイルを自由に読み書きできるようになります。
9. 歴史と背景:なぜBtrfsが開発されたのか
ここで少し雑学を紹介します。Linuxで古くから使われてきたファイルシステムにはext2、ext3、ext4などがありました。これらは非常に安定していますが、ファイルサーバーが巨大化し、テラバイト単位、ペタバイト単位のデータを扱うようになると、管理が難しくなってきました。
そこで、オラクル(Oracle)社を中心に開発が始まったのがBtrfsです。Sun Microsystems社が開発したZFS(ゼットエフエス)という非常に強力なファイルシステムに対抗し、Linux標準のライセンスで同等以上の機能を実現することを目指して作られました。歴史的には2007年頃から開発が始まり、長い時間をかけて安定性を高めてきました。現在ではFacebook(フェイスブック)のサーバーなど、世界中の巨大なシステムでも採用されるほど信頼を得ています。初心者の方にとっても、将来的にLinuxを深く知る上で避けては通れない、とても魅力的な技術と言えるでしょう。
10. mkfs.btrfs利用時の注意点
最後に、Btrfsを使用する上での重要なポイントを整理しておきます。非常に便利な仕組みですが、万能ではありません。
まず、SSD(エスエスディー)を使用している場合、Btrfsは自動的にSSDに最適化された設定を行いますが、非常に古いハードディスクなどでは性能が出にくい場合があります。また、スナップショットを多用しすぎると、ディスクの空き容量が思わぬ勢いで減ってしまうことがあります。見た目上の容量と、実際の物理的な占有量が異なる場合があるため、btrfs filesystem usageという専用の確認コマンドを併用することが推奨されます。
また、RAID5やRAID6といった特定の高度な構成については、まだ開発途上の部分もあるため、初心者のうちは標準的な「シングル構成」や「RAID1(ミラーリング)」での利用を強くおすすめします。正しい知識を持って、安全に次世代のファイルシステムを活用していきましょう。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linux環境における次世代ファイルシステム構築の要となるmkfs.btrfsコマンドの使い方を詳しく解説してきました。Linuxサーバーの運用やデスクトップ環境のカスタマイズにおいて、ストレージの初期化(フォーマット)は避けては通れないステップです。特にBtrfs(ビーティーアールエフエス)は、その柔軟性と堅牢性から、現代のインフラ構築において非常に重要な選択肢となっています。
mkfs.btrfsコマンドの重要ポイント
mkfs.btrfsを活用する上で、以下の主要なポイントをしっかりと押さえておきましょう。これらを理解することで、安全かつ効率的なディスク管理が可能になります。
- デバイスの特定:
lsblkコマンド等で、必ず対象となるデバイス名(/dev/sdbなど)を確認してから実行する。 - 基本構文:
sudo mkfs.btrfs [オプション] [デバイスパス]。管理者権限が必要。 - ラベル設定:
-Lオプションで識別用の名前を付けると、後の運用管理が劇的に楽になる。 - マルチデバイス: 複数のディスクを同時に指定するだけで、簡単に一つの論理領域として統合できる。
- 強制実行: 既に他のファイルシステムが存在する場合は、
-fオプションで上書きを許可する。
Btrfsを選ぶべき理由とメリットの再確認
従来のext4(イーエックスティーフォー)と比較して、Btrfsを導入する最大のメリットは、コピーオンライト(CoW)という仕組みにあります。これにより、データの書き込み中に不意の電源断が発生しても、ファイルシステムが壊れにくいという強力な耐障害性を備えています。 また、スナップショット機能を利用すれば、システムをアップデートする直前の状態を保存しておき、トラブル発生時に一瞬で元に戻すといった、バックアップソフト要らずの運用が可能になります。
実戦で役立つサンプルコマンド集
実際の運用現場で頻繁に使われる、実戦的なコマンド例を改めて整理しておきます。コピー&ペーストして、ご自身の環境に合わせてデバイス名を書き換えて試してみてください。
ケース1:複数のSSDを一つの大きな保存領域として初期化する
# 2本のSSD(sdb, sdc)を一つのBtrfsボリュームにする
sudo mkfs.btrfs -L "BACKUP_STORAGE" /dev/sdb /dev/sdc
ケース2:フォーマット後に自動マウント設定(/etc/fstab)へ追記するための準備
フォーマットが完了したら、UUID(一意の識別番号)を確認して、システム起動時に自動的に接続されるように設定するのが一般的です。
# 作成したBtrfsのUUIDを確認するコマンド
sudo btrfs filesystem show /dev/sdb
Btrfs運用時のベストプラクティス
Btrfsは非常に多機能ですが、その性能を最大限に引き出すためにはいくつかの注意点があります。
第一に、メタデータの冗長化です。デフォルトでもmkfs.btrfsを実行すると、重要な管理データ(メタデータ)は「DUP(二重化)」されて保存されます。これにより、ディスクの一部に不良セクタが発生しても、ファイルシステム自体が壊れるリスクを低減しています。
第二に、容量監視です。Btrfsは内部的に複雑な管理を行っているため、一般的なdfコマンドだけでは正確な空き容量を把握しにくい場合があります。運用時は必ずbtrfs filesystem usageコマンドを使い、物理的な残量を確認する癖をつけましょう。
さらなる学習に向けて
mkfs.btrfsはあくまでスタート地点です。このコマンドで土台を作った後は、サブボリュームの作成、透過圧縮機能の有効化、クォータ(容量制限)の設定など、Btrfsならではの高度な機能があなたを待っています。Linuxのファイルシステムについて深く学ぶことは、エンジニアとしてのスキルを大きく引き上げるだけでなく、データ損失のリスクから大切な情報を守る強力な武器となります。
公式ドキュメントやWikiも活用しながら、ぜひ自分だけの最適なストレージ環境を構築してみてください。
生徒
「先生、まとめまで読んでみて、mkfs.btrfs(エムケーエフエス・ドット・ビーティーアールエフエス)がただの初期化コマンドじゃないことがよく分かりました!複数のハードディスクを一つにまとめるのも、こんなに簡単にできるんですね。」
先生
「その通りです。昔はRAIDを組むために複雑な設定が必要でしたが、Btrfsならmkfs.btrfsの後にデバイスを並べるだけですからね。次世代と言われる理由がそこにあるんです。」
生徒
「でも、やっぱり-f(ハイフン・エフ)オプションを使うときは、手が震えそうです。一瞬でデータが消えちゃうわけですよね?」
先生
「ははは、その慎重さは大切ですよ。エンジニアにとって『Enterキーを押す前の確認』は一番の基本です。必ずlsblkで、対象が本当に正しいか確認する癖をつけてください。特に、SSDかHDDかによっても挙動が変わることがありますから。」
生徒
「確認しました!あと、ラベルを付ける-L(ハイフン・エル)も、後で自分が混乱しないために必須のテクニックだと思いました。さっそく、検証用の環境でフォーマットの練習をしてみます!」
先生
「いい意気込みですね。実際にコマンドを打って、mount(マウント)して、ファイルが保存できる喜びを味わってみてください。それがLinuxマスターへの第一歩ですよ。頑張ってくださいね!」