cephにあるデータ(cephfs)にsmbプロトコルでアクセスしたい.
単純に選択肢としては

かなと思うのだが、cephadmで提供されているsambaコンテナで用意できるみたい. sambaコンテナはこれみたい https://github.com/samba-in-kubernetes/samba-container
準備としてはcephfsへ繋がる keyring と sambaコンテナの設定書を用意する必要がある.

コンテナ作成に向けての指示書保存場所を作る

sambaコンテナの設定書は特定のpoolに置きます. httpで参照でもいいのですが、同じcephの中で置けるようにします.

[root@ceph01 ~]# ceph osd pool create .smb --yes-i-really-mean-it
[root@ceph01 ~]# ceph osd pool application enable .smb rados
 
(確認)
[root@ceph01 ~]# ceph osd lspools
1 .mgr
2 emfs-meta
3 emfs-data
4 .smb
[root@ceph01 ~]#

「.」を含むので「--yes-i-really-mean-it」が必要みたい.

コンテナが使うkeyringの作成

sambaコンテナからcephfsへ繋がるためのkeyringです。名称を「client.samba.gw」にしてます。

[root@ceph01 ~]# ceph auth add client.samba.gw  mon 'allow r' osd 'allow *' mds 'allow *'
 
[root@ceph01 ~]# ceph auth get client.samba.gw
[client.samba.gw]
        key = AQChWBtop3gHERAAM5SZsfTwrNsRSQwn7JwFHQ==
        caps mds = "allow *"
        caps mon = "allow r"
        caps osd = "allow *"
 
[root@ceph01 ~]#

smb.yamlの準備

mon.yamlやmgr.yamlのようにcephadmで起動するコンテナを設計します
ファイル名を「smb.yaml」として下記を保存します

service_type: smb
service_id: emfssmb
placement:
  hosts:
    - ceph02
spec:
  cluster_id: emfssmb
  config_uri: rados://.smb/emfssmb/scc.toml
  include_ceph_users:
    - client.samba.gw

「include_ceph_users」はsamba コンテナがcephにアクセスする際のkeyring名になるみたい.
「config_uri: rados://.smb/emfssmb/scc.toml」は先ほど作った「.smb」(オブジェクトストレージ)の中に置かれるファイルを参照してます.

次にsambaの設定書(scc.toml)を作ります

scc.tomlを作る

参照先 https://github.com/samba-in-kubernetes/sambacc/blob/master/docs/configuration.md

sambaのコンテナに読み込ませるものなのですが、Samba Container Configurationというフォーマットでtoml形式あるいはjsonやyamlで記載します.
ここではフツーのsamba共有で、netbios名は SAMBA、共有名がemfs-smb、共有フォルダは/shareで saber(uid:2000,gid:2000) と illya(2001,2001)のみアクセス可能ってな内容にしてます
&size(10){samba-adが既に建てられているなら、adのメンバーサーバとしてadに参加して、adにあるアカウントを継承できるみたい};

下記を「scc.toml」として保存します

samba-container-config = "v0"
 
[configs.emfssmb]
instance_name = "SAMBA"
globals = [ "default" ]
shares = [ "emfs" ]
 
[shares.emfs.options]
path = "/"
"vfs objects" = "ceph"
"ceph:filesystem" = "emfs"
"ceph:config_file" = "/etc/ceph/ceph.conf"
"ceph:user_id" = "samba.gw"
"valid users" = "saber, illya"
 
[globals.default.options]
security = "user"
"server min protocol" = "SMB2"
"load printers" = "no"
printing = "bsd"
"printcap name" = "/dev/null"
"disable spoolss" = "yes"
"guest ok" = "no"
 
[[users.all_entries]]
name = "saber"
uid = 2000
gid = 2000
password = "saber"
 
[[users.all_entries]]
name = "illya"
uid = 2001
gid = 2000
password = "illya"
 
[[groups.all_entries]]
name = "fgo"
gid = 2000

これを 「config_uri: rados://.smb/emfssmb/scc.toml」 として読み込ませるために rados コマンドでファイルを格納します.

[root@ceph01 ~]# rados --pool=.smb --namespace=emfssmb put scc.toml  ./scc.toml
 
