在Linux上使用 tgt
搭建iSCSI共享存储,可以实现多个客户端同时访问共享存储。
1. 安装iSCSI Target软件包
使用下面命令安装:
#
centos
sudo yum install scsi-target-utils
sudo systemctl status tgtd
# ubuntu
sudo apt-get update -y
sudo apt-get install tgt -y
sudo systemctl status tgt
2. 配置iSCSI Target
编辑iSCSI Target的配置文件 /etc/tgt/targets.conf
,添加你想要共享的磁盘或分区。
<
target
iqn.2023-09.com.example:mytarget
>
backing-store /dev/vdb
</
target
>
iqn.2023-09.com.example:mytarget
是iSCSI目标的唯一标识符, /dev/vdb
是要共享的磁盘或分区。
说明 :
/etc/tgt/conf.d/sample.conf
下面是配置文件示例,更多复杂的配置参考该文件语法格式。- 如果是ubuntu系统,配置文件路径应为:
/etc/tgt/conf.d/iscsi.conf
重启 tgtd
服务使配置生效:
sudo systemctl
enable
tgtd/tgt
sudo systemctl restart tgtd/tgt
显示所有的iSCSI target:
tgtadm
--mode target --op show
3. 配置防火墙
确保iSCSI端口(默认是3260)在防火墙中开放:
sudo firewall-cmd
--add-port=3260/tcp --permanent
sudo firewall-cmd --reload
4. 配置发起端(Initiator)
以linux为例,安装iSCSI Initiator:
#
centos
sudo yum install iscsi-initiator-utils -y
# ubuntu
sudo apt-get install open-iscsi -y
4.1 发现iSCSI target端
在发起端,首先使用以下命令发现目标端上的iSCSI目标:
sudo iscsiadm -m discovery -t st -p
<
目标端IP地址
>
输出类似于:
<目标端
IP
地址>
:3260
,1
iqn
.2023-09
.com
.example
:mytarget
4.2 登录到目标端
sudo
iscsiadm
-m
node
--targetname
iqn
.2023-09
.com
.example
:mytarget
--portal
<目标端
IP
地址>
--login
输出类似于:
Logging
in
to
[iface: default, target: iqn.2023-09.com.example:mytarget, portal: <目标端IP地址>,3260]
(multiple)
Login
to
[iface: default, target: iqn.2023-09.com.example:mytarget, portal: <目标端IP地址>,3260]
successful
.
登录成功后,发起端的系统会检测到一个新的磁盘设备,可以通过 lsblk
或 fdisk -l
查看。
5. 自动登录并挂载iSCSI存储
5.1 配置开机自动登录
sudo
iscsiadm
-m
node
--targetname
iqn
.2023-09
.com
.example
:mytarget
--portal
<目标端
IP
地址>
--op
update
-n
node
.startup
-v
automatic
5.2 挂载iSCSI存储
创建文件系统并挂载新磁盘,例如:
sudo mkfs.ext4 /dev/sdX
sudo
mkdir
/mnt/iscsi_disk
sudo mount /dev/sdX /mnt/iscsi_disk
说明 :
如果是多个发起端挂载同一个LUN,需要配置共享集群文件系统,而ext4等linux常用的文件系统用于单节点的文件系统。
6. 测试
在发起端上可以向挂载的iSCSI存储中写入数据,并通过目标端验证存储是否正常工作。
7. 退出iSCSI会话
如果需要断开连接,可以使用以下命令:
sudo
iscsiadm
-m
node
--targetname
iqn
.2023-09
.com
.example
:mytarget
--portal
<目标端
IP
地址>
--logout