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

NFS 服务器iSCSI 服务器

文章目录

  • NFS 服务器
    • NFS 服务介绍
    • 部署服务
    • 配置服务端
    • 配置客户端
  • 配置 iSCSI 存储
  • iSCSI 服务器
    • iSCSI 服务介绍
    • iSCSI 架构
      • 核心组件说明
    • 配置服务端
    • 配置客户端

NFS 服务器

NFS 服务介绍

NFS 是 Network File System 的缩写,即网络文件系统,最早由 Sun 公司开发,用来在 UNIX&Linux 系统间实现磁盘文件共享的一种方法。它的主要功能是通过网络让不同的主机系统之间可以共享文件或目录。NFS 客户端 (一般为应用服务器,例如 web) 可以通过挂载(mount)的方式将 NFS 服务端共享的数据目录挂载到 NFS 客户端本地系统中 (就是某一个挂载点下)。从 NFS 客户端的机器本地看,NFS 服务端共享的目录就好像是客户自己的磁盘分区或者目录一样,而实际上确是远端的 NFS 服务端的目录1。

在企业集群架构的工作场景中,NFS 网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件。一般是把网站用户上传的文件都放在 NFS 共享里,例如,BBS 产品的图片、附件、头像,特别是中小网站公司应用频率更高2。

NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS 的功能所对应的端口没有固定住,而是随机取用一些未被使用的小于 1024 的端口提供服务3。此时需要远程过程调用(RPC)的服务,RPC 最主要的功能是注册每个 NFS 功能所对应的端口,并且汇报给客户端,让客户端可以连结到正确的端口。RPC 定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息4。

  • NFS 服务器:导出文件系统目录及其内容5。
  • NFS 客户端:挂载服务器导出的文件系统到本地6。

部署服务

NFS 服务由 nfs-utils 软件包提供,RHEL8 默认安装了该软件包7。

配置服务端

  1. 安装软件包

    [root@server ~ 16:54:26]# yum install -y nfs-utils
  2. 准备服务用到的各种材料,例如用户、目录等

    [root@server ~ 16:56:06]# mkdir -p /shares/webapp/
    [root@server ~ 16:57:28]# echo Hello World From Nginx > /shares/webapp/index.html # 客户端nginx用户的UID为998,客户端nginx用户可以读写该目录
    [root@server ~ 16:58:33]# chown 998 /shares/webapp
    [root@server ~ 16:59:51]# ll -d /shares/webapp
    drwxr-xr-x 2 998 root 42 926 10:31 /shares/webapp
    1. 配置服务器(修改配置文件)

      [root@server ~ 17:03:45]# vim /etc/exports.d/webapp.exports

      在这里插入图片描述

    2. 启用并启动服务

      [root@server ~ 17:05:21]# systemctl enable nfs-server.service --now
      [root@server ~ 17:05:33]# systemctl is-active nfs-server.service 
      active
    3. 配置防火墙

      [root@server ~ 17:06:05]# systemctl is-active firewalld.service 
      unknown

配置客户端

  1. 准备web服务器

    [root@webapp ~ 15:57:36]# yum install -y nginx[root@webapp ~ 17:08:29]# id nginx
    uid=998(nginx) gid=996(nginx)=996(nginx)
    [root@webapp ~ 17:08:48]# systemctl enable nginx.service --now
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
  2. 安装NFS客户端

    [root@webapp ~ 17:09:39]# yum install -y nfs-utils
  3. 查看共享并挂载

  ```bash[root@webapp ~ 17:09:56]# showmount -e 10.1.8.10Export list for 10.1.8.10:/shares/webapp 10.1.8.0/24[root@webapp ~ 17:11:16]# mount 10.1.8.10:/shares/webapp /usr/share/nginx/html[root@webapp ~ 17:12:09]# df -h /usr/share/nginx/html文件系统                  容量  已用  可用 已用% 挂载点10.1.8.10:/shares/webapp   50G  1.6G   49G    4% /usr/share/nginx/html```
  1. 测试web服务器页面

    [root@webapp ~ 17:13:23]# curl 10.1.8.11
    Hello World From Nginx
  2. 持久化挂载

    [root@webapp ~ 17:13:32]# vim /etc/fstab 
    # 最后添加一条记录
    10.1.8.10:/shares/webapp /usr/share/nginx/html nfs defaults        0 0
    

    在这里插入图片描述

