クラウド関連技術ブログ

Btrfsでバックアップ その1

投稿日:2014/08/24カテゴリー:

こんにちは。松本です。

今回から、Btrfsについて書いていきます。

まずは、その1として、Btrfsがどういうものなのかをご紹介します。
最終回では、Btrfsを使ったバックアップについて、実際に業務で利用できる話を書きたいと思います。

Btrfsは、Linuxで使えるファイルシステムの一つで、”バターエフエス”又は"ベターエフエス"と読みます。

比較的、若いファイルシステムですが、ヨーロッパで大きなシェアを持つ SUSE Enterprise Linux では正式にサポートしています。
また、Red Hat Enterprise Linux 7でもサポートされています。

古いkernelを使っている場合は、Btrfsはあまり安定していません。
出来るだけ新しいkernelで使うことをお勧めします。

私の自宅では数年間、Btrfsを使っています。
大小様々なデータを読み書きしていますが、特にトラブルはありません。
それは運が良かっただけかもしれません。
こんなスライドもあります。

#kernelvm @naota344 バージョン別BtrFSのころしかた

一方、Btrfs Wiki の Stability status ではこのように書かれています。


The filesystem disk format is no longer unstable, and it's not expected to change unless there are strong reasons to do so. If there is a format change, file systems with a unchanged format will continue to be mountable and usable by newer kernels.

The Btrfs code base is under heavy development. Every effort is being made to keep it stable and fast. Due to the fast development speed, the state of development of the filesystem improves noticeably with every new Linux version, so it's recommended to run the most modern kernel possible.

For benchmarks, it's recommended to test the latest stable Linux version, and not any older. If possible, it's also recommendable to test the latest Linux development version. Also, it's recommended to test the different options, f.e. different compression options.

Newly added features may need a few releases to stabilize.


決して、安定していて絶対大丈夫だというわけではありません。
しかしそれは、ext4やxfsを使っていても同じです。

それでは、Btrfsの特徴を整理します。

  1. CoW (Copy On Write)
    Btrfsでは、後述するスナップショットにこの機能を使っています。
    ファイルをコピーした際、ポインタのみ複製します。
    ファイルに変更が行われると、インターバルで設定された時間(デフォルトは30秒)が経過した後、書き込みを行います。

    CoWが有効な状態で、大きなサイズのファイルに小さなサイズのランダムな書き込みを行う場合は、パフォーマンスが悪いようです。
    その場合は、予めマウントオプションに"nodatacow"を指定するか、"chattr +C ファイル名又はフォルダ名"というコマンドを使うことで、CoWを無効に出来ます。
    "chattr +C"は、既にデータブロックが存在するファイルに対して使わずに、新しい又は空のファイルに使うようにします。
    既にデータブロックが存在するファイルに使用すると、ファイルに新しいブロックが割り当てられた時に状態がリセットされ、CoWが有効な状態に戻ります。
    また、このコマンドをディレクトリに使用すると、そのディレクトリ配下の新規ファイルに'C'フラグが適用され、CoWが無効なファイルが出来ます。
    ※参考:Btrfs(日本語) -ArchWiki
     
  2. サブボリューム
    Btrfsでは、一見、ディレクトリのように見えるサブボリュームという機能があります。
    サブボリュームは、簡単に表すとファイルシステムを分割したものです。
    スナップショット機能を使いたい場合、その領域はサブボリュームである必要があります。
     
  3. マルチデバイスのサポート
    複数のデバイスをファイルシステムに組み込むことが出来ます。
    用途としては、容量を増したり、RAIDによる冗長化が考えられます。
    デバイスの組み込みはオンラインで可能です。(物理ディスクをオンラインで増設出来るかについては、使用するハードウェアの仕様によります。)
     
  4. RAID機能
    RAID0, RAID1, RAID10, RAID5, RAID6 をサポートしています。
    ただし、RAID5とRAID6はまだ開発中の機能ですので、テスト目的以外では使用しない方が良いです。
    マルチデバイスと組み合わせることで、RAID0, RAID1, RAID10 を使うことができます。
     
  5. オンラインデフラグのサポート
    パフォーマンスを向上させるため、デフラグを行うことが出来ます。
    古いkernelでは、スナップショットを含むボリュームに対して使用すると、元のボリュームとスナップショット間のリンクが切れてしまいます。
    kernel3.9以降で、この問題が解決したようです。
    ※参考:Btrfs Wiki Changelog
     
  6. 圧縮機能
    ZLIB又はLZO形式での圧縮をサポートしています。
    ファイルシステム内のすべてのファイルを自動で圧縮出来ます。
    LZOを使うことで、圧縮のスピードが早くなりますので、基本的にZLIBよりLZOをお勧めします。
    また、LZ4やSnappyへの対応も進んでいます。
     
  7. ext3/4からの変換
    既存のext3やext4のパーティションをBtrfsに変換することが出来ます。
    また、元のext3やext4に戻すことも出来ます。
     
  8. SSDへの対応
    TRIMに対応し、SSDに最適化するためのマウントアプションがあります。
     
  9. スナップショット
    書き込み可能、又は読み込み専用のスナップショットを作成することが出来ます。
    また、2つのスナップショット間の差分を出力(ストリーミング)することが出来ます。
    これは、インクリメンタルバックアップとして利用することが出来ます。

このように、すばらしい機能が提供されているのに、使わずにいるのは勿体無いですね。
ファイルシステムは沢山の種類がありますが、それぞれの特徴を理解して、システムに最適なものを選択したいものです。

次回は、Btrfsの使い方と基本的なスナップショットの取り方について掲載しようと思いますので、宜しくお願いします。

CONTACT

tel 092-986-2772
10:00〜17:00(土・日・祝日除く)
お問い合わせフォーム
page top