Linux运维篇-iscsi存储搭建

概念

iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的存储技术,该技术是将存储行业广泛应用的SCSI接口技术与IP网络技术相结合,可以在IP网络上构建SAN存储区域网,简单地说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术。

实验介绍

使用iSCSI共享存储来模拟存储实际挂载到操作系统中的情况,我这里使用两张网卡模拟两条路径的存储挂载。

IP用途
10.253.170.200客户端IP
10.253.170.201、10.253.170.202存储端IP,使用两个IP模拟多路径挂载

环境准备

两台虚拟机,其中,一台服务器做存储端,需要两张网卡,单独的一块或多块磁盘做共享存储。
在这里插入图片描述另一台做客户端,只需要一张网卡。

在这里插入图片描述需要保障两台服务器之间网络互通,另外,需要配置好yum源,来安装所需的软件。
关于配置yum源,可以参考我之前写的关于yum源搭建的文章。

存储端

软件安装

安装targetcli软件包,我这里已经提前安装过了
在这里插入图片描述
启动target服务,并配置target服务开机自启动,确保服务状态为active
在这里插入图片描述

使用targetcli来管理iSCSI共享存储

使用用tragetcli进入交互模式,修改服务端配置信息

$ targetcli  
/> ls  #使用ls命令查看菜单结构
o- / ..... [...] #顶级目录
  o- backstores ........................... [...] #后备存储,主备存储空间要共享的设备或分区需要添加到此处
  | o- block ............... [Storage Objects: 0] #块存储,backstores子目录
  | o- fileio .............. [Storage Objects: 0] #文件存储镜像img根据一个事先准备的文件提供存储功能,backstores子目录
  | o- pscsi ............... [Storage Objects: 0] #真实物理scsi设备不推荐使用,backstores子目录
  | o- ramdisk ............. [Storage Objects: 0] #闪存利用内存当做存储,backstores子目录    
  o- iscsi ......................... [Targets: 0] #以ISCSI的方式共享存储设备的目录
  o- loopback ...................... [Targets: 0] #回路

在这里插入图片描述将我们准备的分区添加进来(注意我们准备的分区是块设备,所以应将其添加到块设备文件之中)

/>/backstores/block create dev=/dev/sda name=lun0  #通过create命令添加设备dev用来指定要添加的设备磁盘,nam为逻辑单元名(可以自定义)

在这里插入图片描述
通过ls命令查看所添加的设备
在这里插入图片描述创建 iSCSI target

iSCSI target 名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。稍后用户在扫描 iSCSI 服务端时即可看到这个字符串,因此我们不需要记住它。系统在生成这个 target 名称后,还会在/iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到 iSCSI 共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录 iSCSI 服务端后,即可默认使用这硬盘设备提供的共享存储资源了。

也可自定义生成target 名称如下规则:

通用格式:iqn.YYYY-MM.com.reversed.domain[:optional_string];
iqn:表示此名称将使用域作为其标识符;
YYYY-MM:拥有域名的第一个月;
com.reversed.domain:此 iSCSI 名称的创建组织的逆向域名;
optional_string:以冒号为前缀的可选字符串

在这里插入图片描述
查看target
在这里插入图片描述默认会一个网络监听信息 {portal} 以发现target,也可以删除默认监听自行添加
在这里插入图片描述我这里配置两个IP来做共享,因为要模拟两条路径的情况

/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/portals/ delete 0.0.0.0 3260 
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/portals/ create 10.253.170.201 3260 
/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/portals/ create 10.253.170.202 3260 

配置共享资源

创建LUN代表设备(LUN 逻辑单元关联后端存储)

create /backstores/block/lun0 lun=lun0 #链接后端存储,lun可以自定义,默认是lun0

在这里插入图片描述设置访问控制列表

在这里插入图片描述开启ACL


/> /iscsi/iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952/tpg1/ set attribute generate_node_acls=1
Parameter generate_node_acls is now '1'.
/>

查看全局配置

