我必须将 SD 卡格式化为 FAT32,并使用 64 KB 簇大小。
这可以通过mkdosfs
使用命令来-s 128
实现。它似乎按预期工作,遵循与文档一致的所有在线帮助,并且生成的分区可用。
但我无处可以“读”簇的大小分区格式化后的信息,这让我想知道如何检查簇大小是否是预期的大小。disks
不提供此信息。fdisk -l
不提供此信息。gparted
不提供此信息。
有没有办法在 Linux 上查看格式化的 FAT32 分区的簇大小?如果格式化的分区位于 SD 卡上,是否还有其他需要注意的地方?
答案1
我找到了另一个解决方案dosfsck
。
更具体地说,添加-v
查看 FS 详细信息,并-n
确保它不会执行任何其他操作,并且它给出了一个非常完整的描述:
> sudo dosfsck -v -n /dev/sde1
fsck.fat 4.1 (2017-01-24)
Checking we can access the last sector of the filesystem
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
Automatically removing dirty bit.
Boot sector contents:
System ID "mkfs.fat"
Media byte 0xf8 (hard disk)
512 bytes per logical sector
65536 bytes per cluster
128 reserved sectors
First FAT starts at byte 65536 (sector 128)
2 FATs, 32 bit entries
15663104 bytes per FAT (= 30592 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 31391744 (sector 61312)
答案2
只需使用ll
命令和目录大小将是您的块大小(Windows 中的簇大小):
$ ll /
total 40972
drwxr-xr-x 25 root root 4096 Apr 8 16:30 ./
drwxr-xr-x 25 root root 4096 Apr 8 16:30 ../
drwxr-xr-x 2 root root 4096 Mar 31 16:44 bin/
drwxr-xr-x 4 root root 4096 Apr 8 16:32 boot/
drwxrwxr-x 2 root root 4096 Aug 2 2018 cdrom/
我的块大小是 4,096 (4K),这对于ext4
Linux 文件系统来说是正常的。您的情况是 64K,即使 1 字节的文件也会在磁盘上占用 64K 字节。
答案3
答案4
有多种方法可以查找 FAT 文件系统的簇大小:
- 使用包
fsck.fat
中的命令dosfstools
- 使用包
minfo
中的命令mtools
和都是 FAT 专用实用程序。由于 是Ubuntu 上的默认安装(我敢打赌,许多其他发行版也是如此),因此建议使用。事实上,dosfstools
(又名)也来自同一个包。正如您在下面的示例中看到的,感觉更简洁,而提供了更多底层信息。mtools
dosfstools
mkdosfs
mkfs.fat
dosfstools
mtools
以 fsck.fat 为例
请注意dosfsck
(如Cyan 的回答) 是 的符号链接fsck.fat
。实际上,包中只有 3 个可执行文件dosfstools
。其他名称只是符号链接:
dosfslabel → fatlabel
dosfsck / fsck.msdos / fsck.vfat → fsck.fat
mkdosfs / mkfs.msdos / mkfs.vfat → mkfs.fat
执行以下命令:
sudo fsck.fat -n -v /dev/sdb1
macOS 格式的 USB 闪存盘
该设备是一个使用 macOS 上的磁盘实用程序初始化的 USB 笔式驱动器。文件系统是新的(刚刚格式化)并且干净(正确卸载)。结果如下所示:
fsck.fat 4.2 (2021-01-31)
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "BSD 4.4"
Media byte 0xf0 (5.25" or 3.5" HD floppy)
512 bytes per logical sector
512 bytes per cluster
32 reserved sectors
First FAT starts at byte 16384 (sector 32)
2 FATs, 32 bit entries
1613312 bytes per FAT (= 3151 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 3243008 (sector 6334)
403266 data clusters (206472192 bytes)
32 sectors/track, 16 heads
0 hidden sectors
409600 sectors total
Checking for unused clusters.
Checking free cluster summary.
/dev/sdb1: 1 files, 1/403266 clusters
此行告诉您簇大小为 512 字节:
512 bytes per cluster
Linux 格式的 USB 笔式驱动器
以下是对同一个 USB 驱动器在 Ubuntu Linux 上进行分区和格式化的结果:
fsck.fat 4.2 (2021-01-31)
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "mkfs.fat"
Media byte 0xf8 (hard disk)
512 bytes per logical sector
4096 bytes per cluster
32 reserved sectors
First FAT starts at byte 16384 (sector 32)
2 FATs, 32 bit entries
524288 bytes per FAT (= 1024 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 1064960 (sector 2080)
130811 data clusters (535801856 bytes)
63 sectors/track, 255 heads
2048 hidden sectors
1048572 sectors total
Checking for unused clusters.
Checking free cluster summary.
/dev/sdb1: 0 files, 1/130811 clusters
此行告诉您簇大小为 4096 字节:
4096 bytes per cluster
使用 minfo 的示例
执行以下命令:
sudo minfo -i /dev/sdb1
macOS 格式的 USB 闪存盘
该设备是一个使用 macOS 上的磁盘实用程序初始化的 USB 笔式驱动器。文件系统是新的(刚刚格式化)并且干净(正确卸载)。结果如下所示:
Hidden (40) does not match sectors (32)
device information:
===================
filename="/dev/sdb1"
sectors per track: 32
heads: 16
cylinders: 800
media byte: f0
mformat command line:
mformat -t 800 -h 16 -s 32 -r 0 -c 1 -i "/dev/sdb1" ::
bootsector information
======================
banner:"BSD 4.4"
sector size: 512 bytes
cluster size: 1 sectors
reserved (boot) sectors: 32
fats: 2
max available root directory slots: 0
small size: 0 sectors
media descriptor byte: 0xf0
sectors per fat: 0
sectors per track: 32
heads: 16
hidden sectors: 0
big size: 409600 sectors
physical drive id: 0x0
reserved=0x0
dos4=0x29
serial number: 67E317ED
disk label="EFI "
disk type="FAT32 "
Big fatlen=3151
Extended flags=0x0000
FS version=0x0000
rootCluster=2
infoSector location=1
backup boot sector=6
Infosector:
signature=0x41615252
free clusters=403265
last allocated cluster=3
这些行告诉您簇大小为 512 字节:
sector size: 512 bytes
cluster size: 1 sectors
Linux 格式的 USB 笔式驱动器
以下是对同一个 USB 驱动器在 Ubuntu Linux 上进行分区和格式化的结果:
Hidden (2048) does not match sectors (63)
device information:
===================
filename="/dev/sdb1"
sectors per track: 63
heads: 255
cylinders: 66
media byte: f8
mformat command line:
mformat -T 1048572 -h 255 -s 63 -H 0 -r 0 -c 8 -L 1024 -i "/dev/sdb1" ::
bootsector information
======================
banner:"mkfs.fat"
sector size: 512 bytes
cluster size: 8 sectors
reserved (boot) sectors: 32
fats: 2
max available root directory slots: 0
small size: 0 sectors
media descriptor byte: 0xf8
sectors per fat: 0
sectors per track: 63
heads: 255
hidden sectors: 2048
big size: 1048572 sectors
physical drive id: 0x80
reserved=0x0
dos4=0x29
serial number: 8B7B3859
disk label="EFI "
disk type="FAT32 "
Big fatlen=1024
Extended flags=0x0000
FS version=0x0000
rootCluster=2
infoSector location=1
backup boot sector=6
Infosector:
signature=0x41615252
free clusters=130810
last allocated cluster=2
这些行告诉您簇大小为 4096 字节:
sector size: 512 bytes
cluster size: 8 sectors