Answers:
首先,请注意设备块大小与文件系统使用的块大小不同。diskutil报告的前一个值是指硬件使用的原始块大小。我还没有找到一种通过命令行检查后一个值的简便方法,但是您可以创建一个零字节文件,然后从Finder中获取信息。它会说0字节,但在磁盘上使用4k。
其次,您可以使用命令行程序创建大于4k块大小的HFS +文件系统newfs_hfs
。最简单的方法是使用“磁盘工具”对驱动器进行分区,并使用默认格式创建分区,然后用于/bin/df
确定块设备(仅示例:)/dev/disk0s2
。然后卸载该分区(使用umount /dev/diskXXX
或磁盘实用程序),并以具有64k块的HFS +重新格式化:
newfs_hfs -v VolumeName -b 65536 /dev/disk0s2
使用上面的“获取信息”技巧来验证一个小文件现在在磁盘上的占用量为64k(对于10的幂单位,它可能说为65k)。
如果要存储的大多数数据是大文件(例如MP3,照片,视频,.zip文件等),则性能是您可能要执行此操作的主要原因,它还有助于降低磁盘碎片。显然,如果您打算存储大多数小文件,请不要打扰。
我发现在格式化为HFS且具有默认4k块大小的大型驱动器(> 1 TB)上,当驱动器接近容量时,写入性能将大大降低。我猜这是由于分区碎片化,并且不得不搜寻并啄取空闲块才能写出最后1%的数据。我希望更大的块大小可以缓解此问题。
stat -f %k .
。
diskutil info
有时会告诉你分配块大小:Allocation Block Size: 32768 Bytes
以及设备块大小。当rdisk2s0
在读卡器中将原始设备与SD卡一起使用时,我发现这是正确的 。我不知道如何使它适用于硬盘驱动器。
对于较旧的HFS文件系统,这是Apple在Macintosh上第二次尝试使用文件系统时,磁盘上最多只能有65,535个分配块。块大小是磁盘大小(以字节为单位)除以最大分配块数65,535的函数。对于小型磁盘,这很好,但是当磁盘大小开始接近1GB时,最小分配块大小为16 KB(1073741824/65535)= 16384.25,但是您需要将其截断为16384。
这意味着1GB HFS磁盘上的1字节文件需要16,384字节才能存储在硬盘驱动器上,因此浪费了太多空间。因此,Apple创建了HFS +包装器以减少浪费的空间。
可能有一种方法可以将块大小设置得更大一些,但是为什么要这么做呢?
这是一个快速的bash脚本,它将列出所有当前连接的磁盘的所有diskinfo输出。
#!/bin/bash
for disk in /dev/disk*s*
do
diskutil info $disk
echo "**************************************************************************************"
echo " "
done