ceph分布式存储认证和授权,块存储管理

Ceph 分布式存储 认证和授权管理

cephx 协议

Ceph 存储使用 cephx 协议管理集群认证。

管理用户账户

查看用户账户

要列出现有用户帐户,可运行 ceph auth ls 或者 ceph auth list 命令

bash 复制代码
[root@ceph1 ~]# ceph auth list
osd.0
key: AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
......

获取特定帐户的详细信息,可使用 ceph auth get 命令

bash 复制代码
[root@ceph1 ~]# ceph auth get osd.0
[osd.0]
key = AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
exported keyring for osd.0

要获取特定帐户的key内容

bash 复制代码
[root@ceph1 ~]# ceph auth get-key osd.0
AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
[root@ceph1 ~]# ceph auth print-key osd.0
AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
[root@ceph1 ~]# ceph auth print_key osd.0
AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==

创建用户账户

bash 复制代码
[root@ceph1 ~]# ceph auth add client.app1
added key for client.app1
[root@ceph1 ~]# ceph auth get-or-create client.app2
[client.app2]
key = AQC2vKZoZQzOCRAAWn6PfXhyMxh3/i4KTTvKQg==
[root@ceph1 ~]# ceph auth get-or-create-key client.app3
AQDFvKZoF8/iDxAAV7gMq2lnCQcLs9NAQGH5Kg==

还可以在创建用户账户的时候,赋予用户账户权限

bash 复制代码
##增加读权限
[root@ceph1 ~]# ceph auth add client.app4 mon 'allow r'
added key for client.app4

删除用户账户

bash 复制代码
[root@ceph1 ~]# ceph auth del client.app3
updated
[root@ceph1 ~]# ceph auth rm client.app2
updated
[root@ceph1 ~]# ceph auth ls | grep client.app
installed auth entries:
client.app1
client.app4

导出和导入用户账户

要导出特定帐户的详细信息,可使用命令:

ceph auth export -o

ceph auth get -o

bash 复制代码
[root@ceph1 ~]# ceph auth export osd.0 -o ceph.osd.0.keyring.1
export auth(key=AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==)
[root@ceph1 ~]# cat ceph.osd.0.keyring.1
[osd.0]
key = AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
	
[root@ceph1 ~]# ceph auth get osd.0 -o ceph.osd.0.keyring.2
exported keyring for osd.0

[root@ceph1 ~]# cat ceph.osd.0.keyring.2
[osd.0]
key = AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"

导入特定帐户的详细信息,使用 ceph auth import -i 命令

bash 复制代码
# 先导出client.app4然后删除client.app4
[root@ceph1 ~]# ceph auth export client.app4 -o ceph.client.app4.keyring
export auth(key=AQDnvKZoY7irCRAA5ap2HQ1nQ2ADHSJRJWtczw==)
[root@ceph1 ~]# ceph auth rm client.app4
updated
[root@ceph1 ~]# ceph auth get client.app4
Error ENOENT: failed to find client.app4 in keyring
# 将刚才删除的client.app4导入观察现象
[root@ceph1 ~]# ceph auth import -i ceph.client.app4.keyring
imported keyring
[root@ceph1 ~]# ceph auth get client.app4
[client.app4]
key = AQDnvKZoY7irCRAA5ap2HQ1nQ2ADHSJRJWtczw==
caps mon = "allow r"
exported keyring for client.app4

用户账户功能

cephx 中的权限称为功能

allow,在守护进程的访问权限之前设置

r,授予读取访问权限

w,授予写入访问权限

x,授予执行扩展对象类的权限

class-read ,让用户能够调用类读取方法

class-write,让用户能够调用类写入方法

*,授予完整访问权限

bash 复制代码
[root@ceph1 ~]# ceph auth add client.laogao mon 'allow r' osd 'allow rw'

限制访问范围

限制用户只能访问他们需要的池。

bash 复制代码
[root@ceph1 ~]# ceph auth get-or-create client.formyapp1 mon 'allow r' osd 
'allow rw pool=myapp'
[client.formyapp1]
key = AQAMxqZodL12BhAA0IyPEV6SqT+9cLpr+k1DPw==
命名空间

限制用户帐户仅访问从属于特定命名空间中对象。

bash 复制代码
[root@ceph1 ~]# ceph auth get-or-create client.formyapp2 mon 'allow r' osd 
'allow rw namespace=photos'
[client.formyapp2]
key = AQA6xqZolcVtBxAAMGJtK4hes9LLfuwaoTnMFA==
池和命名空间

