Re: FreeBSD boot from root pool larger than 1Tb/cannot read MOS/all block copies unavailable
Date: Wed, 27 Apr 2022 08:20:59 UTC
Am 27.04.22 um 02:10 schrieb Charles Sprickman:>> On Apr 26, 2022, at 10:10 AM, Eugene M. Zheganin <eugene@zhegan.in> wrote: >> >> Hello, >> >> recently I found another server that was running 12.x and became unbootable because of the famous "cannot read MOS/all block copies unavailable/etc" gptzfsboot message which can be randomly displayed when boot blocks migrate beyond 1st Tb on a large root pool. > > Is this documented somewhere? I’m pretty sure I have a number of servers that fit this description. How do boot blocks “migrate”? Boot blocks on PCs are traditionally stored in the first few sectors of the boot disk. But those are only used to load a loader that knows about the actual file system format used, and the loader still relies on BIOS functions to access the boot file system where the kernel resides. BIOS limits have hurt PC users over the years, and those limits have always been only slightly increased, just enough to support common disk sizes at the respective point time: https://tldp.org/HOWTO/Large-Disk-HOWTO-4.html With UFS the kernel was typically loaded from the "a" partition, which commonly was small and placed first on the disk. With ZFS you can have a small boot pool (or base system pool) in a partition completely within the range covered by the BIOS to create a somewhat similar layout. Else ZFS may place parts of the kernel anywhere on a pool that may be much larger than the BIOS call can address. This is not a FreeBSD limit, it is a limit of the technology provided by the PC platform and the functionality provided by the PC BIOS. Regards, STefan