[Linux] Save disk space on Linux by cloning files on Btrfs and OCFS2

Btrfs と OCFS2 という2種類の非常に先進的なLinux向けのファイルシステムがあります。Btrfsは、次世代のLinuxローカルファイルシステムで、数多くの優れた機能(スナップショット、サブボリューム、動的なサイズ変更、組み込みRAID機能など)を持ち合わせています。対するOCFS2は、複数のマシン間で共有できるクラスタファイルシステムにとって、理想的な選択肢です(もちろんローカルストレージに使うこともできます)。

BTRFS (B-tree file system)
https://btrfs.wiki.kernel.org/

OCFS2(Oracle Cluster File System for Linux)
http://www.oracle.com/us/technologies/linux/025995.htm

BtrfsとOCFS2の両方に共通する機能、それはファイルの"軽量"コピー("スナップショット"または"クローン")を作成できる、ということです。

この場合、ファイルシステムは、既存のiノードへの新しいリンクを作成せず、元のファイルと同じディスクブロックを共有する新しいiノードを作成します。これは、同じファイルシステムまたはサブボリュームの境界内でのみこの操作が有効であることを意味します。結果、ソースファイルのコピーによく似ていますが、実際のデータブロックは複製されないのです。コピーオンライト(copy-on-write:書き換え時にコピー)の特性のため、ファイルへの変更が他のファイルに影響しません。これはハードリンクと混同しないように注意してください。 ハードリンク、シンボリックリンク等の違いは以下のページで、わかりやすく説明されています。

symlinks, hardlinks and reflinks explained
http://www.pixelbeat.org/docs/unix_links.html

Btrfsの場合、cp(1) ユーティリティに --reflink オプションを付けるとこの機能を実行することができます。(これは2009年8月にリリースされたGNU coreutil version 7.5で追加されました)。
cp --reflink <source file> <destination file>
cpにOCFS2のreflink実装のサポートを追加する件は現在対応中のようです。現時点では、こちらのページから別のreflinkのバイナリをダウンロードしてインストールする必要があります。ln (1)ユーティリティのように動作します。

Re: cp/reflink support for OCFS2
http://lists.gnu.org/archive/html/coreutils/2011-08/msg00057.html
ref-link tools
http://oss.oracle.com/~smushran/reflink-tools/
reflink <source file> <destination file>
Wimは、しばらく前のブログ記事で詳細にOCFS2 reflinkを紹介していますが、弊社のWikiにもOCFS2の別の例があります。

OCFS2 reflink (Wim Coekaerts Blog)
https://blogs.oracle.com/wim/entry/ocfs2_reflink

OCFS2 / Reflink-Illustrated (osswiki)
http://oss.oracle.com/osswiki/OCFS2/Reflink-Illustrated

こうした類のファイルの複製により、ディスクスペースを節約し、実際にファイル全体をコピーするよりもはるかに速くコピー操作を実行することができます。あなたがお互いに、ほとんどが違いがない非常に大きなファイル(例えば仮想マシンのディスクイメージ)をコピーする必要がある場合、これは非常に便利です。この場合、ディスクスペースの節約は非常に重要になります!


原文はこちら。
http://blogs.oracle.com/OTNGarage/entry/save_disk_space_on_linux

0 件のコメント:

コメントを投稿