Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zfs-grub fails with -o ashift=12 #348

Closed
aarcane opened this issue Aug 1, 2011 · 3 comments
Closed

zfs-grub fails with -o ashift=12 #348

aarcane opened this issue Aug 1, 2011 · 3 comments
Assignees
Milestone

Comments

@aarcane
Copy link

aarcane commented Aug 1, 2011

zfs grub cannot detect zfs when you type grub-probe / from a chroot with ashift=12.
grub likely cannot read these filesystems or boot with them if you somehow force an install.

@ghost ghost assigned pendor Aug 1, 2011
@pendor
Copy link
Contributor

pendor commented Aug 4, 2011

I believe I have a patch for this. Need to clean it up a bunch in the morning & will post.

@pendor
Copy link
Contributor

pendor commented Aug 13, 2011

This has been fixed. Patch against grub trunk is here:

pendor/grub-zfs@a4d1791

Patch is integrated into -9999 build in zfs Gentoo overlay. I believe Darik (dajhorn) is working on back porting to 1.99 build and integrating into Ubuntu packages.

@behlendorf
Copy link
Contributor

Thanks Pendor, closing this issue.

ahrens pushed a commit to ahrens/zfs that referenced this issue Jul 26, 2021
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
sdimitro pushed a commit to sdimitro/zfs that referenced this issue May 23, 2022
Today, zettacache disks are divided into 4 sections:
* superblock (4KB)
* checkpoint (0.1% of cache)
* metadata (BlockBasedLog's) (10% of disk)
* data blocks (in slabs - remaining 90%, 3% of which is left unallocated)

We don't handle metadata allocation failures, so we need to reserve
enough space for metadata to cover exceptional cases (e.g. very small
average block size; our calculations assume 2KB).  Typically most of the
metadata space will not be used.

This commit makes the zettacache allocate space for metadata and
checkpoints dynamically, from the slab space.  The new disk layout has 2
sections:
* superblock (4KB)
* slabs (used for checkpoint, BlockBasedLogs, and user data blocks
  managed by the BlockAllocator)

The implications of this design change are widespread throughout the
codebase:

Allocation of slabs is separated from allocation of blocks within slabs.
The SlabAllocator provides empty slabs to both the BlockAllocator (for
user data) and the BlockBasedLog (for metadata).  The BlockAllocator is
now unaware of the total number of slabs.  The logic and on-disk state
for mapping SlabId's to Extents (location on disk) is moved to the
SlabAllocatorPhys.

The ExtentAllocator is removed, its functionality is replaced by the
SlabAllocator.

Parameters around how much to evict and evacuate (rebalance) are
changed.  We now keep 4% free slabs for metadata, plus 5% free space for
user data (of which 2% should be in empty slabs).  This reduces the
total amount of free space target from 13% to 9%.  We can tighten this
up dynamically as we have more experience and make future changes (e.g.
freeing the IndexRun as the merge progresses).

Added new tunables to control eviction and evacuation (rebalancing).

Changes to `zcache stats`, `zcachedb space` and `zcachedb slabs` to
reflect the lack of a separate metadata region.

This is a non-upgradeable on-disk format change; the zettacache will be
cleared when upgrading to this.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants