ceph+samba的简单使用


前提准备

有一个HEALTH_OK的ceph集群,还有剩余的存储空间, 并且创建了CephFS。

这里是我所搭建的集群:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ sudo ceph -s
cluster:
id: 51e9f534-b15a-4273-953c-9b56e9312510
health: HEALTH_OK
services:
mon: 3 daemons, quorum node1,node2,node3
mgr: node1(active), standbys: node2, node3
mds: cephfs-1/1/1 up {0=node1=up:active}
osd: 6 osds: 6 up, 6 in
data:
pools: 2 pools, 64 pgs
objects: 316 objects, 1.1 GiB
usage: 23 GiB used, 6.0 TiB / 6.0 TiB avail
pgs: 64 active+clean

一台linux主机(简称smb服务器),能够与Ceph集群通信,用于开启smb服务。(当然也可以是Ceph集群中的某一节点, 我这里使用的就是Ceph集群中的node1)

一台windows主机,能够直接ping通smb服务器(一定要直接ping通最好,也就是同一个局域网下, 因为windows使用smb服务的时候,端口是默认定死的,你端口映射是没用的)。


搭建smb服务器

首先尝试搭建smb服务器,这里和ceph暂时没有关系。

第一步,在作为smb服务器的linux主机上安装samba:

1
$ sudo yum install -y samba samba-client

修改smb.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$ sudo vim /etc/samba/smb.conf
$ sudo cat /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
netbios name = long
server string = Linux Samba test
security = user
[samba]
path = /smb/samba
writeable = yes
browseable = yes
guest ok = yes
// 检查配置文件正确性
$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[samba]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
netbios name = LONG
security = USER
server string = Linux Samba test
idmap config * : backend = tdb
[samba]
guest ok = Yes
path = /smb/samba
read only = No

注意这里的workgroupnetbios name字段填写的是windows主机上所显示的工作组和用户名, 可以在windows主机上通过我的电脑->属性,进行查看。

path字段即共享文件夹位置,这里将它创建出来。

1
$ sudo mkdir -p /smb/samba

将共享文件夹的用户和组改为nobody,权限改为777:

1
2
3
4
5
6
7
// 确定nobody的组名用户名都叫nobody
$ id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
// 设置权限
$ sudo chown -R nobody:nobody /smb
$ sudo chmod -R 777 /smb

启动smb服务:

1
2
$ sudo systemctl enable smb
$ sudo systemctl start smb

本机测试服务是否成功启动,注意因为共享文件夹设置的guest ok,所以这里不用输入密码也可以连接:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ sudo smbclient -L \\192.168.90.233
Enter WORKGROUP\cluster's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
samba Disk
IPC$ IPC IPC Service (Linux Samba test)
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
$ smbclient //192.168.90.233/samba
Enter WORKGROUP\cluster's password:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Aug 5 17:57:17 2019
.. DR 0 Mon Aug 5 17:47:05 2019
test D 0 Mon Aug 5 17:50:02 2019
public D 0 Mon Aug 5 17:57:25 2019
2030415872 blocks of size 1024. 2029215744 blocks available
smb: \>

ok,smb服务配置成功。


使用windows访问CephFS

通过上面的步骤,显而易见,只要将CephFS挂载到smb服务所共享的目录下即可:

1
$ sudo mount -t ceph 192.168.90.233:6789:/ /smb/samba -o name=admin,secret=AQCSvDZdqDJ+LRAAwl2YpecB2kvb7Rmp4nGJXQ==

挂载之后,就相当于将CephFS共享了出来。

这里可以创建一个用户来访问共享:

1
2
$ sudo adduser smbuser
$ sudo smbpasswd -a smbuser

在windows中打开文件资源管理器(其实就是任意文件夹):

image

在路径栏输入smb服务器位置:

image

回车,输入刚创建的用户名和密码,即可:

image

创建文件:

image

修改文件内容并成功保存:

image

到这里,就完成了使用windows来对CephFS进行访问。


参考

Centos7 配置samba服务

---------------------------------END---------------------------------