8.5. 在同一池中隔离隔离命名空间中的镜像
在不使用更高级别的系统(如 OpenStack 或 OpenShift Container Storage)直接使用 Ceph 块设备时,无法限制用户对特定块设备镜像的访问。与 CephX 功能结合使用时,用户可以限制到特定的池命名空间,以限制对镜像的访问。
您可以使用 RADOS 命名空间(一个新的身份级别)来识别对象,以在池中提供 rados 客户端之间的隔离。例如,客户端只能在特定于命名空间的命名空间上具有完全权限。这使得不同的 RADOS 客户端用于各个租户可行,这对于许多不同租户访问自己的块设备镜像的块设备特别有用。
您可以在同一池中的隔离命名空间中隔离块设备镜像。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 在所有客户端上,将所有内核升级到 4x,以及所有客户端上的 librbd 和 librados。
- 监控和客户端节点的根级别访问权限。
流程
- 创建 - rbd池:- 语法 - ceph osd pool create POOL_NAME PG_NUM - ceph osd pool create POOL_NAME PG_NUM- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# ceph osd pool create mypool 100 pool 'mypool' created - [ceph: root@host01 /]# ceph osd pool create mypool 100 pool 'mypool' created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 - rbd池与 RBD 应用程序关联:- 语法 - ceph osd pool application enable POOL_NAME rbd - ceph osd pool application enable POOL_NAME rbd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# ceph osd pool application enable mypool rbd enabled application 'rbd' on pool 'mypool' - [ceph: root@host01 /]# ceph osd pool application enable mypool rbd enabled application 'rbd' on pool 'mypool'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 RBD 应用程序初始化池: - 语法 - rbd pool init -p POOL_NAME - rbd pool init -p POOL_NAME- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# rbd pool init -p mypool - [ceph: root@host01 /]# rbd pool init -p mypool- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建两个命名空间: - 语法 - rbd namespace create --namespace NAMESPACE - rbd namespace create --namespace NAMESPACE- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为两个用户提供对命名空间的访问: - 语法 - ceph auth get-or-create client.USER_NAME mon 'profile rbd' osd 'profile rbd pool=rbd namespace=NAMESPACE' -o /etc/ceph/client.USER_NAME.keyring - ceph auth get-or-create client.USER_NAME mon 'profile rbd' osd 'profile rbd pool=rbd namespace=NAMESPACE' -o /etc/ceph/client.USER_NAME.keyring- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# ceph auth get-or-create client.testuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace1' -o /etc/ceph/client.testuser.keyring [ceph: root@host01 /]# ceph auth get-or-create client.newuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace2' -o /etc/ceph/client.newuser.keyring - [ceph: root@host01 /]# ceph auth get-or-create client.testuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace1' -o /etc/ceph/client.testuser.keyring [ceph: root@host01 /]# ceph auth get-or-create client.newuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace2' -o /etc/ceph/client.newuser.keyring- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 获取客户端的密钥: - 语法 - ceph auth get client.USER_NAME - ceph auth get client.USER_NAME- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建块设备镜像并使用池中的预定义命名空间: - 语法 - rbd create --namespace NAMESPACE IMAGE_NAME --size SIZE_IN_GB - rbd create --namespace NAMESPACE IMAGE_NAME --size SIZE_IN_GB- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# rbd create --namespace namespace1 image01 --size 1G [ceph: root@host01 /]# rbd create --namespace namespace2 image02 --size 1G - [ceph: root@host01 /]# rbd create --namespace namespace1 image01 --size 1G [ceph: root@host01 /]# rbd create --namespace namespace2 image02 --size 1G- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:获取命名空间和关联的镜像的详情: - 语法 - rbd --namespace NAMESPACE ls --long - rbd --namespace NAMESPACE ls --long- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 Ceph 配置文件从 Ceph 监控节点复制到客户端节点: - scp /etc/ceph/ceph.conf root@CLIENT_NODE:/etc/ceph/ - scp /etc/ceph/ceph.conf root@CLIENT_NODE:/etc/ceph/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# scp /etc/ceph/ceph.conf root@host02:/etc/ceph/ root@host02's password: ceph.conf 100% 497 724.9KB/s 00:00 - [ceph: root@host01 /]# scp /etc/ceph/ceph.conf root@host02:/etc/ceph/ root@host02's password: ceph.conf 100% 497 724.9KB/s 00:00- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 admin keyring 从 Ceph 监控节点复制到客户端节点: - 语法 - scp /etc/ceph/ceph.client.admin.keyring root@CLIENT_NODE:/etc/ceph - scp /etc/ceph/ceph.client.admin.keyring root@CLIENT_NODE:/etc/ceph- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# scp /etc/ceph/ceph.client.admin.keyring root@host02:/etc/ceph/ root@host02's password: ceph.client.admin.keyring 100% 151 265.0KB/s 00:00 - [ceph: root@host01 /]# scp /etc/ceph/ceph.client.admin.keyring root@host02:/etc/ceph/ root@host02's password: ceph.client.admin.keyring 100% 151 265.0KB/s 00:00- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将用户从 Ceph 监控节点的密钥环复制到客户端节点: - 语法 - scp /etc/ceph/ceph.client.USER_NAME.keyring root@CLIENT_NODE:/etc/ceph/ - scp /etc/ceph/ceph.client.USER_NAME.keyring root@CLIENT_NODE:/etc/ceph/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - [ceph: root@host01 /]# scp /etc/ceph/client.newuser.keyring root@host02:/etc/ceph/ [ceph: root@host01 /]# scp /etc/ceph/client.testuser.keyring root@host02:/etc/ceph/ - [ceph: root@host01 /]# scp /etc/ceph/client.newuser.keyring root@host02:/etc/ceph/ [ceph: root@host01 /]# scp /etc/ceph/client.testuser.keyring root@host02:/etc/ceph/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 映射块设备镜像: - 语法 - rbd map --name NAMESPACE IMAGE_NAME -n client.USER_NAME --keyring /etc/ceph/client.USER_NAME.keyring - rbd map --name NAMESPACE IMAGE_NAME -n client.USER_NAME --keyring /etc/ceph/client.USER_NAME.keyring- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这不允许访问同一池中的其他命名空间中的用户。 - 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证该设备: - 示例 - [ceph: root@host01 /]# rbd showmapped id pool namespace image snap device 0 rbd namespace1 image01 - /dev/rbd0 1 rbd namespace2 image02 - /dev/rbd1 - [ceph: root@host01 /]# rbd showmapped id pool namespace image snap device 0 rbd namespace1 image01 - /dev/rbd0 1 rbd namespace2 image02 - /dev/rbd1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow