ラベル ZEVO の投稿を表示しています。 すべての投稿を表示
ラベル ZEVO の投稿を表示しています。 すべての投稿を表示

2014/04/06

OpenZFS on OS X (7) 拡張属性の互換性

OpenZFS on OS X(O3X)検証の続きということで、拡張属性(Extended Attributes)編です。
特に、ZEVOから利用しているデータセットをO3Xに移行する際の問題についてそれなりに詳細に記しています。

基本的にZEVOについて書いた昔の記事の流れを汲んだものです。


2014/03/25

ZFS on Mac (5) OpenZFS on OS X、リリース

ZFS on Macが大きなマイルストーンに到達しました。
開発中だったMacZFSのalpha版OpenZFS on OS Xとして3/13にリリースされました。
ZFS on Linux 0.6.2ベースのバリバリの最新版、Snow LeopardからMavericksまで対応と非の打ち所のないZFSです。

じゃあちょっと経緯書くわ。

2013/08/04

ZFS on Mac (4) ZEVOの問題点

前回までにMac向けZFSとしてZEVOの紹介や簡単な検証を行ってきたわけですが、何もかもうまくいくわけではなく多少の問題があることもわかってきました。
これまでの記事を読んで「ZEVO使えるかな?」と思って導入したら困った、という人が出ないようにZEVOのダメなところも気付いた範囲でまとめてみようかと思います。

その中でも特に大きかったのが前々回の更新から半年以上浦島太郎していたことによるZEVOを取り巻く状況の変化です。これについては後半に書きます。

2013/07/30

ZFS on Mac (3) ZEVOとHFS+の互換性

前回から長いこと放置してしまったわけですが、そろそろ本格的にZEVOを導入したくなってきたのでちゃんと検証してみようかと。

そんなこんなしてる間にZFS on Linuxもstableになったり長らく休眠してたMacZFSも更新されてたりしますが、ZEVOは相変わらず1.1.1のままなので特に取り巻く状況は前回から変わらず。

本格的に使っていくにあたって、検証しておきたいこととしては
・本家SolarisのZFSv28と比較し各機能(サブコマンド・Snapshot等)はどれだけ実装できているか?
・SolarisやZFS on Linuxとの相互利用はどれだけ可能か?(緊急時のサルベージを考慮して)
・現在使っているオレオレバックアップスクリプトは動くか?
・パフォーマンスは実用レベルか?
・不安定になったり、特定の操作でカーネルパニックになったりしないか?(重要)
・データ消えない?(最重要&しかし完全検証不可)
・リソースフォークや拡張属性、AppleDoubleの動作がどうなっているか
・大文字/小文字の区別やUnicode正規化など、HFS+と同様に扱えるか
といった点が挙げられますが、ZFS独自のメリットを享受する以前にHFS+で動いていたものが動かなくなると大変なので、まずは後ろ2つについて検証してみる。

2012/11/01

ZFS on Mac (2) ZEVOのインストール

前回からだいぶ時間が経ってしまいましたが、ZFS on Macの続きです。

前回はZFSを取り巻く状況について軽く触れ、Mac向けZFSとしてZEVOなるものが存在することを紹介しました。
さて今回はZEVOについて・・・と行きたいところですが、前回「Solaris以外でのZFSについて」なんて書いたばっかりにSolarisとそれ以外のOSにおけるZFSの関係について完全にスルーしてました。まずはそちらにちょっと触れておきたいと思います。
このあたりの歴史的経緯については勘違いが含まれている恐れがあるので、気付いた場合は指摘していただけると幸いです。

今更ですが、元来のZFSはSolaris用に開発されたものです。リアルタイムに追っていた頃では無いので時期は前後するかも知れませんが、Solaris開発がオープン路線に転換し、OpenSolarisがリリースされたのに伴ってZFSのソースコードもオープンになりました。以降、各種OSへの移植が進むことになります。
その結果近年まではOpenSolarisのバージョンアップに伴い順調に更新されてきたZFSですが、Sunの買収など情勢の変化によってOpenSolarisの更新は止まり、Solaris 11からはまたクローズドソースになってしまいました。以後OpenSolaris自体はOpenIndianaにForkして開発が続いていますが、オープンソースなZFSのバージョンはOpenSolaris最終版のv28で止まっており、Solaris 11に搭載されたv33とはバージョンが離れてしまっています。
このような経緯によって、現在の(本家Solaris以外における)ZFSの最新版はv28ということになります。勝手に独自実装でオレオレZFS(っぽい何か)にするわけにもいかないので、OSSの世界でのZFSといえばv28ということになるんだと思います。
要は、(図らずも)OSS的にはZFSの仕様はfixされたので、今後は公式のアップデートを追いかけることもなくv28というゴールを目指した開発へシフトしているということです(多分)。

