因此,LVM 和 RAID 可以创建可以跨越多个物理 HDD 的虚拟存储设备。创建逻辑卷或 RAID 设备后,通常要做的事情是使用文件系统格式化设备。
当 ext4 不是集群文件系统时,为什么 mkfs.ext4 可以工作?
据我所知,每个 HDD 上的每个分区都有一个特定类型的本地文件系统(ext2、ext3、ext4、ntfs、fat32...)。如果我们组合来自多个不同 HDD 的分区,是否不需要集群文件系统?
在不使用集群文件系统的情况下,如果多个进程尝试修改同一个文件,会发生什么情况?
答案1
集群文件系统是一种可以处理多台计算机基本上独立访问同一存储的系统。因此,它必须处理,例如,底层存储可能会意外更改(因为其中一台计算机向其写入数据)。
与 RAID1 相比(例如,因为它很容易理解):所做的只是接受文件系统的请求“将数据 X 写入设备 A 上的扇区 Y”,然后将 X 写入设备 B 和 C 上的扇区 Y。或者文件系统请求“读取设备 A 上的扇区 Y”来读取 B 或 C 上的扇区 Y(包含完全相同的数据)。它对文件系统是完全透明的——RAID 提供了一种块设备,其行为与块设备的预期行为完全相同。
基本上,块设备应该具有以下功能(这不是正式定义):
- 允许以任意顺序读/写扇区
- 如果您将数据 D 写入扇区 X,那么以后任意时间读取扇区 X,它都应该返回 D。
RAID 设备就是这样做的(事实上,他们就是这样做的)更好的比实际磁盘)。用于集群文件系统的共享磁盘则不然:特别是,它违反了第二个要点,因为另一台机器可能同时已将数据 D2 写入该扇区。
在这方面,LVM 的功能与 RAID 类似,因为它只是重新映射扇区号,但在某种程度上保留了块设备行为。例如,它可以将扇区 1-100 发送到设备 A,将扇区 101-200 发送到设备 B,但这仍然保留这些行为(当然,前提是 A 和 B 行为)。
答案2
据我所知,每个 HDD 上的每个分区都有一个特定类型的本地文件系统(ext2、ext3、ext4、ntfs、fat32...)。如果我们合并多个不同 HDD 的分区
您不能组合 ext2、ext3、ext4、ntfs、fat32 类型的分区...
您只能组合已使用 LVM PV、RAID 类型格式化的分区...
结果是一个虚拟块设备,就像分区的块设备一样。您可以使用任何块文件系统对其进行格式化,也可以不使用任何块文件系统。 (使用 LVM,PV 被组合成一个卷组,然后您可以在其上创建多个逻辑卷。LV 是虚拟块设备)。
集群文件系统提供完全不同的服务。他们可以允许单身的存储设备,由多台不同的计算机同时安装为文件系统。这是不太普遍的适用性,例如,如果您要拥有几台计算机,那么首先它才有意义。