本文将详细指导您在 Linux 系统(如 Ubuntu、CentOS)中完成(块设备)的挂载、卸载及状态查看操作。本指南的前置条件为:您已拥有正常运行的集群,且已获取集群连接信息(如密钥、Monitor 地址等)。

一、准备工作:确认前置条件

在执行 RBD 块存储挂载操作前,请务必确保以下条件全部满足,以避免操作失败:

  • 集群状态正常:集群处于健康运行状态(可通过集群管理平台或ceph -s命令验证)。
  • 网络连通性正常:客户端机器能稳定访问集群的 Monitor 节点及 OSD 节点,相关端口(如 6789、3300 等)已开放。
  • 连接信息已配置:客户端已完成 Ceph 集群连接配置(如ceph.conf配置文件及密钥文件已部署至/etc/ceph/目录)。
  • RBD 资源已存在:集群中已创建目标 RBD 存储池(如示例中的test-pool)及 RBD 镜像(如示例中的test-image)。
  • 客户端工具已安装:客户端已安装 ceph-common 工具包(包含 rbd 命令),安装方法详见下文补充说明。

    补充:若未安装ceph-common工具包,可执行以下命令安装:

    • Ubuntu/Debian 系统:
      sudo apt update && sudo apt install -y ceph-common
    • CentOS/RHEL 系统:
      sudo yum install -y epel-release && sudo yum install -y ceph-common

二、核心操作:挂载 RBD 块存储

RBD 镜像需先映射为本地块设备,再通过格式化(首次使用时)和挂载操作,实现客户端的访问。完整步骤如下:

步骤 1:映射 RBD 镜像为本地设备

使用 rbd map 命令将集群中的RBD test-pool/test-image镜像(如何获取存储块?)映射到客户端本地,生成对应的块设备文件(如/dev/rbd0):

# 命令格式:sudo rbd map 存储池名/镜像名 --id 认证用户名
sudo rbd map test-pool/test-image --id admin
# 执行命令后出现下列内容绑定成功
/dev/rbd0

参数说明:–id admin 表示使用 client.admin 用户进行认证,若使用专用用户,需替换为对应的用户名(如 –id ceph_rbd_user)。

步骤 2:确认本地块设备

执行lsblk命令查看映射后的块设备信息,确认 RBD 镜像已成功映射:

# 执行命令
lsblk
## 显示下列内容
...
rbd0    251:0    0    5G  0 disk
...

rbd showmapped

id  pool        namespace  image         snap   device
0   test-pool   -          test-image    -      /dev/rbd0

执行后可在输出中找到类似rbd0的设备条目,即为映射生成的本地块设备。

步骤 3:格式化块设备(首次使用时)

若 RBD 镜像为新创建且未格式化,需先格式化文件系统(示例使用ext4格式,可根据需求替换为xfs等其他格式):

# 命令格式:sudo mkfs.文件系统类型 /dev/块设备名
sudo mkfs.ext4 /dev/rbd0

注意:格式化操作会清除设备上的所有数据,仅在首次使用或确认数据无需保留时执行。

步骤 4:创建挂载点并执行挂载

先创建本地挂载点目录,再将格式化后的RBD块设备挂载到该目录,实现数据访问:

# 1. 创建挂载点目录(示例路径为 /mnt/ceph_rbd,可自定义)
sudo mkdir -p /mnt/ceph_rbd

# 2. 执行挂载操作
sudo mount /dev/rbd0 /mnt/ceph_rbd

# 未被格式化会出现异常
mount: /mnt/ceph_rbd: wrong fs type, bad option, bad superblock on /dev/rbd0, missing codepage or helper program, or other error.

步骤 5:验证挂载结果

执行以下命令查看挂载状态,确认 RBD 块存储已成功挂载:

# 方法1:查看系统挂载信息,筛选 RBD 相关条目
mount | grep rbd

# 显示内容
/dev/rbd0 on /mnt/ceph_rbd type ext4 (rw,relatime,stripe=16)

# 方法2:查看挂载点目录内容,确认可正常访问
ls /mnt/ceph_rbd

若命令输出中显示/dev/rbd0 on /mnt/ceph_rbd type ext4类似内容,说明挂载成功,客户端可通过/mnt/ceph_rbd目录读写 RBD 块存储中的数据。

三、反向操作:卸载 RBD 块存储

当需要断开客户端与 RBD 块存储的连接时,需先卸载文件系统,再解除 RBD 镜像与本地设备的映射,操作顺序不可颠倒。

步骤 1:卸载文件系统

使用umount命令卸载已挂载的 RBD 块设备,需指定挂载点路径:

# 命令格式:sudo umount 挂载点路径
sudo umount /mnt/ceph_rbd

常见问题:若执行卸载时提示 target is busy(目标忙),说明有进程正在访问挂载点。可通过以下命令查看占用进程并处理:

进程结束后,重新执行卸载命令即可。

  • 查看占用挂载点的进程
    sudo lsof /mnt/ceph_rbd 或 sudo fuser -m /mnt/ceph_rbd

  • 结束占用进程(需谨慎操作,确保进程非关键业务)
    sudo kill -9 进程ID

步骤 2:解除 RBD 镜像映射

文件系统卸载完成后,使用rbd unmap命令解除 RBD 镜像与本地设备的映射,支持两种指定方式:

# 方法1:通过本地块设备路径解除映射
sudo rbd unmap /dev/rbd0

# 方法2:通过存储池名/镜像名解除映射(更推荐,避免设备号混淆)
sudo rbd unmap test-pool/test-image

四、辅助操作:查看 RBD 映射状态

在挂载、卸载操作的前后,可通过 rbd showmapped 命令查看当前客户端的 RBD 镜像映射状态,确认操作效果。

查看映射状态命令

rbd showmapped

输出示例及说明

id  pool        namespace  image         snap   device
0   test-pool   -          test-image    -      /dev/rbd0

输出字段说明:

  • id:映射条目编号;
  • pool:RBD 镜像所在的存储池;
  • image:RBD 镜像名称;
  • device:映射生成的本地块设备路径。

执行rbd unmap命令后,再次执行rbd showmapped,上述对应条目会消失,说明映射已成功解除。

作者:吴升斌  创建时间:2025-02-27 16:22
最后编辑:吴升斌  更新时间:2025-12-19 18:40