openzfsonosx / zfs

OpenZFS on OS X

Home Page:https://openzfsonosx.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Disk Utility Erase ZFS Dataset fails

haraldrudell opened this issue · comments

Disk Utility Erase partition/replace partition/disk fails, therefore zfs pools are lost on export
macOS thinks disks and partitions are no file system, so pools are never again found

brew cask list openzfs
==> Pkg
OpenZFS on OS X 1.9.4 Catalina.pkg (Pkg)
==> Preflight Block
uninstall_preflight (Preflight Block)
10:07:00 foxyboy@c67 ~% zfs version
zfs-1.9.4-0
zfs-kmod-1.9.4-0

Catalina 10.15.6 (19G20201) as of 8/22/2020

Disk Utility Operations

Disk Utility: Device — Partition: Name, Format: ZFS Dataset:
Partitioning disk “Samsung PSSD T7 Media” (disk2)

Running operation 1 of 1: Erase “zd” (disk2s2)…
Unmounting disk
Erasing
Mounting disk
Could not mount disk2s2 after erase
File system formatter failed. : (-69832)

Operation failed…

Disk Utility: Erase a partition as ZFS dataset:
Erasing “Untitled” (disk2s2) and creating “zd”

Unmounting disk
Erasing
Mounting disk
Could not mount disk2s2 after erase
File system formatter failed. : (-69832)

Operation failed…

Erasing disk device as ZFS Dataset:
Erasing “Samsung PSSD T7 Media” (disk2) and creating “d51”

Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as ZFS Dataset with name d51
Mounting disk
Could not mount disk2s2 after erase
File system formatter failed. : (-69832)

Operation failed…

Commands:
zpool create -Ochecksum=on -Ocompression=lz4 -Oxattr=sa -Onormalization=formD -Outf8only=on z51 /dev/disk2s2
zfs create -oencryption=aes-128-gcm -okeyformat=passphrase -okeylocation=prompt z51/fs

This is not because of some external factor like Catalina or dumb users
The root cause is that the zfs software is not good enough for this use case

And if I create a zfs pool on a gpt partition using Linux, macOS can't find it. Linux can

The root cause if of course to partially disable system integrity protection sip:

boot while pressing command+R
Utilities — Terminal
csrutil enable --without fs
 — Restart…

back at regular Terminal this then holds true (High Sierra 10.14, Catalina 10.15)
csrutil status
System Integrity Protection status: enabled (Custom Configuration).

Configuration:
Apple Internal: disabled
Kext Signing: enabled
Filesystem Protections: disabled
Debugging Restrictions: enabled
DTrace Restrictions: enabled
NVRAM Protections: enabled
BaseSystem Verification: enabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.

However, I don’t get error messages creating my files.

At what point is the user supposed to find out that zfs is operating a ramdrive?

And why am I not told that sip is borked?

What is it you are trying to do? The "DiskUtility" features, that has ZFS is not connected to us, but the old ZFS support - we have not got any support there. But why are you trying to Erase it?

I am listing things that seems to be wrong in the process of using zfs across Linux and macOS

I am not looking for support even though there is a lack of recent documentation less than a year old

In this case, it seems that when sip is in the wrong state, the only way that is surfaced is by pool status listing 8K errors and a forced reboot since the pool cannot be shutdown and that shutdown does not work either.

The information that disk erase is not supposed to be done is new to me. High Sierra seems to list the partition as Unknown or no file system

Ah right - great. Make sure to try the new port sometime as well, in case there are regressions to fix before the first release