当前位置: 首页 > news >正文

【Day 80】Linux-NAS 和 SAN 存储

 一、存储设备

        存储设备的核心作用是为业务服务器提供更充足的存储空间、更高的 IO 性能以及共享存储能力,以满足不同业务场景的需求

        // 解释:存储设备能把多块硬盘的容量 “拼起来”,还能随时加硬盘扩容,满足业务不断产生的海量数据存储需求;存储设备通过用更快的硬件(如高速 SSD)、多设备并行处理数据,让数据读写速度大幅提升;存储设备能通过网络让多台服务器共享同一批数据(比如办公文档共享、多台服务器共用一个数据库),还能在服务器故障时快速切换数据,保证业务不中断。

1、根据工作方式,存储设备主要分为三类

  • DAS 直接附加存储
  • NAS 网络附加存储
  • SAN 存储区域网络

(1)DAS 直接附加存储

        DAS 通过数据总线直接将存储设备接入到服务器主板,是一种简单直接的存储连接方式。

        磁盘类型:机械硬盘、SSD

        磁盘接口:SATA,SAS、NVME

        特点:DAS 属于服务器专属存储,无法直接被其他服务器共享,这导致其扩展性较差,受限于服务器接口的数量,因此更适用于个人 PC、单台服务器等小型场景。

(2)NAS 存储

        NAS 基于文件系统级别实现共享,支持 nfs 和 cifs 协议来共享存储空间。

  • nfs协议:适用于 Linux、Unix系统
  • cifs协议:适用于 Windows

        实现方式:

        ① 使用专用存储设备,核心是 “硬件 + 预装系统” 一体化,无需用户从零配置,典型代表是群晖(Synology)、威联通(QNAP)的家用 NAS,或华为、戴尔的企业级存储阵列。

        ② 使用普通服务器上安装开源 Linux 发行版,再通过配置软件实现 NAS 功能。

        具体流程

        本质是存储端先完成文件系统构建,再通过标准化协议将 “已格式化的存储空间” 开放给网络中的客户端访问。

        ① 存储端:先格式化创建文件系统。NAS 设备内置独立的操作系统,首次使用时,需先对其内置 / 外接的硬盘进行格式化,创建通用的文件系统。 —— 文件系统能定义文件的物理存储结构,让 NAS 能像电脑硬盘一样 “管理文件”,而非仅提供裸磁盘空间。

        ② 存储端:将文件系统挂载到 NAS 本地,再配置共享规则。格式化后的文件系统会被挂载到 NAS 的本地目录,随后 NAS 通过系统设置,将该挂载目录配置为 “共享目录”,并指定共享权限.

        ③ 客户端:通过 NFS/CIFS 协议,跨网络访问共享目录。不同系统的客户端(Linux/Unix、Windows)通过对应的协议 “连接 NAS 的共享目录”。

        特点:作为一种专用存储服务器,NAS 设备自身配备了 CPU、内存和操作系统,通过以太网接入网络,用户可以通过网络路径(如 \IP\ 共享名或 /mnt/nfs)访问存储内容,非常适合企业文档共享、媒体存储等文件共享场景。

补充:文件系统类型

① 单机文件系统(本地存储专用,NAS 存储端底层依赖)

        单机文件系统仅用于单台设备本地存储,负责管理本地硬盘的空间分配、文件结构与读写逻辑,是 NAS 设备 “先格式化、再共享” 的基础(NAS 需先将本地硬盘格式化为单机文件系统,才能构建文件结构)。

  • Linux 系统专用

    • XFS:支持超大容量(单文件系统最大 8EB)、高 IO 性能,适合存储高清视频、日志等大文件,中小型 NAS 常用;

    • Ext4:稳定性强、兼容性好,支持文件权限控制(如读 / 写 / 执行权限),是 Linux 及 NAS 系统(如群晖、威联通)的默认格式之一。

  • Windows 系统专用 / 兼容

    • NTFS(注:原文 “nyfs” 为笔误,正确为 NTFS):支持文件权限、压缩、加密,适配 Windows 环境,若 NAS 优先对接 Windows 客户端(如办公文档共享),可格式化为 NTFS;

    • FAT32:兼容性极强(支持 Windows、Linux、手机等多设备),但单文件最大仅 4GB、总容量最大 2TB,仅适合小文件存储(如 U 盘、移动硬盘)。

