cephFSをsamba経由で利用する

samba-4.10からsambaの「vfs」経由でcephが利用可能みたい.
ただCentOS7から得られるそのままのパッケージでは無理で、自分でrpmbuildして作る必要がある
./configure;make;make installでも構わないが

準備

[root@ceph-smb ~]# yum install -y yum-utils
[root@ceph-smb ~]# yumdownloader --source samba    #「samba-4.10.16-9.el7_9.src.rpm」を入手
 
 
[root@ceph-smb ~]# rpm -Uvh samba-4.10.16-9.el7_9.src.rpm

これで「~/rpmbuild/{SOURCES,SPECS}」が掘られてソース、パッチとspecファイルが展開されます

specファイルを修正します. 既定でceph関係は有効になっていないのでそれを修正

--- rpmbuild/SPECS/samba.spec.orig      2020-12-15 23:07:30.000000000 +0900
+++ rpmbuild/SPECS/samba.spec   2021-03-07 02:58:48.664052571 +0900
@@ -42,7 +42,7 @@
 
 %global with_profiling 1
 
-%global with_vfs_cephfs 0
+%global with_vfs_cephfs 1
 %if 0%{?fedora}
 %ifarch aarch64 ppc64le s390x x86_64
 %global with_vfs_cephfs 1
@@ -2373,7 +2373,6 @@
 %else
 %{_libdir}/samba/libdsdb-module-samba4.so
 %endif
-%{_libdir}/samba/libcmocka-samba4.so
 
 ### WINBIND
 %files winbind

「libcmocka-samba4.so」の削除はこれが有効だとrpmファイルが作れなかったため.
ちなみに下記のように言われた

RPM build errors:
    File not found: /root/rpmbuild/BUILDROOT/samba-4.10.16-9.el7.x86_64/usr/lib64/samba/libcmocka-samba4.so

コンパイル(rpmbuild)に必要なパッケージの追加

rpmbuildを実行するとrebuildに必要なパッケージが提示される

[root@ceph-smb ~]# rpmbuild -bb rpmbuild/SPECS/samba.spec
 :
 :
        avahi-devel is needed by samba-0:4.10.16-9.el7.x86_64
        cups-devel is needed by samba-0:4.10.16-9.el7.x86_64
        dbus-devel is needed by samba-0:4.10.16-9.el7.x86_64
 
 :
 :
[root@ceph-smb ~]#

まずはこの足らないパッケージをインストールします

yum install epel-release
yum install \
avahi-devel cups-devel dbus-devel docbook-style-xsl e2fsprogs-devel jansson-devel glusterfs-api-devel \
glusterfs-devel gnutls-devel krb5-devel libacl-devel libaio-devel libarchive-devel libattr-devel \
libcap-devel libcephfs-devel libcmocka-devel libldb-devel libtalloc-devel libtasn1-devel libtasn1-tools \
libtdb-devel libtevent-devel libuuid-devel ncurses-devel openldap-devel pam-devel perl-ExtUtils-MakeMaker \
perl-Parse-Yapp perl-Test-Simple systemd-devel popt-devel pyldb-devel pytalloc-devel python2-devel \
python-dns python-iso8601 python-tdb python-tevent quota-devel readline-devel xfsprogs-devel zlib-devel

この中の「libcephfs-devel」はceph関係なのでCephFSでcephのリポジトリを登録してインストールします

rpm -Uvh https://download.ceph.com/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm
 
yum install libcephfs-devel

これで準備が完了

rpmbuild

っで再度rpmbuildでcephを使えるsambaを作る

  1
[root@ceph-smb ~]# rpmbuild -bb rpmbuild/SPECS/samba.spec --define "dist .el7_9"

末尾の「--define "dist .el7_9"」を付けないとsssdらのパッケージが入らなかった. sssdとsambaの連携のためかな.
これを付けると「samba-4.10.16-9.el7_9.x86_64.rpm」
付けないなと「samba-4.10.16-9.el7.x86_64.rpm」となるが、Releaseも「9.el7_9」となる. その違いかは不明.

できたrpmパッケージは

[root@ceph-smb ~]# ls -l rpmbuild/RPMS/{noarch,x86_64}
rpmbuild/RPMS/noarch:
total 408
-rw-r--r--. 1 root root 218580 Mar  8 01:00 samba-common-4.10.16-9.el7_9.noarch.rpm
-rw-r--r--. 1 root root 192760 Mar  8 01:00 samba-pidl-4.10.16-9.el7_9.noarch.rpm
 
