Btrfs (日本語)

From ArchWiki
Revision as of 14:55, 10 January 2013 by Kusakata (Talk | contribs) (Created page with "Category:File systems (日本語) en:Btrfs zh-CN:Btrfs {{Article summary start|概要}} {{Article summary text|Btrfs の概要と Arch Linux でのセットアッ...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end

Btrfs は Linux 用の新しいコピーオンライト (COW) のファイルシステムであり、高度な機能を実装することを目指しつつ、障害耐性を持ち簡単に管理することにフォーカスしています。Btrfs は Oracle, Red Hat, Fujitsu, Intel, SUSE やその他多くの人々によって共同で開発されており GPL でライセンスされ誰でも貢献できるように開かれています。

最近の開発状況とニュースのリンク

インストール

Btrfs のサポートは linux (モジュールとして)パッケージに含まれています。ユーザースペースのユーティリティは btrfs-progs で利用可能です。

マルチデバイスのサポート (btrfs の機能である RAID)、起動の初期段階での btrfs ボリューム のために、(mkinitcpio パッケージによって提供される) btrfs mkinitcpio フックを有効にして、例えば、root btrfs ボリュームを使えるようにする必要があります。 btrfs ボリュームがノンシステムボリュームの場合は、必要なのは /etc/rc.conf で USEBTRFS="yes" を設定するだけです。

しかし、抜き身の btrfs パーティションを使うだけならば、そのようなオプションは必要ありません。

より多くのオプションや機能を使うために、AUR から mkinitcpio-btrfsAUR をインストールすることも可能です。このパッケージでは自動ロールバック機能が欲しい人のために btrfs_advanced という mkinitcpio フックがインストールされます。

Btrfs パーティションを作成する

Btrfs のための新しいパーティションをフォーマットする

# mkfs.btrfs [options] dev [dev ...]

複数のデバイスを選択することで RAID を作ることができます。サポートしている RAID レベルには RAID 0, RAID 1, RAID 10 があります。デフォルトでは、メタデータがミラーされデータは省かれます。

Ext3/4 を Btrfs に変換する

Warning: GRUB Legacy は root として btrfs を起動できません。GRUBSyslinux をインストールする必要があります。このガイドではユーザーがこのことを既に知っていると仮定しています。
  1. ライブ CD を起動します (例: Arch)
  2. [remote-core] と [remote-testing] を有効にします
  3. ネットワークをセットアップします
  4. modprobe btrfs
  5. btrfs-progs をインストールします (依存ライブラリのバージョンが適合するように気をつけて下さい: glibc, e2fsprogs)
  6. btrfs-convert を実行します
  7. 変換するパーティションをマウントし /etc/fstab を編集してパーティションタイプにより autobtrfs を指定します。
  8. システムに Chroot して GRUB エントリをリビルドします (よくわからない場合は Install from Existing LinuxGRUB を見て下さい)。

btrfs-convert した後、全てが問題ないか確認してください。変更を適用するには、保存されたイメージを削除し、イメージがあるサブボリュームを削除し、スペースを回復するためにドライブを調整してください。例えば、/home を btrfs に変換した後:

rm /home/ext2_saved/*
btrfs subvolume delete /home/ext2_saved

Btrfs の機能

コピーオンライト (CoW)

CoW にはアドバンテージがありますが、random write が少ない大きなファイルを扱うときのパフォーマンスについてはあまり良い影響を与えません。データベースファイルや仮想マシンメージについては CoW を無効化することが推奨されます。 "nodatacow" オプションを使ってマウントすることで全てのブロックデバイスで CoW を無効にできます。しかしながら、これではファイルシステム全体で CoW を無効にすることにはなりません。 ファイルやディレクトリ単体で CoW を無効化するには、次のコマンドを使って下さい:

# chattr +C [file/directory path]

chattr man ページより: btrfs では、新しい、または空のファイルには 'C' フラグがセットされます。既にデータブロックを持つファイルにフラグが設定してある場合、ファイルに対応したブロックが完全に安定状態の時にフラグの定義が消されます。ディレクトリに 'C' フラグがセットされている場合、そのディレクトリ自体には影響がなく、ディレクトリに作成された新しいファイルに No_COW 属性が付けられます。

マルチデバイスファイルシステムと RAID 機能

マルチデバイスファイルシステム

btrfs ファイルシステムを作成する際に、mkfs.btrfs したい分だけのパーティション・デバイスを指定することができます。ファイルシステムは指定された全てのデバイスにわたって作成されます。このように"マージ"することによって、複数のパーティションやデバイスを大きな btrfs ファイルシステムにできるのです。

また、既に存在している btrfs ファイルシステムからデバイスを追加・削除することも可能です(用心が必要ですが)。

(btrfs ボリュームとも呼ばれる)マルチデバイス btrfs ファイルシステムを確認するには次を実行します:

 # btrfs device scan

btrfs mkinitcpio フックや /etc/rc.conf の USEBTRFS 変数を設定するときに使って下さい。

RAID 機能

マルチデバイスファイルシステムを作成するとき、ファイルシステムに追加したデバイス全体で RAID0, RAID1, RAID10 を使うように指定することもできます。

サブボリューム

btrfs の機能のひとつにサブボリュームがあります。サブボリュームは基本的にファイルとディレクトリを保持している名前の付いた b 木です。root ツリーのツリーの中に inode を持ち、root 以外の所有者やグループも設定できます。サブボリュームは任意でブロックを割り当てることもできます。ブロックとファイルエクステントの全ては参照カウントでありスナップショットを可能にしています。仮想マシンの動的な容量拡張に似て、必要な時に必要な分だけのデバイス上の容量を使います。また、サブボリュームを異なったマウントオプションを使ってマウントすることでセキュリティの柔軟性を持たせることもできます。

サブボリュームを作成するには:

# btrfs subvolume create [<dest>/]

柔軟性を向上させるために、あなたのシステムを指定したサブボリュームにインストールするには、カーネルブートパラメータに以下を加えて下さい:

rootflags=subvol=<whatever you called the subvol>

これでシステムロールバックも可能になります。

root パーティションで使う場合、/etc/mkinitcpio.confbtrfs を HOOKS に加えるだけでなく crc32c (または Intel のマシン用の crc32c-intel) をモジュールに加えるのが推奨されます。

スナップショット

スナップショットを作成するには:

# btrfs subvolume snapshot <source> [<dest>/]<name>

スナップショットは再帰的ではありません、つまりサブボリューム内にある全てのサブボリュームはスナップショットでは空のディレクトリになります。

デフラグメンテーション

Btrfs はオンラインデフラグをサポートしています。root フォルダのメタデータをデフラグするには、次を実行してください:

# btrfs filesystem defragment /

上のコマンドはシステム全体のデフラグを行いません。詳しくは、btrfs wiki のこのページを見て下さい。 システム全体すべてをデフラグするには、次を実行してください:

# find / -xdev -type f -print -exec btrfs filesystem defrag '{}' \;

圧縮

Btrfs は透過圧縮をサポートしています、これはパーティション上の全てのファイルが自動的に圧縮されることを意味します。このことはファイルの容量を減らすだけでなく、特にlzo アルゴリズムを使っている場合はパフォーマンスを向上させることもできます。圧縮は compress=gzipcompress=lzo マウントオプションを使って有効にします。マウントオプションが追加された後に作成・変更されたファイルだけに圧縮が適用されるので、圧縮の効果を完全に享受するにはインストール中に有効にして下さい。ドライブの準備をした後、他のターミナルに切り替えて (Template:Keypress)、次のコマンドを実行してください:

# mount -o remount,compress=lzo /dev/sdXY /mnt/target

インストールが完了した後に、/etc/fstab の root ファイルシステムのマウントオプションに compress=lzo を加えて下さい。

資料