我正在Debian拉伸上尝试使用gfs2,并且遇到了一些困难。我是一个相当有经验的Linux管理员,但对共享磁盘和并行文件系统来说还是个新手。
我当前的项目是将gfs2 2格式的iscsi导出设备作为共享文件系统安装在多个客户端上。就目前而言,我对医管局或击剑不感兴趣,虽然这可能稍后会很重要。
iscsi部分很好,我可以登录到目标,将其格式化为xfs文件系统,还可以将它挂载到多个客户端上,并验证它是否与相同的blkid一起显示。
为了做gfs2业务,我遵循Debian扩展的"gfs2“手册页上的方案,该手册页是为我的配置修改的,并通过各种搜索等方式稍微修饰了一下。
手册页在这里:https://manpages.debian.org/stretch/gfs2-utils/gfs2.5.en.html
实际错误是,当我试图挂载我的gfs2文件系统时,挂载命令将返回
mount: mount(2) failed: /mnt: No such file or directory..。其中/mnt是所需的挂载点,这当然是存在的。(如果试图挂载到不存在的挂载点,错误是“挂载:挂载点/wrong不存在”)。
在每次挂载尝试中,dmesg报告:
gfs2: can't find protocol lock_dlm我简要介绍了假设Debian包不提供“/sbin/mount.gfs 2”的问题,并进行了查找,但我认为这是一个错误的猜测。
我有一个五机集群( Raspberry Pis,万一重要),命名为pio,pi,pj,pk和pl。它们都有固定的静态IP地址,而且没有域。
我已经安装了Debian gfs2、corosync和dlm控制包.
对于cor产c步骤,我的corosync配置是(例如,对于pio来说,它是集群的主人):
totem {
version: 2
cluster_name: rpitest
token: 3000
token_retransmits_before_loss_const: 10
clear_node_high_bit: yes
crypto_cipher: none
crypto_hash: none
nodeid: 17
interface {
ringnumber: 0
bindnetaddr: 192.168.0.17
mcastport: 5405
ttl: 1
}
}
nodelist {
node {
ring0_addr: 192.168.0.17
nodeid: 17
}
node {
ring0_addr: 192.168.0.11
nodeid: 1
}
node {
ring0_addr: 192.168.0.12
nodeid: 2
}
node {
ring0_addr: 192.168.0.13
nodeid: 3
}
node {
ring0_addr: 192.168.0.14
nodeid: 4
}
}
logging {
fileline: off
to_stderr: no
to_logfile: no
to_syslog: yes
syslog_facility: daemon
debug: off
timestamp: on
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
expected_votes: 5
}该文件存在于所有节点上,对图腾部分中的nodeid和bindnetaddr字段进行了相应的节点特定更改。
Cor产c工具在所有节点上都没有错误地启动,并且所有节点也都有来自corosync quorumtool的正常输出,因此:
root@pio:~# corosync-quorumtool
Quorum information
------------------
Date: Sun Apr 22 11:04:13 2018
Quorum provider: corosync_votequorum
Nodes: 5
Node ID: 17
Ring ID: 1/124
Quorate: Yes
Votequorum information
----------------------
Expected votes: 5
Highest expected: 5
Total votes: 5
Quorum: 3
Flags: Quorate
Membership information
----------------------
Nodeid Votes Name
1 1 192.168.0.11
2 1 192.168.0.12
3 1 192.168.0.13
4 1 192.168.0.14
17 1 192.168.0.17 (local)安装了dlm-controld包,并通过以下简单配置创建了/etc/dlm/dlm.conf。再说一遍,我现在跳过击剑了。
所有节点上的dlm.conf文件都是相同的。
enable_fencing=0
lockspace rpitest nodir=1
master rpitest node=17我不清楚DLM的“锁空间”名称是否应该与cor产c集群名称相匹配。不管怎样,我都看到了同样的行为。
dlm-controld服务启动时没有出现错误,"dlm_tool状态“的输出看起来很正常:
root@pio:~# dlm_tool status
cluster nodeid 17 quorate 1 ring seq 124 124
daemon now 1367 fence_pid 0
node 1 M add 31 rem 0 fail 0 fence 0 at 0 0
node 2 M add 31 rem 0 fail 0 fence 0 at 0 0
node 3 M add 31 rem 0 fail 0 fence 0 at 0 0
node 4 M add 31 rem 0 fail 0 fence 0 at 0 0
node 17 M add 7 rem 0 fail 0 fence 0 at 0 0gfs2文件系统是由以下人员创建的:
mkfs -t gfs2 -p lock_dlm -j 5 -t rpitest:one /path/to/device在此之后,"blkid /path/ to /device“报告:
/path/to/device: LABEL="rpitest:one" UUID=<stuff> TYPE="gfs2"在所有的iscsi客户机上它看起来都是一样的。
此时,我觉得我应该能够在任何/所有客户机上挂载gfs2文件系统,但是这里是我在上面得到错误的地方--挂载命令报告了一个“没有这样的文件或目录”,以及dmesg和syslog报告"gfs2:无法找到协议lock_dlm“。
还有一些其他的gfs2指南,但其中许多似乎是RH/CentOS特有的,对于其他集群管理方案,比如cman或心脏起搏器。这些不一定是交易的打破者,但这是高价值的工作,对我来说,这项工作几乎股票Debian拉伸。
在我看来,这可能是一个非常简单的dlm错误配置,但我似乎无法确定它。
附加线索:当我试图“加入”一个锁空间时
dlm_tool join <name>..。我得到一个dmesg输出:
dlm cluster name 'rpitest' is being used without an application provided cluster name这是独立于我加入的锁空间是否是“最快”的。这表明锁空间名称和集群名称确实是一回事,而且/但是dlm显然不知道cor产c配置?
发布于 2018-04-24 06:09:33
来自config GFS2_FS_LOCKING_DLM的Kconfig文档:
GFS2的大多数用户都需要这样做。它提供了GFS2和DLM之间的锁定接口,在集群环境中使用GFS2是必需的。
因此,请确保启用了它,否则用-p lock_dlm (gfs2_mkfs中的默认锁协议)创建的文件系统将无法使用(如果没有挂载时间覆盖)。lock_nolock锁协议只适用于单节点挂载。
https://unix.stackexchange.com/questions/439311
复制相似问题