rpmbuild/RPMS/x86_64:
total 53764
-rw-r--r--. 1 root root   775948 Mar  8 01:00 ctdb-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root  1361284 Mar  8 01:00 ctdb-tests-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   146836 Mar  8 01:00 libsmbclient-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   109832 Mar  8 01:00 libsmbclient-devel-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   116596 Mar  8 01:00 libwbclient-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root    98328 Mar  8 01:00 libwbclient-devel-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   734308 Mar  8 01:00 samba-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   659472 Mar  8 01:00 samba-client-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root  5238144 Mar  8 01:00 samba-client-libs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   184268 Mar  8 01:00 samba-common-libs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   475064 Mar  8 01:00 samba-common-tools-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root    88136 Mar  8 01:00 samba-dc-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root    88192 Mar  8 01:00 samba-dc-libs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root 37383740 Mar  8 01:00 samba-debuginfo-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   308932 Mar  8 01:00 samba-devel-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root    95668 Mar  8 01:00 samba-krb5-printing-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   275412 Mar  8 01:00 samba-libs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root  3090948 Mar  8 01:00 samba-python-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   542948 Mar  8 01:00 samba-python-test-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root  1937908 Mar  8 01:00 samba-test-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   116300 Mar  8 01:00 samba-test-libs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   112344 Mar  8 01:00 samba-vfs-cephfs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   115892 Mar  8 01:00 samba-vfs-glusterfs-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   570728 Mar  8 01:00 samba-winbind-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   149972 Mar  8 01:00 samba-winbind-clients-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root    94332 Mar  8 01:00 samba-winbind-krb5-locator-4.10.16-9.el7_9.x86_64.rpm
-rw-r--r--. 1 root root   123592 Mar  8 01:00 samba-winbind-modules-4.10.16-9.el7_9.x86_64.rpm
[root@ceph-smb ~]#

一応お目当ての「samba-vfs-cephfs-4.10.16-9.el7_9.x86_64.rpm」がある. この中身は

[root@ceph-smb ~]# rpm -qpli rpmbuild/RPMS/x86_64/samba-vfs-cephfs-4.10.16-9.el7_9.x86_64.rpm
Name        : samba-vfs-cephfs
Epoch       : 0
Version     : 4.10.16
Release     : 9.el7_9
Architecture: x86_64
Install Date: (not installed)
Group       : Unspecified
Size        : 63476
License     : GPLv3+ and LGPLv3+
Signature   : (none)
Source RPM  : samba-4.10.16-9.el7_9.src.rpm
Build Date  : Mon 08 Mar 2021 01:00:22 AM JST
Build Host  : ceph-smb.sybyl.local
Relocations : (not relocatable)
URL         : http://www.samba.org/
Summary     : Samba VFS module for Ceph distributed storage system
Description :
Samba VFS module for Ceph distributed storage system integration.
/usr/lib64/samba/vfs/ceph.so
/usr/share/man/man8/vfs_ceph.8.gz
[root@ceph-smb ~]#

インストール

っでインストール

[root@ceph-smb ~]# cd rpmbuild/RPMS
[root@ceph-smb RPMS]# yum localinstall x86_64/samba-vfs-cephfs-4.10.16-9.el7_9.x86_64.rpm \
                                       x86_64/samba-4.10.16-9.el7_9.x86_64.rpm \
                                       x86_64/samba-libs-4.10.16-9.el7_9.x86_64.rpm \
                                       x86_64/samba-common-libs-4.10.16-9.el7_9.x86_64.rpm \
                                       x86_64/samba-common-tools-4.10.16-9.el7_9.x86_64.rpm \
                                       x86_64/samba-client-libs-4.10.16-9.el7_9.x86_64.rpm \
                                       x86_64/libwbclient-4.10.16-9.el7_9.x86_64.rpm \
                                       noarch/samba-common-4.10.16-9.el7_9.noarch.rpm

設定

確認というかceph関係のパッケージが既にインストールされているかを確認します

[root@ceph-smb ~]# yum list installed |grep ceph
ceph-release.noarch                1-1.el7                         installed
libcephfs-devel.x86_64             2:15.2.9-0.el7                  @Ceph
libcephfs2.x86_64                  2:15.2.9-0.el7                  @Ceph
samba-vfs-cephfs.x86_64            4.10.16-9.el7_9                 @/samba-vfs-cephfs-4.10.16-9.el7_9.x86_64
 
[root@ceph-smb ~]#

ceph設定ファイルを貰う

[root@ceph-smb ~]# ssh root@mds "sudo ceph config generate-minimal-conf" | sudo tee /etc/ceph/ceph.conf

次にキーリング

[root@mgr ~]# ceph auth get-or-create client.samba.gw mon 'allow r'  osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
[root@mgr ~]# cat ceph.client.samba.gw.keyring
[client.samba.gw]
        key = AQDd1UNgnBL+ARAADz+HW6u0DjHnfsuA2IuqVw==
 
[root@mgr ~]# scp ceph.client.samba.gw.keyring root@ceph-smb:/etc/ceph/
[root@ceph-smb ~]# firewall-cmd --add-service=samba --add-service=ceph --permanent
[root@ceph-smb ~]# firewall-cmd --reload

っでsambaの設定です。ここではsamba-adに参加して、かつcephFSを公開しています。
「/etc/samba/smb.conf」ファイル

[global]
  workgroup = SYBYL
  security = ADS
  realm = SYBYL.LOCAL
  log file = /var/log/samba/%m.log
  kerberos method = secrets and keytab
  client signing = yes
  client use spnego = yes
 
[emfs]
  path = /
  vfs objects = ceph
  ceph: config_file = /etc/ceph/ceph.conf
  ceph: user_id = samba.gw
  read only = no
  oplocks = no
  kernel share modes = no

selinux

「SELINUX=enforcing」なら調整が必要。まぁ「SELINUX=disabled」なら関係ないのですが、時勢でそろそろやらねばと
まずは定義できるものを確認します

[root@ceph-smb ~]# yum install ceph-selinux
 
[root@ceph-smb ~]# yum install policycoreutils-python setools-console

難しい....ひとまずここまで


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-03-08 (月) 02:57:11 (40d)