第228集:网络存储配置

教学目标

  • 理解网络存储的基本概念和主要类型
  • 掌握iSCSI存储的配置和管理方法
  • 了解Fibre Channel存储的架构和配置
  • 学习FCoE和iSER等新兴网络存储技术
  • 掌握网络存储的性能优化策略
  • 学习网络存储的故障排查技巧

核心知识点讲解

1. 网络存储概述

网络存储是通过网络将存储设备与服务器连接的存储解决方案,它提供了集中管理、高可扩展性和灵活部署的优势。

主要类型:

  • iSCSI (Internet Small Computer System Interface):基于TCP/IP网络的存储协议,将SCSI命令封装在IP数据包中传输
  • Fibre Channel (FC):专门为存储设计的高速网络技术,提供低延迟、高带宽的存储连接
  • FCoE (Fibre Channel over Ethernet):在以太网网络上传输Fibre Channel协议
  • iSER (iSCSI Extensions for RDMA):利用RDMA技术提高iSCSI性能
  • NFS/CIFS:基于文件级的网络存储(详见第227集:分布式文件系统)

2. iSCSI存储配置

2.1 iSCSI架构

  • iSCSI Initiator:发起iSCSI连接的客户端,通常是服务器
  • iSCSI Target:提供存储资源的服务器,管理LUN(逻辑单元号)
  • LUN:逻辑存储单元,对客户端呈现为物理磁盘
  • **iSCSI Qualified Name (IQN)**:用于标识iSCSI节点的唯一名称

2.2 iSCSI Target配置

在存储服务器上配置iSCSI Target:

  1. 安装iSCSI Target软件
# 在CentOS/RHEL系统上
sudo yum install targetcli

# 在Ubuntu/Debian系统上
sudo apt install targetcli-fb
  1. 配置iSCSI Target
# 启动targetcli
sudo targetcli

# 创建后端存储(使用LVM卷作为示例)
targetcli> /backstores/block create name=disk1 dev=/dev/vg_data/lv_iscsi

# 创建iSCSI Target
targetcli> /iscsi create iqn.2023-07.com.example:target1

# 创建LUN
targetcli> /iscsi/iqn.2023-07.com.example:target1/tpg1/luns create /backstores/block/disk1

# 配置访问控制(允许特定Initiator访问)
targetcli> /iscsi/iqn.2023-07.com.example:target1/tpg1/acls create iqn.2023-07.com.example:initiator1

# 配置IP地址和端口
targetcli> /iscsi/iqn.2023-07.com.example:target1/tpg1/portals create 192.168.1.100

# 保存配置
targetcli> saveconfig

# 退出
targetcli> exit
  1. 启动和启用服务
# 在CentOS/RHEL系统上
sudo systemctl start target
sudo systemctl enable target

# 在Ubuntu/Debian系统上
sudo systemctl start targetcli-fb
sudo systemctl enable targetcli-fb

2.3 iSCSI Initiator配置

在客户端服务器上配置iSCSI Initiator:

  1. 安装iSCSI Initiator软件
# 在CentOS/RHEL系统上
sudo yum install iscsi-initiator-utils

# 在Ubuntu/Debian系统上
sudo apt install open-iscsi
  1. 配置Initiator名称

编辑/etc/iscsi/initiatorname.iscsi文件:

sudo vi /etc/iscsi/initiatorname.iscsi

添加以下内容:

InitiatorName=iqn.2023-07.com.example:initiator1
  1. 发现和登录Target
# 发现Target
sudo iscsiadm -m discovery -t st -p 192.168.1.100

# 登录Target
sudo iscsiadm -m node -T iqn.2023-07.com.example:target1 -p 192.168.1.100 --login

# 设置自动登录
sudo iscsiadm -m node -T iqn.2023-07.com.example:target1 -p 192.168.1.100 --op update -n node.startup -v automatic
  1. 验证连接
# 查看已连接的iSCSI设备
sudo lsblk

# 查看iSCSI会话
sudo iscsiadm -m session
  1. 格式化和挂载
# 格式化iSCSI设备
sudo mkfs.xfs /dev/sdb

# 创建挂载点
sudo mkdir /mnt/iscsi

# 挂载设备
sudo mount /dev/sdb /mnt/iscsi

# 配置持久化挂载
# 编辑/etc/fstab文件,添加以下行
UUID=$(sudo blkid -s UUID -o value /dev/sdb) /mnt/iscsi xfs defaults,_netdev 0 0

3. Fibre Channel存储配置

3.1 Fibre Channel架构

  • HBA (Host Bus Adapter):主机总线适配器,连接服务器和FC网络
  • FC Switch:光纤通道交换机,连接多个HBA和存储设备
  • Storage Array:存储阵列,提供FC存储服务
  • WWN (World Wide Name):用于标识FC设备的唯一标识符

