GNU/Linux >> Linux の 問題 >  >> Linux

Linux用のbtrfsの使用を開始する

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
  1. 相互運用性のためのSambaの使用開始

  2. LinuxでSSHを使い始める

  3. 組み込み Linux 用の破損防止 SD カード ファイルシステム?

  1. Linuxファイアウォールの使用を開始する

  2. Linuxサーバーのセキュリティを開始するための5つのヒント

  3. Linux用の多目的リレーツールであるsocatの使用を開始する

  1. GNOMEを使い始めるためのアドバイス

  2. GNOMELinuxデスクトップの使用を開始する

  3. LinuxでPostgreSQLを使い始める