Ext4

為什麼 mkfs.ext4 不能在 650 MB 的圖像文件上創建 2048 塊大小的文件系統?

  • January 30, 2022

我呼叫的命令如下

  1. 創建圖像文件
dd if=/dev/zero of=benj.luks bs=1k count=666000
  1. 設置 LUKS 容器
cryptsetup luksFormat benj.luks
  1. 設置循環設備並打開 LUKS 容器
cryptsetup luksOpen benj.luks benjImage
  1. 檢查環路設備是否已設置和映射
lsblk

輸出

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0         7:0    0 650.4M  0 loop  
└─benjImage 254:1    0 634.4M  0 crypt 
  1. 在benjImage上創建文件系統ext4
sudo mkfs.ext4 -b 2048 -F -F /dev/mapper/benjImage

命令失敗

mke2fs 1.46.5 (30-Dec-2021)
mkfs.ext4: Invalid argument while setting blocksize; too small for device
cat /sys/block/loop0/queue/physical_block_size
cat /sys/block/loop0/queue/logical_block_size

顯示,循環設備被安裝為 4094 字節的塊設備,不能在其上創建 2048 字節的文件系統。

因此解決方案是手動設置循環設備並使用 -b 選項將扇區大小定義為 2048,如

sudo losetup -b 2048 -f benj.luks

在第 2 步之前,然後在 /dev/loop0 (或分配的任何循環設備)而不是圖像文件上應用連續命令,即

cryptsetup luksFormat /dev/loop0
cryptsetup luksOpen /dev/loop0 benjImage
sudo mkfs.ext4 -b 2048 /dev/mapper/benjImage

引用自:https://unix.stackexchange.com/questions/688529