/> ls
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 1]
  | | o- test ............................................................................ [/dev/vdb (40.0GiB) write-thru activated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 1]
  | o- iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 ..................................................... [TPGs: 1]
  |   o- tpg1 .................................................................................................. [gen-acls, no-auth]
  |     o- acls .......................................................................................................... [ACLs: 1]
  |     | o- iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 ........................................ [Mapped LUNs: 1]
  |     |   o- mapped_lun0 .................................................................................. [lun0 block/test (rw)]
  |     o- luns .......................................................................................................... [LUNs: 1]
  |     | o- lun0 ....................................................................... [block/test (/dev/vdb) (default_tg_pt_gp)]
  |     o- portals .................................................................................................... [Portals: 2]
  |       o- 10.253.170.201:3260 .............................................................................................. [OK]
  |       o- 10.253.170.202:3260 .............................................................................................. [OK]
  o- loopback ......................................................................................................... [Targets: 0]
  o- vhost ............................................................................................................ [Targets: 0]
  o- xen-pvscsi ....................................................................................................... [Targets: 0]

这里监听端口配置使用默认设置,也就是0.0.0.0:3206,也就是说使用本机的所有IP都可访问到,因为本次测试不涉及到端口监听,所以不用修改这块的配置

退出会自动保存配置信息,并重启target服务
在这里插入图片描述
确认下端口监听是否正常
在这里插入图片描述
到这里,存储端(服务端的配置就完成了)

关闭firewalld和selinux这个两个默认步骤别忘记!!!

客户端

软件安装

安装iSCSI客户端,我这里是open-iscsi

因为操作系统的不同,客户端软件可能会有所不同,但是操作是一样的。

在这里插入图片描述### 配置修改
修改客户端iSCSI 唯一标识
iSCSI 协议是通过客户端的名称来进行验证,而该名称也是 iSCSI 客户端的唯一标识,而且必须与服务端配置文件中访问控制列表中的信息一致,否则客户端在尝试访问存储共享设备时,系统会弹出验证失败的保存信息。
将原先文件中的InitiatorName注释,添加配置好的服务端的InitiatorName
在这里插入图片描述
重启iscsi服务
在这里插入图片描述

连接存储

扫描iSCSI服务端的存储资源,这里没有指定监听IP,所以需要使用客户端的主机IP

m discovery 扫描并发现可用的存储资源
-t sendtargets 指定 SCSI 目标发现
-p xx.xx.xx.xx 指定 iSCSI 发现的网络地址
[root@client ~]# iscsiadm -m discovery -t st -p 10.253.170.201:3260
10.253.170.201:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
10.253.170.202:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
[root@client ~]#
[root@client ~]# iscsiadm -m discovery -t st -p 10.253.170.202:3260
10.253.170.201:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
10.253.170.202:3260,1 iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952
[root@client ~]#

连接iSCSI Target

[root@client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 -p 10.253.170.202:3260 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.202,3260]
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.202,3260] successful.
[root@client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 -p 10.253.170.201:3260 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.201,3260]
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952, portal: 10.253.170.201,3260] successful.

查看客户端的连接情况

sda和sdb设备就是我们的iSCSI存储,到这里iSCSI存储的配置就完成了

