Hello!
I'm trying to optimise ext4 speed and host zfs dedup and speed and write amplification.
One of the things I'd like to achive is ext4 blocks(block groups?) alignment to ZVOL 128k blocksize.
I tried ext4 -O bigalloc -C 131072, which yes, gives some advantage, but it's not quite what I need, AND it is an option still in kernel devel. Also sometimes I use 256kb blocksize and this would mean that every file, even 1kb one, will use a "virtual" 256kb which will skew the "used space" on the guest side, and compression ratio on the host side pretty darn well.
Compression has no problem with the "leftover" free space in the clusters tho.
What I would like to achive:
- align files bigger than 128kb (or all files) on ext4 starting at 128kb boundary - this would allow for close to 100% deduplication as the ZVOLs are set to 128kb blocksize, so the file won't start "somewhere" within 128kb block (ext4 uses 4k blocks by default so the file can start at 0, 4k, 8k, 16k realtive to the ZVOL block, right? so the same file may look very different at the ZVOL side)
I thought about ext4 stride size. Can it be used to force ext4 to align files to 128kb blocks? Stride and stripe-width parameters are very poorly described all over the net. Most definitions are about raid setups and i'm not interested in how many drives the nonexistent raid has.
I'm also thinking about non compressed ZFS ontop of a ZVOL with recordsize set to 128kb. But the COW overhead of zfs does'nt seem like a good choice. And i'd like to avoid nonlinear reads/writes and gaps created by zfs cow system at the guest side.
I don't use partitions, so the ext4 starts right at the beginning of the block device.
I'm trying to optimise ext4 speed and host zfs dedup and speed and write amplification.
One of the things I'd like to achive is ext4 blocks(block groups?) alignment to ZVOL 128k blocksize.
I tried ext4 -O bigalloc -C 131072, which yes, gives some advantage, but it's not quite what I need, AND it is an option still in kernel devel. Also sometimes I use 256kb blocksize and this would mean that every file, even 1kb one, will use a "virtual" 256kb which will skew the "used space" on the guest side, and compression ratio on the host side pretty darn well.
Compression has no problem with the "leftover" free space in the clusters tho.
What I would like to achive:
- align files bigger than 128kb (or all files) on ext4 starting at 128kb boundary - this would allow for close to 100% deduplication as the ZVOLs are set to 128kb blocksize, so the file won't start "somewhere" within 128kb block (ext4 uses 4k blocks by default so the file can start at 0, 4k, 8k, 16k realtive to the ZVOL block, right? so the same file may look very different at the ZVOL side)
I thought about ext4 stride size. Can it be used to force ext4 to align files to 128kb blocks? Stride and stripe-width parameters are very poorly described all over the net. Most definitions are about raid setups and i'm not interested in how many drives the nonexistent raid has.
I'm also thinking about non compressed ZFS ontop of a ZVOL with recordsize set to 128kb. But the COW overhead of zfs does'nt seem like a good choice. And i'd like to avoid nonlinear reads/writes and gaps created by zfs cow system at the guest side.
I don't use partitions, so the ext4 starts right at the beginning of the block device.