NAS:云平台NAS服务的构建

0 背景介绍

openstack+ceph,openstack中的云主机使用ceph rbd作为云硬盘

1 需求

1)支持对外提供文件存储服务

2)支持内部云主机访问存储服务

3)支持万兆访问,单客户端读速度不小于400MB/s,聚合读写速度不小于800MB/s

2 概要设计

使用openstack中的一台云主机作为NAS-server,挂载云硬盘提供存储空间,使用samba软件对外提供nas服务。

网络拓扑见下图:

 

【对部署的要求】

① 为了满足性能指标,要求external-net部署在万兆网络上

② 云主机的镜像中有samba和samba-client相关安装包(备注:CentOS-7.4-x86_64-Full中直接安装了所需的所有包,推荐直接使用该镜像安装虚拟机)

 

3 手动搭建服务

首先创建一个云主机作为NAS-Server,安装samba服务,然后挂载云硬盘,创建共享文件夹。

【关于磁盘挂载方式】

目前,关于NAS-server云主机挂载云硬盘的方式有两种

方式一:挂载单块大容量云硬盘

   格式化挂载盘: 

          # mkfs.xfs /dev/vdb

   创建挂载点 

          # mkdir /mnt/nas

   将磁盘挂载到挂载点

         # mount /dev/vdb /mnt/nas

   设置权限

        # chmod +777  /mnt/nas

   /mnt/nas就是nas服务共享的文件夹

方式二:同时挂载多块云硬盘,做成lvm逻辑卷的方式提供存储空间

    (调研中后续补充)

考虑单块大容量盘的克隆、快照操作都比较耗时,建议使用方式二

 

【配置文件】

配置文件路劲在: /etc/samba/smb.conf,配置文件实例如下(仅列出较为重要的几项),配置完之后可以使用 # testparm 检查配置的合法性:

[homes]

         comment = %s                # 描述信息

         path = %s                        # 用来指定共享目录的路径

         public = yes/no               # 用来指定该共享是否允许guest账户访问

         read only = yes/no          # 是否只允许读

         valid users = %s              # 允许访问该共享的用户

         write list = %s                 # 允许写入该共享的用户

samba服务提供了两种文件共享访问方式:① 使用账号密码登陆 ② 匿名登陆。分别的配置方式如下:

需要预先在samba server中创建系统用户以及设置用户密码

# useradd titan                      // 添加系统用户

# smbpasswd -a titan            // 设置samba访问的用户名密码

 

samba还支持用户组的概念

# groupadd group1             // 添加系统用户组group1

# useradd -G group1 alice   // 添加系统用户alice,且alice属于group1

# smbpasswd -a alice           // 设置samba访问的用户名密码

# useradd -G group1 bob    // 添加系统用户bob,且bob属于group1

# smbpasswd -a bob            // 设置samba访问的用户名密码

 

 

# 只有用户user1和组group1中所有的用户(即alice和bob)可以访问该文件夹,但是只有user1可以写该文件夹

[Test-A]

    public = no # 用户访问sambaserver需要提供用户名密码    comment = Test Directory

    path = /mnt/nas-A #共享的文件夹

    read only = No

    valid users = user1,@group1

    write list = user1

【关于匿名(免密)登陆】

 

我们建议使用免密登陆的方式给用户提供服务,因为方式① ,这种方式使用起来不方便。

 

匿名登陆的配置:

   首先,在[global]默认的配置项中加入map to guest = bad user,表示将匿名用户映射成nobody,

 

然后在共享盘的配置中填写

valid users =  nobody, write list = nobody

 

[Test-B]

    public = share # 用户访问sambaserver需要提供用户名密码    comment = Test Directory

    path = /mnt/nas-B #共享的文件夹

    browseable = yes

    read only = No

    valid users = nobody

    write list = nobody

4 需求实现

4.1 对外提供文件存储服务

即用户从外网向一体机中导入导出数据,我们对客户端系统是windows和linux俩种情况进行讨论。

4.1.1 外网系统是linux

在Linux的中, 可以通过Samba客户端直接访问共享文件系统,也可以把server中的共享文件夹挂载在本地机上使用.

(1)Samba客户端访问

使用smbclient,smbclient是samba的客户端,可以通过smbclient的put/get上传下载文件。

# smbclient //10.10.17.8/Test-A -U user1    使用user1账号登陆Test-A

# smbclient //10.10.17.8/Test-B    匿名登陆Test-B,遇到输入密码直接回车

 

常见错误:session setup failed: NT_STATUS_LOGON_FAILURE。登陆错误,建议重新看一下【配置文件】中的两种登陆方式、用户创建等内容。

(2)挂载到本地方式访问

直接将nas-server中的目录挂载到本地,提供服务。具体方法:

① 第一步,在本地创建一个挂载点 mkdir /mnt/local-nas

② 第二步,挂载到本地

# mount -t cifs -o username=user1,password=user1  //10.10.17.8/Test-A /mnt/local-A    使用账号密码登陆

# mount -t cifs -o username=guest,password=  //10.10.17.8/Test-B /mnt/local-B    匿名登陆

 

4.1.2 外网系统是windows

(1)ftp

    直接使用ftp向nas盘传输数据。这种方式依赖于windows中已经装了ftp软件,不推荐使用。

(2)映射网络文件夹方式

    在Windows网络中,可以直接就可以把共享文件夹当做本地硬盘来使用。

具体步骤:

计算机->网络->映射网络驱动器->输入 \\server\share->完成

 

4.2 内部虚拟机访问存储服务

也分成云主机系统是window和linux两种情况讨论。和3.5中方式完全一样,故不作复述。

总之,只要网络是通的,就可以使用nas服务

5 存在问题

该方案在高可靠性方面存在风险:由于我们的nas服务是通过云主机+rbd盘方式提供,如果云主机迁移过程中(大概一分钟),服务会中端,如果恰好在文件传输过程中,文件传输会失败,需要用户重新传输文件。

6 其他调研

以下调研,本人均没有进行实验验证,也许后续会补充相关文档

(1) 服务器层 CephFS+nfsd/samba+consul

nfsd(是linux自带的守护进程)使用nfs协议向linux提供服务,samba使用cifs协议向windows提供服务

目前实现的高可用程度:

nfsd 可以支持高可用,切换节点(大概1分钟),服务重新连接上后,文件可以继续传输。注意:仅nfsd的v3版本支持无状态无连接的传输方式,故服务切换后可以继续传输,v4版本是无连接有状态的,不能支持高可用。目前云存储cifs协议不支持高可用。

(2) 在CephFS + Manila 

Manila项目全称是File Share Service,文件共享即服务。是OpenStack大帐篷模式下的子项目之一,用来提供云上的文件共享,支持CIFS协议和NFS协议。

些关于Ceph对接Manila的驱动:

1. Default Driver: 使用 RBD 作为 Manila Service VM 的后端,在 VM 上启动 NFS 实例提供服务

2. Ganesha Driver: 使用 Ganesha 将 CephFS 重新 Reexport 出去

3. Native CephFS Driver: 在 Guest VM 上直接使用原生 CephFS Module 访问

4. VirtFS Driver: 将 CephFS 挂载在 Host 端,VM 通过 VirtFS 访问

目前实现的高可用程度:

    时间原因,没有查到资料。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值