第 3 章 GNBD 驱动程序及命令用法
全局网络块设备(GNBD)驱动程序允许节点作为一个 GNBD 通过网络导出其本地存储,以便网络中的其它节点可共享此存储。导入 GNBD 的客户端节点可象使用其它块设备一样使用它。在多客户端中导入 GNBD 可形成共享存储配置,通过该共享存储配置可使用 GFS。
GNBD 驱动程序是通过以下组件实施的。
gnbd_serv
— 部署 GNBD 服务器。它是一个用户空间守护进程,允许节点通过网络导出本地存储。gnbd.ko
— 在 GNBD 客户端(使用 GNBD 设备的节点)中部署 GNBD 设备驱动程序。
可用来配置 GNBD 的两个命令:
3.1. 从服务器中导出 GNBD
在某个节点可作为 GNBD 导出存储前必须在其中运行
gnbd_serv
守护进程。您可以按以下方法运行 gnbd_serv
启动 gnbd_serv
:
#gnbd_serv
gnbd_serv: startup succeeded
确定要导出的本地存储后,可使用
gnbd_export
命令导出它。
注意
当您使用设备映射器多路径配置 GNBD 服务器时,您一定不能使用页面缓存。所有是本地卷一部分的 GNBD 必须在禁用缓存的情况下运行。默认情况是
gnbd_export
命令导出时缓存是关闭的。
注意
服务器不应该导入 GNBD 使用其作为客户端。如果服务器导出的设备是没有缓冲的,
gfs
也可以使用基本设备。
用法
gnbd_export -d
pathname
-e
gnbdname
[-c
][-u
][-U
pathname
- 指定要导出的存储设备。
gnbdname
- 为 GNBD 选择任意指定的名称。它可作为 GNBD 客户端中的设备名称。这个名字必须在网络中导出的所有 GNBD 中是唯一的。
-o
- 以只读方式导出该设备。
-c
- 启用缓冲。从导出的 GNBD 读取并利用 Linux 页面缓存。默认情况下,
gnbd_export
命令不启用缓存。注意
当您使用设备映射器多路径配置 GNBD 服务器时,不要指定-c
选项。所有是逻辑卷一部分的 GNBD 必须在禁用缓存的情况下运行。注意
如果您已经使用了 GFS 5.2 或者早期的版本且不想要更改您的 GNBD 设置,您应该指定-c
选项。在 GFS 发行本 5.2.1 之前的版本中,是默认为gnbd_export
启用 Linux 缓存。如果没有指定-c
选项,那么 GNBD 的性能会显著下降。同时,如果没有指定-c
选项,导出的 GNBD 会出现超时,使用默认超时值(-t
选项)。有关gnbd_export
命令的详情及其选项,请参考gnbd_export
man page。 -u
uid
- 为导出的设备手动设定全局识别符。这个选项和
-e
一同使用。UID 是设备映射器多路径来决定哪些设备属于多路径映射。一个设备必须有一个用于多路径的 UID 。但是,对大多数 SCSI 设备来说,默认获得 UID 的命令/usr/sbin/gnbd_get_uid
将返回适当的值。注意
UID 指向要导出的设备,而不是 GNBD 本身。只有在导出同一个基本设备时,两个 GNBD 设备的 UID 才应该是相等的。这就是说两个 GNBD 服务器连接到同一个物理设备。注意
当-U
command
选项不工作时,这个选项应该只用于导出共享存储设备。这在 SCSI 设备中基本不会发生。如果两个 GNBD 设备没有导出同一基本设备,但给出相同的 UID,则会发生数据崩溃。 -U
Command
- 获得 UID 的命令。UID 命令是一个为导出的设备获得统一识别符的
gnbd_export
命令。该 UID 是使用带 GNBD 的设备映射器多路径所必须的。该命令必须使用您要运行的任意可执行全路径。一个命令中可包含 %M、%m 或者 %n 换码序列。%M 可扩展为导出设备的主号码,%m 可扩展为导出设备的副号码,%n 可扩展为该设备的sysfs
名称。如果没有给出命令,GNBD 将默认使用命令/usr/sbin/gnbd_get_uid
。这个命令对大多数 SCSI 设备都适用。
示例
这个示例是配置了 GNBD 多路径的 GNBD 服务器。它将设备
/dev/sdc2
导出为 gamma
。默认禁用缓冲。
gnbd_export -d /dev/sdc2 -e gamma -U
这个示例是没有配置 GNBD 多路径的 GNBD 服务器。它将
/dev/sdb2
设备导出为 GNBD delta
,并禁用缓冲。
gnbd_export -d /dev/sdb1 -e delta -c
这个示例将
/dev/sdb2
设备导出为 GNBD delta
,并启用缓冲。
gnbd_export -d /dev/sdb2 -e delta -c