twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux Jp チュートリアル LinuxにおけるBtrfsのストレージプール、サブボリュームとスナップショットの管理方法 (パート 1)

LinuxにおけるBtrfsのストレージプール、サブボリュームとスナップショットの管理方法 (パート 1)

原文へのリンクはこちらです。

  最初に、Btrfs の読み方は何でしょうか。いくつかあります。たとえば、ビー・ツリー FS やビー・ティー・アール FS などです。私は、バター FS が好きです。みんなバターが好きですよね。2 部に分かれたこのシリーズでは、3 ノードの Btrfs ストレージ プールを構築し、スナップショット、ロールバック、サブボリュームについて学びます。パート 1 では、Btrfs のインストール、テスト環境の構築、ストレージ ボリュームの構築、中身の確認のためのコマンドを学びます。パート 2 では、サブボリューム、スナップショット、ロールバックの作成、管理を勉強します。

Btrfs  が提供する利点
Btrfs は、次世代の Linux ファイルシステムです。最大限のデータ保護や大容量に適したスケーラビリティを実現する先進的な機能があふれています。たとえば、コピーオンライト、ストレージプール、チェックサム、16Exa バイトのファイルシステム、ジャーナリング、オンライン拡張と縮小、そして効率的な動的スナップショットを備えています。いま、データ ストレージの管理に LVM と RAID を使用しているのであれば、Btrfs は次世代の良い候補です。

スナップショットは、Btrfs のサブボリュームの特定の瞬間のコピーです。従来のバックアップより何倍も高速で、ダウンタイムもありません。必要な時にスナップショットをとることができ、どの時点のスナップショットへも戻すことができます。

事前準備
Btrfs を使用するために、最新の Debian、Arch Linux、Ubunt、OpenSUSE、SUSE Enterprise、Red Hat Enterprise、Fedora のいずれかのディストリビューション、新しいハードディスクまたは 50G 程度の空き容量があるハードディスクが必要です。これらのディストリビューションのカーネルは Btrfs をサポートしています (確認のために、"cat /proc/filesystems"を実行してください)。あとは、ユーザー空間で動くツールの btrfs-progs (Debian、Ubuntu、Mint、などでは btrfs-tools) をインストールするだけです。

 Btrfs に関する文書だけでなく、コマンドの出力にも、「まだ、製品システムに使えません、重要なデータの管理に使用しないでください」という警告がたくさん見られます。しかし、SUSE Enterprise Linux の人々の主張は正反対です。SLES 11 SP2 から製品システム用にサポートしています。私は OpenSUSE、Ubuntu の上で動かしていますが、問題は出ていません。いつも言われることですが、使用方法はそれぞれ異なるため、自分でテストするしかありません。テストと学習は自由ですから、始めましょう。

Btrfs ストレージ プールの作成
最初に、簡単なテスト環境として、3 つの同サイズのパーティションを作成します。この作業を行うための GUI の良いツールとして Gparted があります。Gparted を使うと、パーティション設定とファイルシステム作成が同時に行えます (図 1)。Btrfs 文書によれば、最低 1GB のパーティションが必要です。ここでは、12GB のパーティションを作成しました。私は、空の 150GB SATA ハード ディスクをこのために用意しました (/dev/sdd と表示されています)。なぜなら、ファイルシステム テスト用のハード ドライブを別に用意することにより、少し安心して作業できるからです。もちろん、容量に余裕があれば、PC 上のハードディスクを利用できます。Btrfs 実験には 50G あれば充分です。その場合、ルート ファイルシステムやデータを破壊しないように注意してください。

fig-1-gparted

 3 つの Btrfs パーティションが準備できたところで、mkfs.btrfs コマンドを使って、これらをひとつの Btrfs ストレージ プールにします。

# mkfs.btrfs -f -L testbtrfs  /dev/sdd1 /dev/sdd2 /dev/sdd3
WARNING! - Btrfs v0.20-rc1 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
adding device /dev/sdd2 id 2
adding device /dev/sdd3 id 3
fs created label testbtrfs on /dev/sdd1
        nodesize 4096 leafsize 4096 sectorsize 4096 size 35.16GB
