nkjmkzk.net

powered by Kazuki Nakajima

OCFS2のreflink機能

OCFS2はLinuxカーネルのメインストリームに採用されているクラスターファイルシステムで、Oracle VMにおいて仮想マシンのデータを格納する共有ストレージはOCFS2でフォーマットします。(NFSの場合を除く)

このOCFS2ですが、現在魅力的な新機能が開発されています。それはreflinkです。

このreflinkについてOracle VMの責任者Wimが最近ブログエントリーを書いています。

OCFS2 reflink by Wim Coekaerts on May 4, 2009

以下はこのブログエントリを簡潔にまとめたものです。

reflinkとは簡単に言えばファイルのスナップショット機能です。あるファイルをreflinkするとそのファイルがコピーされたようになりますが、実際のデータブロックは複製せずに同じ実体を共有しており、新たに作成するはのはその新規ファイルを指すinodeだけです。そして該当データに書き込みが会った場合にはじめてデータをチャンクと呼ばれる単位でコピーするというCoW(コピー・オン・ライト)という仕組みを使っています。したがってreflinkした時点では新しいファイルはディスクを消費しません。その後も変更されないデータブロックについては共有したままとなり、特にVM環境でのテンプレートプロビジョニングにおいて大幅なディスク消費削減が見込まれます。CoWは新しいプロセスをfolkしたときのメモリのコピーにも同様の仕組みが採用されていたり、考え方自体は目新しいものではありません。ただし、このファイルベースのCoWは通常特殊なファイルフォーマットを必要とします。例えばVMwareのvmdkやMicrosoftのVHDです。OCFS2の場合はユーザはそれを意識する必要はありません。違うのはファイル複製時にcpではなくreflinkコマンドを使用するというだけです。reflink元のファイルもreflink後のファイルも通常のファイルとして扱うことができ、ユーザもOS(VFSまでの上位レイヤ)もその違いを意識することはありません。そしてOCFS2のファイルなので当然クラスターの中で安全にどのサーバからも取り扱うことができます。

実際このreflink機能の開発をはじめたのはOracle VMを見据えてとのこと。前述したVMテンプレートのプロビジョニングや既存VMの複製、バックアップではこの機能はめちゃくちゃ重宝しそうです。まだOracle VM用のreflink対応OCFS2バイナリはでていませんが、近々テストパッケージをリリースするようです。楽しみですね。

without comments

Written by 中嶋 一樹

5月 11th, 2009 at 3:15 pm

Posted in Uncategorized

Tagged with

Leave a Reply