我有两台 RHEL 6 服务器,它们共享与 SAN 存储的物理连接(即,因此两台服务器/dev/sdb
在运行时都可以看到这一点fdisk -l
)。
我的目标是不要让两台服务器同时访问 ext4。事实上,大部分时间其中一台服务器都会安装它。只有当第一台服务器出现故障时,我才会希望另一台服务器挂载这个 ext4 文件系统。
我已经创建了逻辑卷并测试了两台服务器都可以成功挂载该文件系统。我将编写脚本来检查并确保在安装之前该卷未安装在其他服务器上。
我的问题是,当服务器轮流挂载这样的 ext4 文件系统时,是否会存在我遗漏的潜在问题?我担心操作系统可能会对卷进行一些检查或“注释”......
答案1
以这种方式使用 ext4 没有问题,事实上,这通常是在高可用性 (HA) 配置中使用文件服务器(例如双宿主 NFS 服务器或大型集群文件系统,如 Lustre)来完成的。甚至还有一个 ext4 功能 - 多安装保护 (Multi-Mount Protection) ( mmp
),旨在与 HA 软件结合使用减少同时安装在两个节点上会导致文件系统损坏的风险。
也就是说,您绝对应该使用 Corosync/Pacemaker(默认情况下包含在 RHEL/CentOS 中)等现有 HA 软件来管理存储,而不是编写自己的软件(这会导致丢失所有数据)。与powerman
STONITH 的硬件电源控制(例如 )和mmp
(在 Corosync/Pacemaker 失败的罕见情况下进行备份)一起,您可以安全地将单个 ext4 文件系统安装在两台或多台服务器上 - 一次安装在一台服务器上。
您的问题并不清楚,但请注意,在单身的同时在服务器之间使用磁盘并不是很安全。您一次只能从任何一台服务器访问整个磁盘。
答案2
实际上,当您卸载文件系统并从另一个操作系统安装中安装它时,我多次做过一个常见的场景。这被称为“恢复”。
每当您进行恢复时,您都会从 CD 或其他计算机安装上的操作系统引导,并对文件系统进行更改。您卸载它并从原始操作系统启动,一切正常。
这种情况类似于标准维护任务,我(可能还有每个经验丰富的 Linux 管理员)已经完成了数十次,没有出现任何问题。
此外,您可以在一台计算机上安装 USB 驱动器,卸载它并安装到另一台计算机上,也不会出现问题。
当然还有一些关于文件系统的注释。它不依赖于特定的安装,而是存储重要的 FS 属性,例如“安装选项、文件系统状态 - 干净等......”。
您可以在致电时了解这些属性
男人调2fs
当您正确卸载文件系统并将其安装在不同操作系统上时,我不会太担心这种情况,就像我会担心正确的锁定机制等一样...... Ext3/4 文件系统不是为集群使用而创建的,我也不会明白你为什么要这样做。
还有替代方案 OCFS2(Oracle Cluster File System 2),它是免费的、开源的,并且在 Linux 内核中专门为此类情况创建。当您可以使用经过测试的免费解决方案时,我不明白为什么不使用 OCFS2 而是使用自制(阅读“具有未知错误”)锁定系统。
答案3
只要文件系统被干净地卸载,这两个主机就没有理由不能按照您刚才描述的方式共享该设备,前提是有一个通用的 userId (UID)。 如果 Alice 是主机 A 上的用户 id 1001,而 Bob 是主机 B 上的用户 id 1001,则主机 A 上的 Alice 所拥有的挂载在 /mnt/yourshareddevice/somedirectory 上的 /dev/sdb 上的目录将归主机 B 上的 Bob 所拥有。
就我个人而言,我发现通过更传统的网络文件存储解决方案(NFS、SMB、Gluster 等)共享该设备更方便,但您所描述的内容是可行且实用的。