Eu clonei um disco em um arquivo esparso que tem cerca de 80G, mas na verdade requer apenas cerca de 12G, mesmo não compactado, cabe na minha memória, mas para economizar alguns recursos, quero usar zram :
sudo modprobe zram num_devices=1
echo 79999997952 | sudo tee /sys/block/zram0/disksize
sudo fdisk -c=dos --sector-size 512 /dev/zram0
No entanto, quando crio a partição, ela está usando o tamanho do setor 4096, mesmo que eu disse ao fdisk para usar 512.
Ele não me permite digitar o tamanho da partição com base no tamanho do setor 512, e não é um número exato que eu poderia dividir por 8 para ter um baseado em 4096, então fiz em um mbr esparso :
truncate -s79999997952 /tmp/block
fdisk -c=dos --sector-size 512 /tmp/block
# o, n, p, 1, 63, 156232124, t, 7, a, w
sudo dd if=/tmp/block of=/dev/zram0 count=1 bs=512
Parece que com arquivos regulares o fdisk não vê problema em usar um tamanho de setor de 512! Mas o zram ainda é estranho, não sei se vai funcionar, pois mostra um tamanho de disco diferente quando no modo 512:
$ sudo fdisk -lu /dev/zram0
Disk /dev/zram0: 74.5 GiB, 80000000000 bytes, 19531250 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x5f8b6465
Device Boot Start End Sectors Size Id Type
/dev/zram0p1 * 63 156232124 156232062 596G 7 HPFS/NTFS/exFAT
$ sudo fdisk -lu --sector-size 512 /dev/zram0
Disk /dev/zram0: 9.3 GiB, 10000000000 bytes, 19531250 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x5f8b6465
Device Boot Start End Sectors Size Id Type
/dev/zram0p1 * 63 156232124 156232062 74.5G 7 HPFS/NTFS/exFAT
Entenda, uma vez 156232062 / 8 = 19529007.75
que não há como caber no tamanho do setor 4096.
Como forçar o fdisk ou o próprio zram a usar o tamanho do setor 512?
A tabela de partição em um dispositivo de bloco de 4K deve ser escrita em termos de blocos de 4K.
zram
não inclui nenhuma opção para controlar o tamanho do bloco. É codificado.linux-5.0/drivers/block/zram/zram_drv.c:1947
ZRAM_LOGICAL_BLOCK_SIZE
é definida como uma constante.