在性能不是主要问题的服务器之间设置共享/集群读写 POSIX 兼容文件系统的最简单方法是什么?
假设我有两台 Linux 服务器S1
和S2
一个未初始化的(没有文件系统)块设备/dev/sdb
。
注意:自答问题。
答案1
OCFS2 符合 POSIX 标准并且设置起来“简单”,我尝试过并且有效:
apt-get update
apt-get install -y ocfs2-tools
# Only step that needs to be done once on any node
mkfs.ocfs2 /dev/sdb
# Hostname MUST be correct or else it doesn't work
o2cb add-cluster CLUSTER_NAME
o2cb add-node CLUSTER_NAME S1_HOSTNAME --ip S1_PRIVATE_IP
o2cb add-node CLUSTER_NAME S2_HOSTNAME --ip S2_PRIVATE_IP
# Manually copy /etc/ocfs2/cluster.conf to all other nodes
# On all nodes, need to run this to set CLUSTER_NAME as default
# This can be skipped if using "ocfs2" (default cluster name)
# dpkg-reconfigure ocfs2-tools
# On all nodes (required)
echo "kernel.panic_on_oops = 1" > /etc/sysctl.conf
echo "kernel.panic = 30" > /etc/sysctl.conf
# On all nodes:
# Enable port 7777 (used by OCFS2 heartbeats) in firewall
# On all nodes
service o2cb online
# On all nodes
mkdir -p /mnt/shared
echo "/dev/sdb /mnt/shared ocfs2 defaults 0 0" >> /etc/fstab
mount -a
在两台或多台服务器上设置共享读写 POSIX 兼容文件系统非常简单。几乎所有步骤都需要在每个节点上运行。如果将新节点添加到集群,则需要使用 更新所有节点o2cb add-node CLUSTER_NAME SX_HOSTNAME --ip SX_PRIVATE_IP
。
默认情况下,这也使用本地心跳,这比全局心跳更容易设置。