やってみたNative ZFS on Momonga Linux 2010-09-11 ver0.5 Momonga Project Takaaki Tabuchi 1 概要 • ZFSとは • Native ZFS on Linux • Momonga Linux 7 での ZFS環境の構築方法 2 ZFSとは – Solarisで作成されたファイルシステム 3 ZFSの利点 • • • • • 128 bit FileSystem オープンソース ストレージプールとしてデバイスを仮想化 RAID-Z iSCSI/CIFS/NFSとの統合 4 Native ZFS on Linux from LLNL • ZFS の Linux kernel module としての実装が LLNL(Lawrence Livermore National Laboratory /ローレンス・リバモア国立研究所)か ら発表された。 • Momonga Linux 7 ではこちらの実装が利用可 能。 5 Native ZFS on Linux from LLNL 注意点: ZFS としてはmountできない。 理由はZPL(ZFS POSIX Layer)が未実装である為。 ZPLに関しては次ページの図を参照。 つまり、別途ext4などでformatしてmountする必要 がある。 6 ZFSの構造(Solaris / Open Solaris) 7 Native ZFS on Linux の構造 • SPL(Solaris Portable Layer) を設けた実装と なっている。 • SPLを設けることで、移植のためのZFSコードの 変更作業を減らせ移植の手間を減らせる。また 、ライセンス対策(?)の為、Linux カーネルとZFS モジュールを直接リンクさせない構造である。 8 CDDLとGNU GPL • CDDLとは、 Common Development and Distribution License のことで、ZFSのコードはこ のライセンス下でリリースされている。 • CDDLはGNU GPLと矛盾するため、 CDDLで保 護されたモジュールはGPLのコードとは合法的に 一緒にリンクすることができない。 (参考:さまざまなライセンスとそれらについての解説 - GNU プロジェクト http://www.gnu.org/licenses/licenselist.ja.html ) 9 実際にやってみる 前提 • Linux のインストールができる • UNIXの知識はそれなりにある • UNIX/Linuxのコマンドが使える • # は root 権限のshell prompt • $ は一般ユーザのshell prompt 10 実際にやってみる 手順 • Momonga Linux 7 をインストール • zfs moduleパッケージをインストール • (fdisk) + zpool + zfs + mkfs + mount 11 テストしたハードウェア構成 CPU: Dual-Core AMD Opteron(tm) Processor 1216 Memory: 2GB HDD(1): ST3250823AS (250GB) : Mo7 OS用 HDD(2): ST3500320AS (500GB) : ZFS用 12 テストしたハードウェア構成 HDD1本での構成はテストしたが成功せず。 i686マシンでは試していない。 13 Momonga Linux 7 のインストール 手順は省略 テスト時はMomonga Linux 7 beta 3 を使用。 14 パッケージをインストール kernel は最新のものを使うのが吉 # yum install zfs-modules 念のため # yum install zfs も実行しておく。 前者がZFSカーネルモジュール、 後者がzpool/zfs コマンドのインストールである。 15 Momonga Linux 7でのZFS関連パッケージの構成 1. splパッケージ : SPLコマンド(spl, splat) を提供 2. zfsパッケージ : ZFSコマンド(zfs, zpoolなど)を提供 3. zfs-modulesパッケージ: ZFSカーネルモジュールを提供 SPL モジュールは kernel パッケージに同梱 ZFSモジュールパッケージは、kernelのアップデートと同期する必 要がある。 更新を忘れると、zfs モジュールを modprobe できない。(次ページ 参照) 16 modprobe zfs # modprobe zfs # 確認方法は、lsmod |grep zfs zfs モジュールをロードすると /dev/zfs が作成される。 17 fdisk fdisk を用いて /dev/sdb の partitionを消す。 消さないと zpool コマンドがうまく動かない。 うまく動かない例: # zpool create dpool /dev/sdb cannot open '/dev/sdb': Device or resource busy # 18 fdisk うまく動かない理由: zpoolが自動的にGPTパーティションを作る為 # fdisk -l /dev/sdb WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sdb: 250.1 GB, 250059350016 bytes 256 heads, 63 sectors/track, 30282 cylinders, total 488397168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1a5d1a5c Device Boot /dev/sdb1 Start End Blocks Id System 1 488397167 244198583+ ee GPT 19 zpool + zfs + mkfs + mount ちゃんと動く例: # zpool create dpool /dev/sdb # zfs create -V 400G dpool/fs # mkfs.ext4 /dev/dpool/fs # mkdir /zfs # mount /dev/dpool/fs /zfs # 20 df の表示例 $ df –HT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_72-lv_root ext4 tmpfs /dev/sda1 tmpfs ext4 43G 15% / 2.1G 0 2.1G 0% /dev/shm 508M 30M 452M 7% /boot /dev/mapper/vg_72-lv_home ext4 /dev/dpool/fs ext4 53G 7.4G 101G 199M 95G 1% /home 423G 208M 402G 1% /zfs $ /dev/dpool/fs ext4 423G 208M 402G 1% /zfs という、最下行が zpool で作成したパーティション の mount の内容。 21 ベンチマーク1 hdparmで試してみた。(3回の中間値) # hdparm -Tt /dev/sdb ; hdparm -Tt /dev/dpool/fs /dev/sdb: Timing cached reads: 2078 MB in 2.00 seconds = 1039.52 MB/sec Timing buffered disk reads: 202 MB in 3.01 seconds = 67.09 MB/sec /dev/dpool/fs: Timing cached reads: 2104 MB in 2.00 seconds = 1052.68 MB/sec Timing buffered disk reads: 210 MB in 3.04 seconds = 69.19 MB/sec # 22 ベンチマーク2 bonnie++で試してみた。(3回の中間値) # cd /zfs ; bonnie++ -d `pwd` 結果は取得できず。 loadが定常時の 4から8を超えた所で、ssh/httpdが反応せ ず。これが断末魔のグラフ。 23 問題点1 load 4問題: zfsモジュールを読み込むとload4に貼 りつく問題。 グラフ中で、load の高い部分がload 4 を超え ている部分。 24 問題点1(cont.) load 4の原因。 topで調べると以下の4つのZFSのdaemonが原因 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24426 root 0 -20 0 0 0 D 0.0 0.0 0:00.00 arc_reclaim 24427 root 0 -20 0 0 0 D 0.0 0.0 0:00.00 l2arc_feed 24708 root 0 -20 0 0 0 D 0.0 0.0 0:00.00 txg_quiesce 24709 root 0 -20 0 0 0 D 0.0 0.0 0:00.00 txg_sync 25 問題点2 VMWareで試したところ、kernel panic でお亡くな りになった。 実機ではkernel panic は起きなかった。 26 ZFS on Fuse Fuseを利用したZFSの実装 Fuse(Filesystem in Userspace) を使用することで CDDL/GPLのライセンス問題を解決している。 fuse : http://fuse.sourceforge.net/ zfs on fuse : http://zfs-fuse.net/ 27 Native ZFS on Linux by KQ infotech kernel module としての実装を、KQ infotechという 企業がリリースすると発表された。 [Phoronix] Native ZFS Is Coming To Linux Next Month http://www.phoronix.com/scan.php?page=articl e&item=zfs_linux_coming&num=1 28 Native ZFS on Linux by KQ infotech • バイナリrpm と Debian 用のビルドできるソース をクローズドbetaとしてリリースする。 • Oracleは法的措置はとらない、と考えている。 • betaリリース後の動向は不明。 • 9/15ごろリリース予定。 29 参考文献 ZFS 仮想化されたファイルシステムの徹底活用 ASCII ISBN978-4-04-867654-0 C3004 30
© Copyright 2024 Paperzz