[root@client ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   40G  1 disk
sdb             8:16   0   40G  1 disk
sr0            11:0    1  3.9G  0 rom  /mnt
vda           253:0    0   40G  0 disk
├─vda1        253:1    0  600M  0 part /boot/efi
├─vda2        253:2    0    1G  0 part /boot
└─vda3        253:3    0 38.4G  0 part
  ├─klas-root 252:0    0 34.4G  0 lvm  /
  └─klas-swap 252:1    0    4G  0 lvm  [SWAP]

<think>好的,我现在需要帮助用户在Linux系统中配置和挂载iSCSI存储。首先,我得回忆一下iSCSI的基本概念和相关步骤。iSCSI是通过网络将存储设备映射到本地,使其看起来像本地磁盘的一种协议。用户的问题是关于如何在Linux上配置和挂载,所以步骤应该包括安装必要的工具、发现目标、登录目标、分区格式化以及挂载。 首先,检查用户是否已经安装了iscsi-initiator-utils或open-iscsi包。不同的Linux发行版可能包名不同,比如CentOS用yum,Ubuntu用apt。需要确保用户安装了这些工具,否则后续步骤无法进行。然后,需要发现iSCSI目标,这通常使用iscsiadm命令,指定服务器IP和端口。例如,用户提供的引用[3]中提到使用`iscsiadm -m discovery -t st -p <server_ip>`来扫描存储资源。这一步是关键,因为如果发现不了目标,后面的步骤都无法进行。 接下来是登录到目标。发现之后,目标会被列出,用户需要登录才能访问。使用`iscsiadm -m node -T <target_name> -p <server_ip> -l`命令。这里要注意目标名称的正确性,可能需要从发现步骤中获取正确的iqn名称。登录成功后,系统会识别到新的磁盘设备,比如/dev/sdb之类的。这时候需要用户检查是否识别到了新设备,可以用lsblk或者fdisk -l查看。 然后,分区和格式化。根据引用[2]中的注意事项,如果用户需要将存储同时挂载到Windows和Linux,需要注意文件系统类型的问题。但用户可能只是想在Linux上使用,所以推荐使用ext4或xfs等Linux文件系统。使用fdisk或parted创建分区,然后用mkfs命令格式化。这里要提醒用户注意设备路径的正确性,避免误操作其他磁盘。 最后是挂载。创建挂载点,比如/mnt/iscsi,然后用mount命令挂载分区。引用[1]中提到了使用mkdir创建目录,然后用mount命令挂载设备到该目录。为了持久化,还需要在/etc/fstab中添加条目,这样重启后自动挂载。但要注意,如果使用UUID或分区路径,需要确认其正确性。 用户可能遇到的问题包括发现目标失败、登录错误、设备未识别、分区格式化错误以及挂载失败。需要提醒用户检查网络连接、目标配置、权限等。另外,引用[3]中的示例显示扫描时可能需要指定端口3260,用户需要确认服务器端端口是否正确开放。 总结步骤应该是:安装软件包→发现目标→登录目标→分区格式化→挂载。每个步骤给出具体命令,并强调注意事项,比如替换实际的IP、目标名称和设备路径。同时,要提到持久化挂载的方法,以及如何安全卸载和登出目标,以备用户需要卸载时参考。</think>在Linux系统中配置和挂载iSCSI存储的步骤如下: --- ### **1. 安装iSCSI客户端工具** ```bash # CentOS/RHEL sudo yum install iscsi-initiator-utils # Ubuntu/Debian sudo apt-get install open-iscsi ``` --- ### **2. 发现iSCSI存储目标** 使用iSCSI服务端提供的IP地址扫描可用存储资源(替换`<server_ip>`为实际地址): ```bash sudo iscsiadm -m discovery -t st -p <server_ip>:3260 ``` 执行后,终端会返回类似`iqn.2001-05.com.example:storage.target`的目标名称(IQN)[^3]。 --- ### **3. 登录到iSCSI目标** ```bash sudo iscsiadm -m node -T <target_IQN> -p <server_ip> -l ``` 例如: ```bash sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.aarch64:sn.34f9bd0c0952 -p 10.253.170.201 -l ``` --- ### **4. 确认新磁盘设备** 登录成功后,系统会识别新磁盘设备(如`/dev/sdb`或`/dev/sdc`): ```bash lsblk # 查看新增的未分区设备 ``` --- ### **5. 分区与格式化** #### **分区(以`/dev/sdb`为例)** ```bash sudo fdisk /dev/sdb # 按提示创建新分区(例如/dev/sdb1) ``` #### **格式化(选择文件系统类型,如ext4)** ```bash sudo mkfs.ext4 /dev/sdb1 ``` > **注意**:若需跨平台使用,需选择兼容文件系统(如NTFS),但Linux和Windows不能同时挂载同一LUN[^2]。 --- ### **6. 挂载iSCSI存储** #### **临时挂载** ```bash sudo mkdir /mnt/iscsi sudo mount /dev/sdb1 /mnt/iscsi ``` #### **永久挂载** 编辑`/etc/fstab`,添加以下行: ```bash /dev/sdb1 /mnt/iscsi ext4 defaults,_netdev 0 0 ``` > **关键参数**:`_netdev`表示网络设备,确保系统启动时等待网络就绪后再挂载[^1]。 --- ### **7. 验证挂载** ```bash df -h /mnt/iscsi # 查看挂载状态 ``` --- ### **卸载与登出(可选)** ```bash # 卸载 sudo umount /mnt/iscsi # 登出iSCSI目标 sudo iscsiadm -m node -T <target_IQN> -p <server_ip> -u ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秣宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值