限制用户帐户仅访问特定池中特定命名空间中对象

bash 复制代码
[root@ceph1 ~]# ceph auth get-or-create client.formyapp3 mon 'allow r' osd 
'allow rw pool=myapp namespace=photos'
[client.formyapp3]
key = AQBmxqZo9uExExAAePkx63ERHvgGmMiEJd4GEg==
对象名称前缀

限制用户帐户仅访问特定名称前缀的对象

bash 复制代码
[root@ceph1 ~]# ceph auth get-or-create client.formyapp4 mon 'allow r' osd 
'allow rw object_prefix pref'
[client.formyapp4]
key = AQCYxqZorsmOHxAAlQMGO+Ouv719SN1/BLpy8w==
文件路径

限制用户帐户仅访问 Ceph 文件系统 (CephFS) 中特定目录

bash 复制代码
 [root@ceph1 ~]# ceph fs authorize cephfs client.webdesigner /webcontent rw 
monitor 命令

限制用户帐户只能使用一组特定的命令

bash 复制代码
[root@ceph1 ~]# ceph auth get-or-create client.operator1 mon 'allow r, allow 
command "auth get-or-create", allow command "auth list"'
[client.operator1]
key = AQDdxqZotZpCFRAAI1DFw519uGF/EbAF2KB6GQ==
实践1:

创建一个可执行ceph auth list的用户,并使用该用户执行该命令

bash 复制代码
[root@ceph1 ~]# ceph auth get-or-create client.gaoqiaodong mon 'allow r,allow 
command "auth list"'
[client.gaoqiaodong]
key = AQCn56Zo8hxHFxAA1GnGWHE9RRGe6TnglJIoVg==
[root@ceph1 ~]# ceph auth get client.gaoqiaodong -o /etc/ceph/ceph.client.gaoqiaodong.keyring
exported keyring for client.gaoqiaodong
[root@ceph1 ~]# ceph auth ls --id gaoqiaodong      
#执行等同于auth list的auth ls都不行
Error EACCES: access denied
[root@ceph1 ~]# ceph auth list --id gaoqiaodong       
osd.0
key: AQA8EqRojLYOOBAAVprA9Rs0Gkg4zK0dKZUUrA==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *
......

Ceph 分布式存储 块存储管理

管理 RADOS 块设备

块设备是服务器、笔记本电脑和其他计算系统上最为常见的长期存储设备

创建 RBD 镜像

bash 复制代码
[root@ceph1 ~]# ceph osd pool create images_pool
pool 'images_pool' created
[root@ceph1 ~]# rbd pool init images_pool        
application enable images_pool rbd

[root@ceph1 ~]# ceph osd pool ls detail | grep images_pool   #看现象
pool 2 'images_pool' replicated size 3 min_size 2 crush_rule 0 object_hash 
rjenkins pg_num 32 pgp_num 32 autoscale_mode on last_change 41 flags 
hashpspool,selfmanaged_snaps stripe_width 0 `application rbd`

[root@ceph1 ~]# rbd create images_pool/webapp1 --size 1G
# 查看池中镜像清单
[root@ceph1 ~]# rbd ls images_pool
webapp1
# 查看池整体情况
[root@ceph1 ~]# rbd pool stats images_pool
Total Images: 1
Total Snapshots: 0
Provisioned Size: 1 GiB

访问 RADOS 块设备存储

将 images_pool 池中的 webapp1 镜像映射为client上 /dev/rbd0 设备

创建映射

bash 复制代码
#client上操作:
[root@client ~]# dnf install -y ceph-common
#ceph1上操作:
[root@ceph1 ~]# scp /etc/ceph/ceph.conf /etc/ceph/ceph.client.rbd.keyring root@client:/etc/ceph
# 在客户端 client 上操作
[root@client ceph]# rbd ls images_pool --id rbd
webapp1
# 为了简化命令参数,定义CEPH_ARGS环境变量,确保ceph相关命令使用该环境变量提供的默认值。
[root@client ~]# export CEPH_ARGS='--id=rbd'
[root@client ~]# rbd ls images_pool
webapp1
# 使用 krbd 内核模块来映射镜像
[root@client ~]# rbd device map images_pool/webapp1           
#或者使用rbd map images_pool/webapp1映射镜像
/dev/rbd0 
[root@client ~]# lsblk       
#多了个rbd0设备


