是否可以多次写入RAID块?

据我所知,(大多数)文件系统不支持多次写入文件系统集群。 换句话说,集群是文件系统中最小的单元,即使需要写入单个信息位,也需要使用新的集群。 但是,它与RAID块相似吗? 如果RAID块大于文件系统群集的多倍,是否可以将文件系统群集追加到RAID块中?

为解释问题绘图:

对于大多数文件系统来说,你的第一个陈述是不真实的,虽然有一些明显的例外,比如ZFS,它确实在Copy on Write模式下工作。

编辑 :再读一遍,我不确定我是否理解了你的第一个陈述,如果你的意思是一个新的信息,即一个新的文件,总是需要一个完整的新块,这对大多数文件系统来说的确如此现代文件系统(如ZFS和btrfs)的一些例外情况非常复杂,并使用可变块大小等特性。

RAID通常不能在这种模式下工作,因为他们不知道arrays的哪些部分是空闲的,所以对RAID设备的给定逻辑块的每个写入操作都必须进入相同的RAID块。 再次,ZFS和类似的文件系统在这里是不同的,因为它们是RAID和文件系统的组合。

最后一句话:固态硬盘总是工作在写时复制模式,因为它们的工作原理:更新给定块中的任何内容,甚至一个位,都需要擦除块并再次写入,这个擦除操作真的很慢。 相反,SSD控制器会创build一个新副本,并在空闲时擦除该块。 如果SSD用完COW的空白块,则SSD变得无法使用缓慢。

第二编辑,回应您的编辑/澄清:

了解Linux软件RAID(或者硬件RAID)对文件或文件系统没有概念是很重要的,它只处理块设备,实质上是根据某些逻辑卷将块映射到物理媒体块规则。 如果一个RAID块大于最小的文件系统分配块,则完全可能的是,来自两个或多个文件的数据最终在这个块中,因为所有RAID驱动程序都看到的是向某个逻辑块写入一段数据的请求无论这些数据的内容如何,​​它都会根据其规则写入物理介质。 没有办法(也没有必要)甚至确定这个数据块是否与这个块中的其他数据有任何关系。 不用说,ZFS / btrfs的工作方式不同:)