BtrfsはLinuxで数年前から利用可能であるため、すでにご存知かもしれません。そうでない場合、特にFedora Workstationを使用している場合は、それについて質問があるかもしれません(Btrfsがデフォルトのファイルシステムになりました)。この記事は、コピーオンライトやチェックサムなどの高度な機能を理解するのに役立つことを目的としています。
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
B-Tree Filesystemの略であるBtrfsは、実際にはファイルシステムとボリュームマネージャーを1つにまとめたものです。これは、2005年にSunMicrosystemのSolarisOSで導入されたZFSへの応答と見なされることが多く、現在はOpenZFSと呼ばれるオープンソースの実装に大部分が置き換えられています。 Ubuntu LinuxとFreeBSDは、多くの場合OpenZFSを備えています。同様の機能を備えた他の例は、RedHatのStratisとLinuxLogical Volume Manager(LVM)です。
Btrfsを試すために、Fedora 33ワークステーションISOファイルをダウンロードして、新しい仮想マシン(VM)にインストールしました。インストールプロセスは以前のバージョンから変更されていません。このチュートリアルの正確な「すぐに使える」セットアップを維持するために、ドライブのパーティション分割やフォーマットなどの設定はカスタマイズしませんでした。 VMが起動して実行されたら、GNOME Partition Editor(GParted)をインストールして実行し、ドライブレイアウトの工場出荷時の状態を確認しました。
この時点から、これまでと大差ありません。実際、システムは正常に使用でき、ファイルシステムがBtrfsであることに気付かない場合もあります。ただし、この新しいデフォルトを使用すると、いくつかの優れた機能を活用できます。
Btrfsファイルシステムを調べます
一部の機能は既存のディスク管理ツールに組み込まれていますが、Btrfs固有のグラフィカルツールについては知りません。
コマンドラインから、Btrfs形式を詳しく見ることができます:
#btrfs filesystem showを使用
Label:'fedora_localhost-live' uuid:f2bb02f9-5c41-4c91-8eae-827a801ee58a
使用されたデバイスの合計1FSバイト6.36GiB
devid1サイズ10.41Gi 8.02GiBパス/dev/ vda3
Btrfsラベルを変更する
私が最初に気付いたのは、インストーラーによって設定されたファイルシステムラベルです:fedora_localhost-live
。これは、インストールされたシステムであり、ライブCDではなくなったため、不正確です。そこで、btrfs filesystem label
を使用して変更しました コマンド。
Btrfsファイルシステムラベルの変更は簡単です:
#btrfsファイルシステムラベル/
fedora_localhost-live
#btrfsファイルシステムラベル/ fedora33workstation
#btrfsファイルシステムラベル/
fedora33workstation
Btrfsサブボリュームを管理する
サブボリュームは、Btrfsで管理できる標準ディレクトリのようです。私の新しいFedora33ワークステーションにはいくつかのサブボリュームがあります:
#btrfsサブボリュームリスト/
ID 256gen2458トップレベル5パスホーム
ID258gen2461トップレベル5パスルート
ID265gen1593トップレベル258パスvar/lib /マシン
btrfs subvolume create
を使用して新しいサブボリュームを作成します コマンドを実行するか、btrfs subvolume delete
を使用してサブボリュームを削除します :
#btrfs subvolume create / opt / foo
Create subvolume'/ opt / foo'
#btrfs subvolume list /
ID 256gen2884トップレベル5パスホーム
ID 258gen2888トップレベル5パスルート
ID265gen1593トップレベル258パスvar/lib / machine
ID 276gen2888トップレベル258パスopt/foo
#btrfs subvolume delete / opt / foo
サブボリュームの削除(コミットなし):'/ opt / foo'
サブボリュームを使用すると、クォータの設定、スナップショットの作成、他の場所やホストへの複製などのアクションを実行できます。システム管理者はこれらの機能をどのように利用できますか?ユーザーのホームディレクトリはどうですか?
昔からそうであったように、新しいユーザーアカウントを追加すると、そのアカウントが使用するホームディレクトリが作成されます。
#useradd student1
#getent passwd student1
student1:x:1006:1006 ::/ home / student1:/ bin / bash
#ls -l / home
drwx------。 1人の学生1人の学生18010月29日00:21人の学生1
従来、ユーザーのホームディレクトリは/home
のサブディレクトリです。 。所有権と特権は所有者に合わせて調整されますが、それらを管理するための特別な機能はありません。エンタープライズサーバー環境は別のシナリオです。多くの場合、ディレクトリは特定のアプリケーションとそのユーザーが使用するために予約されています。 Btrfsを利用して、これらのディレクトリに制約を管理および適用できます。
Btrfsサブボリュームをユーザーホームとして収容するために、useradd
に新しいオプションがあります。 コマンド:--btrfs-subvolume-home
。マニュアルページは(この記事の執筆時点では)更新されていませんが、useradd --help
を実行するとオプションを確認できます。 。新しいユーザーを追加するときにこのオプションを渡すと、新しいBtrfsサブボリュームが作成されます。 -d
と同じように機能します オプションは通常のディレクトリを作成するために行います:
#useradd --btrfs-subvolume-homestudent2
サブボリューム'/home /student2'を作成します
getent passwd student2
でユーザーを確認します 、正常に表示されます。ただし、btrfs subvolume
を実行します サブボリュームを一覧表示するコマンドを実行すると、新しいユーザーのホームディレクトリという興味深いものが表示されます。
#btrfsサブボリュームリスト/
ID 256gen2458トップレベル5パスホーム
ID258gen2461トップレベル5パスルート
ID265gen1593トップレベル258パスvar/lib /マシン
ID272gen2459トップレベル256パスホーム/学生2
エンタープライズサーバー環境の2番目のシナリオを調べます。 /opt
にWildFlyサーバーをインストールする必要があるとします。 JavaWebアプリケーションをデプロイします。多くの場合、最初のステップはwildfly
を作成することです ユーザー。新しい--btrfs-subvolume-home
を使用してこれを行います オプションと-b
/opt
を指定するオプション ベースディレクトリとして:
#useradd -b / opt --btrfs-subvolume-homewildfly
サブボリューム'/opt /wildfly'を作成します
さて、wildfly
ユーザーはログインして、/opt/wildfly
でインストールを完了することができます 。
ユーザーを削除するときに、そのユーザーのファイルとホームディレクトリを同時に削除したい場合があります。 userdel
コマンドには-r
があります このためのオプションであり、Btrfsサブボリュームも削除します:
#userdel -r student2
サブボリュームの削除(コミット):'/ home / student2'
私のコンピュータサイエンスのクラスの1つで、学生が制御不能になったCプログラムを実行し、/home
全体までディスクに書き込みました。 部門のUnixシステムでいっぱいになりました!管理者が暴走したプロセスを強制終了し、スペースを空けるまで、サーバーは使用できなくなりました。上記のシナリオについても同じことが言えます。そのWildflyエンタープライズアプリケーションには、ユーザー用のログファイルとコンテンツストアの数が増えます。ディスクがいっぱいになったためにサーバーが停止するのを防ぐにはどうすればよいですか?ディスク使用量の制約を設定することをお勧めします。幸い、Btrfsはクォータによってこれをサポートしています。
クォータを構成するには、いくつかの手順が必要です。最初のステップは、quota
を有効にすることです Btrfsファイルシステム:
# btrfs quota enable /
btrfs subvolume list
によって表示される各サブボリュームのクォータグループ(qgroup)ID番号を知っていることを確認してください 指図。各サブボリュームには、ID番号に基づいて関連付けられたqgroupが必要です。これは、btrfs qgroup create
を使用して個別に実行できます。 、ただし、便利なことに、Btrfs wikiには、ファイルシステム上のサブボリュームのqgroupの作成を迅速化するための次のコマンドが用意されています。
>btrfs subvolume list \<path> | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup destroy 0/{} \<path>
新しくインストールしたFedora33ワークステーションシステムでは、ルートファイルシステムパス/
で操作しています。 。 \<path>
に置き換えます ルートパスを使用:
# btrfs subvolume list / | cut -d' ' -f2 | xargs -I{} -n1 btrfs qgroup create 0/{} /
次に、btrfs quota rescan
を実行します 新しいqgroupsを見てください:
#btrfsquota再スキャン/
quota再スキャン開始
#btrfs qgroup show /
qgroupid rfer excl
-------- ---- --- -
0/5 16.00KiB 16.00KiB
0/256 272.04MiB 272.04MiB
0/258 6.08GiB 6.08GiB
0/265 / 271 16.00KiB 16.00KiB
0/273 16.00KiB 16.00KiB
これで、qgroupの1つにクォータを割り当てることができ、qgroupは関連するサブボリュームに適用されます。したがって、student3のホームディレクトリの使用を1 GBに制限する場合は、btrfs qgroup limit
を使用します。 コマンド:
# btrfs qgroup limit 1G /home/student3
特定のサブボリュームの割り当てを確認します:
#btrfs qgroup show -reF / home / student3
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- -------- --------
0/271 16.00KiB16.00KiB1.00GiBなし
わずかに異なるオプションでは、設定されているすべてのqgroupとクォータが表示されます。
#btrfs qgroup show -re /
qgroupid rfer excl max_rfer max_excl
-------- ---- ---- --- -----
0/5 16.00KiB 16.00KiB none
0/256 272.04MiB /> 272.04MiB 0 / G 8 /> none
0/271 16.00KiB 16.00KiB 16. i 00その他の機能 これらの例は、Btrfsの機能のいくつかのアイデアを提供します。
btrfs --help
を実行します コマンドの完全なリストを表示します。他にも多くの注目すべき機能があります。たとえば、スナップショットと送受信は2つの価値があります。最終的な考え Btrfsは、Linuxに高度なファイルシステム機能セットを提供するための多くの可能性を提供します。それは最初ではありませんでした。約15年前にこのタイプのファイルシステムを導入したことでZFSの功績を認めていますが、Btrfsは完全にオープンソースであり、特許に邪魔されていません。
このファイルシステムを調べたい場合は、仮想マシンまたはスペアシステムから始めることをお勧めします。
GUIの世界で操作したいシステム管理者向けに作成されたグラフィカル管理ユーティリティをいくつか見てみたいと思います。幸い、Btrfsには強力な開発活動があります。これは、FedoraプロジェクトがWorkstation33でデフォルトにすることを決定したことからも明らかです。
Linux