Btrfs v0.20-rc1

  -f オプションは、既存ファイルシステムへの強制書き込みを意味します。-L オプションで、ファイルシステムのラベルを指定します。ラベルは、好きな名称を指定できます。他オプションを指定しないと、3 つのノードを持つ RAID アレイを作成します。データ用に RAID0、メタデータ用に RAID1 を使用します。Btrfs が使用する RAID は、従来の RAID とは異なります。Btrfs RAID0 は冗長性を持たず、データを使用可能なデバイスすべてにストライプします。また RAID1 は、データがペアになるように使用可能な全デバイスにラウンドロビン形式でミラーします。従って、メタデータのコピーは常に 2 つ存在します。これは、ストレージ プール内のデバイスの数には関係ありません。

パーティションと UUID のチェック
従来からある blkid コマンドを使って、新しく作成した Btrfs ファイルシステム (この例では UUID を簡略化している) を見ることができます。

# blkid  /dev/sdd* 
/dev/sdd: UUID="e9b11649" UUID_SUB="af7ce22c" TYPE="btrfs" 
/dev/sdd1: LABEL="testbtrfs" UUID="b6a05243" UUID_SUB="4770cbfb" TYPE="btrfs" 
/dev/sdd2: LABEL="testbtrfs" UUID="b6a05243" UUID_SUB="b4524e3d" TYPE="btrfs" 
/dev/sdd3: LABEL="testbtrfs" UUID="b6a05243" UUID_SUB="7e279107" TYPE="btrfs"

Btrfs ストレージ ボリュームのマウント

 3 つのパーティションの UUID が同じであることに注意してください。UUID_SUB は個別に設定されています。ストレージ プールの作成前に blkid コマンドを実行しても、UUID は同じです。テスト用に /btrfs というディレクトリを作成します。これで、誤って重要なデータを消してしまうことがありません。どれか 1 つのデバイスをマウントします。

# mkdir /btrfs
# mount /dev/sdd3 /btrfs

他のファイルシステムをマウントする時と同様に、/etc/fstab に設定できます。ラベルか UUID (UUID_SUBではない) を指定します。

LABEL=testbtrfs  /btrfs  btrfs  defaults  0 0
UUID=b6a05243  /btrfs  btrfs  defaults  0 0

RAIDレベルの確認

btrfs コマンドで、RAID レベルを確認します。

# btrfs filesystem df /btrfs
Data, RAID0: total=3.00GB, used=0.00
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=4.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=1.00GB, used=24.00KB
Metadata: total=8.00MB, used=0.00

使用可能容量の確認
btrfs ファイルシステムの使用済、使用可能な容量を du と df コマンドを使って測ることはできません。なぜなら、du や df コマンドは、Btrfs のメタデータ、RAID、管理方法を知らないからです。BtrfsのFAQ「空容量の測定」に書かれている方法は、この意味でトリッキーです。7GBのデータをコピーしたあとの、btrfs コマンドの実行結果です。

# btrfs filesystem df btrfs/
Data, RAID0: total=9.00GB, used=6.90GB
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=4.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=1.00GB, used=46.01MB
Metadata: total=8.00MB, used=0.00

 RAW デバイスに対して同じコマンドを実行することもできます。

# btrfs filesystem show /dev/sdd1
failed to open /dev/sr0: No medium found
Label: 'testbtrfs'  uuid: b6a05243
        Total devices 3 FS bytes used 6.95GB
        devid    3 size 11.72GB used 4.01GB path /dev/sdd3
        devid    2 size 11.72GB used 3.01GB path /dev/sdd2
        devid    1 size 11.72GB used 4.02GB path /dev/sdd1

これで、実験用の Btrfs ストレージ プールの作成と状態を見るための方法が分かりました。パート 2 では、スナップショットとサブボリュームの作成、削除、管理について学びます。

Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ

  1. Today's Linux 2017/10/11 2017年 10月 10日
  2. Today's Linux 2017/10/13 2017年 10月 12日
  3. Today's Linux 2017/10/12 2017年 10月 11日
  4. Today's Linux 2017/10/16 2017年 10月 15日
  5. Today's Linux 2017/10/17 2017年 10月 16日

Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!