Linux NBD 教程:网络块设备快速入门指南

举报
Tiamo_T 发表于 2021/11/25 22:29:35 2021/11/25
【摘要】 NBD 将远程资源作为本地资源呈现给客户端。此外,NBD 驱动程序使远程资源看起来像 Linux 中的本地设备,从而可以构建廉价且安全的实时镜像。 您还可以使用 NBD 将远程机器存储区域用作本地机器交换区域。

网络块设备用于访问物理上不驻留在本地机器上的远程存储设备。使用网络块设备,我们可以在本地机器上通过以下三种方式访问​​和使用远程存储设备:

  1. SWAP
  2. File System
  3. RAW

NBD 将远程资源作为本地资源呈现给客户端。此外,NBD 驱动程序使远程资源看起来像 Linux 中的本地设备,从而可以构建廉价且安全的实时镜像。
您还可以使用 NBD 将远程机器存储区域用作本地机器交换区域。

要设置基于 NBD 的文件系统,我们需要一个 nbd-server(在远程机器上,我们喜欢访问/创建内容)和 nbd-client(在本地机器上,我们喜欢在本地访问远程存储设备)。

一、NBD服务端配置步骤

1.安装nbd-server

如果您使用 Debian 风格,请通过 apt-get 获取 nbd-server。

# apt-get install nbd-server

2.创建文件内容

使用 dd 创建一个文件,如下所示。

# dd if=/dev/zero of=/mnt/dhini bs=1024 count=36000


使用 mke2fs 将 /mnt/dhini 作为文件系统。

# mke2fs /mnt/dhini


当您尝试将 /mnt/dhini 设为 ext2 文件系统时,您可能会收到如下所示的警告消息。按 y 继续。

/mnt/dhini is not a block special device.
Proceed anyway? (y,n) y

3.启动NBD服务器守护进程

Syntax: nbd-server  port-number   filename/filesystem

# nbd-server 1043 /mnt/dhini


您还可以在多个端口上运行 nbd-server,如下所示。

# nbd-server 1043 1077 1076 /mnt/dhini

也可以指定超时时间使服务器运行N空闲秒

二、NBD 客户端配置步骤

在要访问远程存储设备的客户端机器中执行以下步骤。

1.安装nbd-client

如果您使用的是 debian 风格,请通过 apt-get 获取 nbd-client。

# apt-get install nbd-client

2. 使用 nbd-client 在客户端机器上创建文件系统

Syntax: nbd-client  server-ip  server-port#  filename/filesystem

# nbd-client 192.168.1.11 1043 /mnt/dhini

Starting NBD client process: Connecting...Negotiation: ..size = 36000KB
bs=1024, sz=36000
connected /mnt/dhini
Activating...
fsck 1.39-WIP (31-Dec-2005)
/mnt/dhini: Superblock last write time is in the future.  FIXED.
/mnt/dhini has gone 49710 days without being checked, check forced.
/mnt/dhini: |===============================| 56.0%
/mnt/dhini: |===============================| 100.0%


一旦达到 100%,您将在同一路径上获得本地机器上的块设备。

$ls -lh /mnt/dhini
brw-r--r-- 1 root root 43, 0 2009-02-05 17:31 /mnt/dhini


如果您在 NBD 配置过程中遇到任何问题,您还可以通过 dpkg-reconfigure 配置 nbd-server 和 nbd-client。

三、在客户端挂载文件系统

# mkdir /rem_space
# mount /mnt/dhini /rem_space

挂载后,您可能会获得带有“lost+found”的目录。您可以从此时开始正确访问文件和目录。

四、在服务器端获取客户端更改

在本地挂载 nbd 文件系统

# mount -o loop /mnt/dhini /client_changes


如果您没有使用“-o 循环”选项,您可能会收到以下错误:

mount: /mnt/dhini is not a block device (maybe try `-o loop'?)


当您列出 /client_changes 时,您将正确获得所有客户端创建的文件和目录。

五、访问远程存储作为本地交换内存区域

服务器端配置:

1.创建文件

# dd if=/dev/zero of=/mnt/dhini bs=1024 count=16000

2. 不是在 ext2 文件系统中创建文件,而是使用 mkswap 将其创建为交换文件

# mkswap /mnt/dhini

3. 运行服务器守护进程

# nbd-server 1043 /mnt/dhini

客户端配置:

1. 获取文件系统作为交换区

# nbd-client 192.168.1.11 1043 -swap  /mnt/dhini

2. 使用“cat /proc/swaps”进行交叉检查。这将列出交换区域

$ cat /proc/swaps
Filename    Type       Size      Used    Priority
/dev/hda4   partition  650624     57732  -1
/mnt/dhini  partition  15992    0        -4
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。