디스크를 약 80G의 희소 파일로 복제했지만 실제로는 압축하지 않고도 메모리에 맞지만 사용하려는 일부 리소스를 저장하기 위해 약 12G만 필요합니다.즈람:
sudo modprobe zram num_devices=1
echo 79999997952 | sudo tee /sys/block/zram0/disksize
sudo fdisk -c=dos --sector-size 512 /dev/zram0
하지만 파티션을 생성하면 4096 섹터 크기를 사용한다고 했는데도 불구하고디스크 드라이브512를 이용하세요.
512 섹터 크기 기준으로 파티션 크기를 입력할 수 없고, 정확한 수치도 아니고, 4096 기준 섹터 크기를 8로 나누어서 구할 수 있어서 희소 섹터 기준으로 했습니다.하드 디스크:
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
일반 파일인 것 같아요디스크 드라이브512 섹터 크기를 사용해도 문제 없습니다! 하지만즈람여전히 이상합니다. 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
일단 156232062 / 8 = 19529007.75
4096 섹터 크기에 맞지 않는다는 점을 이해해 주시기 바랍니다.
강제하는 방법디스크 드라이브또는즈람기본적으로 512 섹터 크기를 사용하시겠습니까?
답변1
4K 블록 장치의 파티션 테이블은 4K 블록으로 작성되어야 합니다.
zram
블록 크기를 제어하는 옵션은 포함되어 있지 않습니다. 하드코딩되어 있습니다.
linux-5.0/drivers/block/zram/zram_drv.c:1947
* To ensure that we always get PAGE_SIZE aligned
* and n*PAGE_SIZED sized I/O requests.
*/
blk_queue_physical_block_size(zram->disk->queue, PAGE_SIZE);
blk_queue_logical_block_size(zram->disk->queue,
ZRAM_LOGICAL_BLOCK_SIZE);
blk_queue_io_min(zram->disk->queue, PAGE_SIZE);
blk_queue_io_opt(zram->disk->queue, PAGE_SIZE);
ZRAM_LOGICAL_BLOCK_SIZE
상수로 정의됩니다.