据我所知,(大多数)文件系统不支持多次写入文件系统簇。换句话说,簇是文件系统中最小的单位,即使需要写入一位信息,也需要使用新的簇。但是,这与 RAID 块类似吗?如果 RAID 块比文件系统簇大几倍,是否可以将文件系统簇附加到 RAID 块中?
解释问题的图画:
答案1
你的第一个陈述是不正确的最多文件系统,尽管也有像 ZFS 这样的显著例外,但它们确实在某种Copy on Write
模式下工作。
(编辑:再读一遍,我不确定我是否理解了你的第一句话。你的意思是一条新信息(即新文件)总是需要一个完整的新块,这对于大多数文件系统来说确实如此,但也有一些例外,因为 ZFS 和 btrfs 等现代文件系统相当复杂,并使用可变块大小等功能。
RAID 通常无法在这种模式下工作,因为它们不知道阵列的哪些部分是空闲的,因此对 RAID 设备给定逻辑块的每个写入操作都必须转到同一个 RAID 块。同样,ZFS 和类似的文件系统在这里有所不同,因为它们是 RAID 和文件系统的组合。
最后说明:SSD 始终以写时复制模式工作,这是由于其工作方式所致:更新给定块中的任何内容(即使只有一位)都需要擦除该块并再次写入,而这种擦除操作非常慢。相反,SSD 控制器会在空闲时制作新副本并擦除该块。如果 SSD 用尽用于写时复制的空块,SSD 就会变得非常慢,无法使用。
第二次编辑,回应您的编辑/澄清:
重要的是要理解,Linux 软件 RAID(或硬件 RAID)没有文件或文件系统的概念,它只处理块设备,并根据某些规则将逻辑卷中的块映射到物理介质块。如果 RAID 块大于最小文件系统分配块,则两个或多个文件的数据完全有可能最终出现在这个块中,因为 RAID 驱动程序看到的只是将一段数据写入某个逻辑块的请求,它会根据其规则将该逻辑块写入物理介质,而不管该数据的内容如何。它无法(也没有必要)确定这段数据是否与该块中的其他数据有任何关联。不用说,ZFS/btrfs 的工作方式不同 :)