6.重启服务器验证

挂载选项补充说明:
客户端的root对于服务器端来说 啥也不是。
默认情况,服务端共享的目录,客户端的root是只具备other用户的权限。
默认共享选项包含root_squash,压缩root权限为nobody。
可以使用选项no_root_squash

配置 iSCSI 存储

iSCSI 服务器

iSCSI 服务介绍

SCSI(Small Computer System Interface,小型计算机系统接口)是一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)连接的标准。

iSCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口),又称为 IP SAN,是 IBM 公司研究开发的 IP SAN 技术。该技术将现有 SCSI 接口与以太网络(Ethernet)技术结合,基于 TCP/IP 协议连接 iSCSI 服务端(Target)和客户端(Initiator),使得封装后的 SCSI 数据包可在互联网传输,最终实现 iSCSI 服务端为客户端提供存储资源。

  • 通常,iSCSI 使用专用的 10Gb 以太网或更高速的网络,以最大化性能。
  • 从物理服务器到存储的电缆通常封闭在数据中心内,且理想情况下不直接连接到 LAN 网络,因此 SAN 流量通常不加密(以最大化性能)。若需实现 WAN 安全,iSCSI 管理员可使用 IPsec 加密流量。

iSCSI 架构

iSCSI 服务采用 C/S 架构,客户端系统上访问的 iSCSI 目标会显示为本地未格式化的 SCSI 块设备,等同于通过 SCSI 布线、FC 直连或 FC 交换光线连接的设备。

核心组件说明

组件说明
InitiatoriSCSI 客户端,通常以软件方式部署,也可使用 iSCSI Host Bus Adapters(HBAs)硬件;必须具有唯一名称(IQN)
TargetiSCSI 服务器上的存储资源,必须具有唯一名称(IQN);每个目标提供一个或多个块设备(LUN),一台服务器可提供多个目标
IQN(iSCSI Qualified Name)全球唯一名称,用于标识发起者和目标,格式:iqn.YYYY-MM.com.reversed.domain:name_string- YYYY-MM:年和月(如 2020 年 6 月为 2020-06,确保唯一性)- com.reversed.domain:反向域名(如 server.redhat.fun 的反向域名为 cloud.laoma.www)- name_string:标识特定目标,若服务器仅一个目标可省略
Portal指定服务器监听的地址和端口(如 172.25.250.50:3260)
LUN(Logical Unit Number)代表 Target 提供的块设备,每个目标可提供一个或多个 LUN
ACL(Access Control List)使用 Initiator 的 IQN 限制客户端访问 Target
TPG(Target Portal Group)目标的完整配置,包含 Portal、LUN 和 ACL;几乎所有目标使用一个 TPG,高级配置可定义多个
discovery查询服务器上的 Target 列表
login向 Target 验证,验证通过后可使用 Target 提供的块设备

配置服务端