話が大分逸れてしまいました。ZEVOに戻ります。
前回書いたとおりZEVOというのは現在GreenBytesというストレージ屋さんで開発されているMac向けのZFSで、v28となっています。このZEVOの無料版であるZEVO Community Edition(以下CE)なるものが配布されているので、今回はこのZEVO CEを実際にインストールしてみます。

用意したのはみんな大好き仮想マシン、ということでMountain Lion on VMware Fusionです。VMだと仮想HDDをバンバン追加して実験できるので非常に便利です。
というわけでまずはZEVO CEを落としてきます。
http://zevo.getgreenbytes.com
この公式サイトの「Downlink ZEVO」からダウンロードできますが、無料の会員登録が必要なので「Downlink ZEVO」から一度飛ばされるフォーラムに登録してログイン&ダウンロードしましょう。
ZEVOCommunityEdition.dmg をダウンロードしてきたら特に難しいこともなく開いてインストール&再起動します。
公式サイトから落とせるZEVO CEのバージョンは1.1ですが、2012/11/1現在1.1.1がリリースされています。1.1.1はシステム環境設定のZEVO Preference→Check For Updates...からダウンロードすることが出来るのでインストールしておきましょう。

大抵のことは付属のZEVO QuickStart Guideを読めばわかりますが、とりあえず適当にいじってみることにしましょう。
まずインストール&再起動したらターミナルから色々確認してみます。
$ zpool upgrade -v
でv28なのが確認できると思います。ちなみに一般的なZFSと違い、状態確認系のサブコマンドはrootでなくても使用できるようです。
早速プールを作ってみます。まずはディスクの確認。
$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *42.9 GB    disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            42.1 GB    disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *2.1 GB     disk1
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *2.1 GB     disk2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *2.1 GB     disk3
OSが入っているのがdisk0です。今回はdisk1,2,3を利用します。
まずはdisk1,2でミラー構成を試してみます。
$ sudo zpool create -f mypool mirror /dev/disk1 /dev/disk2
プール作成にはroot権限が必要なのでsudoします。また、自動でパーティションを作ってもらうために-fオプションを付与しています。
では作ったプールを確認してみます。
$ zpool status
  pool: mypool
 state: ONLINE
 scan: none requested
config:

 NAME                                           STATE     READ WRITE CKSUM
 mypool                                         ONLINE       0     0     0
   mirror-0                                     ONLINE       0     0     0
     GPTE_A384D925-0031-42F3-8D2F-DA4B69F1142D  ONLINE       0     0     0  at disk1s1
     GPTE_9806760F-ADA2-4498-B62B-AFB84F89939F  ONLINE       0     0     0  at disk2s1

errors: No known data errors
$ zfs list
NAME      USED   AVAIL   REFER  MOUNTPOINT
mypool   434Ki  1.83Gi   371Ki  /Volumes/mypool
ミラー構成でmypoolが作られ、/Volumes以下にマウントされているのがわかります。
ここで謎なのがzpool statusで表示されるデバイス名です。/dev/diskXの形になっていません。これはZEVO独自の仕様で、プールを構成する各デバイスにユニークIDを持たせて管理することで、起動毎にディスク番号(diskXのX)が変わっても追随できるようになっています。
具体的には、これらのユニークなデバイス名は/dev/dsk以下に配置されるデバイスへのシンボリックリンクとして存在しています。
$ ls -l /dev/dsk/
total 16
lrwxr-xr-x  1 root  wheel  12 11  1 02:13 GPTE_9806760F-ADA2-4498-B62B-AFB84F89939F -> /dev/disk2s1
lrwxr-xr-x  1 root  wheel  12 11  1 02:13 GPTE_A384D925-0031-42F3-8D2F-DA4B69F1142D -> /dev/disk1s1
このようになります。

次にRAIDZプールの作成を試してみます。
$ sudo zpool destroy mypool
$ sudo zpool create -o ashift=12 rzpool raidz /dev/disk1 /dev/disk2 /dev/disk3
$ zpool status
  pool: rzpool
 state: ONLINE
 scan: none requested
config:

 NAME                                           STATE     READ WRITE CKSUM
 rzpool                                         ONLINE       0     0     0
   raidz1-0                                     ONLINE       0     0     0
     GPTE_9B2B44FD-A76C-4AC5-AF6C-B1302B453204  ONLINE       0     0     0  at disk1s1
     GPTE_6DCC0CC3-12F8-49E5-A976-E87161B057AC  ONLINE       0     0     0  at disk2s1
     GPTE_10AEF2DE-B392-424E-A380-58933B925E0E  ONLINE       0     0     0  at disk3s1