3.2 Fibre Channel配置

  1. 安装HBA驱动
# 查看HBA卡信息
sudo lspci | grep -i fibre

# 安装驱动(以QLogic HBA为例)
sudo yum install kmod-qla2xxx  # CentOS/RHEL
sudo apt install qlogic-fc-firmware  # Ubuntu/Debian
  1. 配置HBA卡
# 查看HBA卡状态
sudo systool -c fc_host -v

# 查看WWN信息
sudo cat /sys/class/fc_host/host*/port_name
  1. ** zoning配置**

Zoning是FC网络中的访问控制机制,限制HBA和存储端口之间的通信。

配置方法:

  • 通过FC交换机的Web界面配置
  • 使用交换机命令行工具配置
  • 使用 zoning管理软件配置
  1. 发现和配置LUN
# 重新扫描FC设备
sudo echo "- - -" > /sys/class/scsi_host/host0/scan

# 查看发现的设备
sudo lsblk

# 格式化和挂载(同iSCSI)

4. FCoE和iSER配置

4.1 FCoE配置

FCoE需要支持DCB (Data Center Bridging)的以太网交换机和NIC卡。

  1. 安装FCoE软件
# 在CentOS/RHEL系统上
sudo yum install fcoe-utils

# 在Ubuntu/Debian系统上
sudo apt install fcoe-utils
  1. 配置FCoE
# 查看支持FCoE的接口
sudo fcoeadm -l

# 启用FCoE
sudo fcoeadm -i eth0

# 查看FCoE状态
sudo fcoeadm -s

4.2 iSER配置

iSER需要支持RDMA的网络设备(如InfiniBand或RoCE网卡)。

  1. 安装iSER软件
# 在CentOS/RHEL系统上
sudo yum install iser-module

# 在Ubuntu/Debian系统上
sudo apt install ibverbs-providers
  1. 配置iSER
# 加载iSER模块
sudo modprobe iser

# 配置iSCSI使用iSER
sudo iscsiadm -m node -T iqn.2023-07.com.example:target1 -p 192.168.1.100 --op update -n node.transport_name -v iser

# 重新登录
sudo iscsiadm -m node -T iqn.2023-07.com.example:target1 -p 192.168.1.100 --logout
sudo iscsiadm -m node -T iqn.2023-07.com.example:target1 -p 192.168.1.100 --login

5. 网络存储性能优化

优化策略:

  • 网络优化

    • 使用高速网络(10GbE或更高)
    • 配置适当的MTU(如9000字节的巨型帧)
    • 启用流量控制和QoS
    • 分离存储网络和业务网络
  • iSCSI优化

    • 使用多路径I/O (MPIO)提高可靠性和性能
    • 调整iSCSI队列深度
    • 启用iSER或使用FCoE
    • 优化TCP参数
  • Fibre Channel优化

    • 合理规划zoning
    • 使用适当的HBA队列深度
    • 配置适当的带宽分配
    • 定期检查和清理FC交换机
  • 存储阵列优化

    • 合理分配LUN
    • 启用缓存
    • 配置适当的RAID级别
    • 定期维护和监控

6. 网络存储故障排查

常见故障及解决方法:

  • 连接问题

    • 检查物理连接(线缆、接口)
    • 检查网络配置(IP地址、子网掩码、网关)
    • 检查防火墙设置
    • 检查iSCSI/Fibre Channel服务状态
  • 性能问题

    • 监控网络带宽使用情况
    • 检查存储阵列负载
    • 分析I/O模式
    • 调整队列深度和缓存设置
  • LUN识别问题

    • 重新扫描SCSI总线
    • 检查zoning配置
    • 验证LUN映射
    • 检查权限设置
  • 多路径问题

    • 检查多路径配置
    • 验证路径状态
    • 测试故障转移

实用案例分析

案例1:配置iSCSI存储服务器

场景:构建一个iSCSI存储服务器,为多台应用服务器提供共享存储。

配置步骤

  1. 安装和配置targetcli
# 安装targetcli
sudo yum install targetcli

# 启动服务
sudo systemctl start target
sudo systemctl enable target

# 配置iSCSI Target
sudo targetcli

# 创建存储池(使用LVM)
targetcli> /backstores/block create name=storage1 dev=/dev/vg_storage/lv_iscsi

# 创建iSCSI Target
targetcli> /iscsi create iqn.2023-07.com.example:storage

# 创建LUN
targetcli> /iscsi/iqn.2023-07.com.example:storage/tpg1/luns create /backstores/block/storage1

