centos7.6默认的内核没有nbd.ko模块,在yum源上也找不到,只能手动从源码编译了。
参考:
在 CentOS 中安装 nbd.ko 驱动模块 - ZVampirEM's Blog
centos7单独编译nbd内核模块 - 武汉-磨渣 - 博客园
安装kernel-src包后,进入/root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block目录
编译:
block]# make CONFIG_BLK_DEV_NBD=m -C /lib/modules/`uname -r`/build M=`pwd` modules make: Entering directory `/usr/src/kernels/3.10.0-957.27.2.el7.x86_64' CC [M] /root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block/nbd.o /root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block/nbd.c: In function ‘__nbd_ioctl’: /root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block/nbd.c:619:19: error: ‘REQ_TYPE_SPECIAL’ undeclared (first use in this function) sreq.cmd_type = REQ_TYPE_SPECIAL; ^ /root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block/nbd.c:619:19: note: each undeclared identifier is reported only once for each function it appears in make[1]: *** [/root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block/nbd.o] Error 1 make: *** [_module_/root/rpmbuild/SOURCES/linux-3.10.0-957.27.2.el7/drivers/block] Error 2 make: Leaving directory `/usr/src/kernels/3.10.0-957.27.2.el7.x86_64' |
根据上述文档,是kernel的bug,修改nbd.c中的代码:
sreq.cmd_type = REQ_TYPE_SPECIAL; 改为 sreq.cmd_type = 7;
再执行: make CONFIG_BLK_DEV_NBD=m -C /lib/modules/`uname -r`/build M=`pwd` modules
------
ko安装好后,安装客户端,centos下yum源:
# cat ceph.repo name=ceph baseurl=http://mirrors.aliyun.com/ceph/rpm-15.1.0/el7/x86_64/ gpgcheck=0 [ceph-noarch] name=cephnoarch baseurl=http://mirrors.aliyun.com/ceph/rpm-15.1.0/el7/noarch/ gpgcheck=0 |
yum install rbd-nbd 即可