假设我们有一个块设备(例如硬盘),其扇区大小为 4096 字节,并且没有可用的 512 字节模拟(硬盘仅理解 4096 字节大小的单位)。
是否可以使用具有 512 字节逻辑块的文件系统来格式化设备? fs 将如何使用磁盘块?我的意思是它是否只使用 4096 字节中的 512 字节,其余的都浪费了(磁盘扇区和 fs 块之间的一对一映射)?我假设如果文件系统知道这个问题,它可以自己进行某种 512 字节模拟(读取磁盘扇区,修改 RAM 中 512 字节的一部分,然后将扇区写回磁盘),尽管每次写入都会有一些开销或冗余工作。我不确定这是否有意义!请纠正我。
答案1
可以有这样的配置,但并不常见。所有主流文件系统(NTFS、FAT32、ext4、btrfs 等)都使用 4KB 块,与最常用的内存页面大小配置(4096 字节页面)相匹配。本世纪之前的磁盘使用 512 个物理扇区,但所有现代硬盘(甚至 SSD)都使用 4KB 物理扇区(由于空间密度问题),但由于存在一个大型遗留软件堆栈,块设备(Windows Vista、Windows XP、2.6 之前的 Linux 内核和许多其他用户空间实用程序和嵌入式应用程序)的假设为 512 字节,硬盘制造商实现了所谓的 512 字节模拟,向软件(操作系统)公开 512b 扇区大小,但使用 4096b 底层扇区大小。
XFS 可以配置为使用 512 字节块,但如果您愿意(我在自言自语!!?)在 4096b 磁盘上使用此配置,您必须确保您的分区对齐良好,否则,您将遭受性能下降:如果您写入 512b 块,磁盘将首先将整个 4096b 扇区提取到其内部 DRAM 中,修改其中 512b 的一部分,然后将其写回磁盘(尽管某些缓存技术可能会减少此问题的影响)。所以
最终的答案是:是的,这是可能的,但它可能会导致性能下降,而且通常它不是 IRL 中常见的配置。
答案2
这是不正确的。
如果你的块大小为:配置为 512B,原生为 4096B
这不是浪费空间,恰恰相反。它不会只使用 4096 个中的 512 个,那样会很浪费。它以“轻微的性能损失”为代价来节省空间
我在 RAID 1 ZFS 上安装了这个,我的一个朋友也安装了。他重新格式化了它,使块大小 4096 与 Native 匹配。他没有注意到任何 WOW,速度快了很多,但他损失了大约 90 GB 的空间,因为现在较小的文件占用了整个 4096,而以前小文件只占用 512。
在 Raid 1 池和 1 GB 局域网连接上,我最大程度地提高了千兆位传输速度,并没有注意到性能有任何下降(尽管有一些)
底线是,空间冲击比任何速度冲击更加引人注目。
我会保留我的
块大小:配置为 512B,原生为 4096B
答案3
简短的回答:是的,有可能。
更长的答案:这很复杂!在大多数经典磁盘上:这是可能的,但并不常见,并且会影响性能。
在使用 shm 的磁盘驱动器和闪存介质上完全正常。因为“块大小”在那里是一个复杂得多的事情!逻辑块大小并不总是与最小写入块(页面)大小一致,并且在大多数情况下,删除块(块)大小也大得多!
答案4
从 Windows 文件系统的角度来看,我倾向于说答案是否定的。
簇/“块大小”定义为卷引导记录中每个簇的扇区数。据我所知,最小值为 1(在 exFAT 中为零,但这意味着 1 个扇区/簇)。
有人可能会争辩说,即使驱动器内部使用 4096 字节扇区,它本身也可能显示/暴露 512 KB 扇区大小。
虽然这是事实,并且簇可能小于实际的物理扇区大小,但是您不能将 Windows 文件系统配置为簇大小小于报告的扇区大小。
除了扇区大小之外:在驱动器固件级别,我们可以让文件系统“相信”很多东西,甚至物理驱动器的大小要比实际的更大,正如骗子发现并利用它来生产假存储卡一样。
正如其他人所说,这没有什么意义,物理扇区是最小的可寻址单元,因此要从 4096 个物理扇区磁盘读取模拟/伪造的 512 字节扇区,无论如何都会读取整个 4096 个扇区。