[root@server ~ 17:24:14]# yum install -y targetcli targetd
  1. 启用并启动服务

    [root@server ~ 17:26:10]# systemctl enable target --now
    Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
  2. 准备共享块设备
    server端添加一个200G SATA接口硬盘
    创建分区1 100G 空间分享给客户端

    [root@server ~ 17:28:09]# lsblk 
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0  100G  0 disk 
    ├─sda1            8:1    0    1G  0 part /boot
    └─sda2            8:2    0   99G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0   47G  0 lvm  /home
    sdb               8:16   0  200G  0 disk 
    sr0              11:0    1  4.4G  0 rom  [root@server ~ 17:29:38]# parted /dev/sdb mklabel gpt
    信息: You may need to update /etc/fstab.[root@server ~ 17:30:59]# parted /dev/sdb unit MiB mkpart dbapp 1 102401
    信息: You may need to update /etc/fstab.[root@server ~ 17:32:53]# lsblk /dev/sdb
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb      8:16   0  200G  0 disk 
    └─sdb1   8:17   0  100G  0 part 

    4.配置共享块存储

    [root@server ~ 17:39:51]# targetc
    targetcli   targetclid  targetctl   
    [root@server ~ 17:39:51]# targetcli
    Warning: Could not load preferences file /root/.targetcli/prefs.bin.
    targetcli shell version 2.1.53
    Copyright 2011-2013 by Datera, Inc and others.
    For help on commands, type 'help'./> ls
    o- / .......................................................... [...]o- backstores ............................................... [...]| o- block ................................... [Storage Objects: 0]| o- fileio .................................. [Storage Objects: 0]| o- pscsi ................................... [Storage Objects: 0]| o- ramdisk ................................. [Storage Objects: 0]o- iscsi ............................................. [Targets: 0]o- loopback .......................................... [Targets: 0]
    /> /backstores/block create dev=/dev/sdb1 name=db01
    Created block storage object db01 using /dev/sdb1.
    /> ls /backstores/block/
    o- block ....................................... [Storage Objects: 1]o- db01 ............. [/dev/sdb1 (100.0GiB) write-thru deactivated]o- alua ........................................ [ALUA Groups: 1]o- default_tg_pt_gp ............ [ALUA state: Active/optimized]
    /> /iscsi/ create iqn.2025-09.cloud.laoma.server.x8664:db
    Created target iqn.2025-09.cloud.laoma.server.x8664:db.
    Created TPG 1.
    Global pref auto_add_default_portal=true
    Created default portal listening on all IPs (0.0.0.0), port 3260.
    /> ls /iscsi/
    o- iscsi ............................................... [Targets: 1]o- iqn.2025-09.cloud.laoma.server.x8664:db .............. [TPGs: 1]o- tpg1 .................................. [no-gen-acls, no-auth]o- acls ............................................. [ACLs: 0]o- luns ............................................. [LUNs: 0]o- portals ....................................... [Portals: 1]o- 0.0.0.0:3260 ........................................ [OK]
    /> cd /iscsi/iqn.2025-09.cloud.laoma.server.x8664:db/tpg1/
    /iscsi/iqn.20...x8664:db/tpg1> ls
    o- tpg1 ...................................... [no-gen-acls, no-auth]o- acls ................................................. [ACLs: 0]o- luns ................................................. [LUNs: 0]o- portals ........................................... [Portals: 1]o- 0.0.0.0:3260 ............................................ [OK]
    /iscsi/iqn.20...x8664:db/tpg1> acls/ create iqn.2025-09.cloud.wsc.server.x8664:webapp
    Created Node ACL for iqn.2025-09.cloud.wsc.server.x8664:webapp
    /iscsi/iqn.20...x8664:db/tpg1> luns/ create /backstores/block/db01 
    Created LUN 0.
    Created LUN 0->0 mapping in node ACL iqn.2025-09.cloud.wsc.server.x8664:webapp
    /iscsi/iqn.20...x8664:db/tpg1> ls 
    o- tpg1 ...................................... [no-gen-acls, no-auth]o- acls ................................................. [ACLs: 1]| o- iqn.2025-09.cloud.wsc.server.x8664:webapp ... [Mapped LUNs: 1]|   o- mapped_lun0 ......................... [lun0 block/db01 (rw)]o- luns ................................................. [LUNs: 1]| o- lun0 ............. [block/db01 (/dev/sdb1) (default_tg_pt_gp)]o- portals ........................................... [Portals: 1]o- 0.0.0.0:3260 ............................................ [OK]
    /iscsi/iqn.20...x8664:db/tpg1> exit
    Global pref auto_save_on_exit=true
    Configuration saved to /etc/target/saveconfig.json

配置客户端

  1. 安装软件包

    [root@client ~ 17:23:11]# yum install -y iscsi-initiator-utils
  2. 设置客户端的IQN

    [root@client ~ 18:01:32]# vim /etc/iscsi/initiatorname.iscsi 

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    3.扫描目标

[root@client ~ 18:04:38]#  iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2025-09.cloud.laoma.server.x8664:db#选项说明:
-m discovery 发现模式
-t st 找target(sendtarget)
-p 10.1.8.10 服务地址

4.挂载设备

