| tags:macos tips&tricks zfs categories:computing

OpenZFS on Mac

2019 07 27 openzfs Mac 00

これから端末をトリプル・ブート化するにあたって、 macOS、Windows、Linux全ての環境で読み書きできるファイルシステムは あまり多くはなく、昔ながらのFATがファーストチョイスになるのですが、 ちょっとつまらない。

以前より気になっていたファイルシステム、機能も豊富で安定性も抜群?、 かつmacOS、Windows、Linuxで共有でき、 やる気になればmacOSやLinuxのルートも置けるOpenZFSを導入することにしました。

ZFSは、主にオラクルのOracle Solaris上で実装されている128ビット・アドレッシングを特徴とするファイルシステム。今まで Solaris (SunOS) で用いられてきた Unix File System (UFS) の次世代ファイルシステムと位置づけられている。 https://ja.wikipedia.org/wiki/ZFS

2005年11月にオープンソース化され、各プラットフォームに移植されています。 個人利用では敷居が高く宝の持ち腐れな感がありますが、マックで試してみました。

ダウンロード先は以下から、

2019 07 27 openzfs Linux 00


まずは、使うパーティションもしくはディスクのフォーマットをします。 マックのdiskutilを使います。Disk Utilityアプリで仕様するディスク・パーティション番号を確認しておきます。 diskutil eraseVolume ZFS VOLUME_NAME DISK#PARTION# エラーが出ますが、問題はないようです。

jin$ sudo diskutil eraseVolume ZFS ZDATA01 /dev/disk0s7

そして論理ディスク:プールをzpool createで作ります。 sudo zpool create -f -o ashift=13 -O compression=lz4 -O casesensitivity=insensitive -O normalization=formD POOL_NAME (mirror, raidz) DISK#PARTION# と、Macの環境ではオプションがたくさんつきますが、入れないとエラー地獄に陥ります(私)。

取り敢えず、シングルドライブで運用してみることにしました。ミラーリングだったりRAIDだったりももちろんつくれます。SSDを使う場合はashift=13が良いようです。圧縮機能を追加したい時は**-O compression=lz4**をオプションに追加します。

参照:https://openzfsonosx.org/wiki/Zpool

jin$ sudo zpool create -f -o ashift=12 -O casesensitivity=insensitive -O normalization=formD ZData60 disk0s7
jin$ sudo chmod 777 /Volumes/ZData60/

書き込み時にパーミションの問題が起こるので、個人仕様なのでchmod 777で全てのユーザーからアクセス可能にします。 自動的に/Volumes/以下にマウントされます。

2019 07 27 openzfs Initial Setup 01

zpool statusで状況を確認することができます。

jin$ zpool status
  pool: ZData60
 state: ONLINE
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    ZData60     ONLINE       0     0     0
      disk0s7   ONLINE       0     0     0

errors: No known data errors
jin$ 

次にArchiveBackupのファイルシステムを作ります。 ZData60の内部にフォルダーが作成されますが、 こちらは自動的に外付けディスクとしてマウントされます。

jin$ sudo zfs create ZData60/Archive
jin$ sudo zfs create ZData60/Backup

2019 07 27 openzfs Initial Setup 02

2019 07 27 openzfs Initial Setup 04

コピーなど少し時間がかかるように思えました。大きいファイルのコピーは途中で小休止します。 4.3GBを移動で7分ぐらいかかりました。

他OSとの互換性は未検証です。多分問題はないと思いますが、後々リポートします。

お次は、32GBの小さいパーティションを切って、USBメモリースティックとミラリーングを作ろうと思ってます。複数端末間のファイル共有(3~4点ミラーリング)にする予定です。都度追加できるのもZFSの素晴らしいところです。 (Mac1 <-> USBメモリー <-> Mac2 -> Win2)

おまけ

$ sudo zfs set compression=lz4 $poolname

圧縮化は途中で追加できますが、追加した時より新しいファイルのみに適用されます。 必要があれば前もってプールを作成する時に指定するのが良いです。

スクリーンショットに影が、、Mojaveに移行中で設定を変更するのを忘れてました。。

$ defaults write com.apple.screencapture disable-shadow -bool TRUE
$ killall SystemUIServer

追記@ 8/1, 2019

ちょっと不安定になり、久しぶりに カーネルパニックが出ました。(El Capitan + Mail) バッテリーの減りがすごく悪くなりました。そして、スポットライトを使ってフリーズが数回。 で、!!、インデックスの再構築を行ってちょっと落ち着きました。 多分、スポットライトのファイルにディスクエラーが出ていたので、悪さをしてたかも、、

もう一つ、Hugoというサイトジェネレーターを使っているとたまに、ファイルが読み込めないとエラーが出ます。 開いてみると問題なし、そして何事なかったのごとくエラーが消えます。一つだけ読み込みも出来ないファイルがありました。サイトのリビルドのスピードが遅くなりました。小さいファイルのやり取りが得意ではないのかな。ちょと怖いな。。

See Also

🏝 tipping

🌷 sat ⚡️ goozenlab@getalby.com
🌻 bitcoin : bc1qnjhnsxgqah050995dkdveav4y3t3d7uxyme4ud

If you do send a tip, Please email me so that I can say thank you.