errors: No known data errors
$ zfs list
NAME      USED   AVAIL   REFER  MOUNTPOINT
rzpool   470Ki  3.67Gi   390Ki  /Volumes/rzpool
なんてことはなくできました。-o ashift=12というのはAFT用のオプションです。本来は512Bセクタでashift=9、4KBセクタでashift=12が自動的に選択されるのですが、512Bエミュレーションを行っているAFTのHDDではashift=9と誤認識してしまうため、ashiftを強制的に指定することができます。
ファイルシステムの作成を試してみます。
$ sudo zfs create rzpool/fs1
普通に作れます。デスクトップに(rzpoolと共に)fs1がマウントされているかと思います。
ですが、sudoで作っているので中にファイルを作れません。sudo無しで作ろうとすると
$ zfs create rzpool/fs2
cannot mount '/Volumes/rzpool/fs2': failed to create mountpoint
filesystem successfully created, but not mounted
マウントできないと怒られます。
親ファイルシステムの権限を変えてみます。
$ sudo chmod 777 /Volumes/rzpool
$ zfs mount -a
マウントできました。ユーザ権限で作っているので、読み書きも可能です。
権限を変更しているので
$ zfs create rzpool/fs3
今度は正常に作成できます。

そんなわけで、非常に簡単ですがプールとファイルシステムの作成までを行ってみました。
留意する点としてはデバイス名とユーザ権限で実行するコマンドくらいで、ZEVO特有の問題がこれといってあるわけではありません。他のプラットフォームでZFSを使ったことがあればごく自然に使えるかと思います。
次回は(かなり先になりそうですが)、もうちょっと実用を視野に入れてZEVOが「どれくらい使えるか」を検証していきたいと思っています。

2012/10/09

ZFS on Mac (1) 最近の動向

ZFSというファイルシステムを知っていますか。
元はSolaris向けに開発されたファイルシステムですが、数々の先進的機能を持っているため現在では様々なOS向けの移植プロジェクトが存在しています。今回は日本語情報が少ない、Mac向けZFSの話を中心に書いていくつもりです。

今回に限らず、このブログでは主にSolaris以外でのZFSについて書いていこうと思ってますので、ZFSそのものを知らないという人にはよくわからない話が続くと思います。

さて、様々なOSに移植されていると書いたZFSですが、私の知るところではFreeBSD、Linux、Macあたりに移植されています。
従来のソフトRAIDより優れた点が多いため、自作NAS等で用いられる機会の多いZFSですが、自作機でSolarisを動かすハードウェア的なハードルなどもあって最近はFreeBSD(あるいはFreeBSD派生のFreeNAS)で使われることが多いんじゃないでしょうか。
Linux向けのZFSとしてはzfs-fuseが有名ですが、最近はZFS on Linuxというfuseによらないネイティブ移植版も随分と使えるようになってきました。こちらについても機会があったら色々書きたいと思っています。

 で、本題のMac向けZFSですが、こちらはあまり芳しくない状況でした。
 Leopard〜Snow Leopardの頃はOS標準のファイルシステムがHFS+からZFSに移行するという話もあり、Apple公式の開発プロジェクトも盛んだったのですが、白紙に。公式プロジェクトも閉鎖されてしまいました。
成果物を引き継いだOSSのプロジェクトがmac-zfsとして発足しましたが、本家OSSの最終版であるv28に対してv8と、バージョンが古いものになってしまっています。安定版ではあるものの、最新の機能を使いたかったり4年?前のバージョンでは・・・という人もいるんじゃないかと思います。
そんな中、Apple公式のプロジェクトに携わってきた社員が設立したベンチャーから「ZEVO」という名称でv28ベースのMac向けZFSが出るという話が1,2年前ほどに出てきて、実際に今年の頭に出ました。が、有償製品であるとか肝心のRAIDZが使えるバージョンがまだ出てない(そして出ないまま終わった)とかで、ZEVOの期待外れ感は否めないものでした。

そんな折、今年の7月に先述のベンチャー(Ten's Complement)がGreenBytesというストレージ屋さん?に買収されました。ああこれでZEVOは使える製品が出ないままBtoBの世界へ消えていくのね・・・という感じでオワタ、という流れだったのですが。
数日後、なんと「ZEVO Community Edition」という形で無料のZEVOが9/15にリリースされると発表されました。フリーではなく無料というのが微妙なところで、つまりバイナリで配布とのことなんですが、それってライセンス的にどうなのとか致命的な機能制限とかはないのとか色々疑問もありましたがとにかく大きな動きでした。
(ソースコードに関する後日談ですが、「元のZFSはCDDLなんだからソースよこせ」と先述のmac-zfsの開発者がメール送ったらくれたみたいです。)

そして実際に、9/15にZEVO CEがリリースされました(1日くらい見逃してたけど!)。
無償版の制限としてプールのサイズ上限が16TBまでなのと、dedupが使えないこと、将来提供予定?のGUIツールが無い(要らん要らん)などがありますが、それ以外はRAIDZ1,2,3や圧縮等々一通り使えるとのことでかなりいけそうな感じになっています。やったね!
(zvolに関してはmac-zfs、ZEVO共に未実装で使えません。これは残念。)

今後は、ZEVOのセットアップとZEVO(&Mac)固有の挙動についてと、casesensitivityやnormalization等のHFS+との相互運用性に関する部分についての検証を書いていけたらなと思います。