# 列出计算机中映射的 RBD 镜像
[root@client ~]# rbd showmapped
id  pool     namespace  image    snap  device
0   images_pool        webapp1      -   /dev/rbd0  
# 或者
[root@client ~]# rbd device list                   
#等于rbd device ls

# 格式化和挂载
[root@client ~]# lsblk /dev/rbd0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
rbd0 252:0    0   1G  0      disk
[root@client ~]# mkfs.xfs /dev/rbd0
[root@client ~]# mkdir -p /webapp/webapp1
[root@client ~]# mount /dev/rbd0 /webapp/webapp1/
     
[root@client ~]# echo Hello World > /webapp/webapp1/index.html
[root@client ~]# cat /webapp/webapp1/index.html
Hello World
[root@client ~]# df /webapp/webapp1/
Filesystem     
1K-blocks  Used Available Use% Mounted on
1038336 40504    997832   4% /webapp/webapp1
[root@client ~]# rbd status images_pool/webapp1             
Watchers:
watcher=192.168.108.10:0/1267779106 client.44650 
cookie=18446462598732840961

取消映射 RBD 镜像

bash 复制代码
# 先卸载改设备
[root@client ~]# umount /webapp/webapp1
# 取消映射
[root@client ~]# rbd unmap /dev/rbd0            
# rbd unmap images_pool/webapp1也可以
# 或者
[root@client ~]# rbd device unmap /dev/rbd0

[root@client ~]# rbd device ls
#查看现象

持久映射 RBD 镜像

bash 复制代码
[root@client ~]# vim /etc/fstab
......
/dev/rbd/images_pool/webapp1 /webapp/webapp1 xfs _netdev 0 0

[root@client ~]# systemctl enable rbdmap.service

使用 rbd 命令管理镜像

status

用于查看哪些客户端在使用该镜像

bash 复制代码
[root@client ~]# rbd status images_pool/webapp1 --id rbd
Watchers:
watcher=192.168.108.10:0/2614504094 client.44320 
cookie=18446462598732840961
[root@client ~]# rbd status images_pool/webapp2 --id rbd     
Watchers: none

du

用于查看镜像大小使用情况。

bash 复制代码
[root@client ~]# rbd du images_pool/webapp1 --id rbd
NAME     PROVISIONED  USED
webapp1        1 GiB  36 MiB

resize

用于扩展和缩减镜像

bash 复制代码
# 扩展未在使用的镜像
[root@client ~]# rbd resize images_pool/webapp2 --size 2G --id rbd
Resizing image: 100% complete...done.
[root@client ~]# rbd du images_pool/webapp2
NAME     PROVISIONED  USED
webapp2        2 GiB   0 B
# 扩展正在使用的镜像
# 扩展时可以写文件进行测试,扩展不影响数据的读取与写入
[root@client ~]# rbd resize images_pool/webapp1 --size 2G --id rbd
Resizing image: 100% complete...done.
[root@client ~]# lsblk /dev/rbd0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
rbd0 252:0    0   2G  0 disk /webapp/webapp1
[root@client ~]# df -h /dev/rbd0
Filesystem      Size  Used Avail Use% Mounted on
/dev/rbd0      1014M   40M  975M   4% /webapp/webapp1
[root@client ~]# xfs_growfs /webapp/webapp1/
[root@client ~]# df -h /webapp/webapp1/
Filesystem    Size  Used Avail Use% Mounted on  
/dev/rbd0 2.0G  48M  2.0G   3% /webapp/webapp1
# 缩减镜像
[root@client ~]# rbd resize images_pool/webapp2 --size 1G --id rbd
rbd: shrinking an image is only allowed with the --allow-shrink flag
[root@client ~]# rbd resize images_pool/webapp2 --size 1G --allow-shrink --id rbd
Resizing image: 100% complete...done.
[root@client ~]# rbd du images_pool/webapp2 --id rbd
NAME     PROVISIONED  USED
webapp2        1 GiB   0 B
# 缩减正在使用的镜像(xfs文件系统不支持缩减)

rename 和 mv

用于重命名镜像,该操作不支持跨池。

