| tags:macos tips&tricks zfs categories:computing
OpenZFS on Mac
これから端末をトリプル・ブート化するにあたって、 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月にオープンソース化され、各プラットフォームに移植されています。 個人利用では敷居が高く宝の持ち腐れな感がありますが、マックで試してみました。
ダウンロード先は以下から、
- macOS: https://openzfsonosx.org
- windows: https://openzfsonwindows.org
- linux: https://zfsonlinux.org
まずは、使うパーティションもしくはディスクのフォーマットをします。
マックの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/
以下にマウントされます。
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$
次にArchive
とBackup
のファイルシステムを作ります。
ZData60の内部にフォルダーが作成されますが、
こちらは自動的に外付けディスクとしてマウントされます。
jin$ sudo zfs create ZData60/Archive
jin$ sudo zfs create ZData60/Backup
コピーなど少し時間がかかるように思えました。大きいファイルのコピーは途中で小休止します。 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というサイトジェネレーターを使っているとたまに、ファイルが読み込めないとエラーが出ます。 開いてみると問題なし、そして何事なかったのごとくエラーが消えます。一つだけ読み込みも出来ないファイルがありました。サイトのリビルドのスピードが遅くなりました。小さいファイルのやり取りが得意ではないのかな。ちょと怖いな。。