② 网络文件系统(跨设备共享专用,NAS 核心共享协议)

        网络文件系统是多设备通过网络共享文件的 “通信规则”,NAS 正是通过这类协议,将本地已格式化的存储空间开放给其他设备访问,实现 “文件级共享”。

  • NFS(Network File System,网络文件系统):主要适配 Linux/Unix 系统,客户端(如 Linux 服务器)可通过 NFS 将 NAS 的共享目录 “挂载到本地路径”,访问时如同操作本地文件夹,适合 Linux 环境下的文件协同(如服务器日志共享)。

  • CIFS/SMB(Common Internet File System/Server Message Block,通用互联网文件系统):主要适配 Windows 系统,客户端(如 Windows 电脑)可通过 “\NAS IP\ 共享名”(如 \\192.168.1.100\office-doc)直接访问共享目录,也兼容 Linux、macOS,是跨系统文件共享的常用协议(如办公场景多人共享文档)。

③ 集群文件系统(多存储节点协同,大规模场景专用)

        集群文件系统是多台存储设备(节点)组成 “存储集群” 后,共同管理数据的文件系统,核心是解决 “大规模存储下的容量扩展、性能叠加、数据冗余” 问题,常见于企业级大规模存储场景。

  • 特点:多存储节点统一对外提供存储空间,客户端访问时 “看不到单个节点”,仅感知到一个 “超大容量存储池”;支持动态扩展(新增节点即可扩容)、数据分布式存储(避免单点故障);

  • 常见类型:GlusterFS(开源,适合中小规模集群)、CephFS(开源,兼容对象存储、块存储,企业级常用)、GPFS(IBM 商用,高性能集群场景)。

④ 其他常见文件系统

除上述三类外,还有适配特定需求的文件系统,部分场景下也可能与 NAS 或存储设备关联:

  • 日志型文件系统:如 Btrfs(可用于 NAS),支持 “快照备份”“数据校验”,能快速恢复误删文件、检测数据损坏,适合对数据安全性要求高的场景(如企业文档备份);

  • 对象存储文件系统:如 S3FS(兼容 Amazon S3 协议),将对象存储(如阿里云 OSS、腾讯云 COS)模拟为本地文件系统,适合需要对接云存储的场景(如 NAS 与云存储协同备份);

  • 移动设备文件系统:如 exFAT,解决 FAT32 单文件 4GB 限制(支持单文件最大 16EB),兼容 Windows、macOS、手机,适合移动硬盘、相机存储卡(NAS 若需读取外接移动设备,需支持该格式)。

补充:文件的存储结构

① 物理存储结构

        // 文件数据在存储设备(如硬盘的磁道)上的真实存储布局

  • 连续存储:文件的所有数据块,连续存放在存储设备的一块连续完整的物理空间,文件系统通过记录‘起始地址’和‘总长度’来定位整个文件

  • 离散存储:文件的数据拆成多个独立的数据块,分散存在存储设备的空闲区域。

    • 链接分配:文件数据块分散存储,每个数据块通过 “指针” 指向后续块(形成链式结构),文件系统只需记录 “第一个块的地址”。

    • 索引分配:文件数据块分散存储,但文件系统为每个文件创建 “索引块”,集中记录所有数据块的物理地址

② 逻辑存储结构

        // 文件数据在 “用户或应用程序眼中” 的组织形式。本质是数据的逻辑排列,和磁盘上的物理位置无关。

  • 流式结构:文件数据就是 “一长串字节”,没有固定格式。程序读写时,只能从开头到结尾按顺序处理;程序也可通过 “偏移量” 随机访问,只是没有天然数据单元。

  • 记录式结构:通过 “固定格式 + 元信息”,程序能通过计算偏移量或索引直接访问目标记录

    • 按偏移量计算:因记录格式固定(长度统一),可直接通过 “起始地址 +(N-1)× 单条记录长度” 定位第 N 条记录,无需顺序遍历;

    • 按关键字索引:若文件包含 “关键字段”(如数据库表的主键),可通过建立索引表(记录 “关键字 - 记录位置” 映射),快速找到目标记录(类似字典通过部首查字)。