[root@client ~ 18:11:15]# iscsiadm -m node -T iqn.2025-09.cloud.laoma.server.x8664:db -l
Logging in to [iface: default, target: iqn.2025-09.cloud.laoma.server.x8664:db, portal: 10.1.8.10,3260] (multiple)
Login to [iface: default, target: iqn.2025-09.cloud.laoma.server.x8664:db, portal: 10.1.8.10,3260] successful.#选项说明:
-m node 登录模式
-T iqn.2025-09.cloud.laoma.server.x8664:db 服务器IQN
-l login

5.识别为本地硬盘 sdb

[root@client ~ 18:13:45]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0   47G  0 lvm  /home
sdb               8:16   0  100G  0 disk 
sr0              11:0    1  4.4G  0 rom  
  1. 使用存储
[root@client ~ 18:14:18]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=4, agsize=6553600 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12800, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0[root@client ~ 18:14:36]# vim /etc/fstab 
# 最后添加一条记录
/dev/sdb /usr/share/nginx/html xfs defaults        0 0[root@client ~ 18:18:05]# tail -n 1 /etc/fstab
/dev/sdb /usr/share/nginx/html xfs defaults [root@webapp ~ 18:23:49]# mount -a
[root@webapp ~ 18:24:23]# df /usr/share/nginx/html/
文件系统           1K-块  已用      可用 已用% 挂载点
/dev/sdb       104806400 32992 104773408    1% /usr/share/nginx/html[root@webapp ~ 18:25:06]#  echo Hello data From iSCSI for nginx > /usr/share/nginx/html/index.html
[root@webapp ~ 18:25:29]# curl http://10.1.8.11/
Hello data From iSCSI for nginx

oot@webapp ~ 18:23:49]# mount -a
[root@webapp ~ 18:24:23]# df /usr/share/nginx/html/
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb 104806400 32992 104773408 1% /usr/share/nginx/html

[root@webapp ~ 18:25:06]# echo Hello data From iSCSI for nginx > /usr/share/nginx/html/index.html
[root@webapp ~ 18:25:29]# curl http://10.1.8.11/
Hello data From iSCSI for nginx


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

相关文章:

  • 如何确保CMS系统能够快速响应用户请求?全面性能优化指南
  • 【202509新版】Hexo + GitHub Pages 免费部署个人博客|保姆级教程 第三部
  • 同时使用ReactUse 、 ahooks与性能优化
  • 跨境电商怎么做一件代发宁波关键词排名优化平台
  • FreeFusion:基于交叉重构学习的红外与可见光图像融合
  • GraphRAG对自然语言处理中深层语义分析的革命性影响与未来启示
  • 数据分析-60-工业时序数据分析之开关频次
  • C++入门基础知识157—【用一篇博文简单了解数据结构之红黑树】
  • 做网站课程报告阜阳网站建设哪家好
  • 吃透 Java 中的 break 与 continue
  • 【Android之路】kotlin和Jatpack compose
  • 渗透测试入门:从网络抓包到Web安全基础
  • 阿里云CDN加速流量消耗大原因:动态加速
  • 云栖2025 | 阿里云自研大数据平台 ODPS 重磅升级:全面支持AI计算和服务
  • FreeRTOS内存分配与STM32内存布局详解
  • 外贸建站的公司wordpress如何汉化主题
  • phpcms网站系统 技术方案 系统框架图网站系统开发团队简介
  • vue3+ts项目实现陕西省3d地图
  • leetcode_146 LRU缓存
  • Python常用自动化测试框架—Pytest详解
  • 郑州英文网站建设软件开发平台搭建
  • 在 C# .NETCore 中使用 MongoDB(第 3 部分):跳过、排序、限制和投影
  • 建设网站入什么科目最大的商标交易平台
  • esp32墨水屏学习3
  • DOM(二):事件监听、事件类型、事件对象、环境对象、回调函数、Tab栏切换
  • net6.0 WebApi 中使用 Entity Framework Core + Sqlite
  • 前端2.0
  • PostIn入门到实战(4) - 如何使用接口Mock尽早满足前端开发需求
  • 【论文阅读 | TGRS 2025 | DHANet:用于多模态无人机目标检测的双流分层交互网络​​】
  • 零知IDE——STM32F407VET6与ADS1115模数转换器实现多通道数据采集显示系统