rbd create --size 1024 foo #创建大小为1024M的块设备镜像
rbd list #查看
rbd map foo #映射到内核,并格式化块设备
mkfs.ext4 -m0 /dev/rbd/rbd/foo #创建文件系统,将image格式化为ext4格式的文件系统
mkdir /mnt/rbd #创建挂载目录
mount /dev/rbd/rbd/foo /mnt/rbd #挂载到目录
#vim /etc/fstab #设置自动挂载,df -T查看文件格式
df -h #查看挂载情况
cd /mnt/rbd
dd if=/dev/zero of=testrbd bs=500M count=1 #测试生成500M文件
df -h #节点磁盘空间自动同步
rbd map pool-name/image-name #映射块设备
rbd unmap /dev/rbd/pool-name/image-name #取消块设备映射
rbd showmapped #查看映射
rbd info image-name #查看镜像支持特性
rbd rm pool-name/image-name 删除
mkfs.ext4 -m0 /dev/rbd/rbd/too #格式化为ext4格式的文件系统
rbd create pool-name/image-name --size 10240 --image-format 2 --order 24
--image-format 2 支持RBD分层,实现COW,可写快照
--order 24 为2^24bytes 为16M,条带大小为16M
--order 22 为2^22bytes 为4M,条带大小为4M
rbd resize --size 2048 foo #调整foo大小为2G
resize2fs /dev/rbd0 #文件系统在线扩容
rados lspools #查看所有存储池
ceph osd lspools
ceph osd dump | grep pool
ceph osd pool create pool-name 128 128 #创建存储池,设置pool名字、PG和PGP的数量
#rados mkpool pool-name #创建存储池
ceph osd pool set pool-name size 3 #修改pool的副本数量
#创建一个大小为10G,存储池为pool-name,课创建快照的镜像image-name
rbd create pool-name/image-name --size=10240 --image-format 2
rbd snap list pool-name/image-name #查看指定存储池下某image的快照
rbd snap ls pool-name/image-name
rbd ls pool-name -l
rbd snap create pool-name/image-name@snap-name #创建镜像快照
rbd info pool-name/image-name@snap-name #查看快照详细信息
rbd snap protect pool-name/image-name@snap-name #设置快照保护
rbd snao unprotect pool-name/image-name@snap-name #取消快照保护
rbd ls pool-name -l #查看快照保护
#rbd info pool-name/image-name@snap-name
rbd snap rollback pool-name/image-name@snap-name
克隆快照到另一个存储池并成为一个新的image,也叫写快照
rbd clone pool-name/image-name@snap-name pool-new_name/name #克隆快照到另一个存储池
rbd ls pool-new_name -l #查看新存储池的快照
rbd children pool-name/image-name@snap-name #查看快照的子image
rbd flatten pool-new_name/name #接触rbd快照的父子关系,变为扁平的没有父子层级的image
rbd ls pool-new_name/name #查看是否还有父子关系
rbd export #导出RBD
rbd import #导入RBD
创建快照:
rbd snap create {pool-name}/{image-name}@{snap-name}
列出快照:
rbd snap ls {pool-name}/{image-name}
列出存储池块和快照
rbd ls {pool-name} -l
快照回滚:
rbd snap rollback {pool-name}/{image-name}@{snap-name}
删除快照:
rbd snap rm {pool-name}/{image-name}@{snap-name}
如果存储池做了快照,则无法创建image,
ceph --show-config
ceph --show-config | grep rbd_validate_pool
#创建数据存储池
ceph osd pool create cephfs_data 64
#创建元数据存储池
ceph osd pool create cephfs_metadata 64
#创建文件系统
ceph fs new cephfs cephfs_metadata cephfs_data
ceph fs ls #查看
ceph mds stat #查看元数据状态
cat /etc/ceph/ceph.client.admin.keyring #复制密钥key
mkdir /mnt/cephfs #创建挂载目录
#挂载cephfs到该目录,并指明用户名和密钥
mount -t ceph ceph-deploy-IP:6789:/ /mnt/cephfs -o name=admin,secret=密钥key或者保存密钥的文件
如果不部署,mds的元数据状态不为active
ceph-deploy mds create mon-1 node-1 nod-2
ceph mds stat #查看当前居群MDS状态
df -h #查看
unmount /mnt/cephfs #卸载cephfs文件系统
yum -y install ceph-fuse #安装
mdkir ~/cephfs #创建挂载目录
ceph-fuse -m IP:6789 ~/cephfs
#如果密钥文件ceph.client.admin.keyring不在/etc/ceph目录下,需要指定密钥文件,比如在/root目录下
ceph-fuse -k /root/ceph.client.admin.keyring -m IP:6789 ~/cephfs
如果map报错,可以如下方法解决
#块设备map错误
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.
rbd: map failed: (6) No such device or address
#临时解决
方法一:rbd feature disable foo exclusive-lock, object-map, fast-diff, deep-flatten
#每次指明
方法二:rbd create --size 2048 foo --image-feature layering
#永久解决
方法三:
vim /etc/ceph/ceph.conf
rbd_default_features = 1 # 增加配置默认 feature 为 layering 对应的bit码整数值 1