(3)SAN 存储

        SAN 基于级别的共享, “块” 是存储的最小数据单元。

        SAN 的核心逻辑是存储端只负责 “提供裸块空间”,不提前构建文件系统—— 所有与 “文件管理” 相关的操作(分区、格式化、创建文件系统)都交给客户端完成。

        工作流程:存储端共享裸块设备,客户端连接存储后会映射出 sdx 形式的虚拟硬盘,客户端对该虚拟硬盘进行分区、格式化后即可挂载使用。以最常见的 IP SAN(iSCSI 协议)为例:

(1)存储端:配置并共享 “裸块设备”

        ① 创建块存储资源。存储端先将本地物理硬盘划分为 “逻辑块设备”,这部分空间是 “未格式化、无文件系统” 的裸块;

        ② 配置共享规则。通过 SAN 管理工具(如 Openfiler WebUI),为裸块设备绑定唯一标识(IQN,如 iqn.2024-10.com.example:san-disk1),并指定访问协议(IP SAN 用 iSCSI、FC SAN 用 FC 协议);

        ③ 开放网络访问。设置允许访问的客户端范围(如限定客户端 IP 为 192.168.1.0/24),并配置认证(如 CHAP 用户名密码),防止未授权设备接入。

(2)客户端:发现并映射 “虚拟硬盘”

        客户端需通过对应协议,将存储端的裸块设备 “映射为本地可见的虚拟硬盘”:

        ① 安装协议客户端工具。IP SAN 需安装 iSCSI 客户端(如 Linux 装 iscsi-initiator-utils、Windows 启用 “iSCSI 发起程序”);

        ② 发现存储端共享块。客户端通过协议发送 “发现请求”(如 Linux 执行 iscsiadm -m discovery -t st -p 192.168.1.100:3260),找到存储端的 IQN 对应的裸块设备;

        ③ 建立连接并映射。客户端通过认证后(输入 CHAP 用户名密码),与存储端建立稳定连接,此时裸块设备会被映射为客户端的 “虚拟硬盘”(如 Linux 下的 /dev/sdb、Windows 磁盘管理中的 “未分配磁盘”)。

(3)客户端:分区、格式化并挂载使用

        映射后的虚拟硬盘与客户端本地硬盘完全等效,需按 “本地硬盘” 配置后才能存储数据:

        ① 分区。客户端对虚拟硬盘进行分区,划分出 “可使用的逻辑分区”(如 /dev/sdb1);

        ② 格式化。为分区创建文件系统;

        ③ 挂载使用。将格式化后的分区挂载到客户端的目录,之后客户端即可在该目录 / 盘符下读写文件,所有数据实际存储在 SAN 存储端的裸块设备中。

        类型:IP SAN、FC SAN

        特点

  • IP SAN 基于 TCP/IP 网络,使用 iSCSI 协议,成本低、部署灵活;
  • FC SAN 基于光纤通道网络,使用光纤通道协议(FC Protocol)需专用光纤交换机和 HBA 卡,速度快(通常 16Gbps 以上)、延迟低,适合高性能场景(如数据库、虚拟化);
维度IP SAN(iSCSI)FC SAN(光纤通道)
底层网络通用以太网(复用现有)专用光纤通道网络(需新建)
核心硬件普通网卡、以太网交换机FC HBA 卡、FC 交换机、光纤线缆
成本低(复用现有设备,硬件便宜)高(专用硬件贵,部署成本高)
  • 块级共享意味着客户端可直接对存储进行分区、格式化,相当于本地硬盘的扩展。

