3.7. 同じプール内の分離された名前空間内でのイメージの分離


OpenStack または OpenShift Container Storage などの上位システムなしで Ceph ブロックデバイスを直接使用する場合、特定のブロックデバイスイメージへのユーザーアクセスを制限することができませんでした。CephX 機能と組み合わせると、ユーザーを特定のプール名前空間に制限して、イメージへのアクセスを制限することができます。

新規レベルのアイデンティティーである RADOS 名前空間を使用してオブジェクトを特定し、プール内の rados クライアント間を分離できます。たとえば、クライアントは、クライアント向けの名前空間でのみ完全なパーミッションが割り当てられます。これにより、テナントごとに異なる RADOS クライアントが使用されるので、多くの異なるテナントが独自のブロックデバイスイメージにアクセスしているブロックデバイスに特に便利です。

同じプール内の分離された名前空間内でブロックデバイスイメージを分離することができます。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • すべてのカーネルを 4x および librbd、全クライアントの Librados にアップグレードする。
  • モニターおよびクライアントノードへの root レベルのアクセス。

手順

  1. rbd プールを作成します。

    構文

    ceph osd pool create POOL_NAME PG_NUM

    [root@mon ~]# ceph osd pool create mypool 100
    pool 'mypool' created

  2. rbd プールを RBD アプリケーションに関連付けます。

    構文

    ceph osd pool application enable POOL_NAME rbd

    [root@mon ~]# ceph osd pool application enable mypool rbd
    enabled application 'rbd' on pool 'mypool'

  3. RBD アプリケーションでプールを初期化します。

    構文

    rbd pool init -p POOL_NAME

    [root@mon ~]#  rbd pool init -p mypool

  4. 2 つの名前空間を作成します。

    構文

    rbd namespace create --namespace NAMESPACE

    [root@mon ~]# rbd namespace create --namespace namespace1
    
    [root@mon ~]# rbd namespace create --namespace namespace2
    
    [root@mon ~]# rbd namespace ls --format=json
    [{"name":"namespace2"},{"name":"namespace1"}]

  5. ユーザー 2 つにこの名前空間へのアクセスを割り当てます。

    構文

    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

    [root@mon ~]# ceph auth get-or-create client.testuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace1' -o /etc/ceph/client.testuser.keyring
    
    [root@mon ~]# ceph auth get-or-create client.newuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace2' -o /etc/ceph/client.newuser.keyring

  6. クライアントのキーを取得します。

    構文

    ceph auth get client.USER_NAME

    [root@mon ~]# ceph auth get client.testuser
    
    [client.testuser]
    	key = AQDMp61hBf5UKRAAgjQ2In0Z3uwAase7mrlKnQ==
    	caps mon = "profile rbd"
    	caps osd = "profile rbd pool=rbd namespace=namespace1"
    exported keyring for client.testuser
    
    [root@mon ~]# ceph auth get client.newuser
    
    [client.newuser]
    	key = AQDfp61hVfLFHRAA7D80ogmZl80ROY+AUG4A+Q==
    	caps mon = "profile rbd"
    	caps osd = "profile rbd pool=rbd namespace=namespace2"
    exported keyring for client.newuser

  7. ブロックデバイスイメージを作成し、プール内の事前定義済みの名前空間を使用します。

    構文

    rbd create --namespace NAMESPACE IMAGE_NAME --size SIZE_IN_GB

    [root@mon ~]# rbd create --namespace namespace1 image01 --size 1G
    
    [root@mon ~]# rbd create --namespace namespace2 image02 --size 1G

  8. オプション: 名前空間および関連付けられたイメージの詳細を取得します。

    構文

    rbd --namespace NAMESPACE ls --long

    [root@mon ~]#  rbd --namespace namespace1 ls --long
    NAME    SIZE  PARENT FMT PROT LOCK
    image01 1 GiB          2
    
    [root@mon ~]# rbd --namespace namespace2 ls --long
    NAME    SIZE  PARENT FMT PROT LOCK
    image02 1 GiB          2

  9. Ceph 設定ファイルを Monitor ノードからクライアントノードにコピーします。

    scp /etc/ceph/ceph.conf root@CLIENT_NODE:/etc/ceph/

    [root@mon ~]# scp /etc/ceph/ceph.conf root@host02:/etc/ceph/
    
    root@host02's password:
    ceph.conf                                                                          100%  497   724.9KB/s   00:00

  10. 管理キーリングを Ceph Monitor ノードからクライアントノードにコピーします。

    構文

    scp /etc/ceph/ceph.client.admin.keyring root@CLIENT_NODE:/etc/ceph

    [root@mon ~]# 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

  11. ユーザーのキーリングを Ceph Monitor ノードからクライアントノードにコピーします。

    構文

    scp /etc/ceph/ceph.client.USER_NAME.keyring root@CLIENT_NODE:/etc/ceph/

    [root@mon ~]# scp /etc/ceph/client.newuser.keyring root@host02:/etc/ceph/
    
    [root@mon ~]# scp /etc/ceph/client.testuser.keyring root@host02:/etc/ceph/

  12. ブロックデバイスイメージをマッピングします。

    構文

    rbd map --name NAMESPACE IMAGE_NAME -n client.USER_NAME --keyring /etc/ceph/client.USER_NAME.keyring

    [root@mon ~]# rbd map --namespace namespace1 image01  -n  client.testuser --keyring=/etc/ceph/client.testuser.keyring
    
    /dev/rbd0
    
    [root@mon ~]# rbd map --namespace namespace2 image02 -n client.newuser --keyring=/etc/ceph/client.newuser.keyring
    
    /dev/rbd1

    これにより、同じプール内の他の名前空間のユーザーにはアクセスできません。

    [root@mon ~]# rbd map --namespace namespace2 image02  -n  client.testuser --keyring=/etc/ceph/client.testuser.keyring
    
    rbd: warning: image already mapped as /dev/rbd1
    rbd: sysfs write failed
    rbd: error asserting namespace: (1) Operation not permitted
    In some cases useful info is found in syslog - try "dmesg | tail".
    2021-12-06 02:49:08.106 7f8d4fde2500 -1 librbd::api::Namespace: exists: error asserting namespace: (1) Operation not permitted
    rbd: map failed: (1) Operation not permitted
    
    [root@mon ~]# rbd map --namespace namespace1 image01 -n client.newuser --keyring=/etc/ceph/client.newuser.keyring
    
    rbd: warning: image already mapped as /dev/rbd0
    rbd: sysfs write failed
    rbd: error asserting namespace: (1) Operation not permitted
    In some cases useful info is found in syslog - try "dmesg | tail".
    2021-12-03 12:16:24.011 7fcad776a040 -1 librbd::api::Namespace: exists: error asserting namespace: (1) Operation not permitted
    rbd: map failed: (1) Operation not permitted

  13. デバイスを確認します。

    [root@mon ~]# rbd showmapped
    
    id pool namespace      image   snap device
    0  rbd  namespace1  image01 -  /dev/rbd0
    1  rbd  namespace2   image02 -  /dev/rbd1

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.