openzfsonosx / zfs

OpenZFS on OS X
https://openzfsonosx.org/
Other
823 stars 72 forks source link

Disk Utility Erase ZFS Dataset fails #772

Open haraldrudell opened 4 years ago

haraldrudell commented 4 years ago

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

haraldrudell commented 4 years ago

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

haraldrudell commented 4 years ago

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?

lundman commented 4 years ago

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?

haraldrudell commented 4 years ago

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

lundman commented 4 years ago

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