Skip to content

20. 网络文件系统与共享

本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 配置网络文件系统和共享服务,配合 SecureFX 传输配置文件。内容涵盖 NFS、Samba 和 iSCSI 配置,遵循 Red Hat 官方文档,简洁实用,适合初学者快速上手和运维人员实践。所有操作在 ZSLinux 环境中测试,确保实验一致性。

20.1 前提条件

  • RHEL 8.10 已安装(参考第 1 章),主机名设置为 ZSLinux
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 仓库(参考第 4 章)。
  • 防火墙启用,SELinux 设置为 enforcing 模式(参考第 13 章)。
  • 网络连接正常,时间同步配置完成(参考第 3 章)。

20.2 NFS 配置

20.2.1 NFS 服务器配置

  • 安装 NFS 工具:
    bash
    dnf install -y nfs-utils  # 安装 NFS 服务器工具
  • 创建共享目录:
    bash
    mkdir -p /nfs_share
    chown nobody:nobody /nfs_share
    chmod 755 /nfs_share
  • 编辑导出配置文件:
    bash
    vi /etc/exports  # 编辑 NFS 导出文件
    # 添加:
    /nfs_share 192.168.1.0/24(rw,sync,no_root_squash)
  • 配置 SELinux:
    bash
    setsebool -P nfs_export_all_rw 1  # 允许 NFS 导出读写
  • 配置防火墙:
    bash
    firewall-cmd --permanent --add-service=nfs
    firewall-cmd --permanent --add-service=mountd
    firewall-cmd --permanent --add-service=rpc-bind
    firewall-cmd --reload  # 应用防火墙规则
  • 启动服务:
    bash
    systemctl enable --now nfs-server
    exportfs -arv  # 应用导出配置

20.2.2 NFS 客户端配置

  • 安装 NFS 客户端工具:
    bash
    dnf install -y nfs-utils  # 安装 NFS 客户端工具
  • 创建挂载点:
    bash
    mkdir /mnt/nfs
  • 挂载 NFS 共享:
    bash
    mount -t nfs ZSLinux:/nfs_share /mnt/nfs  # 挂载 NFS 共享
  • 永久挂载:
    bash
    vi /etc/fstab  # 编辑 fstab 文件
    # 添加:
    ZSLinux:/nfs_share /mnt/nfs nfs defaults 0 0
  • 配置防火墙(如果需要客户端访问):
    bash
    firewall-cmd --permanent --add-service=nfs
    firewall-cmd --reload

20.2.3 NFS 验证

  • 服务器验证:
    bash
    exportfs -v  # 检查导出列表
    showmount -e localhost  # 查看本地共享
  • 客户端验证:
    bash
    showmount -e ZSLinux  # 查看远程共享
    df -h /mnt/nfs  # 检查挂载点

20.3 Samba 配置

20.3.1 Samba 服务器配置

  • 安装 Samba:
    bash
    dnf install -y samba  # 安装 Samba 服务器
  • 创建共享目录和用户:
    bash
    mkdir /samba_share
    groupadd sambagroup
    useradd -M -G sambagroup sambauser
    smbpasswd -a sambauser  # 设置 Samba 用户密码
    chown -R sambauser:sambagroup /samba_share
    chmod 2775 /samba_share
  • 编辑 Samba 配置:
    bash
    vi /etc/samba/smb.conf  # 编辑 Samba 配置文件
    # 添加:
    [global]
    workgroup = WORKGROUP
    server string = Samba Server
    security = user
    
    [share]
    comment = Samba Share
    path = /samba_share
    browseable = yes
    writable = yes
    valid users = @sambagroup
  • 配置 SELinux:
    bash
    setsebool -P samba_enable_home_dirs on  # 允许 Samba 访问家目录(如果需要)
    chcon -t samba_share_t /samba_share  # 设置 SELinux 上下文
  • 配置防火墙:
    bash
    firewall-cmd --permanent --add-service=samba
    firewall-cmd --reload
  • 启动服务:
    bash
    systemctl enable --now smb nmb