SAN和NAS的区别:

  • SAN 的路径:客户端→ 协议(iSCSI/FC)→ SAN 存储的裸块设备 → 后端硬盘。客户端格式化虚拟硬盘后,读写数据时只需通过 iSCSI/FC 协议,直接向 SAN 存储发送 “块级指令”(如 “写数据到第 100-102 号块”),SAN 收到指令后直接操作硬盘块 ——没有任何 “文件系统解析” 的中间步骤,数据从客户端到硬盘的 “跳转次数最少”。

  • NAS 的路径:客户端 → 协议(NFS/CIFS)→ NAS 设备的文件系统 → NAS 后端硬盘。客户端发送的是 “文件级指令”(如 “创建 test.txt”),NAS 必须先通过自身的文件系统解析 “这个文件对应哪些块”,再操作硬盘 —— 多了 “NAS 文件系统解析” 这一步,会产生毫秒级的延迟(对高频读写场景影响显著)。

  • SAN 是 “客户端 - 存储端” 的块级直连 ,整个数据读写过程几乎没有 “多余环节”,而 NAS 因多了 “文件系统中间层”,会产生额外损耗。

维度

NAS

SAN

共享级别

文件级(基于文件系统)

块级(裸设备)

协议

NFS、CIFS/SMB

iSCSI(IP SAN)、FC(FC SAN)

网络依赖

以太网

以太网(IP SAN)/ 光纤通道(FC SAN)

适用场景

文件共享(文档、媒体)

高性能存储(数据库、虚拟化)

客户端访问方式

网络路径(如/mnt/nfs)

本地磁盘(如/dev/sdb)

二、linux系统配置nfs存储

1、环境描述

  • 192.168.140.10 业务服务器
  • 192.168.140.11 nfs存储

2、nfs存储端配置

(1)提供存储空间
[root@nas ~] df -hT
# Filesystem              Type      Size  Used Avail Use% Mounted on
# /dev/sdb                xfs        20G   33M   20G   1% /data
(2)安装存储端软件
[root@nas ~] yum install -y nfs-utils rpcbind
(3)编辑exports文件,共享存储

配置文件语法:文件系统        客户端地址(权限)

  • 单个地址192.168.1.1
  • 网段  192.168.1.0/24
  • 所有地址 *

权限:

  • 只读 ro
  • 读写 rw
[root@nas ~] cat /etc/exports
/data		192.168.140.10(rw)
[root@nas ~] chmod o+w /data/

注意:

  • /etc/exports中的 rw 权限是NFS 服务层面的 “访问控制”允许客户端发起写请求;
  • 服务端共享目录的写权限(o+w,对映射用户开放)确保写请求能在服务端文件系统中执行。
(4)启动nfs服务
[root@nas ~] systemctl enable --now nfs-server
[root@nas ~] systemctl enable nfs-server

3、业务服务器挂载使用存储

(1)安装nfs-utils软件
# 下载,让系统识别nfs文件系统
[root@yewu ~] yum install -y nfs-utils 
(2)编辑fstab,挂载存储
# 创建挂载点
[root@yewu ~] mkdir -p /db/log
# 挂载 
# nfs服务器地址:nfs共享文件系统   挂载点   nfs  defaults	0 0
[root@yewu ~]# tail -n 1 /etc/fstab 
192.168.140.11:/data	/db/log		nfs	defaults	0 0[root@yewu ~] mount -a
[root@yewu ~] df -hT | grep nfs
# 192.168.140.11:/data    nfs4       20G   33M   20G   1% /db/log
(3)测试数据读写
[root@yewu ~] touch /db/log/{1..10}
[root@yewu ~] ls /db/log/
# 1  10  2  3  4  5  6  7  8  9

三、配置 SAN 存储(基于 iSCSI)

1、前提:

创建 Openfiler 虚拟机并安装系统

  • 安装时需确保虚拟机网络配置正确(建议使用桥接或仅主机模式,保证与业务服务器互通)
  • 分配足够的磁盘空间用于创建 RAID 设备(如添加多块虚拟磁盘作为 RAID 成员)。

访问 openfiler webUI

  • 浏览器输入https://Openfiler_IP:446,用用户名openfiler、密码password登录

2、存储设备配置

(1)创建 RAID 设备
  1. 进入Block Devices,查看识别到的物理磁盘(如/dev/sdb、/dev/sdc)。
  2. 选择未分区的磁盘,点击磁盘名进入配置页。
  3. 在Partition Type中选择 RAID array member,点击Create。
  4. 进入Software RAID标签页:
    1. 创建新RAID
    2. 填写 RAID 名称(如md0),选择 RAID 级别(如 RAID1/5,根据磁盘数量选择)
    3. 勾选需要加入 RAID 的物理磁盘,点击Create
    4. 等待 RAID 同步完成(状态变为active)

