你有没有遇到过这种场合家里一台几百块的NAS下载速度满速可同事抱怨公司核心数据库存储“慢得像蜗牛”同一张表上有人把群晖吹成家庭数据中心有人把SAN贬成过时技术。聊到NAS、SAN、iSCSI大多数人的第一反应是——这三个词我大概知道但真要给小白讲清楚立马卡壳。问题出在哪因为这三样根本不在同一个维度NAS是一种存储形态SAN是一种网络架构iSCSI是一种传输协议。它们纠缠在一起构成了现实中绝大部分存储方案。这篇博文我不讲厂商PPT直接用大白话把这堆东西拆开它们是什么、解决什么问题、适合谁用、怎么选顺便把最近搜索热度很高的群晖、飞牛fnOS、玩客云刷机、MinIO对象存储、存储压力测试这些相关话题一起串起来。不管你是刚入门的小白还是被折腾过的运维都能在这里找到能直接用的东西。1. 先厘清三个概念NAS、SAN、iSCSI到底谁是谁1.1 三者的本质区别文件、块还是一套协议很多人把NAS、SAN、iSCSI当成三个平级选项这是最大的误解。我习惯用一句话区分NAS给的是“文件”SAN给的是“硬盘”iSCSI是“把硬盘搬过来用的那辆卡车”。先看NASNetwork Attached Storage网络附加存储。它本质上是一台专门做文件共享的小服务器自带操作系统和管理界面通过网络对外提供文件服务。你用SMB协议访问Windows共享文件夹用NFS挂载Linux共享目录访问的都是NAS上的文件。它的最小管理单位是“文件”和“目录”比如你存了一张照片、一个Word文档你可以单独对这个文件设置权限、删除它、移动它。对家用用户来说这就是一个放在家里的共享硬盘。再看SANStorage Area Network存储区域网络。它是一整套独立的存储网络核心是磁盘阵列通过专用网络光纤通道或者万兆以太网把“裸盘”直接给服务器用。什么叫裸盘就是服务器网卡上看到一块没有格式化、没有任何文件系统的磁盘需要服务器自己把它分区、格式化、建文件系统才能用。SAN的最小管理单位是“块”也就是一个逻辑单元LUN或者一块物理磁盘。它更像一个“硬盘仓库”所有服务器都能从这个仓库领一块硬盘到自己机器上用。至于iSCSIInternet Small Computer System Interface互联网小型计算机系统接口它是基于TCP/IP传输SCSI协议的方案。SCSI是一套老牌存储指令集传统上跑在专用线缆上iSCSI把它封装进IP包里顺着普通以太网跑。iSCSI不是存储形态而是把SAN的“块设备”能力搬到IP网络上的桥梁。1.2 谁和谁是一对儿NAS、SAN和iSCSI的真实关系搞明白维度之后它们的关系就清楚了NAS和SAN是两种存储架构分属文件级和块级两条路线。FC-SAN光纤通道SAN是SAN的经典实现性能强、成本高需要光纤交换机、HBA卡。IP-SAN最常见的就是iSCSI用普通以太网卡就能连成本低很多。一台NAS设备内部也不神秘很多时候就是一个精简的Linux系统加几块硬盘加一个文件共享服务。SAN设备和NAS设备都能挂在同一张网里只是服务类型不同。我做一个很直白的类比。把存储比作快递仓库NAS是小区里的快递驿站你把包裹文件寄到驿站去驿站取件驿站帮你按包裹管理SAN是城市级货运中心货运中心不关心你包裹里装什么它只管把整集装箱块设备从一个地方拉到另一个地方至于集装箱里怎么摆放那是你的事iSCSI则是把集装箱卡到普通公路上的货车而FC-SAN用的是高铁专用线。这个类比能解释很多疑问为什么SAN里存了数据库文件服务器重启后不能像共享文件夹那样直接看到因为NAS帮你把文件系统那一层做好了SAN把这一层完全留给你。为什么从业者说“数据库优先考虑SAN文件共享优先考虑NAS”因为数据库需要低延迟、高吞吐的块级访问而普通文件共享看重丰富的文件管理功能。维度NASSANiSCSI本质存储形态/设备存储网络架构传输协议对外提供文件系统裸块设备LUN裸块设备常用协议SMB、NFS、AFPFC、FCoE、iSCSISCSI over TCP/IP管理单位文件/目录逻辑单元/磁盘逻辑单元/磁盘典型设备群晖、威联通、TrueNAS戴尔EMC、HPE、IBM存储阵列任何支持iSCSI target的存储适合场景文件共享、备份、多媒体数据库、虚拟化、高并发业务中小企业低成本块存储2. NAS家用与中小团队最实用的存储形态2.1 NAS解决什么问题从共享文件到家庭数据中心NAS解决的第一个痛点是数据分散。台式机一份文件、笔记本一份文件、手机再一份想同步又不想交云盘月费NAS能帮你把文件集中到一块。其次家人同事之间需要共享文件NAS架好后手机备份、电脑访问、电视播放全都走一个入口。更深一层NAS能跑的远不止文件服务——Docker、虚拟机、相册识别、离线下载这些都已经进入NAS的常规功能范围也是“家用NAS能当小型服务器用吗”这个问题的最佳回答完全可以。我拿自己的使用场景举例。家里有一台四盘位NAS装的是飞牛fnOS系统平时干几件事手机相册自动备份、电影电视通过Jellyfin做媒体库、Docker里跑了一套MinIO做个人对象存储、还有两个小数据库用于开发测试。这些都是搭建NAS后很快就能落地的用途。对行政、设计这类需要频繁交换大文件的小团队一台NAS配好SMB共享和账号权限比买云盘会员更划算也更可控。那么问题来了家用NAS到底怎么选从品牌到自组路线非常多但核心考量无非几个盘位数、CPU性能、系统易用性、数据安全。群晖和威联通是传统老牌软件生态成熟但硬件价格偏高飞牛fnOS是国产新秀界面现代化、入门友好适合不想折腾的玩家TrueNAS和unRAID偏专业适合有Linux基础的人。如果你手头正好有一台老笔记本或废旧主机装个开源NAS系统就能用成本几乎为零。2.2 从玩具到主力玩客云刷机、飞牛fnOS与群晖的实战选择搜索热词里出现“玩客云刷机做nas”这条路线我深有体会。玩客云原本是迅雷推的下载盒子双核ARM处理器、1GB内存、8GB闪存卖点是挖矿和离线下载。后来官方服务收缩后这设备大量流入二手市场几块钱一台被玩家拿去刷Armbian系统再手动安装Samba、NFS、Docker等组件组合成一台低功耗NAS。它的优点是便宜、省电、体积小缺点是性能有限跑轻量文件共享可以折腾Jellyfin硬解或虚拟机会吃力。如果你是刚入门的新手我更推荐的路径是主流NAS系统直接装群晖的DSM、威联通的QTS、飞牛的fnOS都是装完就能用的系统。就我实际体验飞牛在部署后需要做的配置很少中文界面、应用中心、手机App齐全对新手非常友好。群晖的优势是生态丰富很多玩法教程都建立在群晖上。TrueNAS则适合想把底层逻辑彻底搞懂的人它的ZFS文件系统、存储池概念都相当硬核。无论哪个系统第一步都是建存储池而不是直接建共享文件夹。存储池的本质是把多块硬盘组织成一个统一空间并决定你的数据冗余策略。常见选择有RAID 1两块盘互为镜像坏一块不丢数据、RAID 5至少三块盘允许坏一块、RAID 10镜像条带性能好但需要四块以上硬盘。家用我建议两块盘做RAID 1起步重要数据放镜像里真遇上坏盘不至于崩溃。2.3 SSH命令创建存储池把底层操作补全在图形界面里点几下就能建存储池但遇到系统异常或玩精准控制时还是得靠命令行。这里补一段基于Debian系系统如TrueNAS底层、普通Linux服务器、飞牛的底层SSH的常见操作思路# 查看当前磁盘及分区 lsblk # 使用mdadm创建软RAID 1假设数据盘是 /dev/sdb /dev/sdc mdadm --create /dev/md0 --level1 --raid-devices2 /dev/sdb /dev/sdc # 创建物理卷并加入卷组 pvcreate /dev/md0 vgcreate vg_data /dev/md0 # 创建逻辑卷例如分配2TB空间 lvcreate -L 2T -n lv_nas vg_data # 格式化为ext4并挂载 mkfs.ext4 /dev/vg_data/lv_nas mkdir -p /mnt/nas_data mount /dev/vg_data/lv_nas /mnt/nas_data这套流程的关键点是RAID建好不代表能直接用得上LVM或分区工具建文件系统。很多人SSH进NAS后看到盘符却不知道下一步做什么就是因为跳过文件系统这一层。另外重启后挂载会失效需要写进 /etc/fstab 或用系统自带的挂载工具托管不然重启一次盘就“丢”一次。飞牛里“存储空间未挂载”的报错很大概率就是这一层没处理好稍后我会在问题排查部分细讲。3. SAN企业级存储绕不开的“高速公路”3.1 SAN为什么存在数据库和虚拟化对延迟的苛刻要求NAS这么好用企业为什么还要上SAN答案在延迟和并发。想象一个场景几十台服务器同时访问同一个Oracle数据库数据文件。如果用NAS按文件方式共享每一次读写都要经过NAS的文件系统层、权限检查、锁管理NAS系统很容易在并发一上来就被打爆。而SAN直接把裸盘呈现给服务器数据库自己对文件系统负责存储网络只负责搬运块数据路径短、延迟低、可预期性强。虚拟机场景更典型。ESXi宿主机运行几十台虚拟机每台虚拟机的虚拟磁盘文件都放在存储上。VMware的VMFS文件系统本身就期望运行在块存储上它自己管理锁和集群文件系统不需要上层文件服务器介入。用SAN做ESXi共享存储虚拟机的磁盘性能、热迁移、高可用功能都依赖块级访问。换句话说SAN是企业级虚拟化和关键数据库的地基。当然“SAN好”的前提是预算充足。一套FC-SAN除了磁盘阵列本身还要配光纤交换机、HBA卡、光纤线成体系的学习成本和维护成本都不低。很多中小企业在业务还没到那个量级时贸然上FC-SAN结果发现资源和人力都撑不住这也是近年iSCSI方案越来越受小企业喜爱的原因。3.2 FC-SAN与IP-SAN的对比性能、成本、适用边界SAN家族里两大流派FC-SAN和IP-SAN适用边界非常清晰。对比项FC-SANIP-SANiSCSI传输网络专用光纤通道以太网千兆/万兆典型带宽16Gbps/32Gbps起1/10/25/40Gbps网络设备FC交换机、HBA卡普通交换机、以太网卡协议栈FCiSCSI over TCP/IP部署成本高低运维门槛较高相对较低延迟极低中低取决于网络质量适用业务高端数据库、大虚拟化集群中小虚拟化、数据库备库、备份FC-SAN的优点是稳定、延迟低、损耗小缺点一目了然贵、封闭、依赖专人维护。IP-SAN的优点是复用现有网络和设备技术下沉个人电脑也能通过软件发起iSCSI连接。这里我补充一句不要迷信“万兆你就一定快”。iSCSI性能受网络质量影响很大万兆交换机、网卡、网线缺一不可一旦网卡固件、TCP卸载引擎、交换缓存配置不合理iSCSI延迟照样高得吓人。很多人以为SAN是“大企业专属”其实一块支持iSCSI的双盘位小阵列搭好之后给两台开发服务器提供共享存储本质也是一种极简SAN。所以更准确的说法是SAN是一种能力不是一套固定价格的硬件。理解到这一层你就能明白为什么群晖、威联通这些NAS品牌的产品里也会有iSCSI target功能——它们用成熟硬件提供了入门级SAN体验。4. iSCSI让SAN跑在IP网络上的关键协议4.1 iSCSI核心概念Initiator、Target与LUN要说清iSCSI四个词绕不开Initiator发起端、Target目标端、LUN逻辑单元号、CHAP认证。Initiator是主动发起连接的机器常见的就是Windows和Linux服务器的软件客户端Target是提供存储资源的一端一般是存储设备或NAS上的iSCSI target服务。连接建立后Initiator侧会看到一个或多个裸盘这些裸盘在Target侧对应的就是LUN。LUN的理解很关键。Target是一个存储服务实体它可以把一个大的空间切成多个逻辑单元每个LUN编号对应一个逻辑设备。你是分配给Web服务器的空间它是分配给数据库的空间两个逻辑上互不干扰。对服务器来说LUN就是一整块磁盘分区、格式化、挂载都在服务器本机完成。CHAP认证则是连接的安全防线。iSCSI默认跑在以太网里不做认证的话任何人都可能连上你的Target看到LUN。CHAP的工作方式类似密码握手Initiator和Target协商一个密码连接时互相验证。配置时记住一条金科玉律生产环境必须开启CHAP且要定期更换密钥存储安全往往被忽视但泄露一次就是大事故。4.2 Windows与Linux下连接iSCSI的实际操作Windows自带iSCSI发起程序这是很多人第一次接触iSCSI的入口。操作路径如下打开“控制面板 - 管理工具 - iSCSI发起程序”或在Windows搜索框直接搜iSCSI。首次启动会提示你启动iSCSI服务选“是”。在“目标”页签填入存储端IP点击“快速连接”。连接成功后打开“服务器管理器 - 文件和存储服务 - 磁盘”此时会看到一块新磁盘右键初始化并创建卷即可。大多数新手卡在最后一步连接成功但“我的电脑”里看不到盘。原因很简单磁盘没有被初始化和分区格式化。完成分区后还要记住一个细节iSCSI磁盘是“会丢的”服务器重启顺序、网络断线、Target不可达都会导致盘符暂时消失。生产环境建议配置自动挂载脚本或多路径软件别指望系统默认处理。Linux下使用open-iscsi更直白# 安装客户端 apt install open-iscsi # 发现Target iscsiadm -m discovery -t sendtargets -p 192.168.1.100 # 登录Target iscsiadm -m node -T iqn.2024-01.local.nas:test -p 192.168.1.100 --login # 查看连接后的磁盘 lsblkiqn是iSCSI的命名规范格式类似 iqn.年份-月份.反向域名:设备名核心是保证全局唯一。执行登录后磁盘会出现在 /dev/sdX 里然后正常分区、格式化、挂载就行。4.3 性能调优与常见坑MPIO、巨型帧与网络隔离iSCSI部署简单想跑好并不简单。我踩过的第一个坑是单条链路瓶颈。千兆网单链路iSCSI理论带宽也就120MB/s数据库并发一上来就吃力。解决办法是启用MPIO多路径I/O给服务器配两块万兆网卡分别接到两台交换机或至少建立两条千兆链路并配置负载均衡。Windows在“MPIO”功能里添加iSCSI磁盘后会自动多路径Linux则通常在连接时对同一Target开两个会话再用multipath-tools聚合。第二个坑是巨型帧Jumbo Frame。iSCSI走TCP/IP默认MTU是1500字节以太网包很小导致数据封包和重组开销大。在存储网络和服务器网卡上统一开启MTU 9000后大块数据传输的CPU占用和延迟有明显下降。注意巨型帧必须整条链路都支持交换机、网卡、存储端缺一不可有一台设备不支持就会出现严重的转发错误。第三个坑是网络隔离。iSCSI存储流量和数据网络混跑可能出现两种问题一是业务大流量抢占存储带宽拖慢数据库二是存储流量遭受网络波动干扰引发IO中断。我所在的生产环境用独立的万兆交换机和VLAN单独划出一张存储网业务网与存储网物理/逻辑双隔离数据库IO延时稳定在个位数毫秒以内。具体怎么选看预算和拓扑复杂度但隔离这件事必须做。5. 从块到对象存储世界的今天5.1 对象存储MinIO、Ceph和S3的崛起聊完NAS和SAN再说当前热度很高的对象存储。对象存储的核心是把数据封装成“对象”每个对象有唯一的key键通过HTTP API访问最经典的接口是Amazon S3 API。对比一下文件级存储关心目录树和权限块级存储关心裸设备对象级存储则关心“一个key对应一段数据”天然适合海量非结构化数据比如图片、视频、日志、备份文件。MinIO是典型的轻量级对象存储部署简单二进制一下来就能跑兼容S3 API很多个人项目拿它练手。我曾在NAS的Docker里跑过MinIO给开发团队当统一对象存储后端配置极其简单docker run -d --name minio \ -p 9000:9000 -p 9001:9001 \ -e MINIO_ROOT_USERadmin \ -e MINIO_ROOT_PASSWORDyourpass \ -v /data/minio:/data \ minio/minio server /data --console-address :9001Ceph则是另一条路线它是分布式存储系统核心数据引擎RADOS之上支持三种接口包括对象接口RGW兼容S3、块接口RBD、文件接口CephFS。Ceph的定位是为了大规模横向扩展可以把几十台普通服务器的硬盘聚合成一个统一存储池。搜索词里的“基于raft的kv存储”“ceph对象存储”“分布式存储”都指向这个方向。但要提醒新手Ceph部署容易运维难生产环境强烈建议找有经验的人合作否则故障排查会非常耗时。5.2 小型服务器、Docker与NAS你的NAS还能干这些回到前面提到的“家用NAS可以当成小型服务器用吗”我的答案是不仅能而且已经非常成熟。以主流x86 NAS为例CPU通常是一颗低功耗Intel或AMD处理器内存从8GB到32GB搭配Docker和虚拟机管理平台完全可以稳定运行小型Web服务、数据库、Git仓库、自动化脚本等。我在飞牛上部署过一套完整开发环境Nginx反向代理、两个PostgreSQL实例、一套MinIO、一个离线下载服务还有Jellyfin做媒体库。空闲率长期在60%以下功耗也不过几十瓦。对个人开发者和三五个人的小团队来说这种方案的电费和硬件成本都远低于云服务器包年费。当然别指望它扛生产级高并发这就是一台“玩具服务器”但它在你手里能做很多以前只有租服务器才能做的事。说到“电视盒子NAS软件”其实思路也类似很多ARM盒子刷Linux再装Samba/DLNA后也能充当最基础的网络共享和流媒体服务器。性能和稳定性肯定不如正规NAS但用来做客厅轻量级共享盘成本可以压到很低。6. 高频问题的排查与避坑6.1 飞牛NAS存储空间未挂载最可能的三个原因飞牛fnOS界面友好但“存储空间未挂载”还是高频报错。我在真机上复现并排查过归纳下来三个原因最常见。第一磁盘拔插后卷没自动挂载。飞牛的存储空间依赖物理磁盘的UUID和LVM卷硬盘被拔掉再插回去后如果分区表或UUID变化系统不敢自动恢复。处理方式是开机进存储管理界面把未挂载的卷重新挂载如果界面操作失败SSH进系统后用 lsblk、blkid 检查磁盘是否正常识别再用mount -a试试系统配置里的挂载项。第二文件系统损坏。不正常关机、供电波动都会造成ext4/btrfs文件系统状态被标记为脏。进入系统后用fsck.ext4 /dev/xxx或对应文件系统工具修复注意必须先卸载该分区再执行否则可能造成二次损坏。第三网络存储服务未启动。很多用户把NAS当数据盘用时发现挂载点还在却连不上Samba或NFS并不等于存储空间挂载失败。先检查服务状态systemctl status smbd或ps -ef | grep smbd。遇到未挂载报错我的第一反应永远是先备份日志再动分区表。别急着重建RAID重建的代价通常远大于修复。6.2 macOS连接iSCSI为什么明明很香却很折腾macOS没有原生图形化iSCSI发起程序想连iSCSI存储常见做法是装第三方工具例如普通用户接触较多的方式是使用命令行工具或社区维护的initiator。安装好之后和Win/Linux一样填入Target IP、iqn和CHAP密码就能连接但有两个问题需要提前有心理准备。一是macOS版本升级有时会导致内核扩展失效iSCSI驱动在系统更新后很可能被禁用重新安装驱动才能恢复连接。二是macOS的磁盘格式兼容性iSCSI挂出来的裸盘你可以在APFS、HFS、exFAT之间选一个初始化方式。如果希望Windows和macOS双平台都能读写建议用exFAT虽然它在某些边界场景下不如APFS稳但跨平台能力最好。连接时务必在“系统设置 - 隐私与安全性”里开启相应内核扩展权限否则驱动装了也用不了。总体而言macOS连接iSCSI属于“能玩但不推荐主力”除非你确实需要远程挂载裸盘做开发测试。6.3 存储压力测试别让“看起来很快”骗了你存储性能不能靠感觉得跑压力测试。最常见的是fio工具Linux下安装fio后可以精准控制读写类型、块大小、队列深度、并发数。我常用来做基准测试的命令# 顺序读测试 fio --nameseqread --rwread --bs1M --size2G --numjobs1 --direct1 # 随机写测试 fio --namerandwrite --rwrandwrite --bs4K --size2G --iodepth32 --direct1块大小的选择很关键。测数据库单条记录写入使用4K随机写更贴近实际测视频存取使用1M顺序读写更合理。测试结果里的IOPS、带宽、延迟三个指标要一起看别只盯着最高带宽。一个小技巧跑测试前先确认direct1绕过系统缓存否则你测到的是操作系统的page cache而不是真实的磁盘能力。手机App里的“存储压力测试”本质也是执行类似的小型读写测试只是封装成了图形界面。我自己很少用这类App判断存储健康度更习惯用真实业务负载做长时间观察因为短时间高负载测试并不能直接暴露掉盘类故障。6.4 关于大端小端和EEPROM被忽略的存储底层细节搜索里出现“大端存储和小端存储”和“eeprom存储器存储原理”这看起来像是初学者才问的问题实际上恰恰解释了存储的本质。大端Big-Endian指数据的最高字节存放在最低地址小端Little-Endian指最低字节放在最低地址。x86处理器是小端网络协议字节序是大端所以跨平台传输结构化数据时必须做转换否则数值会被读反。存储领域同样要面对这个问题比如二进制文件格式、RAID元数据、设备信息都会涉及字节序。EEPROM则是一种断电不丢数据的存储器原理上利用浮栅晶体管来保存电荷改写时通过施加高电压让电荷进入或离开浮栅从而改变晶体管的导通阈值对应存储1或0。生产环境里主板BIOS、服务器BMC、硬盘SMART信息都存在类似存储介质里。很多人觉得这些知识离应用很远但真到了排查固件参数、分析元数据的时候你就能体会到基础原理的价值。6.5 不同场景下的选型经验总结结合我这些年碰过的项目最后整理一下选型思路。家庭用户、个人开发者、三五人小团队优先考虑NAS尤其推荐群晖或飞牛这类操作友好的系统重要数据开机RAID就完了别去折腾过于复杂的协议栈。中小企业要给数据库和虚拟化提供存储预算有限、运维人力不足时iSCSI加一台支持多路径的IP-SAN阵列是性价比非常高的选择。高端场景核心交易库、大规模虚拟化集群FC-SAN依然是最稳的地基。而海量非结构化数据、备份、归档直接走对象存储MinIO、Ceph更省心。我个人的体会是存储不是越贵越好也不是协议越高级越好而是越贴合你的实际访问模式越好。文件共享选NAS裸盘访问选SAN海量对象选对象存储——这个基本判断框架能帮你绕开大多数采购决策的坑。真正到了落地环节把RAID、挂载、备份策略、网络隔离这些基础动作做扎实比追求什么黑科技都管用。踩过几次坑之后你会发现存储的稳定性来自对每一个底层细节的敬畏。
阅读完成 · 觉得有帮助?