[TOC]
0x00 前言简述
本章主要介绍 CIFS 与 CIFS Homedir 概念及其配置,方便初学者快速入门;
1.CIFS
描述:CIFS(Common Internet File System - 通用网络文件系统)是当前主流异构平台共享文件系统之一
,它是一个网络文件共享协议,允许Internet和Intranet中的Windows主机访问网络中的文件或其他资源。主要应用在Window操作系统环境下进行文件共享
,如果你是Linux系统还是建议您采用NFS文件系统;
CIFS是SMB(Server Message Block)
的一个公共版本;
Q: 那什么是SMB协议?
答: SMB协议是一个网络文件访问协议,使本机程序可以访问局域网内计算机上的文件并请求此计算机的服务。
Q: 为什么要使用CIFS文件系统而不是直接使用SMB共享?
答: 随着企业规模的扩大,企业内各部门之间进行文件共享和访问的用户数量越来越多;由于共享文件所在的服务器的硬件配置限制,当大量用户访问共享文件时,造成访问速度下降、系统响应慢的问题 如何能够提高大量用户访问共享文件的性能,是企业网络应用必须解决的问题。 存储系统支持CIFS共享特性,使得Windows客户端
能够识别并访问网络中存储系统提供的共享资源
,客户端用户能够像使用本机一样对保存在存储系统中的文件进行读、写、创建等操作。CIFS解决了大量用户访问共享文件速度下降和系统响应慢的问题
。
CIFS 优势:
- 1.高并发性: 提供文件共享和文件锁机制,允许多个客户端访问或更新同一个文件而不产生冲突(
同一时刻只允许一个客户端更新文件
) - 2.高性能: 某个客户端对共享文件进行的操作并不会立即写入存储系统而是保存在本地缓存中。当该客户端再次对共享文件进行操作时,系统会直接从缓存中读取文件,提高文件访问性能。
- 3.数据完整性: 采用抢占缓存、预读和回写的方式保证数据的完整性,上面我们说到客户端对共享文件的操作不会立即写入存储系统而是保存在本地缓存之中,当其它客户端需要访问同一文件时候便会将缓存数据写入到存储之中,从而保证了在同一时刻
只有一个拷贝文件处于激活状态防止数据冲突
; - 4.高安全性: FS支持匿名传输和共享的鉴权访问(
设置用户对文件系统的访问权限,保证文件的机密性和安全性
) - 5.应用广泛性: 任意支持CIFS协议的客户端,均可以访问CIFS共享空间。
- 6.统一的字符编码标准: 支持各类字符集,保证CIFS可以在所有语言系统中使用。
配置CIFS共享包括无域环境中配置CIFS共享
和AD域环境中配置CIFS共享
两种方式;
- (1) 无域环境中的CIFS共享: 存储系统使用CIFS共享的方式,把文件系统以目录的形式共享给某个用户,并且存储系统还可以为不同的用户设置共享文件,使存储系统共享的目录和用户名一致,该用户无法查看或访问其他用户的共享目录。
- 链接流程:通过CIFS协议,向客户端提供对文件系统的共享访问,客户端(通过鉴权后)将共享文件映射到本地后,用户可以像访问本地文件一样远程访问服务器中的文件系统。
- Tips:在存储系统中通过设置本地认证的用户名和密码,确定允许访问该文件系统的本地认证信息。
WeiyiGeek.无域环境中的CIFS共享
- (2) AD域环境中的CIFS共享:随着局域网、广域网规模越来越大,很多企业使用AD域进行Windows网络管理,使得管理更便捷、更具有扩展性。 比如华为V5存储系统能够加入AD域,作为AD域的客户端,实现和AD域环境的无缝对接,利用其AD域控制器中保存了域环境中所有的用户信息、群组信息等;AD域客户端访问存储系统提供的CIFS共享时,认证均通过AD域控制器完成。所有域用户均可以访问存储系统提供的共享目录。同时AD域的管理员可以配置基于文件的权限管理,对不同域用户访问每个文件夹进行不同的权限控制。同时,存储系统支持AD域客户端只能访问与其名称相同的共享目录,无法查看并访问其他域客户端的共享目录的方式;
WeiyiGeek.AD域环境中的CIFS共享
2.CIFS Homedir
描述:Homedir(Home Directory)属于CIFS共享方式的一种,它是是用户私有目录,可用于存放用户私有数据,该用户只能查看和访问与其名称一致的共享目录,无法查看或访问其他用户的私有目录
。
Homedir特性优势:
- 支持配置Homedir共享名,用户可通过Homedir共享名访问不同的Homedir共享。
- 支持配置CA、oplock、notify等特性开关,可以实现对用户访问Homedir共享业务的特性控制。
- 支持配置Homedir共享权限,实现对Homedir共享的用户权限管理。
- 支持配置多个Homedir共享,每个Homedir共享可添加多个用户Homedir文件系统路径映射规则,满足管理员划分用户Homedir到不同文件系统路径的业务场景。
- 映射规则支持AutoCreate选项,可以自动为用户创建Homedir目录,简化了管理员对用户Homedir目录的管理。
同CIFS一样华为存储V5也包括两种共享方式即无域环境中的 CIFS Homedir共享 、 AD域环境中的CIFS Homedir共享
图示参照CIFS共享;
0x01 共享规划
描述:在配置CIFS/CIFS Homedir共享前请先做好规划工作,以便顺利开展后续的业务配置。
规划的内容包括网络、域、认证方式、共享方式、用户、用户组、权限和配额
。
规划项 | 规划子项 | 规划要求 | |
---|---|---|---|
网络 | 存储系统IP | 存储系统使用逻辑端口(LIFa)提供存储系统和应用服务器之间的通信提供IP。 | |
访问终端IP地址 | 访问终端与存储系统在同一个网络中,可以相互ping通。 | ||
维护终端IP地址 | 维护终端与存储系统在同一个网络中,可以相互ping通。 | ||
(可选)AD域环境 | 在AD域环境中,规划AD域服务器和NTP服务器的IP地址和主机名,并保证各服务器与存储系统在同一个网络中,可以相互ping通。 | ||
域环境 | AD域或无域 | 根据用户的管理需求,设置为AD域或无域环境。 两种环境的优点如下。 AD域:存储系统能够实现与AD域的无缝对接,无需建立本地用户,域用户可以访问共享空间。无域:无需搭建域环境。 | |
认证方式 | 本地认证和域认证 | 根据用户环境AD域或无域环境设置认证方式。 本地认证:使用本地帐户进行用户身份的认证。域认证:使用域服务器进行用户身份的认证。 | |
共享方式 | CIFS共享 | 创建CIFS共享前,需要先检查是否已启用CIFS服务并对CIFS服务进行配置。 | |
用户 | 包括本地认证的用户和域认证的用户 | 本地认证用户名长度范围为6到32位字符。 本地认证用户名不允许包含空格、`“””、“/”、“”、“[”、“]”、“<”、“>”、“ ”、“:”、“;”、“,”、“?”、“*”、“ | ”、“=”和“@”`,且尾字符不允许为“.”。 |
用户组 | 包括本地认证的用户组和域认证的用户组 | 本地认证用户组名长度范围为1到32位字符。 本地认证用户组名不允许包含空格、`“””、“/”、“”、“[”、“]”、“<”、“>”、“ ”、“:”、“;”、“,”、“?”、“*”、“ | ”、“=”和“@”`,且尾字符不允许为“.”。 |
权限级别 | 用户或用户组访问共享的权限 | 设置用户访问CIFS共享的权限,包括: 完全控制:拥有CIFS共享的所用权限。 只读:只拥有CIFS共享的读权限。 读写:拥有CIFS共享的读写权限。 禁止:禁止访问。 | |
配额 | - | 配额只能针对文件系统的quota tree(b),根据用户需求定义文件系统的配额值。配额大小不受文件系统容量限制。配额包括以下两方面: 空间配额:文件系统中quota tree的最大容量。 文件配额:文件系统中quota tree的最大文件数目。 |
a:LIF是在物理端口、绑定端口及VLAN端口上创建的逻辑端口,每个LIF对应一个IP地址。 b:quota tree即配额树,是文件系统的特殊目录。在quota tree上可以设置目录配额,管理该目录内所有文件的使用空间。
0x02 CIFS 配置说明
描述下面以OceanStor DeviceManager设备型号:5310F V5 为例进行配置使用;
- (1) CIFS共享的配置流程
WeiyiGeek.CIFS
- (2) CIFS Homedir共享的配置流程:
WeiyiGeek.CIFS Homedir
0x03 CIFS 挂载使用
Windows 平台下挂载CIFS存储
描述: 此处以客户端操作系统为 Windows 7为例进行说明,在用户客户端映射网络驱动器流程如下: Step 1.在Windows客户端右键单击“计算机”。选择“映射网络驱动器”。
Step 2.系统弹出“映射网络驱动器”对话框。在“文件夹”中输入映射的文件夹路径。
Step 3.映射的文件夹路径使用\logical ip addresssharename
的格式。
Step 4.其中sharename是指CIFS共享的共享名称。单击“完成”。
Linux 平台下挂载CIFS存储(windows 共享目录)
描述: 实际上在Linux中挂载CIFS(Common Internet File System,即通用internet文件系统)存储的方式流程与NFS相似,其主要使用场景是嵌入式中实现从开发板与windows的共享。
如果在linux去挂载其他linux或者window的磁盘该怎么做呢? 软件安装包:
代码语言:javascript复制# CentOS - 环境
yum install cifs-utils -y
# Ubuntu - 环境
sudo apt-get install cifs-utils
挂载使用
Step 1.查看CIFS共享存储上的挂载点,注意需要放行相关端口
代码语言:javascript复制showmount –e 192.168.1.250
/DATA
Step 2.挂载CIFS共享存储命令, 此处非常注意需要将Windows中\
改成Linux识别的//
以及后续路径中的也需要改成
/
否则无法正常挂载。
mkdir -vp /app/share
# 空密码链接示例
mount -t cifs -o sec=none,iocharset=utf8,vers=2.0 //192.168.1.250/DATA /app/share
# 域和域用户账号密码
mount -t cifs -o domain=cloud,username=administrator,password=123456,sec=ntlmssp,iocharset=utf8,vers=2.0 //192.168.1.250/DATA /app/share
# 命令参数解析:
-t 挂载类型为cifs
-o 挂载参数
Domain=域名
sername=用户名
password=密码
sec=安全认证方式
iocharset=字符集
vers=版本
# 选择安全模型:
sec={none|krb5|krb5i|ntlm|ntlmi|ntlmv2|ntlmv2i}
* none 尝试以空用户连接(不提供用户名)
* krb5 使用 Kerberos version 5 认证
* krb5i 使用 Kerberos version 5 和包签名(packet signing)认证
* ntlm 使用 NTLM 口令散列认证(默认值)
* ntlmi 使用 NTLM 签名口令散列认证(如果 /proc/fs/cifs/PacketSigningEnabled 被开启或者服务器端要求必须签名时,这个将成为默认值)
* ntlmv2 使用 NTLMv2 口令散列认证
* ntlmv2i 使用 NTLMv2 签名口令散列认证
温馨提示: 如果指定挂载后文件编码使用中文(如挂载Windows共享)-ocodepage=936,iocharset=cp936
Step 3.如果需要设置自动挂载,则需要在/etc/fstab
文件中添加如下配置。
tee -a /etc/fstab <<'EOF'
....
//192.168.1.250/DATA /app/share cifs defaults,username=administrator,password=123456 0 0
EOF
$ mount -a
Step 4.查看挂载的CIFS磁盘.
代码语言:javascript复制$ df -Th | grep "cifs"
//10.41.40.92/myshare/ cifs 44T 28G 44T 1% /mnt/cifs
入坑出坑
1.使用mount挂载cifs时 mount error(95): Operation not supported
.
$ mount -t cifs -o username=weiyigeek,password='password' //192.168.6.19/share /share
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
- 解决办法: 在命令行
vers=2.0
参数即可。
2.使用mount挂载cifs时普通用户无法操作挂载目录的文件及其目录报没有权限问题,以weiyigeek与app组为例
代码语言:javascript复制# 空密码链接示例, weiyigeek用户以及app组
mount -t cifs -o sec=none,iocharset=utf8,vers=2.0,uid=weiyigeek,gid=app //192.168.1.250/DATA /app/share