(2)创建卷组(VG)
  1. 进入Volume Groups标签页。
  2. 创建卷组
    1. Volume Group Name:填写卷组名(如vg_iscsi)
    2. Physical Volumes:勾选已激活的物理磁盘或 RAID 设备(如/dev/md0或/dev/sdb1)
    3. 点击Add volume group,卷组创建完成(状态为active)

(3)创建逻辑卷(LV)
  1. 进入Logical Volumes标签页,选择刚创建的卷组(如vg_iscsi)。
  2. 创建逻辑卷:
    1. Logical Volume Name:填写逻辑卷名(如lv_iscsi01)
    2. Size:设置逻辑卷大小(如10G,不超过卷组总容量)
    3. Volume Type:选择block(块设备,用于 iSCSI)
    4. 点击Create,逻辑卷创建完成(会显示为/dev/vg_iscsi/lv_iscsi01)

3、iSCSI 服务与共享配置

(1)开启 iSCSI Target服务
  1. 进入Services标签页。
  2. 找到iSCSI Target和iSCSI Initiator服务,点击右侧Start启动服务,并勾选Enable设置开机自启(确保服务状态为Running)。
  • iSCSI Target:是 “存储端服务”,作用是将 Openfiler 的逻辑卷(块设备)共享出去,作为 “iSCSI 目标设备” 供客户端连接。没有它,客户端无法发现或访问共享的存储资源,是必须开启的核心服务。

  • iSCSI Initiator:是 “客户端服务”,作用是让本地设备(此处指 Openfiler 服务器本身)作为客户端去连接其他设备的 iSCSI Target(比如连接另一台存储服务器的共享)。

(2)配置 iSCSI Target服务
① 创建 iSCSI Target 