bash 复制代码
# 创建新池
[root@ceph1 ~]# ceph osd pool create images_pool_2 32 32
pool 'images_pool_2' created
[root@ceph1 ~]# rbd pool init images_pool_2
# 重命名
[root@ceph1 ~]# rbd rename images_pool/webapp2 images_pool/webapp02
[root@ceph1 ~]# rbd ls images_pool
webapp02
webapp1
[root@ceph1 ~]# rbd mv images_pool/webapp02 images_pool/webapp2
[root@ceph1 ~]# rbd ls images_pool
webapp1
webapp2
# 跨池重命名
[root@ceph1 ~]# rbd rename images_pool/webapp2 images_pool_2/webapp02
rbd: mv/rename across pools not supported         #不支持
source pool: images_pool dest pool: images_pool_2

cp

用于复制镜像。

bash 复制代码
#实验前观察
[root@client ~]# ceph osd lspools
1 device_health_metrics
2 images_pool
3 images_pool_2
[root@client ~]#
[root@client ~]# rbd ls images_pool
webapp1
webapp2
[root@client ~]# rbd ls images_pool_2
[root@ceph1 ~]# rbd cp images_pool/webapp2 images_pool_2/webapp2      #打这条命令之前可以先rbd ls -p images_pool_2查看下
Image copy: 100% complete...done.
[root@ceph1 ~]# rbd ls -p images_pool
webapp1
webapp2
[root@ceph1 ~]# rbd ls -p images_pool_2
webapp2

trash

使用垃圾箱管理镜像

bash 复制代码
# 将镜像放入垃圾箱
[root@ceph1 ~]# rbd ls images_pool          
#先查看下images_pool
webapp1
webapp2
[root@ceph1 ~]# rbd trash mv images_pool/webapp2
[root@ceph1 ~]# rbd ls images_pool            
#再验证
webapp1
[root@ceph1 ~]# rbd trash ls images_pool
ada41793809a webapp2
# 恢复垃圾箱中镜像,必须使用id
[root@ceph1 ~]# rbd trash restore -p images_pool ada41793809a
[root@ceph1 ~]# rbd ls images_pool
webapp1
webapp2
[root@client ~]# rbd trash ls images_pool ##讲回收站的webapp2删除
# 删除垃圾箱中镜像
[root@ceph1 ~]# rbd trash mv images_pool/webapp2
[root@ceph1 ~]# rbd trash ls images_pool
ada41793809a webapp2
[root@ceph1 ~]# rbd trash rm -p images_pool ada41793809a      
Removing image: 100% complete...done.
[root@ceph1 ~]# rbd trash ls images_pool
[root@ceph1 ~]# rbd ls images_pool
webapp1

rm

用于删除镜像

bash 复制代码
[root@ceph1 ~]# rbd rm images_pool_2/webapp2
Removing image: 100% complete...done.
[root@ceph1 ~]# rbd ls images_pool_2

管理 RADOS 块设备快照

镜像操作

RBD 快照使用 COW 技术

在拍摄快照前卸载文件系统。

使用 rbd snap create 命令,创建 Ceph 块设备的快照

bash 复制代码
# 重新创建一个镜像
[root@client ~]# export CEPH_ARGS='--id=rbd'
[root@client ~]# rbd create images_pool/webapp --size 2G
[root@client ~]# rbd map images_pool/webapp
/dev/rbd1
[root@client ~]# mkfs.xfs /dev/rbd/images_pool/webapp
[root@client ~]# mkdir /webapp/webapp
[root@client ~]# mount /dev/rbd/images_pool/webapp /webapp/webapp
[root@client ~]# echo Hello World > /webapp/webapp/index.html
[root@client ~]# cat /webapp/webapp/index.html
Hello World
# 卸载文件系统
[root@client ~]# umount /webapp/webapp
# 拍摄快照
[root@client ~]# rbd snap create images_pool/webapp@snap1
Creating snap: 100% complete...done.
[root@client ~]# rbd snap ls images_pool/webapp
SNAPID  NAME   SIZE   PROTECTED  TIMESTAMP
4  snap1  2 GiB             
Fri Aug 22 17:52:20 2025
# 挂载文件系统,并写入新数据
[root@client ~]# mount /dev/rbd/images_pool/webapp /webapp/webapp
[root@client ~]# echo Hello laogao > /webapp/webapp/index.html
[root@client ~]# cat /webapp/webapp/index.html
Hello laogao

使用 rbd snap ls 命令,列出块设备快照

