(Translated by https://www.hiragana.jp/)
ZFS - Wikipedia コンテンツにスキップ

ZFS

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
ZFS
開発かいはつしゃ サン・マイクロシステムズのちオラクル
正式せいしきめい ZFS
導入どうにゅう 2005ねん11月 (19ねんまえ) (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
テンプレートを表示ひょうじ

ZFSは、おもオラクルSolarisうえ実装じっそうされている128ビット・アドレッシングを特徴とくちょうとするファイルシステムいままでSolaris (SunOS) でもちいられてきた Unix File System (UFS) の次世代じせだいファイルシステムと位置いちづけられている。名称めいしょうZettabyte File System由来ゆらいする[1]が、現在げんざいなん略称りゃくしょうでもないとされる[2]

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

特徴とくちょうとして以下いか項目こうもくげられる。

  • チェックサム64ビットされた
  • コピーオンライト実装じっそう
  • ボリュームマネージャが必要ひつようなく、ボリュームの構成こうせい容易よういにできるようになった
  • ディスクのちがい(容量ようりょう種類しゅるい)を吸収きゅうしゅうする仮想かそうボリューム(ストレージプールと呼称こしょう)をサポート
  • ストレージプールの作成さくせい・フォーマット・マウントがコマンドいちぎょうですむ
  • ファイルシステム自身じしんRAID機能きのう
  • ブロックサイズが可変長かへんちょうかつファイルシステム単位たんい指定してい可能かのう、サイズ上限じょうげんはストレージプールの仕様しよう上限じょうげんとなる16MBまで
  • スナップショットおよびブックマーク[3]もちいたフル・差分さぶんバックアップおよびリストア

またSolaris10 11/06はんより以下いか機能きのうくわわった。

  • RAID-Z2(ダブルパリティによるRAID-6相当そうとう機能きのう
  • ホットスペア
  • クローンプロモーション(アクティブなZFS領域りょういき複製ふくせい置換ちかん容易よういにする機能きのう
  • 再帰さいきてきスナップショットコマンドの簡素かんそオプション

以下いか記載きさいされていない機能きのう追加ついかとして、Oracle Solaris Solaris SRU 11.2.8.4.0などより、Persistant L2ARC (ブートをまたがるL2ARCの内容ないようさい利用りよう)が追加ついかされている(環境かんきょうでの実装じっそうじょうきょう記載きさいする必要ひつようあり) 。

以降いこう追加ついか機能きのう下記かきのバージョン番号ばんごう参照さんしょう

バージョン番号ばんごう

[ソースを編集へんしゅう]

利用りよう可能かのう形式けいしき特徴とくちょう指定していするために、しん機能きのう導入どうにゅうされるにしたがってZPoolとZFSのバージョン番号ばんごうえる。バージョン番号ばんごう一覧いちらん以下いかとお[4]。([]ないはサポートしているオペレーティングシステム

  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確認かくにんできる。

2012ねん1がつ、OpenZFSは従来じゅうらいのバージョン番号ばんごうわり、機能きのうフラグ(feature flag)を導入どうにゅうした。[5][6]これにより、新規しんき追加ついかされた機能きのう個別こべつにサポートを有効ゆうこうないしは無効むこうできるようになっている。機能きのうフラグの状況じょうきょうについても、コマンド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
FreeBSDが採用さいようしているBSDライセンスはCDDLとの親和しんわせいすぐれていることから、サンが開発かいはつしていたころからソースに統合とうごうされたかたちでの利用りよう可能かのうであった。ZFSがはじめてサポートされたのは7.0-RELEASEである。[7]
64ビットアーキテクチャとしてのx64うえの9.0-RELEASEでZFS v28をサポートしている。[8]IA-32でも一応いちおう動作どうさするが、実用じつようてき使つかうのはむずかしい(カーネル多量たりょうのメモリを必要ひつようとするが、32ビット空間くうかん限界げんかいがあるひとし)。iSCSIを経由けいゆした共有きょうゆうZVOLs機能きのう (zfs set shareiscsi) はFreeBSDがわ同等どうとう機能きのうがあるため[9]ZFSがわでは実装じっそうされていない。また10.x以降いこうAFT(4KB/セクタ)を自動的じどうてき認識にんしきしてZFS poolを作成さくせいするようになった。
13.0-RELEASEにてZFS実装じっそうをOpenZFS 2.0へ変更へんこうした。[10]どうバージョンにてカーネルモジュール実装じっそうからOS依存いぞん分離ぶんりされ、LinuxとFreeBSDの同時どうじサポートが容易よういになったことをけたもの。
x64のほかarm64ひとしでもサポートされている。
NetBSD
2007ねんGoogle Summer of Code開発かいはつはじめられたが、2016ねん時点じてんでメンテナンスされていない[11]
macOS(きゅうMac OS X)
10.5 Leopardより搭載とうさいされている[12]が、初期しょきリリースの10.5.0ではみのみの対応たいおうにとどまる。10.6 Snow Leopard では、サーバばん標準ひょうじゅん対応たいおうすることが発表はっぴょうされていたものの10.6.1 リリースでも実現じつげんせず、結局けっきょくAppleはZFSプロジェクトを停止ていしした[13][14]Btrfs開発かいはつちゅうのオラクルによるサン・マイクロシステムズ買収ばいしゅうともないZFSの将来しょうらい不透明ふとうめいになったためとほうじられている[15]。そのMacZFSプロジェクトがGoogle Codeのホスティングでつづいていたが2013ねん終了しゅうりょうした[2]。アップルは別途べっとApple File System開発かいはつ、2017ねんiOS 10.3macOS High Sierraでリリースした[16][17]
2020ねん11月30にちMacOS Big Sur, Catalina, Mojave対応たいおうしたOpenZFS on OS X 2.0英語えいごばんがリリースされた[18]
Linux
ZFSの採用さいようするCDDLと、Linuxの採用さいようするGPLとのあいだにライセンスの抵触ていしょく発生はっせいするという問題もんだいがあり、また、ZFSの権利けんり保有ほゆうするオラクルの姿勢しせいまえ、Linuxのみのおやリーナス・トーバルズカーネル本体ほんたいのソースレポジトリへマージしない姿勢しせい表明ひょうめいしているため[19]、Linuxではメインラインのカーネルソースおよびこれをビルドしたバイナリのみでの利用りよう出来できない。
LinuxカーネルないでのZFS利用りようにあっては、OpenZFS英語えいごばんきゅうZFS on Linux)がカーネルモジュールとしてZFSの機能きのう提供ていきょうしている。[20]Debian / CentOS / Ubuntu / FedoraなどといったLinuxディストビューションにふくまれている。このうちUbuntuは16.04にてDKMS英語えいごばん依存いぞんしない手段しゅだんもちいたZFSのサポートを発表はっぴょうした[21]
OpenZFS以外いがいでは、FUSEというユーザー空間くうかんのファイルシステムドライバを利用りようするかたちでの実装じっそうれい存在そんざいしているが、ユーザー空間くうかん実装じっそうであるため、一部いちぶ機能きのう制限せいげんされる。この実装じっそうは2006ねんのGoogle Summer Codeからはじまっている。zfs-fuseの名称めいしょうで、Red Hat Enterprise LinuxのEPEL(Extra Packages for Enterprise Linux)リポジトリやUbuntu 10.04以降いこうなど各種かくしゅLinuxディストリビューションふくまれている。
このほか、2010ねんごろから別個べっこに2ほんのネイティブポートばん開発かいはつプロジェクトがうごいており、そのうちKQ infotechのパッケージはPOSIX準拠じゅんきょである。

制限せいげん事項じこう

[ソースを編集へんしゅう]

ZFSはデータの更新こうしんつねにコピーオンライト処理しょりとする。これに起因きいんして、既存きそんのUnixけファイルシステムでは発生はっせいしないような問題もんだいしょうじることがある。

ZFSにて、データが頻繁ひんぱん更新こうしんされるファイルシステムにて容量ようりょうすくなくなると、容量ようりょうがゼロでないにもかかわらずデータ更新こうしん失敗しっぱいすることがある。これはコピーオンライトを採用さいようしたファイルシステムではけられない問題もんだいである。具体ぐたいてきれいとして、固定こていサイズのファイルにmmap()もちいてアクセスする場合ばあい、ページをファイルへもどさいにファイルシステムの容量ようりょう不足ふそくによるエラーをふせぐため、fallocate()[22]ないしはposix_fallocate()[23]もちいてファイルブロックを確保かくほする習慣しゅうかんがあるが、ZFSではコピーオンライトが必須ひっすとなっている影響えいきょうにより、これを実行じっこうしてもなおエラーが発生はっせいする場合ばあいがある。この影響えいきょうで、ZFSは当初とうしょfallocate()実装じっそう見送みおくっていた。[24]2020ねん6がつまでに、Linuxにかぎってfallocate()互換ごかん実装じっそうがマージされている。[25]しかし、実際じっさいにはスナップショットや圧縮あっしゅく機能きのうとの干渉かんしょう指摘してきされており、本質ほんしつてき対応たいおう困難こんなんとされている。[26]また、詳細しょうさい調査ちょうさ結果けっか、illumosにてZFSへのカーネルコアダンプをサポートするため、ファイルブロックを確保かくほする機能きのうがZFSに存在そんざいすることがたしかめられた。しかし、この機能きのうはコピーオンライトをバイパスしたみを実行じっこうするなど利用りよう目的もくてきがカーネルコアダンプに限定げんていされており、fallocate()ふくめた通常つうじょう運用うんようでの使用しよう考慮こうりょされていないこともあきらかになっている。[27]

ZFSじょうのファイルにたいしてランダムアクセスによるデータ更新こうしんおこなうと、あらかじfallocate()などにより物理ぶつりてき連続れんぞくしたファイルブロックを確保かくほすることを期待きたいしていてもブロックが断片だんぺんする。ext4fallocate()による連続れんぞくしたファイルブロックの確保かくほ正式せいしきにサポートしていることから、これを前提ぜんていとしたソフトウェアをZFSへむと問題もんだい発生はっせいしやすい。これもデータ更新こうしんがコピーオンライト処理しょりとなる直接ちょくせつ結果けっかであり、mmap()使用しようによりとく顕著けんちょとなる。このような場合ばあいはファイルブロックにたいして連続れんぞくせい前提ぜんていとするのではなく、断片だんぺん容認ようにんしたうえで、それが機能きのう性能せいのう影響えいきょうしないようにする必要ひつようがある。また、ファイルシステム単位たんいでの可変長かへんちょうブロック機能きのう利用りようすれば最大さいだい16MBの物理ぶつりてき連続れんぞくしたブロックが使用しようできる。ext4の最大さいだいエクステント(4KBブロックの場合ばあい、128MB)よりはちいさいものの、個々ここのファイルにたいする特殊とくしゅ設定せってい変更へんこう不要ふようである。[28]

脚注きゃくちゅう

[ソースを編集へんしゅう]
  1. ^ You say zeta, I say zetta (Jeff Bonwick's Blog)
  2. ^ ZFS FAQ (Community Group zfs.faq) - XWiki
  3. ^ ファイルシステムにおいて、ある時点じてんしめ機能きのう。スナップショットから、ファイルシステムそのものを保全ほぜんする機能きのうのぞいたもの。差分さぶんバップアップ基準きじゅんてんとして使用しようすることを目的もくてきとしている。
  4. ^ Managing ZFS File Systems in Oracle Solaris 11.4” (PDF). 2019ねん6がつ10日とおか閲覧えつらん
  5. ^ Feature Flags”. OpenZFS documentation. 2024ねん12月24にち閲覧えつらん
  6. ^ Christopher Siden. “ZFS Feature Flags”. Illumos Meetup January 2012. 2016ねん4がつ19にち時点じてんオリジナルよりアーカイブ。2024ねん12月24にち閲覧えつらん
  7. ^ FreeBSD 7.0-RELEASE Release Notes”. The FreeBSD Project (2008ねん2がつ27にち). 2024ねん12月24にち閲覧えつらん
  8. ^ FreeBSD 9.0-RELEASE Release Notes”. The FreeBSD Project (2012ねん1がつ12にち). 2024ねん12月24にち閲覧えつらん
  9. ^ ctl(4)ドライバをもちいることにより、ZVOLをふく任意にんいのvnodeをSCSIターゲットとすることができる。また、cfiscsi(4)ドライバはctl(4)ドライバをもちいたSCSIターゲットにたいしてiSCSI機能きのう提供ていきょうする。これらのドライバの設定せっていや、接続せつぞく認証にんしょうなどcfiscsi(4)ドライバが処理しょりしないiSCSI機能きのうはデーモンctld(8)実装じっそうしている。
  10. ^ FreeBSD 13.0-RELEASE Release Notes”. The FreeBSD Project (2021ねん4がつ13にち). 2024ねん12月24にち閲覧えつらん
  11. ^ クレア工房こうぼう / NetBSD / ZFS”. 2017ねん3がつ26にち閲覧えつらん
  12. ^ Sun、NetAppぎゃく提訴ていそへ--LeopardのZFSに影響えいきょうは?”. ZDNet Japan (2007ねん10がつ25にち). 2021ねん2がつ14にち閲覧えつらん
  13. ^ Mac OS Forgeの「ZFS移植いしょくプロジェクト」が終了しゅうりょう--AppleがZFSサポートをった理由りゆう”. builder by ZDNet Japan. 2021ねん2がつ14にち閲覧えつらん
  14. ^ Thom Holwerda (2009ねん10がつ23にち). “Apple Shuts Down Mac OS X ZFS Project”. 2009ねん10がつ26にち閲覧えつらん[1]
  15. ^ Mellor, Chris. “Apple dumps Sun's ZFS” (英語えいご). www.theregister.com. 2021ねん2がつ14にち閲覧えつらん
  16. ^ 今度こんどのアップデート「iOS 10.3」は慎重しんちょうに、ってどういうこと? - いまさらけないiPhoneのなぜ”. マイナビニュース (2017ねん3がつ28にち). 2021ねん2がつ14にち閲覧えつらん
  17. ^ アップル、次期じきmacOS「High Sierra」を9月26にちにリリースへ”. ZDNet Japan (2017ねん9がつ13にち). 2021ねん2がつ14にち閲覧えつらん
  18. ^ OpenZFS on OS X • View topic - OpenZFS-2.0-release”. openzfsonosx.org. 2021ねん2がつ14にち閲覧えつらん
  19. ^ Don't use ZFS ―Linus,ZFSをマージしない姿勢しせいをあらためて強調きょうちょう
  20. ^ http://zfsonlinux.org/
  21. ^ http://blog.dustinkirkland.com/2016/02/zfs-is-fs-for-containers-in-ubuntu-1604.html
  22. ^ fallocate(2) - Linux manual page”. man7.org. 2024ねん7がつ2にち閲覧えつらん
  23. ^ posix_fallocate”. The Open Group Library. 2024ねん7がつ2にち閲覧えつらん
  24. ^ Support fallocate(2) · Issue #326 · openzfs/zfs”. GitHub. 2024ねん7がつ2にち閲覧えつらん
  25. ^ linux: implement fallocate(mode=0) compatibility by adilger · Pull Request #10408 · openzfs/zfs”. GitHub. 2024ねん7がつ2にち閲覧えつらん
  26. ^ Support fallocate(2) · Issue #326 · openzfs/zfs (Comment 639468891)”. GitHub. 2024ねん7がつ2にち閲覧えつらん
  27. ^ Support fallocate(2) · Issue #326 · openzfs/zfs (Comment 639378614)”. GitHub. 2024ねん7がつ2にち閲覧えつらん
  28. ^ ext4のファイルにてエクステントを使用しようする場合ばあい、ファイルごとchattrコマンドでの設定せってい必要ひつよう

外部がいぶリンク

[ソースを編集へんしゅう]