nkjmkzk.net

powered by Kazuki Nakajima

Unbreakable Enterprise Kernelを使おう – OCFS2 1.6 reflink編

Unbreakable Enterprise KernelではOCFS2の最新バージョン、1.6がサポートされます。この日をどれだけ待ちわびたかことか。

OCFS2 1.6の何が良いのか? それは何と言っても「reflink」です。reflinkについては過去にも幾度が言及されていますが、今回初めてすぐに使える&サポートされる形でモジュールが提供されてきました。

reflinkとは感覚的に言えばハードリンクとスナップショットが一緒になったようなものです。スナップショットは非常に便利な機能で、最小限の容量で差分バックアップを一瞬で作成し、複数世代保持できます。通常スナップショットはLUN単位またはファイルシステム単位で取得することになります。reflinkはこのスナップショットをファイル単位で取得できるというものです。これは一部の商用製品を除いてこれまで実現できなかった機能です。アプリケーションデータのスナップショットからVMイメージのスナップショットまでいろんな活用例が容易に想像でき、夢が広がります。

では早速reflinkしてみましょう。

こちらのポストでUnbreakable Enterprise Kernelをインストールすれば、すぐにOCFS2 1.6及びreflinkが使える状態になっています。

まずOCFS2でフォーマットするためのブロックデバイスを用意します。VM環境であれば「Create New Virtual Disk」で新しい仮想ディスクを追加してあげます(ちなみにオンラインで追加できます)。

OCFS2->create_new_virtual_disk

追加が完了するとこうなります。

OCFS2->created_new_virtual_disk

ゲストOSからは/dev/xvdbとして新しいブロックデバイスが見えています。このブロックデバイスをOCFS2でフォーマットします。今回はクラスターは組みませんので-M localでローカルファイルシステム専用にしています。–fs-features=refcontを指定することでこのファイルシステムでreflinkが有効になります。

[root@~]# mkfs.ocfs2 -M local --fs-features=refcount /dev/xvdb

mkfs.ocfs2 1.6.3
Label:
Features: sparse backup-super unwritten inline-data strict-journal-super refcount
Block size: 4096 (12 bits)
Cluster size: 4096 (12 bits)
Volume size: 1073741824 (262144 clusters) (262144 blocks)
Cluster groups: 9 (tail covers 4096 clusters, rest cover 32256 clusters)
Extent allocator size: 4194304 (1 groups)
Journal size: 67108864
Node slots: 1
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 0 block(s)
Formatting Journals: done
Growing extent allocator: done
Formatting slot map: done
Formatting quota files: done
Writing lost+found: done
mkfs.ocfs2 successful

フォーマット完了です。マウントします。

[root@~]# mount /dev/xvdb /mnt

さぁ、reflinkのテストを行いましょう。abcと書かれたテキストファイル、a.txtを作成します。そしてそのa.txtをreflinkしてaa.txtを作成します。そしてaa.txtをcatしてみると、abcと書かれています。つまり、a.txtとaa.txtがリンクしているのがわかります。

[root@~]# vi a.txt
abc
[root@~]# reflink a.txt aa.txt
[root@~]# cat aa.txt
abc

つぎにaa.txtの中身を編集してみます。その後、a.txtとaa.txtを見てみると別々の文字列が保存されていることが確認できます。これが単なるハードリンクではなく、「ハードリンク+スナップショット」と書いた由縁です。

[root@~]# vi aa.txt
abc
def

[root@~]# cat a.txt
abc

[root@~]# cat aa.txt
abc
def

次の実験。reflinkで作成したファイルはCoWなので作成時には容量を消費しません。まずは現在のOCFS2ファイルシステムの空き容量を確認します。そしてddで100Mbyteのファイルtest.imgを作成し、空き容量が100Mbyte消費されることを確認します。次にtest.imgをreflinkしてtest.img.bakを作成し、双方のファイル容量とファイルシステム空き容量をもう一度確認します。ファイルは双方とも100Mbyte消費しているものの、ファイルシステムの空き容量は減っていないことが確認できます。

[root@~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvdb             1.0G   81M  944M   8% /mnt

[root@~]# dd if=/dev/zero of=test.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.311367 seconds, 337 MB/s

[root@~]# df -h /mnt
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvdb             1.0G  187M  838M  19% /mnt

[root@~]# reflink test.img test.img.bak
[root@~]# ll -h
total 200M
-rw-r--r-- 1 root root    8 Sep 21 01:48 aa.txt
-rw-r--r-- 1 root root    4 Sep 21 01:36 a.txt
drwxr-xr-x 2 root root 3.9K Sep 21 01:35 lost+found
-rw-r--r-- 1 root root 100M Sep 21 01:52 test.img
-rw-r--r-- 1 root root 100M Sep 21 01:54 test.img.bak

[root@~]# df -h /mnt
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvdb             1.0G  187M  838M  19% /mnt

さらに、reflinkが面白いのはスナップショットにあるマスター/スレーブのような主従関係がないことです。つまり、reflink元のファイル、a.txtを消去してもaa.txtは影響を受けません。容量は効率的に消費するものの、ファイルとしては完全に独立しているのです。

[root@~]# rm a.txt
[root@~]# cat aa.txt
abc
def

楽し過ぎます。これがOCFS2 1.6の目玉機能、reflinkです。

with 3 comments

Written by 中嶋 一樹

9月 21st, 2010 at 3:07 pm

Posted in Uncategorized

Tagged with , ,

3 Responses to 'Unbreakable Enterprise Kernelを使おう – OCFS2 1.6 reflink編'

Subscribe to comments with RSS or TrackBack to 'Unbreakable Enterprise Kernelを使おう – OCFS2 1.6 reflink編'.

  1. [...] まずはBtrfs用の適切なボリュームを用意します。手元の環境はOracle VM上のVMなので仮想ディスクを割り当てます。詳細な手順はこちらの通り。かくかくしかじかで4つ程作成しておきます。こんな感じ。 [...]

  2. [...] OCFS2 1.6の目玉機能。ファイルベースで高速複製/スナップショットが取れる。詳しくはこちらの記事を。「Unbreakable Enterprise Kernelを使おう – OCFS2 1.6 Reflink編」 [...]

  3. …Recommended websites…

    [...]The whole glance of your web site is fantastic, let well as the content![...]…

    clinica dentara

    6 5月 12 at 5:57 PM

Leave a Reply