bash 复制代码
[root@client ~]# rbd snap ls images_pool/webapp
SNAPID  NAME   SIZE   PROTECTED  TIMESTAMP
4  snap1  2 GiB       Fri Aug 22 17:52:20 2025

镜像快照和镜像具有相同的文件系统,同一客户端不允许挂载具有相同UUID的文件系统

bash 复制代码
#将/webapp/webapp里的index.html删除,通过挂载/webapp/webapp@snap1找回来
[root@client ~]# rm /webapp/webapp/index.html 
# 在挂载快照前,需要卸载原始镜像
[root@client ~]# umount /dev/rbd/images_pool/webapp
[root@client ~]# mkdir /webapp/webapp-snap1
[root@client ~]# rbd map images_pool/webapp@snap1
/dev/rbd2
[root@client ~]# mount /dev/rbd/images_pool/webapp@snap1 /webapp/webapp-snap1
mount: /webapp/webapp1-snap1: WARNING: device write-protected, mounted read-only.
#将快照里的文件复制出来,实现数据找回
[root@client ~]# cat /webapp/webapp-snap1/index.html       
Hello World

使用 rbd snap rollback 命令,回滚块设备快照,并用快照中的数据覆盖镜像的当前版本

bash 复制代码
# 还原
[root@client ~]# umount /webapp/webapp-snap1/
[root@client ~]# mount /dev/rbd1 /webapp/webapp
# 回滚快照失败,排他锁导致的
[root@client ~]# rbd snap rollback images_pool/webapp@snap1
Rolling back to snapshot: 0% complete...failed.
rbd: rollback failed: (30) Read-only file system
# 要先卸载原来的镜像挂载,且要取消rbd map
 
[root@client ~]# rbd unmap /dev/rbd1

[root@client ~]# rbd snap rollback images_pool/webapp@snap1
Rolling back to snapshot: 100% complete...done.
# 回滚好后再将webapp image挂载
[root@client ~]# rbd device map images_pool/webapp
/dev/rbd1
[root@client ~]# mount /dev/rbd1 /webapp/webapp
# 最后观察现象
[root@client ~]# cat /webapp/webapp/index.html
Hello World

使用 rbd snap rm 命令,删除 Ceph 块设备的快照。

bash 复制代码
[root@client ~]# umount /dev/rbd/images_pool/webapp@snap1
[root@client ~]# rbd unmap images_pool/webapp@snap1
[root@client ~]# rbd snap rm images_pool/webapp@snap1
Removing snap: 100% complete...done.
[root@client ~]# rbd snap ls images_pool/webapp

使用 rbd snap purge 命令,删除镜像所有快照。

bash 复制代码
[root@client ~]# rbd snap create images_pool/webapp@snap1
[root@client ~]# rbd snap create images_pool/webapp@snap2
[root@client ~]# rbd snap ls images_pool/webapp
SNAPID  NAME   SIZE   PROTECTED  TIMESTAMP
6  snap1  2 GiB        Fri Aug 22 18:07:20 2025     
7  snap2  2 GiB       Fri Aug 22 18:07:22 2025      

[root@client ~]# rbd snap purge images_pool/webapp
Removing all snapshots: 100% complete...done.
[root@client ~]# rbd snap ls images_pool/webapp
##镜像存在快照时,将无法删除 RBD 镜像

RBD 克隆

RBD 克隆是 RBD 镜像的可读写副本,它使用受保护的 RBD 快照克隆。

克隆过程有三个步骤:

  1. 创建快照
bash 复制代码
[root@client ~]# rbd snap create images_pool/webapp@snap1
[root@client ~]# rbd snap ls images_pool/webapp
SNAPID  NAME   SIZE   PROTECTED  TIMESTAMP
10  snap1  2 GiB                  Fri Aug 22 18:10:18 2025       
#看PROTECTED列默认未保护
  1. 保护快照以免被删除
bash 复制代码
[root@client ~]# rbd snap protect images_pool/webapp@snap1
[root@client ~]# rbd snap ls images_pool/webapp
SNAPID  NAME   SIZE   PROTECTED  TIMESTAMP
10  snap1  2 GiB        yes    Fri Aug 22 18:10:18 2025
  1. 使用受保护的快照创建克隆
