ZFS

主にOracle Solaris上で実装されている128ビット・アドレッシングを特徴とするファイルシステム

ZFSは、主にオラクルSolaris上で実装されている128ビット・アドレッシングを特徴とするファイルシステム。今までSolaris (SunOS) で用いられてきた Unix File System (UFS) の次世代ファイルシステムと位置づけられている。名称はZettabyte File Systemに由来する[1]が、現在は何の略称でもないとされる[2]

ZFS
開発者 Oracle Corporation
正式名 ZFS
導入 2005年11月(14年前) (2005-11 (OpenSolaris)
構造
ディレクトリ ハッシュテーブル
限度
最大ファイル サイズ 16 EiB (264 バイト)
最大ファイル数 248
最大ファイル名長 255 バイト
最大ボリューム サイズ 256 ZiB (278 バイト)
特徴
フォーク 有り
属性 POSIX
パーミッション POSIX, NFSv4 ACL
透過的圧縮 有り
透過的暗号化 有り
重複排除 有り
対応OS Solaris, OpenSolaris, illumos, OpenIndiana, FreeBSD, Mac OS X Server 10.5, NetBSD, Linuxサードパーティー カーネル・モジュール、または FUSE
テンプレートを表示

概要編集

2004年9月にアナウンスがあり、2005年11月リリースのOpenSolaris build 27で実装が公開された。 "Common Development and Distribution License" (CDDL) のもと、オープンソースで開発されている。

特徴として以下の項目が挙げられる。

  • チェックサム64ビット化された
  • コピーオンライトの実装
  • ボリュームマネージャが必要なく、ボリュームの構成が容易にできるようになった
  • ディスクの違い(容量、種類)を吸収する仮想ボリューム(ストレージプールと呼称)をサポート
  • ストレージプールの作成・フォーマット・マウントがコマンド一行ですむ
  • ファイルシステム自身がRAID機能を持つ

またSolaris10 11/06版より以下の機能が加わった。

  • RAID-Z2(ダブルパリティによるRAID-6相当の機能)
  • ホットスペア
  • クローンプロモーション(アクティブなZFS領域を複製と置換を容易にする機能)
  • 再帰的スナップショットコマンドの簡素化オプション

以下に記載されていない機能追加として、Oracle Solaris Solaris SRU 11.2.8.4.0などより、Persistant L2ARC (ブートをまたがるL2ARCの内容の再利用)が追加されている(他の環境での実装状況を記載する必要あり) 。

以降の追加機能は下記のバージョン番号を参照。

バージョン番号編集

利用可能な形式と特徴を指定するために、新機能が導入されるに従ってZPoolとZFSのバージョン番号が増える。バージョン番号の一覧は以下の通り[3]。([]内はサポートしているオペレーティングシステム

  • 1 Initial ZFS version [Supported by Solaris 10 06/06]
  • 2 Ditto blocks (replicated metadata) [Supported by Solaris 10 06/06 build 09]
  • 3 Hot spares and double parity RAID-Z [Supported by Solaris 10 11/06]
  • 4 zpool history [Supported by Solaris 10 08/07]
  • 5 Compression using the gzip algorithm
  • 6 bootfs pool property [Supported by FreeBSD 7.0]
  • 7 Separate intent log devices
  • 8 Delegated administration [Supported by Solaris 10 10/08]
  • 9 refquota and refreservation properties
  • 10 Cache devices
  • 11 Improved scrub performance
  • 12 Snapshot properties
  • 13 snapused property [Supported by OpenSolaris 2008.11, FreeBSD 8.0]
  • 14 passthrough-x aclinherit [Supported by OpenSolaris 2009.06, FreeBSD 8.1]
  • 15 user/group space accounting [Supported by Solaris 10 10/09, FreeBSD 8.2, FreeBSD 8-STABLE]
  • 16 stmf property support
  • 17 Triple-parity RAID-Z
  • 18 Snapshot user holds
  • 19 Log device removal
  • 20 Compression using zle (zero-length encoding)
  • 21 Deduplication
  • 22 Received properties [Supported by Solaris 10 9/10]
  • 23 Slim ZIL
  • 24 System attributes
  • 25 Improved scrub stats
  • 26 Improved snapshot deletion performance
  • 27 Improved snapshot creation performance
  • 28 Multiple vdev replacements [Supported by FreeBSD 9-CURRENT]
  • 29 RAID-Z/mirror hybrid allocator [Supported by Solaris 10 8/11]
  • 30 ZFS data set encryption
  • 31 Improved 'zfs list' performance [Supported by Solaris 11 Express b151a]
  • 32 One MB blocksize
  • 33 Improved share support [Supported by Solaris 11 EA b173]
  • 34 Sharing with inheritance [Oracle Solaris 11.1 or later]
  • 35 Sequential resilver [Oracle Solaris 11.2 or later]
  • 36 Efficient log block allocation [Oracle Solaris 11.3 or later]
  • 37 lz4 compression
  • 38 xcopy with encryption [Oracle Solaris 11.4 or later]
  • 39 reduce resilver restart
  • 40 Deduplication 2
  • 41 Asynchronous dataset destroy
  • 42 Support for reguid
  • 43 RAID-Z enhancements and cloud device support
  • 44 Device Removal

今、自分のシステムでどのバージョンまでサポートしているか知りたい場合はzpool upgrade -vで確認できる。

訴訟合戦編集

2007年9月ネットアップがZFSは自社の特許を侵害しているとして、開発したサン・マイクロシステムズを訴えた。10月にサン・マイクロシステムズは特許は無効と反訴。互いの経営者同士が自らのブログで応酬を繰り広げていたが、サンがオラクルに買収された後の2010年9月9日、訴訟取り下げで合意した。

キャパシティ編集

128ビット・アドレッシングで主な制限は以下の通り。

  • 16エクサバイト — ファイルシステムの最大値
  • 16エクサバイト — 1ファイルの最大値

プラットホーム編集

Solaris(10 6/06以降)
10/08版よりブートパーティションとしても作成可能になった。
OpenSolarisOpenIndiana
SPARC及びx86版のOpenSolaris build 27以降で動作する。2008.05版よりデフォルトファイルシステム。
OpenIndianaは初期リリースoi_148からデフォルトファイルシステムである。

このほか、SunOS系列(Illumos系統含む)ディストリビューションでもサポートされている。

移植編集

CDDLでライセンスされるオープンソースであり、Solaris系以外のUnix系オペレーティングシステムにも移植が進んでいる。

FreeBSD
x64の9.0-RELEASEでZFS v28をサポートしている。IA-32でも一応動作するが、実用的に使うのは難しい(カーネルが多量のメモリを必要とするが、32ビット空間の限界がある等)。2011年2月28日時点ではカーネル側の未サポートが理由でiSCSIを経由した共有ZVOLs機能 (zfs set shareiscsi) は実現されていない。また10.x以降はAFT(4KB/セクタ)を自動的に認識してZFS poolを作成するようになった。
NetBSD
2007年の Google Summer of Code で開発が始められたが、2016年時点でメンテナンスされていない[4]
Mac OS X
10.5 Leopardより搭載されているが、初期リリースの10.5.0では読み込みのみの対応にとどまる。10.6 Snow Leopard では、サーバ版で標準対応することが発表されていたものの10.6.1 リリースでも実現せず、結局アップルはZFSプロジェクトを停止した[5]Btrfsを開発中のオラクルによるサン・マイクロシステムズ買収に伴いZFSの将来が不透明になったためと報じられている。ただしアップルの援助が止まっただけであり、プロジェクト自体はGoogle Codeにホスティングを移して、細々とではあるが続いている[2]
Linux
CDDLがGPLに抵触するというライセンスの問題があり、また、ZFSの権利を保有するオラクルの姿勢を踏まえ、Linuxの生みの親リーナス・トーバルズがカーネルへマージしない姿勢を表明している為[6]、Linuxではカーネル空間に統合された手法での利用は出来ない。
FUSEというユーザー空間のファイルシステムドライバを利用する形での実装例は存在しているが、ユーザー空間の実装であるため、一部の機能は制限される。この実装は2006年のGoogle Summer Codeから始まっている。zfs-fuseの名称で、Red Hat Enterprise LinuxのEPELやUbuntu 10.04以降など各種Linuxディストリビューションに含まれている。
2010年頃から別個に2本のネイティブポート版開発プロジェクトが動いており、そのうちKQ infotechのパッケージはPOSIX準拠である。
またZFS on Linuxと呼ばれるプロジェクトも進行しており[7]Debian / CentOS / Ubuntu / FedoraなどといったLinuxディストビューションでZFSを用いることができる。
Ubuntu 16.04にてZFSを正式採用することが発表された[8]

脚注編集

外部リンク編集