在现代数据中心和云计算环境中,iSCSI协议(Internet Small Computer System Interface)是一种广泛使用的块级存储技术。它允许你通过标准的TCP/IP网络将远程存储设备挂载为本地磁盘,从而实现高效、灵活的存储管理。本教程将手把手教你如何在Linux系统中配置iSCSI initiator(客户端)并连接到iSCSI target(服务器),即使是完全的新手也能轻松上手。
什么是iSCSI?
iSCSI是一种基于IP网络传输SCSI命令的协议。简单来说,它让你可以通过网络把远程硬盘“当成”本地硬盘来使用。这种技术常用于虚拟化平台、数据库服务器等需要高性能、低延迟存储的场景。
准备工作
在开始之前,请确保:
- 你有一台运行Linux的客户端机器(如Ubuntu、CentOS等)
- 你有一个可访问的iSCSI target服务器(可以是NAS设备或另一台Linux服务器)
- 客户端与target之间网络互通,且防火墙允许iSCSI端口(默认3260)通信
步骤一:安装iSCSI initiator工具
在大多数Linux发行版中,你需要安装open-iscsi包:
# Ubuntu/Debiansudo apt updatesudo apt install open-iscsi# CentOS/RHELsudo yum install iscsi-initiator-utils# 或者在较新版本中sudo dnf install iscsi-initiator-utils 步骤二:启动并启用iSCSI服务
sudo systemctl start iscsidsudo systemctl enable iscsid 步骤三:发现iSCSI target
使用iscsiadm命令扫描可用的target。假设你的target服务器IP是192.168.1.100:
sudo iscsiadm -m discovery -t st -p 192.168.1.100 如果成功,你会看到类似以下输出:
192.168.1.100:3260,1 iqn.2024-06.com.example:storage.disk1 步骤四:登录并挂载iSCSI目标
使用发现到的target名称进行登录:
sudo iscsiadm -m node -T iqn.2024-06.com.example:storage.disk1 -p 192.168.1.100 --login 登录成功后,系统会自动创建一个块设备(如/dev/sdb)。你可以用lsblk命令查看:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk ├─sda1 8:1 0 512M 0 part /boot└─sda2 8:2 0 19.5G 0 part /sdb 8:16 0 10G 0 disk ← 这就是iSCSI磁盘! 步骤五:格式化并挂载使用
首次使用时,需要格式化该磁盘(注意:这会清除所有数据):
sudo mkfs.ext4 /dev/sdbsudo mkdir /mnt/iscsisudo mount /dev/sdb /mnt/iscsi 现在你就可以像使用本地磁盘一样使用这个远程存储了!
自动挂载设置(可选)
为了让系统重启后自动重新连接iSCSI target并挂载,你可以将挂载信息写入/etc/fstab,但更推荐的做法是让iSCSI initiator自动重连。通常,只要登录过一次,open-iscsi会在系统启动时自动重新连接已保存的target。
常见问题与安全提示
- 性能问题:确保网络带宽充足,建议使用千兆或万兆以太网。
- 安全性:iSCSI默认不加密,建议在受信任的内网中使用,或配合IPsec/VLAN增强安全。
- 多路径:生产环境可配置多路径I/O(multipath)提高可用性。
通过本教程,你应该已经掌握了在Linux中使用iSCSI initiator连接远程存储的基本方法。无论你是搭建家庭实验室还是管理企业级存储,Linux网络存储中的iSCSI都是一个强大而实用的工具。
提示:操作前请务必备份重要数据,避免误操作导致数据丢失。
