如何在CentOS7上加载网络块设备

3

我正在尝试在我的CentOS7服务器上加载nbd网络块设备。然而,我遇到了以下问题:

modprobe nbd
modprobe: FATAL: Module nbd not found.

如果有人能告诉我最好的加载 nbd 模块的方法,我将不胜感激。最终,我希望能通过ansible自动化这些任务。

以下是我的内核版本:

$ uname -r
3.10.0-327.28.3.el7.x86_64

谢谢!


感谢您的评论。在我看来,我认为这与开发有关。例如,类似的问题如:https://dev59.com/km445IYBdhLWcg3wdqSO、https://stackoverflow.com/questions/35525960/trying-to-manage-linux-kernel-modules-modprobe-command和https://dev59.com/2HVC5IYBdhLWcg3wpS3g。但是我很感激您分享这些链接并告知我其他平台。 :) - Lucas H. Xu
1
是的,要小心根据其他问题来衡量你的问题是否与主题相关。它们可能也不相关。问题在于,我们(Stack Overflow社区)在执行网站规则方面做得不好。你似乎陷入了一个更糟糕的陷阱 - 回到2008年或2009年,网站规则是不同的;而像[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)这样的网站并不存在。但如果我错了,请展示驱动程序的相关代码,例如`insert_mod`和`remove_mod`。 - jww
这是一个很好的观点,你说得对,规则自那时以来已经改变。至于显示驱动程序的相关代码,如果您能更详细地阐述一下,那将不胜感激。也许一个更好的问题标题是如何在CentOS7上安装网络设备块?在Ubuntu上做这件事似乎非常简单,但在CentOS上却不是这样。 - Lucas H. Xu
在解决了一些依赖项错误并安装了rpm-build软件包(不在rpm软件包中)之后,我成功将NBD模块添加到CentOS 7内核中。请确保在http://vault.centos.org/上使用正确的版本。 - Tripko
1个回答

7

我认为这很有用。如果您发现这不适用于您,请告诉我。

uname -r
sudo su
# useradd builder
# groupadd builder
cd /home/centos
# Get Source Code, make sure you check the kernel version first and download the proper version
wget http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-327.28.3.el7.src.rpm
rpm -ivh kernel-3.10.0-327.28.3.el7.src.rpm

# Build Preparation
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
cd ~/rpmbuild/BUILD/kernel-3.10.0-327.28.3.el7/linux-3.10.0-327.28.3.el7.centos.x86_64/

# Build
make menuconfig
# Device Driver -> Block devices -> Set “M” On “Network block device support”

make prepare && make modules_prepare && make
make M=drivers/block -j8
modinfo drivers/block/nbd.ko
cp drivers/block/nbd.ko /lib/modules/3.10.0-327.28.3.el7.x86_64/extra/
depmod -a && sudo modprobe nbd

这将使CentOS7上的nbd功能可用。

1
{btsdaf} - szmoore
{btsdaf} - szmoore
感谢您的评论@szmoore。因此,如果您确实想添加用户“builder”(建议这样做),则应在/home/builder/rpmbuild下运行make。感谢您发布有关安装gcc版本> 6的说明链接。 - Lucas H. Xu
1
请注意,对于那些遇到这篇文章的新手来说,这些指南已经比较老了,因此还有一个额外的指令。NBD的一部分代码依赖于旧的函数。因此,在执行“make menuconfig”之后,使用vim、nano或其他编辑器打开drivers/block/nbd.ko文件,并查找包含“REQ_TYPE_SPECIAL”的行,将其重命名为“REQ_TYPE_DRV_PRIV”,然后保存并关闭文件。然后继续执行指令。 - EricDAltman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接