很多人第一次在飞牛存储的管理后台看到“SMB挂载”和“iSCSI挂载”两个选项时,心里都是同一个问号:这不都是把网络上的存储空间映射到本地用吗?有什么区别?既然你搜到了这个标题,说明你已经遇到了这个选择。这两个词在NAS存储圈里出现频率很高,但真正能一句话说清差异的人其实不多。这篇文章我不打算给你念协议文档,而是从实际使用者的视角,把SMB和iSCSI的底层逻辑、飞牛存储上的挂载步骤、以及我踩过的各种坑一次讲透。如果你正准备给Windows、Linux或者虚拟化环境配存储,或者已经在两种方式之间犹豫,这篇内容可以直接帮你做决定。
1. 协议本质:一个是共享目录,一个是远程硬盘
很多人搞混SMB和iSCSI,是因为它们从“用户看到的最终效果”上实在太像了。Windows里一个映射出Z盘,一个也显示为磁盘;Linux里一个挂在/mnt/data,一个也能挂到/mnt/data。但如果你只看到这一层,后面出问题时就会完全摸不着方向。
1.1 SMB是文件级协议
SMB的全称是Server Message Block,又叫CIFS,它工作在“文件级”。什么意思?客户端向服务器发起的请求是“我要读取文件A第100到200字节”“我要写入文件B”“请把这个文件重命名”,所有这些操作都由服务器端的文件系统来完成。客户端拿到的不是一块裸设备,而是一个已经组织好的目录结构,你能看到文件夹、文件大小、修改时间,甚至还能直接在上面做文件搜索。
正因为SMB把文件系统的复杂操作全部揽到了服务端,所以它的兼容性特别好。Windows、macOS、Linux、手机、电视盒子、播放器、打印机,几乎任何设备都能通过SMB访问共享目录。你在Windows上打开“网络邻居”或者映射网络驱动器,本质上就是建立一条SMB会话。SMB协议默认走445端口,早期的SMB1还存在严重的安全问题,现在基本都建议关闭。
生活化一点理解:SMB像去图书馆借书。你只需要告诉管理员“我要借《三体》第二册”,管理员会帮你去书架上找,然后递给你。你并不关心这本书放在哪一排、图书馆内部怎么分类、怎么管理书架——这些都由服务器端搞定。好处是客户端很轻,坏处是每一次借书都要经过管理员,几十个人同时借书时,管理员就成了瓶颈。
1.2 iSCSI是块级协议
iSCSI全称Internet Small Computer System Interface,它工作在“块级”。它做的事情是:把远端的存储空间封装成一块“裸盘”,通过网络把SCSI命令传输过去。客户端看到的不再是文件夹,而是一块没有文件系统的磁盘,需要你自己分区、格式化、创建文件系统。
这就好比你不是去图书馆借书,而是直接跑到图书馆的书库里面,从书架上拿走一整排书架,然后把书架搬回自己家,自己重新归类、贴上标签、决定怎么摆放。你拥有了底层控制权,但也承担了所有管理责任。iSCSI的客户端看到的设备通常是一个/dev/sdb或者Windows里的“未初始化磁盘”,它不知道什么是NTFS或ext4,这些都需要你本地搞。
iSCSI最常见的应用场景是虚拟机存储。例如飞牛存储上的iSCSI Target可以提供给VMware ESXi做数据存储,虚拟机直接跑在远端块设备上;数据库服务器也可以把数据文件放在iSCSI盘上,因为数据库需要独占的块设备来管理文件。iSCSI在传输上更接近本地磁盘行为,协议开销比SMB低,所以在IOPS和延迟敏感的场景下通常表现更好。
1.3 核心差异对照表
| 对比维度 | SMB | iSCSI |
|---|---|---|
| 协议层级 | 文件级,客户端看到共享目录 | 块级,客户端看到裸磁盘 |
| 文件系统位置 | 服务端管理文件系统 | 客户端自己管理文件系统 |
| 多客户端共享 | 天然支持,多客户端可同时读写 | 默认不支持,多客户端共享极易损坏数据 |
| 客户端适配 | 几乎所有操作系统和设备 | 需要系统自带或安装iSCSI发起器 |
| 网络端口 | 445 | 3260 |
| 性能特征 | 小文件/元数据操作开销大 | 更接近本地磁盘,IOPS和延迟更优 |
| 配置难度 | 低,开启共享即可 | 中,需要创建Target、连接、分区格式化 |
| 适合场景 | 文件共享、家庭媒体、办公协作 | 虚拟机存储、数据库、块设备备份 |
这个表至少能帮你解决80%的困惑。真正决策时,先问自己一个问题:我要的是“多个设备能同时访问同一批文件”,还是“一个设备要独占一块高性能存储”?前者选SMB,后者选iSCSI,基本不会错。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 飞牛存储上挂载SMB的实操细节
飞牛存储的Web管理界面里,SMB功能通常和“共享文件夹”放在一起。不同版本的入口名称可能不太一样,有的叫“文件服务”,有的叫“SMB”,但核心思路是一致的:先创建共享文件夹,再开启SMB协议,最后设置用户权限。
2.1 服务端配置:三步开启SMB共享
第一步,在飞牛存储管理后台进入“存储管理”或者“共享文件夹”模块,新建一个共享文件夹。注意这里要选择实际存放数据的存储池和目录,比如你有一块4T硬盘,可以专门划出一个media文件夹给家庭媒体使用。
第二步,进入“SMB服务”或“文件服务”设置,把服务开关打开。飞牛存储默认通常支持SMB 2.0和SMB 3.0,我强烈建议把SMB 1.0关闭。SMB1已经是十多年前的老古董,性能差而且安全漏洞多,除非你有Windows 98、Windows XP这类老旧设备,否则完全没必要开。
第三步,配置访问用户和权限。飞牛存储默认会有一套用户体系,你可以为每个用户单独设置共享文件夹的读写权限。如果只是家庭内网使用,直接用管理员账号访问也可以;但如果公司环境,我建议创建独立账号并设置密码,避免所有设备都使用同一个管理员身份。SMB的权限校验依赖用户名和密码,如果没有账号密码,客户端连接时会直接拒绝。
2.2 Windows客户端挂载与Win7经典问题
Windows挂载SMB共享最简便的方法是在文件资源管理器地址栏输入\\192.168.1.100\media,回车后输入用户名密码就能访问。如果想要映射成盘符,右键“此电脑”选择“映射网络驱动器”,给一个盘符,再填入共享路径就行。如果希望重启后自动连接,不要取消“登录时重新连接”这个勾选。
命令行方式也可以:
bash复制net use Z: \\192.168.1.100\media /user:fnuser password123 /persistent:yes
其中/persistent:yes表示开机自动重连,/user:后面填飞牛存储上的SMB用户名。这种方式适合写脚本批量挂载的运维场景。
我在实际排障时遇到最多的是Windows 7 SMB不能访问共享文件夹。典型表现是双击共享目录提示“无法访问,你可能没有权限使用网络资源”,或者直接“找不到网络路径”。原因往往不在飞牛存储,而在Windows 7自身的SMB协议版本。飞牛存储如果强制最低SMB 2.0,而客户端的SMB功能被精简或禁用,就会连接失败。
Windows 7默认支持SMB 2.0,一般情况下是能正常连接的。如果你遇到上述问题,先在Windows 7的命令行里执行:
bash复制sc.exe q lanmanworkstation
sc.exe q lanmanserver
确保这两个服务都在运行。然后在“启用或关闭Windows功能”里,把“SMB 1.0/CIFS文件共享支持”勾上。这一步虽然有点老,但确实是很多Win7访问飞牛共享的老办法。需要注意的是,如果客户端系统已经被精简过,可能缺失SMB2的驱动,这种情况只能换系统或升级系统。
2.3 Linux客户端挂载SMB
Linux挂载SMB依赖cifs-utils工具包。Ubuntu/Debian上:
bash复制sudo apt install cifs-utils
CentOS/RHEL上:
bash复制sudo yum install cifs-utils
银河麒麟这类基于Linux的发行版也可以同样安装,只要软件源里有cifs-utils就能用。装好之后,手动挂载命令是这样的:
bash复制sudo mkdir -p /mnt/fnos
sudo mount -t cifs //192.168.1.100/media /mnt/fnos -o username=fnuser,password=password123,vers=3.0
vers=3.0是手动指定SMB协议版本,有时不指定也能自动协商,但如果飞牛存储端关闭了SMB1,而客户端默认首选SMB1,就可能报错。指定vers=3.0可以强制走SMB3,兼容性和性能更好。
如果是长期挂载,建议不要直接在fstab里写密码。更好的做法是把凭据放在一个只有root可读的文件里:
bash复制sudo nano /etc/fncred
文件内容:
ini复制username=fnuser
password=password123
domain=fnos
然后执行:
bash复制sudo chmod 600 /etc/fncred
fstab里这样写:
bash复制//192.168.1.100/media /mnt/fnos cifs credentials=/etc/fncred,uid=1000,gid=1000,iocharset=utf8,vers=3.0,_netdev 0 0
uid和gid可以让普通用户直接读写,_netdev是告诉系统在网络就绪后再挂载,避免开机时网络还没通导致的挂载失败。
Linux下挂载SMB最常见的问题是mount error(13) Permission denied。这个报错不一定是密码错误,也可能是飞牛存储共享目录的权限设置不对,或者用户名不存在。还有一个是mount error(112) Host is down,多数是网络不通、防火墙拦截445端口,或者飞牛存储的SMB服务没有启动。
2.4 SMB的性能调优与使用边界
SMB挂载后,实际性能和本地磁盘还是有差距的。对于视频播放、文档编辑、大文件拷贝,SMB通常够用。但如果你在SMB共享上跑了大量小文件操作,比如编译代码、同步几百个文件夹,速度会明显下滑。
原因在于SMB是文件级协议,每个文件操作都要经过“客户端发请求→服务端处理→回包确认”的完整来回。小文件多意味着网络往返次数暴增,延迟就会凸显。相比之下,iSCSI的块级请求模式对底层小数据块的处理更直接,所以更适合随机读写密集的场景。
想改善SMB性能,可以尝试在挂载参数里加cache=loose,它允许客户端对文件做更激进的缓存。Windows端也可以在网卡属性里开启“大型发送卸载”和“巨帧”支持。但这些优化只是锦上添花,如果飞牛存储本身是机械硬盘,网络再快也快不过硬盘的物理寻道时间。
3. iSCSI挂载:把飞牛存储变成一块“网络硬盘”
如果说SMB是“分享文件夹”,那iSCSI就是“远程硬盘”。在飞牛存储上创建一个iSCSI Target后,客户端能直接看到一块新的空白磁盘,就像在电脑里加了一块硬盘一样。接下来的分区、格式化、挂载全部由客户端自己完成。
3.1 在飞牛存储上创建iSCSI Target
登录飞牛存储管理后台,找到“iSCSI”相关菜单。通常入口在“存储管理”或者“块存储”里面,名称可能是“iSCSI Target”或“iSCSI存储”。创建一个新的Target时,需要填写一个IQN名称,类似iqn.2025-01.com.example:fnos-test。这个字符串是iSCSI设备的全局唯一标识,只要你的环境里不重复就行,格式没有硬性要求。
接着要给这个Target添加LUN(Logical Unit Number)。LUN可以理解为一块“虚拟硬盘”。飞牛存储一般允许你把LUN映射到一个已有的存储池、一个文件或者一块独立裸设备。如果只是测试,用文件方式创建LUN最简单;如果追求性能,建议让LUN直接使用独立磁盘或阵列空间,避免文件系统层再叠加一层开销。
在配置Target时,强烈建议启用CHAP认证。CHAP是iSCSI的简单认证机制,相当于给Target设置一个用户名和密码。客户端连接时必须提供正确的CHAP凭据,否则直接拒绝。飞牛存储上一般可以设置单向CHAP或双向CHAP,家庭环境单向就够,生产环境建议双向。
3.2 Windows发起器连接iSCSI
Windows系统自带iSCSI发起器,不需要额外安装。在“运行”里输入iscsicpl.exe回车,会打开iSCSI发起器属性窗口。如果服务没有启动,会提示你启动Microsoft iSCSI Initiator Service,确认即可。
在“目标”选项卡里,点击“连接到目标”前,先把飞牛存储的IP地址填到“发现”页的“发现门户”中,端口默认3260。添加成功后,回到“目标”页就能看到飞牛存储的Target列表。选中目标,点击“连接”,如果配置了CHAP,还要点“高级”按钮,填写CHAP用户名和密码。
连接成功后,Windows并不会立刻分配盘符。你需要进入“磁盘管理”(右键“此电脑”选“管理”,或者运行compmgmt.msc),系统会弹出“初始化磁盘”向导。把新出现的磁盘初始化为GPT或MBR,创建新分区,格式化,分配盘符。这一步完成后,这块飞牛的远程存储才真正可以被Windows使用。
为了确保重启后iSCSI盘还能自动连上,连接Target的时候可以勾选“将此连接添加到收藏目标”,同时在发起器中把“会话”里的“持久登录”选项也打开。否则电脑重启后盘符可能会消失,需要手动重新连接,挺烦的。
3.3 Linux客户端挂载iSCSI
Linux下挂载iSCSI最常用的是open-iscsi软件包。Ubuntu/Debian:
bash复制sudo apt install open-iscsi
CentOS/RHEL:
bash复制sudo yum install iscsi-initiator-utils
安装完成后,先做Target发现:
bash复制sudo iscsiadm -m discovery -t sendtargets -p 192.168.1.100
这个命令会返回飞牛存储上的所有iSCSI Target的IQN。然后直接登录目标:
bash复制sudo iscsiadm -m node -T iqn.2025-01.com.example:fnos-test -p 192.168.1.100 -l
如果配置了CHAP认证,需要先编辑节点配置文件,通常在/etc/iscsi/node目录下,找到对应的Target名称文件夹,在node.session.auth.username和node.session.auth.password里填入CHAP账号密码,然后再登录。
登录成功后,查看系统日志或dmesg,会看到一个全新的/dev/sdX设备。这时候你还需要分区和格式化:
bash复制sudo fdisk -l /dev/sdb
sudo fdisk /dev/sdb
在fdisk里创建新分区后,格式化:
bash复制sudo mkfs.ext4 /dev/sdb1
sudo mkdir -p /mnt/iscsi
sudo mount /dev/sdb1 /mnt/iscsi
如果希望开机自动挂载,先让iSCSI会话开机自动登录:
bash复制sudo iscsiadm -m node -T iqn.2025-01.com.example:fnos-test -p 192.168.1.100 --op update -n node.startup -v automatic
然后在fstab里添加设备挂载行。由于iSCSI设备名可能在重启后变化,更稳的做法是用UUID或LABEL。执行blkid /dev/sdb1拿到UUID,然后写到fstab:
bash复制UUID=xxx /mnt/iscsi ext4 defaults,_netdev 0 0
3.4 iSCSI的单写者限制与数据安全
iSCSI有一个特别容易踩的坑:同一块LUN在同一时刻只能被一个客户端“独占”访问。因为客户端自己管文件系统,如果两台服务器同时挂载同一个iSCSI盘并各自维护文件系统元数据,轻则数据不一致,重则整个文件系统损坏。
这就好比两个人都认为这套房子自己是大房东,同时开始装修,最后墙面全砸烂。除非你跑的是集群文件系统,比如VMware的VMFS、Oracle的OCFS2、或者共享文件系统GFS2,否则千万不要把同一块iSCSI LUN同时分配给多台机器。
另外,iSCSI连接依赖网络,如果网络断掉,文件系统可能处于不稳定状态。生产环境中要给飞牛存储配UPS,避免突然断电导致LUN数据损坏。还要保证交换机稳定,尽量减少网络抖动。
4. 决策指南:不同场景到底该选谁
平时后台私信里问得最多的一句话是:“我到底该用SMB还是iSCSI?”这个问题没有标准答案,只有适用场景。下面我把常见场景拆开来说,你可以对号入座。
4.1 家庭和办公文件共享:闭眼选SMB
如果你只是想让客厅的电视播放飞牛存储上的电影,给家人开一个共享文件夹放照片,或者办公室几个人一起编辑Excel、文档,SMB完全够用,而且是最省心的选择。SMB天然支持多客户端同时访问,飞牛存储会自动处理文件锁和权限,你不用管底层文件系统是什么格式。
SMB在大文件传输上表现不差,一个10GB的电影文件从飞牛存储拷贝到Windows电脑,走千兆网络能跑到110MB/s左右,基本跑满网卡。而且SMB协议不需要客户端单独分区格式化,任何设备连上来就能看到文件,学习成本极低。
4.2 虚拟机和数据库:iSCSI才是正经选择
如果你打算把飞牛存储当作VMware ESXi的数据存储,或者跑数据库服务器的数据目录,iSCSI是更靠谱的方案。原因是虚拟机镜像本身就是一个大文件,里面还要跑各种系统调用,如果通过SMB挂载映射给虚拟机,文件锁和延迟问题会让你痛不欲生。iSCSI把整个盘块暴露给虚拟机系统,由虚拟化平台自己管理文件系统,性能和稳定性都好得多。
数据库场景也类似。Oracle、PostgreSQL对IOPS和延迟非常敏感,SMB的协议开销大,且命中了文件级锁的竞争问题。iSCSI盘对数据库来说就是一块本地SCSI盘,数据库可以直接在上面做异步IO和缓存,优势很明显。
4.3 性能测试思路:一张表看清结论
我平时测试飞牛存储性能时,习惯用fio分别跑SMB挂载目录和iSCSI裸设备,对比4K随机读、4K随机写、顺序读、顺序写。以下是一个典型的千兆网络机械硬盘测试结果示意:
| 测试项 | SMB挂载 | iSCSI挂载 |
|---|---|---|
| 顺序读 | 110 MB/s | 112 MB/s |
| 顺序写 | 106 MB/s | 109 MB/s |
| 4K随机读 IOPS | 300-500 | 800-1200 |
| 4K随机写 IOPS | 200-400 | 600-900 |
顺序读写性能差距不大,因为网络带宽和磁盘物理速度才是瓶颈。但在4K随机读写这个维度上,iSCSI明显占优,因为省掉了文件级协议层的处理开销。所以如果你的应用里有大量随机小块读写,比如数据库日志、虚拟机交换文件,iSCSI更合适。
实际测试时要注意,用dd测出的数据只能反映顺序读写,别拿它来验证iSCSI的优势。要测就上fio,设置--rw=randrw --bs=4k --numjobs=4 --depth=16才能看到真实的IOPS差距。
4.4 我的推荐组合:SMB为主,iSCSI按需补充
家里或者小公司的飞牛存储,建议日常就用SMB共享,覆盖所有普通文件访问。如果你有虚拟化需求,再在飞牛存储上单独划一块存储池,创建iSCSI Target给虚拟机使用,两者互不干扰,甚至可以同时开启。
我的做法是:飞牛存储上开一个SMB共享目录给办公室Windows/Mac/Linux电脑用,再创建一个iSCSI LUN给本地的Proxmox虚拟化服务器跑虚拟机。这样既有易用的文件目录,又有高性能的裸块设备,各得其所。
5. 实测常见问题与排查技巧
挂载方式不管选哪种,总会碰到一些奇奇怪怪的问题。下面把我踩过的坑和群里问得最多的问题整理成两份速查表,建议直接收藏。
5.1 SMB问题速查表
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| Windows 7提示“不能访问共享文件夹” | SMB协议版本不匹配或SMB1未启用 | 在Windows功能中启用SMB 1.0/CIFS支持,或升级到更高版本系统 |
| Linux mount报Permission denied | 用户名密码错误、共享权限不足 | 检查飞牛存储账号权限,确认密码,换错误码13排查 |
| Linux mount报Host is down | 网络不通、445端口被防火墙拦截 | ping飞牛存储IP,检查防火墙放行445端口和SMB服务 |
| 拷贝小文件速度极慢 | SMB协议对大量小文件元数据操作开销大 | 减少小文件数量,打包为压缩包,或者改用iSCSI |
| 重启后映射盘符不自动连接 | Windows凭据或持久化设置丢失 | 用net use添加持久化连接,或设置计划任务自动重连 |
| 电视/播放器无法发现共享目录 | 部分设备只支持SMB1 | 在非敏感场景临时开启SMB1,但注意安全风险 |
关于Win7,我还想说一句:如果不是特殊原因,尽量别再用Win7了。即使飞牛存储能兼容,但新版本协议、安全补丁、硬件驱动都跟不上,后续只会越来越难连。
5.2 iSCSI问题速查表
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| Windows发起器连接失败 | IP错误、Target名称错误、CHAP认证失败 | 检查发现门户IP、目标IQN是否一致,核对CHAP账号密码 |
| 连接成功但磁盘管理里没有新盘 | 磁盘未初始化或隐藏 | 打开磁盘管理,右键磁盘初始化,分区格式化 |
| Linux iscsiadm发现不到Target | 飞牛存储3260端口未放行 | 检查防火墙、网络,确认Target状态为Enable |
| 重启后iSCSI盘消失 | 节点startup不是automatic | 用iscsiadm --op update -n node.startup -v automatic设置 |
| 多台机器挂同一块LUN后数据异常 | 违反iSCSI单一写者原则 | 改配置为只会有一个客户端访问,或使用集群文件系统 |
| iSCSI性能比预期差很多 | 网络不稳定、存储磁盘本身慢、多路径未配置 | 检查网络链路质量,确认磁盘阵列状态,考虑配置MPIO |
5.3 独家经验:我的选型心法
最后讲三个没人画在文档里的经验。
第一,不要因为“iSCSI性能好”就无脑全上iSCSI。性能优势只在随机读写场景下明显,如果你的应用只是顺序读写,SMB和iSCSI体验差异很小。而SMB在使用便利性、多客户端共享、跨设备兼容性上全面占优,盲目上iSCSI等于给自己增加管理负担。
第二,CHAP认证一定要开。很多人在内网环境图省事,把iSCSI Target完全裸奔。但iSCSI的Target一旦被发现,任何能连通3260端口的机器都可能尝试连接登录。我见过的真实事故里,有启动盘被误初始化、有数据被误清空,都是因为没有认证加权限管控。飞牛存储上启用CHAP只是多填几行字,收益很大。
第三,大规模部署前先用真实数据跑一轮性能测试。别听网上说SMB快还是iSCSI快,你的网络环境、硬盘数量、飞牛存储的硬件配置都会影响结果。我在飞牛存储上同时开启SMB和iSCSI,用fio分别测一轮,再拿一个实际项目数据做拷贝测试,这样定下来的方案基本不会再翻车。
写在最后
最后再分享一个小技巧:如果你不确定哪种方式更适合自己,先在飞牛存储上把两种都配好,用一个独立磁盘分别给SMB共享和iSCSI LUN,跑几分钟fio和真实文件拷贝,对比延迟和IOPS,而不是只看带宽。很多人在纸面上争论SMB快还是iSCSI快,实际上现场变量太多,亲自测一遍最靠谱。踩过几次坑之后,我现在选型的逻辑很朴素:能共享就SMB,必须独占才iSCSI。希望这篇内容能帮你少走点弯路。
