标签归档:rbd

centos/redhat kernel 支持rbd模块(el7)

el内核3.10.0-123.el7.x86_64默认不支持rbd模块,需要将rbd模块编译进去。

1 需要将config的配置项打开。如下:

2 编译过程可以选择只编译模块,也可以将kernel重新编译。模块编译见本博客相关内容,这里采用kernel重新编译,编译过程中出现以下问题:

经分析后,给内核该文件打了个patch

ceph的rbd.ko libceph.ko文件

rbd.c
rbd 在内核的linux-3.13.8/drivers/block目录下。
模块的初始化文件为rbd_init.
5321 module_init(rbd_init);
5322 module_exit(rbd_exit);

rbd_slab_init kmem_cache_create 从 kmem_cache 中获取一个缓存器描述符,并且根据参数初始化一些必要字段。

调用流程

libceph.ko

init_ceph_lib ->ceph_crypto_init->register_key_type;

key_type_ceph 结构体

ceph_key_instantiate->ceph_crypto_key_decode

ceph涉及AES加密流程:

sVirt(selinux)安全机制(libvrit,ceph/rbd)

svirt介绍:
「 sVirt 项目是一项社区工作,尝试集成强制访问控制 (MAC) 安全和基于 Linux 的虚拟化 (KVM)。」

「它构建于 SELinux 之上,提供一个基础架构来使管理员能够定义虚拟机隔离策略。
sVirt 可以开箱即用地确保一个虚拟机资源无法供任何其他进程(或虚拟机)访问,
这可由 sysadmin 扩展来定义细粒度的权限,例如将虚拟机分组到一起以共享资源。」

「 Svirt 确保一台虚机出现问题的虚拟机不会影响到主机操作系统。」

「 sVirt= SELinuxpolicy + libvirtdriver」

sVirt在系统上的试用:
在开启selinux的状态下进行测试使用:

启动虚机:

testforsvirt.img安全上下文已经发生变化:

sVirt libvirt在ceph的rbd上进行尝试:

使用ceph rbd块存储进行测试:

出现以下错误:

这个时候需要对libvirt进行认证设置
设置访问ceph的用户:

得到libvirt的key;

写入type等于’ceph’到secret.xml

生成secret文件的uuid。

将libvirt的密钥写入文件secret.xml

使用virsh设置密钥。

在testforsvirt_rbd.xml文件中写入以下设置;

查看安全上下文:

审计日志:

rbd块设备,镜像大小resize

虚拟镜像的扩展工作在rbd块设备上进行的操作

1 rbd操作
=====================================================

分区已经扩展,如果使用需要对磁盘进行分区扩展操作
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 qemu-img 操作