(確認)
[root@ceph01 ~]# rados --pool=.smb --namespace=emfssmb ls
scc.toml
[root@ceph01 ~]# rados --pool=.smb --namespace=emfssmb get scc.toml   /tmp/a     <-- /tmp/a に書き出し

コンテナ起動

これで下記のようにdeployすれば使えるようになります

ceph orch apply -i smb.yaml

コンテナが起動すると下記のように起動確認ができます.

[root@ceph01 ~]# ceph orch ps
NAME                       HOST       PORTS        STATUS          REFRESHED  AGE  MEM USE  MEM LIM  VERSION    IMAGE ID      CONTAINER ID
 :
smb.emfssmb.ceph02.biwdrx  ceph02     *:445        running (111s)   108s ago  18m    3758k        -  <unknown>  ac8062e0901a  b5b2fc4bb96d

起動したsambaコンテナでのsmb.confを確認するには、その稼働しているノード(ceph02)にてコンテナの中に入って「testparam -s」で得られます

[root@ceph02 ~]# podman ps
CONTAINER ID  IMAGE                                                     COMMAND               CREATED            STATUS            PORTS                          NAMES
 :
b5b2fc4bb96d  quay.io/samba.org/samba-server:devbuilds-centos-amd64     --samba-debug-lev...  2 minutes ago      Up 2 minutes      0.0.0.0:445->445/tcp, 445/tcp  ceph-edf9287e-2b54-11f0-941d-bc24112ffd94-smb-emfssmb-ceph02-biwdrx
8a7b3d16cb73  quay.io/samba.org/samba-server:devbuilds-centos-amd64     --samba-debug-lev...  2 minutes ago      Up 2 minutes      0.0.0.0:445->445/tcp, 445/tcp  ceph-edf9287e-2b54-11f0-941d-bc24112ffd94-smb-emfssmb-ceph02-biwdrx-configwatch
[root@ceph02 ~]#
 
[root@ceph02 ceph]# podman exec -it ceph-edf9287e-2b54-11f0-941d-bc24112ffd94-smb-emfssmb-ceph02-biwdrx /bin/bash
[root@emfssmb-ceph02 /]#
[root@emfssmb-ceph02 /]# testparm -s
(略
 
# Global parameters
[global]
        disable spoolss = Yes
        load printers = No
        netbios name = SAMBA
        printcap name = /dev/null
        registry shares = Yes
        security = USER
        server min protocol = SMB2
        idmap config * : backend = tdb
        printing = bsd
 
 
[emfs]
        path = /
        valid users = saber illya
        vfs objects = ceph
        ceph:user_id = samba.gw
        ceph:config_file = /etc/ceph/ceph.conf
        ceph:filesystem = emfs
 
[root@emfssmb-ceph02 /]# tail -n 2 /etc/passwd
saber:x:2000:2000::/invalid:/bin/false
illya:x:2001:2000::/invalid:/bin/false
 
[root@emfssmb-ceph02 /]# tail -n 1 /etc/group
fgo:x:2000:
 
[root@emfssmb-ceph02 /]# pdbedit -L
saber:2000:
illya:2001:
 
[root@emfssmb-ceph02 /]#

「scc.toml」の定義でアカウントも用意される.

smb接続

windows/macOSからアクセスして、パスワード認証が済めば利用可能になります

2025y05m08d_031650928.png

めも

https://documentation.suse.com/ja-jp/ses/7.1/html/ses-all/cha-ses-cifs.html#cephfs-samba-packages から
上記のように samba の vfs_ceph モジュールはお勧めしないみたい.

最新の60件
2025-05-24 2025-05-22 2025-05-21 2025-05-20 2025-05-19 2025-05-18 2025-05-17 2025-05-14 2025-05-13 2025-05-12 2025-05-11 2025-05-08 2025-05-07 2025-05-06 2025-05-05 2025-05-04 2025-05-03 2025-04-27 2025-04-26 2025-04-25 2025-04-24 2025-04-17 2025-04-13 2025-04-02 2025-04-01 2025-03-31 2025-03-29 2025-03-28 2025-03-27 2025-03-26 2025-03-23 2025-03-22 2025-03-20

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-05-08 (木) 03:40:35