# 配置访问控制(允许所有Initiator)
targetcli> /iscsi/iqn.2023-07.com.example:storage/tpg1/acls create iqn.2023-07.com.example:initiator1
targetcli> /iscsi/iqn.2023-07.com.example:storage/tpg1/acls create iqn.2023-07.com.example:initiator2

# 配置端口
targetcli> /iscsi/iqn.2023-07.com.example:storage/tpg1/portals create 192.168.1.100

# 保存配置
targetcli> saveconfig
targetcli> exit
  1. 客户端配置

在两台应用服务器上执行以下操作:

# 安装initiator软件
sudo yum install iscsi-initiator-utils

# 配置Initiator名称(服务器1)
sudo echo "InitiatorName=iqn.2023-07.com.example:initiator1" > /etc/iscsi/initiatorname.iscsi

# 配置Initiator名称(服务器2)
sudo echo "InitiatorName=iqn.2023-07.com.example:initiator2" > /etc/iscsi/initiatorname.iscsi

# 重启服务
sudo systemctl restart iscsid

# 发现和登录Target
sudo iscsiadm -m discovery -t st -p 192.168.1.100
sudo iscsiadm -m node -T iqn.2023-07.com.example:storage -p 192.168.1.100 --login

# 设置自动登录
sudo iscsiadm -m node -T iqn.2023-07.com.example:storage -p 192.168.1.100 --op update -n node.startup -v automatic
  1. 测试存储
# 在服务器1上创建测试文件
sudo dd if=/dev/zero of=/mnt/iscsi/test1.img bs=1G count=10

# 在服务器2上验证文件存在
sudo ls -l /mnt/iscsi/

案例2:配置多路径I/O (MPIO)

场景:为iSCSI存储配置多路径,提高可靠性和性能。

配置步骤

  1. 安装多路径软件
# 安装multipath-tools
sudo yum install device-mapper-multipath  # CentOS/RHEL
sudo apt install multipath-tools  # Ubuntu/Debian

# 启用多路径服务
sudo systemctl start multipathd
sudo systemctl enable multipathd
  1. 配置多路径

编辑/etc/multipath.conf文件:

sudo vi /etc/multipath.conf

添加以下内容:

defaults {
    user_friendly_names yes
    find_multipaths yes
}

blacklist {
    devnode "^sda.*"
}

multipaths {
    multipath {
        wwid "360014058a5b6c7d8e9f0a1b2c3d4e5f6"
        alias iscsi_storage
    }
}
  1. 重新加载配置
sudo multipath -v2

# 查看多路径状态
sudo multipath -ll

# 查看多路径设备
sudo ls -l /dev/mapper/
  1. 使用多路径设备
# 格式化多路径设备
sudo mkfs.xfs /dev/mapper/iscsi_storage

# 挂载设备
sudo mount /dev/mapper/iscsi_storage /mnt/iscsi

# 配置持久化挂载
# 编辑/etc/fstab文件,添加以下行
/dev/mapper/iscsi_storage /mnt/iscsi xfs defaults,_netdev 0 0

课后练习

  1. 基础练习
  • 配置iSCSI Target服务器,创建LUN并授权给客户端
  • 在客户端发现和登录iSCSI Target,格式化并挂载
  • 配置多路径I/O,测试故障转移功能
  1. 进阶练习
  • 构建一个包含多个LUN的iSCSI存储服务器,为不同应用提供隔离存储
  • 配置iSER,测试性能提升
  • 实现iSCSI存储的快照功能
  1. 挑战练习
  • 设计并实现一个基于Fibre Channel的存储网络
  • 配置FCoE网络,实现以太网和存储网络的融合
  • 构建一个混合存储环境,同时使用iSCSI和Fibre Channel存储

总结

网络存储是现代数据中心的重要组成部分,它提供了灵活、可扩展的存储解决方案。本集介绍了网络存储的基本概念和主要类型,详细讲解了iSCSI、Fibre Channel、FCoE和iSER等网络存储技术的配置和管理方法,以及网络存储的性能优化和故障排查技巧。

选择合适的网络存储技术需要考虑多种因素,包括性能需求、预算限制、现有基础设施等。iSCSI是一种经济实惠的选择,适用于大多数通用存储场景;Fibre Channel提供更高的性能和可靠性,适用于对存储性能要求较高的场景;FCoE和iSER则是兼顾性能和成本的折中方案。

通过本集的学习,您应该能够理解网络存储的工作原理,掌握iSCSI等网络存储技术的配置和管理方法,并能够根据实际需求选择和部署适合的网络存储解决方案。

« 上一篇 分布式文件系统 下一篇 » 存储监控与管理