进入Volumes → Targets标签页,点击Add创建 Target

  • Target Name:按规范填写(如iqn.2024-10.com.openfiler:target01
  • IQN 名称格式: iqn.yyyy-mm. 反域名:自定义名称,其他默认,点击Create。

        

② 绑定逻辑卷到 Target
  • 在刚创建的 Target 下,找到LUN Mapping标签,点击Add

  • 选择创建的逻辑卷(如/dev/vg_iscsi/lv_iscsi01)

  • 点击Map,完成 LUN(逻辑单元号)映射。

③ 配置客户端访问权限
  • 进入Network ACL标签

  • 填写客户端的 iSCSI initiator 名称(客户端需先安装iscsi-initiator-utils,通过cat /etc/iscsi/initiatorname.iscsi获取),或留空允许所有客户端(测试用)

  • 在 Target 对应的Access列选择Allow

  • 点击Update。

         ④ 设置CHAP认证

4、网络连通性配置

  • 存储端:通过systemd-networkd或网络配置工具,设置静态 IP(如 192.168.140.11),开放 iSCSI 端口(3260),确保与业务服务器网络互通;

        // 配置和管理 SAN 相关的网络环境,确保存储设备(如 iSCSI Target)与业务服务器(iSCSI Initiator)之间的网络连通性

  • 客户端:配置静态 IP(如 192.168.140.10),安装iscsi-initiator-utils,确保能 ping 通存储端 IP。

(1) 安装客户端软件

[root@master_haproxy ~] yum install -y iscsi-initiator-utils

(2)编辑 iscsid.conf 配置文件,指定认证的用户

[root@master_haproxy ~] vim /etc/iscsi/iscsid.confnode.session.auth.authmethod = CHAPnode.session.auth.username = martinnode.session.auth.password = redhat

(3)探索存储

​
[root@master_haproxy ~] iscsiadm -m discovery -t st -p 192.168.140.128:3260# iscsiadm: No portals found​

        首次探求存储时,存储端会生成拒绝所有客户端的文件,在存储端 /etc/initiators.deny 文件中删除拒绝所有条目,重新探索

​
[root@master_haproxy ~]# iscsiadm -m discovery -t st -p 192.168.140.128:3260# -p 存储的ip192.168.140.128:3260,1 iqn.2024-06.com.linux:jf3-jg7-hw-db​

(4)连接使用存储

​
[root@master_haproxy ~] iscsiadm -m node -T iqn.2024-06.com.linux:jf3-jg7-hw-db -p 192.168.140.128:3260 -l# Logging in to [iface: default, target: iqn.2024-06.com.linux:jf3-jg7-hw-db, portal: 192.168.140.128,3260] (multiple)# Login to [iface: default, target: iqn.2024-06.com.linux:jf3-jg7-hw-db, portal: 192.168.140.128,3260] successful.[root@master_haproxy ~] lsblk# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT# sda 8:0 0 20G 0 disk# ├─sda1 8:1 0 500M 0 part /boot# └─sda2 8:2 0 19.5G 0 part# ├─centos-root 253:0 0 17.5G 0 lvm /# └─centos-swap 253:1 0 2G 0 lvm [SWAP]# sdb 8:16 0 9.5G 0 disk# sr0 11:0 1 9.5G 0 rommkfs -t xfs /dev/sdb
mkdir /test1[root@master_haproxy ~] blkid /dev/sdb# /dev/sdb: UUID="d0765ec9-e93f-4998-ac05-27377e491409" TYPE="xfs"[root@master_haproxy ~] vim /etc/fstabUUID="d0765ec9-e93f-4998-ac05-27377e491409" /test1 xfs defaults,_netdev 0 0[root@master_haproxy ~] mount -a[root@master_haproxy ~] df -hT# /dev/sdb xfs 9.5G 33M 9.5G 1% /test1[root@master_haproxy ~]# touch /test1/{1..10}[root@master_haproxy ~]# ls /test1/1 10 2 3 4 5 6 7 8 9​

补充 fstab 挂载参数说明:_netdev参数用于确保网络启动后再挂载存储,避免开机时因网络未就绪导致挂载失败,对网络存储(如 iSCSI、NFS)是必需参数。

windows连接的话

http://www.dtcms.com/a/507159.html

相关文章:

  • C++可变参数模板
  • Python下载实战技巧的技术文章大纲
  • PostgreSQL高级特性解析:窗口函数与CTE
  • OpenBMC: BmcWeb处理WebScoket2 产生WebSocket对象
  • 构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
  • 图论基础:探索节点与关系的复杂网络
  • 免费建网站 建站之星百度指数免费添加
  • python如何写数据到excel示例
  • Spring Cloud - Spring Cloud 注册中心与服务提供者(Spring Cloud Eureka 概述、微服务快速入门、微服务应用实例)
  • 测试经验分享,登录功能+购物车+限时秒杀(测试点)汇总
  • 腾讯云TVP走进美的,共探智能制造新范式
  • OpenAI 的 Sora 2来了:一场创意革命与失控的狂欢
  • 直播预告 | 时序数据赋能核电数字化转型,TDengine 引领创新新范式
  • 动漫网站建设规划书模板广州网站建设策划
  • 使用imapsync增量同步邮件到新邮局服务器
  • iOS 混淆与 IPA 加固全流程,多工具组合实现无源码混淆、源码防护与可审计流水线(iOS 混淆|IPA 加固|无源码加固|App 防反编译)
  • java数据结构--ArrayList与顺序表
  • 【IEEE/EI/Scopus检索】2026年IEEE第七届计算,网络与物联网国际会议(CNIOT 2026)
  • 大数据计算引擎-Hudi对Spark Catalyst 优化器的RBO、CBO做了什么
  • 设计模式之:建造者模式
  • 阿里云 RDS MySQL 可观测性最佳实践
  • 【含文档+PPT+源码】基于spring boot的固定资产管理系统
  • 企业门户网站建设新闻柳州seo培训
  • 广东长海建设工程有限公司网站众筹网站建设报价
  • 航运、应急、工业适用,AORO P1100三防平板引领行业数字化变革
  • Linux网络:UDP
  • vue3知识点-ref和reactive以及toRefs与toRef
  • 环保网站 源码wordpress展示页
  • NSSCTF - Web | 【第五空间 2021】pklovecloud
  • 了解“网络协议”