NBD(NetworkBlockDevice)简介及基本使用,你了解吗?

NBD(NetworkBlockDevice)简介及基本使用,你了解吗?_58汽车

NBD,即Network Block Device,允许用户通过网络访问块设备或设备镜像。虽然NFS已能实现网络文件系统的挂载和访问,但在需要对存储块设备执行底层操作时,NFS就显得力不从心。NBD不仅覆盖文件系统层,还能深入到块设备层,如格式化、重新分区等。NBD采用client/server架构,server端将存储块设备或镜像文件变为网络块设备,client端连接并挂载使用。在Ubuntu下,可通过安装nbd-server和nbd-client,加载nbd模块,实现NBD的设置和使用。例如,将win7安装镜像作为NBD目标文件,或通过qemu-nbd命令查看虚拟机镜像文件的内部信息,如win7.img镜像的启动分区和主分区。NBD与NFS的主要区别在于,NBD针对存储块设备,而NFS针对文件系统。NBD提供了更底层、更灵活的存储访问方式,尤其适用于需要对存储设备进行特殊操作的场景。NBD(Network Block Device)是一种通过网络访问块设备的技术,与NFS相比,它不仅能访问文件系统层,还能深入到块设备层,实现更底层的操作,如格式化、重新分区等。NBD采用client/server架构,通过在server端设置网络块设备,client端连接并挂载使用。在Ubuntu下,可通过安装nbd-server和nbd-client,加载nbd模块来实现。此外,qemu-nbd命令也基于NBD,用于查看虚拟机镜像文件的内部信息,如win7.img镜像的启动分区和主分区。NBD提供了一种更灵活、更底层的存储访问方式,适用于特殊操作场景。通过NBD技术,用户可以像操作本地存储块设备一样,通过网络访问和管理远程的存储设备。无论是格式化、重新分区,还是查看虚拟机镜像的内部结构,NBD都能提供强大的支持。在Ubuntu系统中,通过简单的命令安装和配置,即可轻松实现NBD的设置和使用。同时,qemu-nbd工具也基于NBD,进一步扩展了其应用范围。NBD以其灵活性和底层访问能力,为存储管理和虚拟化提供了更多可能性。

NBD指的是NetworkBlockDevice,正如其名字的意思,NBD让用户可以通过网络访问到某个块设备,或者设备镜像。

你可能会想NFS(NetworkFileSystem)不是已经可以实现通过网络挂载各种文件系统并进行访问了吗,为什么还要整个NBD呢?

如果用户的目的只是为了简单地访问对文件系统内的文件进行读写,那么NFS已经完全足够用了,但是有时候用户可能需要对存储块设备执行一些更底层的操作,这时候NFS可能就无法满足,需要NBD的方式了。简单地来说,NFS的方式只能管到文件系统层,而NBD的方式则不仅可以管到文件系统层,还可以管到更下面的块设备层。

比如,用户可能想要格式化哪个存储块设备,或者对存储块设备进行重新分区,这时候NFS的方式就无法满足该要求,因为在这些操作过程中,将会导致存在该存储块设备中的文件系统被卸载。对于NFS而言,卸载该文件系统的话,就会失去对该设备的连接。但是如果存储块设备是以NBD的方式挂载到系统中的话,则用户可以像操作本地存储块设备一样操作该通过NBD方式挂载的存储块设备,就像该存储块设备在本地就是通过SCSI或者SATA线连接着的。简单地说,NBD针对的是存储块设备,而NFS针对的是文件系统。

NBD的工作方式也是遵循client/server的基本架构。在server端,通过设置将一个存储块设备或者镜像文件变成一个可以使用的网络块设备,然后在client端,连接挂载该设备进行使用。

Server端:UbuntuIP:192.168.1.5

默认情况下,系统是没有安装NBDserver的,在Ubuntu下可以执行下面命令进行安装:

sudoaptinstallnbd-server

安装完毕后,通过下面命令将NBD模块加载起来:

modprobenbd

执行命令nbd-server9999nbd.file,将一个win7的安装镜像作为目标文件,查看nbd相关进程可以发现nbd-server已经运行起来了

Client端

执行aptinstallnbd-client指令安装nbd客户端

客户端主机页需要安装nbd模块,执行modprobenbd,然后可以在/dev/目录下发现多了几个/dev/nbd#的设备。

执行nbd-client192.168.1.59999/dev/nbd0,将nbd设备关联到/dev/nbd0设备上。

将/dev/nbd0p1挂载到/mnt/目录下,可以看到iso文件里面的内容了。

虚拟化程序QEMU中的qemu-nbd程序也是基于NBD方式对块设备或文件进行挂载,例如可以通过qemu-nbd命令查看一个虚拟机镜像文件的内部信息。

以一个win7.img的虚拟机镜像为例,首先用qemu-nbd命令将该镜像关联到NBD设备/dev/nbd3上(当然需要先加载ndb内核模块)

然后查看NBD设备,可以发现多出了两个nbd设备,即/dev/nbd3p1和/dev/nbd3p2,说明win7.img镜像中有两个分区。

分别将这两个设备文件挂载到文件系统中查看一下里面的内容:

可以发现/dev/nbd3p1其实就是系统的启动分区,而/dev/nbd3p2就是Win7的主分区,即Win7系统的C盘。

以上内容由58汽车提供。如有任何买车、用车、养车、玩车相关问题,欢迎在下方表单填写您的信息,我们将第一时间与您联系,为您提供快捷、实用、全面的解决方案。

原创文章,作者:58汽车,如若转载,请注明出处:https://car.58.com/7018894/