あのなつ日記

毎日、色々な事を考えてます。

お仕事につながればと、一生懸命、書いています。

ZFS on Mac 奮闘記

2020-09-15 17:37:27 | IT関係


奮闘記と言うほどでもなく、さっくりと動いてしまった。
ただ、ネット上では『ZFS on Mac』の情報は驚くほど少ないので、一助になればと書いてみました。





1.インストール






公式サイトから、最新のdmgを落としてきてインストールする。
このときに、Macのセキュリティとプライバシーに引っかかるんだけど、


「許可をするのに、このインストーラーを終わらせてから」

と、終わろうとさせると、


「インストール中です」

の狭間で、どうしようもなくなる。
まあ、このまま無視してもインストールは完了するので、後でなんとかなる。





2.フォーマット





インストールすると、Macのディスクユーティリティに ZFSが出てくるので、これでフォーマットするだけ。










だった筈なんだけど、用意したHDDがWindowsで使用していたもので、MBRでフォーマット済だったために、ちょっとはまった。


Error: -69821: Partitioning scheme does not support requested file system(s) partition type(s)


が出て、ディスクユーティリティからZFSでフォーマット出来ないのだ。
なので一度、コマンドラインから、


diskutil eraseDisk JHFS+ tempName GPT /dev/disk2


っと、GPTにして、事なきを得た。





disk2〜disk5までのフォーマットが終わった状態。
TYPEのところが、『FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF』となっているけど、気にしない。


/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         1.0 TB     disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +1.0 TB     disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD - Data     977.9 GB   disk1s1
   2:                APFS Volume Preboot                 83.2 MB    disk1s2
   3:                APFS Volume Recovery                528.9 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4
   5:                APFS Volume Macintosh HD            11.4 GB    disk1s5

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk2s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk2s3

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk3s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk3s3

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk4s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk4s3

/dev/disk5 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk5
   1:                        EFI EFI                     209.7 MB   disk5s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk5s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk5s3





3.RAIDZの作成






色々とググった結果、以下のパラメータでcreateすることにした。


sudo zpool create -f -o ashift=12 -O casesensitivity=insensitive -O normalization=formD tank raidz disk2s2 disk3s2 disk4s2 disk5s2


一応、解説しておくと、

ashift=12
セクタサイズを4096にする。

casesensitivity=insensitive
ディレクトリ名やファイル名の大文字小文字を区別しない。

normalization=formD
ディレクトリ名やファイル名の並び順を正規化形式Dとする。

tank
名前は何でもいいのですが、ZFS界隈ではこの名前をつけたりするのが一般的。

名前以外のパラメータは、この通りにしておいた方が無難。
みんなそうしているみたいで、特にMacの場合には、諸々とエラーの原因になることがあるそうで。






が、しかし、、。
以下のエラーを得てしまった。

Failed to load ZFS module stack.
Load the module manually by running '/sbin/kextload /Library/Extensions/zfs.kext' as root.
The /dev/zfs device is missing and must be created.
Try running 'udevadm trigger' as root to create it.



ちなみに言われたとおり、

sudo /sbin/kextload /Library/Extensions/zfs.kext


を実行するも、

/Library/Extensions/zfs.kext failed to load - (libkern/kext) system policy prevents loading; check the system/kernel logs for errors or try kextutil(8).



これでググったりして、30分ぐらいロスしてしまったけど、なんの事は無い、インストール時に無視したツケが回ってきていただけだった。

セキュリティとプライバシー > 一般 に何か出てたので、許可したらすんなりいった。
GUIだと画面に出てくるんだけど、コマンドラインでやっているので、知らない間にこっそりと出ているので要注意だ。

あと、bashで作業するので、bashのフルアクセスも許可しておくと無難かも。






で、以下の結果。

$ zpool list
NAME   SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank  5.44T  2.64M  5.44T        -         -     0%     0%  1.00x  ONLINE  -


$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         1.0 TB     disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +1.0 TB     disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD - Data     977.8 GB   disk1s1
   2:                APFS Volume Preboot                 83.2 MB    disk1s2
   3:                APFS Volume Recovery                528.9 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4
   5:                APFS Volume Macintosh HD            11.4 GB    disk1s5

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk2s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk2s3

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk3
   1:                        EFI EFI                     209.7 MB   disk3s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk3s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk3s3

/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk4
   1:                        EFI EFI                     209.7 MB   disk4s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk4s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk4s3

/dev/disk5 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk5
   1:                        EFI EFI                     209.7 MB   disk5s1
   2: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF               1.5 TB     disk5s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk5s3

/dev/disk6 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +4.3 TB     disk6
   1:                ZFS Dataset tank                    4.3 TB     disk6s1


$ zpool status
  pool: tank
 state: ONLINE
  scan: none requested
config:

	NAME         STATE     READ WRITE CKSUM
	tank         ONLINE       0     0     0
	  raidz1-0   ONLINE       0     0     0
	    disk2s2  ONLINE       0     0     0
	    disk3s2  ONLINE       0     0     0
	    disk4s2  ONLINE       0     0     0
	    disk5s2  ONLINE       0     0     0

errors: No known data errors









4.パーミッション






ユーザーレベルが使用できるように適当に。

$ sudo chmod 777 /Volumes/tank





5.ドライブの切り出し






tankのまま使用してもいいんだけど、ZFSは多層的に管理できるので、Usersと言う名前で、切り出してみた。

$ sudo zfs create tank/Users
$ sudo chmod 777 /Volumes/tank/Users










しかし、これが問題点になるとは、、、。





6.問題点






さっくりと設定できて、サクサク動いて、通常使用でも問題は起きてないんだけど、ちょっと不満点が。

ZFSは多層的に管理されているんだけど、dfコマンドはそれに対応していない。
なので、tankはみられるけど、その下のtank/Usersはみられないし、tankとして使っている容量にtank/Usersは含まれていない、、、。

リンゴマークから、このマックについても多分、単純に dfコマンドを実行しているだけなんだろう、結果は同じ。










一応、zfsコマンドではみられる。

$ zfs list -r tank
NAME         USED  AVAIL  REFER  MOUNTPOINT
tank         301G  3.53T  1.81M  /Volumes/tank
tank/Users   301G  3.53T   301G  /Volumes/tank/Users

tank/Usersを切り出さなかったら良かったのか?
切り出さなくてもみられなかったのか?
今となっては、謎。

そして、この点に関しては、不便極まりない、、、。



外付けHDDボックス購入

2020-09-14 16:15:51 | IT関係

MacのSSDがいっぱいになってきたので、HDDを増設することにした。

1.5TBのHDDが10台ほど余っているので、箱だけ買って適当にRAIDを組み上げようと画策。
っと、思って買ったんだけど、Macって、ソフトウェア(or BIOS)だけでRAID5が組めないのかーー。


仕方がないので、ZFSで構築することにした。

ZFSとは、ライセンス問題が解消されればAppleもLinuxも組み込みたい意向は示している画期的なファイルシステムだ。
(Ubuntuのパッケージには入っているけど、Linux著作権委員会から文句が飛んでいるらしい。)


ZFSは出始めの頃に、FreeBSDで試したっきり。
ちょっとググっても、ZFS on Macの情報は驚くほど少ない。

はてさて。

同じ箱でRAID5付のは5,000円ぐらい高い、、。