挂载ceph的rbd块存储作为本地磁盘块

Ceph存储作为块存储时,有时候需要将其挂载到本地作为文件系统使用,为了满足这样的需求,请看下面的操作:
在这里我使用本地的节点来当作客户端,就是使用我的ceph集群里面的192.168.1.220(mon节点)挂载ceph的块存储,下面所有的操作都是在我的mon节点上,其实我只是把mon节点当作客户端而已,挂载在它的本地目录下,当然换一台主机当客户端也是一样的:
1、首先在mon节点创建一个存储池pool
命令:rados mkpool test
2、在刚刚创建的pool中创建image,作为磁盘文件
命令: rbd create test-image –image-format 1 –size 8192 –pool test -m 192.168.1.220
解释:上面的ip就是mon节点的ip地址,
–image-format 1 原来没加这个参数,出现过一次错误,后来把这个参数定为1就好了,出现的错误在这附上:
rbd: sysfs write failed
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
解释一下:经过查看ceph文档rbd 块镜像有支持两种格式: –image-format format-id , format-id取值为1或2,默认为 2。format 1 - 新建 rbd 映像时使用最初的格式。此格式兼容所有版本的 librbd 和内核模块,但是不支持较新的功能,像克隆。 format 2 - 使用第二版 rbd 格式, librbd 和 3.11 版以上内核模块才支持(除非是分拆的模块)。此格式增加了克隆支持,使得扩展更容易,还允许以后增加新功能。
3、我们可以使用下面这个命令来查看一下:
[root@node1 ceph]# rbd –image test-image info –pool test
rbd image ‘test-image’:
size 8192 MB in 2048 objects
order 22 (4096 kB objects)
block_name_prefix: rb.0.378f.2ae8944a
format: 1
4、我们将image挂载到本地,同时修改image中的一些信息,这就需要用到了map操作.首先我们需要在内核中载入rbd模块:
modprobe rbd
rbd map test-image –pool test –id admin
执行上面前两条命令后,执行第三条命令后可以使用rbd showmapped 查看一下。
[root@node1 ~]# rbd showmapped
id pool image snap device
0 test test-image - /dev/rbd0

5 格式化/dev/rbd0 然后将其挂载到 /mnt/ceph-rdb
mkfs.ext4 /dev/rbd0 //格式化
mkdir /mnt/ceph-rdb //新建挂载目录
mount /dev/rbd0 /mnt/ceph-rdb //挂载
然后可以查看一下:
[root@node1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda2 28G 3.0G 25G 11% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 51M 447M 11% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vdc1 30G 36M 30G 1% /srv/node/vdc1
/dev/vda1 197M 144M 54M 73% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/rbd0 7.8G 36M 7.3G 1% /mnt/ceph-rdb

你可能感兴趣的:(云存储,ceph)