20.3.2 Samba 客户端配置

  • 安装 Samba 客户端工具:
    bash
    dnf install -y samba-client cifs-utils  # 安装 Samba 客户端工具
  • 创建挂载点:
    bash
    mkdir /mnt/samba
  • 挂载 Samba 共享:
    bash
    mount -t cifs //ZSLinux/share /mnt/samba -o username=sambauser,password=<password>
  • 永久挂载:
    bash
    vi /etc/fstab  # 编辑 fstab 文件
    # 添加:
    //ZSLinux/share /mnt/samba cifs credentials=/etc/samba/credentials,vers=3.0 0 0
  • 创建凭据文件:
    bash
    vi /etc/samba/credentials  # 创建凭据文件
    # 添加:
    username=sambauser
    password=<password>
    chmod 600 /etc/samba/credentials

20.3.3 Samba 验证

  • 服务器验证:
    bash
    testparm  # 检查 smb.conf 配置
    smbstatus  # 查看 Samba 状态
  • 客户端验证:
    bash
    smbclient -L ZSLinux -U sambauser  # 列出共享
    df -h /mnt/samba  # 检查挂载点

20.4 iSCSI 配置

20.4.1 iSCSI 目标(Target)配置

  • 安装 iSCSI 目标工具:
    bash
    dnf install -y targetcli  # 安装 targetcli 工具
  • 配置 iSCSI 目标:
    bash
    targetcli  # 进入 targetcli 交互模式
    # 执行以下命令:
    /> backstores/block create lun0 /dev/vg_data/lv_iscsi  # 创建 block backstore
    /> iscsi/ create iqn.2025-10.com.example:target1  # 创建 iSCSI IQN
    /> /iscsi/iqn.2025-10.com.example:target1/tpg1/luns create /backstores/block/lun0  # 添加 LUN
    /> /iscsi/iqn.2025-10.com.example:target1/tpg1/acls create iqn.2025-10.com.example:initiator1  # 创建 ACL
    /> /iscsi/iqn.2025-10.com.example:target1/tpg1 set attribute authentication=0  # 禁用认证(生产环境启用)
    /> saveconfig
    /> exit
  • 配置 SELinux:
    bash
    setsebool -P iscsi_target_tcp_access 1  # 允许 iSCSI 目标 TCP 访问
  • 配置防火墙:
    bash
    firewall-cmd --permanent --add-port=3260/tcp
    firewall-cmd --reload
  • 启动服务:
    bash
    systemctl enable --now target

20.4.2 iSCSI 发起者(Initiator)配置

  • 安装 iSCSI 发起者工具:
    bash
    dnf install -y iscsi-initiator-utils  # 安装 iSCSI 发起者工具
  • 设置发起者名称:
    bash
    vi /etc/iscsi/initiatorname.iscsi  # 编辑发起者 IQN
    # 添加:
    InitiatorName=iqn.2025-10.com.example:initiator1
  • 发现和登录目标:
    bash
    iscsiadm -m discovery -t sendtargets -p 192.168.1.100  # 发现目标(替换 IP)
    iscsiadm -m node -T iqn.2025-10.com.example:target1 -p 192.168.1.100 -l  # 登录目标
  • 格式化和挂载:
    bash
    mkfs.xfs /dev/sdX  # 格式化磁盘(替换 sdX)
    mkdir /mnt/iscsi
    mount /dev/sdX /mnt/iscsi
  • 永久挂载:
    bash
    vi /etc/fstab  # 编辑 fstab 文件
    # 添加:
    /dev/sdX /mnt/iscsi xfs defaults,_netdev 0 0
  • 配置自动登录:
    bash
    iscsiadm -m node -T iqn.2025-10.com.example:target1 -p 192.168.1.100 --op=update -n node.startup -v automatic

20.4.3 iSCSI 验证

  • 目标验证:
    bash
    targetcli ls  # 检查目标配置
    systemctl status target  # 检查服务状态
  • 发起者验证:
    bash
    iscsiadm -m session  # 检查会话
    df -h /mnt/iscsi  # 检查挂载点

20.5 实践任务

  1. 配置 NFS 服务器并在客户端挂载 /nfs_share
  2. 配置 Samba 共享并在客户端挂载 /samba_share
  3. 配置 iSCSI 目标并在发起者挂载 LUN。
  4. 验证所有共享的访问和权限。

20.6 自测问题

  • 问题:如何导出 NFS 共享?
    • 答案:编辑 /etc/exports,添加 /nfs_share 192.168.1.0/24(rw,sync),然后 exportfs -arv
  • 问题:如何配置 Samba 用户?
    • 答案useradd sambausersmbpasswd -a sambauser
  • 问题:如何发现 iSCSI 目标?
    • 答案iscsiadm -m discovery -t sendtargets -p <target-ip>

Released under the MIT License.