bash 复制代码
[root@client ~]# rbd clone images_pool/webapp@snap1 images_pool/webapp-clone-1
[root@client ~]# rbd map images_pool/webapp-clone-1
/dev/rbd3
[root@client ~]# mkdir /webapp/webapp-clone-1
[root@client ~]# umount /webapp/webapp           
挂载
# 挂载clone前确保镜像和快照不要
# 挂载clone前确保镜像和快照不要挂载
[root@client ~]# mount /dev/rbd/images_pool/webapp-clone-1 /webapp/webapp-clone-1
[root@client ~]# df /webapp/webapp-clone-1/
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/rbd2    2086912 47864   2039048   3% /webapp/webapp-clone-1

新创建的克隆可以像常规 RBD 镜像一样运作,克隆支持 COW 和 COR技术,默认只支持 COW

查看基于特定快照的克隆列表

bash 复制代码
[root@client ~]# rbd clone images_pool/webapp@snap1 images_pool/webapp-clone-2
[root@client ~]# rbd children images_pool/webapp@snap1
images_pool/webapp-clone-1
images_pool/webapp-clone-2

扁平化克隆

Ceph 会将所有缺失的数据从父级复制到克隆,然后移除对父级的引用。克隆会变成独立的 RBD 镜像,不再是受保护快照的子级。

bash 复制代码
[root@client ~]# rbd flatten images_pool/webapp-clone-1
Image flatten: 100% complete...done.
[root@client ~]# rbd children images_pool/webapp@snap1
images_pool/webapp-clone-2
[root@client ~]# rbd ls images_pool

挂载克隆镜像

通过镜像快照克隆出来的镜像,具有原镜像相同的文件系统,而同一客户端不允许挂载具有相同UUID的

文件系统,需要修改uuid

bash 复制代码
[root@client ~]# rbd map images_pool/webapp-clone-2
/dev/rbd4
blkid | grep rbd  #看UUID
# 生成新的 UUID
[root@client ~]# uuidgen
e0e005e5-c8a0-4102-a266-3964c7069e18
# 修改 ext4 文件系统 UUID
[root@client ~]# tune2fs -U e0e005e5-c8a0-4102-a266-3964c7069e18 /dev/rbd4
# 修改 xfs 文件系统 UUID
[root@client ~]# xfs_admin -U e0e005e5-c8a0-4102-a266-3964c7069e18 /dev/rbd4
Clearing log and setting UUID
writing all SBs
new UUID = e0e005e5-c8a0-4102-a266-3964c7069e18
# 挂载测试
[root@client ~]# mkdir /webapp/webapp-clone-2
[root@client ~]# mount /dev/rbd4 /webapp/webapp-clone-2/
#查看现象
[root@client ~]# lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
rbd4  252:64 0   2G  0 disk /webapp/webapp-clone-2

导入和导出 RBD 镜像

导出 RBD 镜像

示例

bash 复制代码
[root@ceph1 ~]# rbd export images_pool/webapp webapp.img
Exporting image: 100% complete...done.
导入 RBD 镜像
bash 复制代码
[root@ceph1 ~]# rbd import webapp.img images_pool/webapp-backup
Importing image: 100% complete...done.
相关推荐
ZPC82102 小时前
前馈补偿原理 + 分类 + 公式 + 工程实现(配合 PID 使用,从根源减轻闭环收敛压力)
人工智能·分布式·机器人
闪电悠米3 小时前
黑马点评-分布式锁-02_simple_redis_lock_setnx
java·数据库·spring boot·redis·分布式·缓存·wpf
大迪deblog3 小时前
从分布式到中央计算:深度拆解下一代 Zonal 车载 EEA 架构变革
分布式·架构
智塑未来3 小时前
2026轻量化图形引擎生态白皮书:PG官网发布渠道与分布式PG数据库架构全面解析
数据库·分布式·数据库架构
weixin199701080163 小时前
[特殊字符] 电商库存扣减防超卖:分布式锁的三种实现(附Python源码)
开发语言·分布式·python
闪电悠米3 小时前
黑马点评-分布式锁-03_lua_atomic_unlock
java·数据库·分布式·缓存·oracle·wpf·lua
garmin Chen4 小时前
Elasticsearch(4):Java Rest Client 搜索与聚合速查
java·分布式·elasticsearch
codeejun5 小时前
每日一 Go-72、分布式事务 & 一致性:本地消息表、事务消息、SAGA、TCC怎么选?
开发语言·分布式·golang
科技互联.5 小时前
2026轻量化图形引擎白皮书:PG官网发布渠道与分布式PG数据库架构解析
数据库·分布式·数据库架构