iSCSI共享存储实战指南:从服务器配置到多主机挂载全流程解析

1. 为什么你需要iSCSI共享存储?

如果你管理过几台服务器,肯定遇到过这样的头疼事:A服务器上的硬盘快满了,B服务器上却还有大量闲置空间,数据没法直接挪过去用。或者,你想给几台虚拟机提供一个共同的“数据仓库”,让它们都能读写同一份数据,比如搭建一个高可用的数据库集群。这时候,iSCSI 就该登场了。

简单来说,iSCSI就是一种“网络硬盘”技术。它能把一台服务器(我们叫它Target,目标器)上的物理硬盘、分区或者逻辑卷,“伪装”成一块通过网络访问的虚拟硬盘。其他服务器(我们叫它Initiator,启动器)通过标准的以太网,就能像使用本地硬盘一样,去挂载和使用这块“网络硬盘”。

这带来的好处是显而易见的:

  • 集中管理:所有存储资源都在一台或几台存储服务器上,备份、扩容、维护都方便。
  • 灵活分配:可以根据需要,给不同的主机分配不同大小的“虚拟硬盘”(LUN)。
  • 成本低廉:利用现有的IP网络,无需投资昂贵的光纤交换机(FC-SAN),特别适合中小企业和实验室环境。
  • 跨平台:Windows、Linux、VMware等主流系统都原生支持iSCSI客户端,兼容性极好。

我过去在搭建虚拟化平台和数据库集群时,iSCSI是构建共享存储的首选方案。它没有想象中那么复杂,跟着我的步骤,从零开始搭建一套可用的iSCSI存储环境,半小时内你就能搞定。

2. 搭建iSCSI服务器端(Target)

我们先把提供存储的那台服务器配置好。这里我以CentOS/RHEL 7/8为例,其他发行版命令可能略有不同,但思路完全一致。

2.1 环境准备与磁盘规划

首先,确保你的存储服务器有一块或多块额外的硬盘或分区用于共享。千万别把系统盘共享出去,那会出大问题。你可以用 lsblkfdisk -l 命令查看现有磁盘。

假设我们有一块额外的硬盘 /dev/sdb,我们打算分两个区出来做共享:

# 使用fdisk或parted对/dev/sdb进行分区,这里简单演示创建两个主分区
sudo fdisk /dev/sdb
# 在fdisk交互界面中,依次输入 n (新建), p (主分区), 1 (分区号1), 回车 (起始扇区), +10G (大小)
# 然后输入 t (修改类型), 1 (选择分区1), 8e (Linux LVM类型,虽然不是必须,但好管理)
# 同样步骤创建第二个分区,比如再分10G
# 最后输入 w 保存并退出
sudo partprobe /dev/sdb # 让内核重新读取分区表

现在你应该能看到 /dev/sdb1/dev/sdb2 这两个分区了。它们就是我们待会儿要共享出去的“原材料”。

2.2 安装与启动target服务

CentOS/RHEL的存储服务软件包叫 targetcli,它是一个非常友好的交互式配置工具。

sudo yum install -y targetcli # CentOS 7/8
# 如果是RHEL 8,可能需要启用并订阅相关仓库
# 如果是Ubuntu/Debian,软件包是 `targetcli-fb`
sudo systemctl enable target --now # 启动并设置开机自启
sudo systemctl status target # 检查服务状态,确认是 active (running)

安装启动后,直接输入 targetcli 就能进入它的专属配置Shell。这个Shell有自己的目录结构,别和系统根目录搞混了。

2.3 核心配置四步曲

进入 targetcli 后,跟着我做下面四步,像搭积木一样就把服务端配好了。

第一步:创建后端存储对象(Backstore) 这步是把我们准备好的物理分区(/dev/sdb1)注册到iSCSI服务里,并给它起个名字,比如 disk_shared1

/> cd /backstores/block
/backstores/block> create disk_shared1 /dev/sdb1
Created block storage object disk_shared1 using /dev/sdb1.

你可以用 ls 命令查看创建好的对象。这里 block 类型表示我们用的是块设备,还有 fileio(文件镜像)、ramdisk(内存盘)等其他类型,但最常用、性能最好的就是 block

第二步:创建iSCSI目标(Target) Target是给客户端看的“入口”或“门户”。它有一个全球唯一的名称,格式是 iqn.年月.域名反写:自定义标识

/> cd /iscsi
/iscsi> create iqn.2023-05.com.example.www:storage.target1
Created target iqn.2023-05.com.example.www:storage.target1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

命令执行后,系统自动创建了一个目标门户组(TPG 1),并默认在所有IP的3260端口上监听。iqn.2023-05.com.example.www:storage.target1 这个字符串很重要,客户端就靠它来找到你。

第三步:在Target中创建LUN并关联存储 LUN(逻辑单元号)可以理解为Target这个“柜子”里的一个个“抽屉”。客户端最终挂载到的是具体的L

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值