iSCSI-服务搭建
介绍
SCSI (Small Computer System Interface) 是一种用于连接计算机系统与外部设备(如硬盘驱动器, 磁带机, 光驱等) 进行数据传输和控制的标准接口.
而 iSCSI (Internet Small Computer System Interface) 则是把 SCSI 协议封装到 TCP/IP 协议栈中,通过网络传输 SCSI 命令和数据. 这使得远程计算机可以通过 IP 网络访问远程存储设备.
一些概念
NAS
NAS (Network Attached Storage) 是一种存储设备, 通过网络协议以提供文件级别的数据存储服务, 常见的协议如 NFS, SMB/CIFS.
可以把 NAS 理解为一个 file server.
SAN
SAN (Storage Area Network), 是一种专用高速网络, 用于连接存储设备和服务器. 其通过光纤或以太网等传输数据, 可用于多个服务器共享存储设备. 常见接口为 SCSI.
可以把 SAN 视为一个外接的存储设备, 可以提供磁盘.
将 SAN 应用到局域网外, 则通过使用 iSCSI.
RAID
RAID (Redundant Array of Independent Disks), 是一种数据存储技术, 通过将多个独立的硬盘驱动器组合成一个逻辑存储单元, 提供数据冗余和性能增强.
不同的 RAID 级别 (如 RAID 0, RAID 1, RAID 5等) 提供不同的数据保护级别和性能特性
iSCSI 相关概念
iSCSI 架构将存储装置和使用的主机分为两个部分:
- iSCSI target
- iSCSI initiator
示意图:
iSCSI target
存储设备端, 存放磁盘或 RAID 的设备, 目前也能够将 Linux 主机仿真成 iSCSI target.
iSCSI initiator
能够使用 target 的客户端, 通常是服务器.
iSCSI target 的设置
需要安装 scsi-target-utils
, 其能够将 Linux 系统仿真成 iSCSI target:
1 |
|
这个软件包提供的重要文件有:
/etc/tgt/targets.conf
, 主配置文件, 设置要分享的磁盘格式与哪几块/usr/sbin/tgt-admin
, 可在线查询, 删除 target 等功能/usr/sbin/tgt-setup-lun
, 建立 target 以及设置分享的磁盘和可使用的客户端等/usr/sbin/tgtadm
, 用于手动直接管理 (可使用配置文件取代)/usr/sbin/tgtd
, 提供 iSCSI target 服务的主程序/usr/sbin/tgtimg
, 用于搭建预计共享的映像文件设备
可设置分享的磁盘类型
dd
命令创建的文件- 单一的分区
- 单一完整的分区
- 磁盘阵列
- 软件磁盘阵列
- LVM 设置的 LV 设备
iSCSI target 文件名
iSCSI target 都是以 iqn (iSCSI Qualified Name) 开头, 命名一般遵循:
1 |
|
identifier
则为自己取的名称.
如:
1 |
|
一个 target 可以拥有多个磁盘装置, 每个在同一个 target 上的磁盘可以为其定义逻辑单位编号 (Logical Unit Number, LUN)
iSCSI initiator 就是和 target 协调后取得 LUN 的存储权.
/etc/tgt/targets/conf 的设置
语法如:
1 |
|
示例:
1 |
|
除 backing-store
以外, 还有:
direct-store
, 只有当整个磁盘用于分享时才会用到initiator-address
, 限制客户端的来源incominguser
, 设置账目密码才能访问write-cache [off|on]
, 是否设置 cache
假设仅允许 192.168.100.0/24
网段, 且有账户密码分别为 vbirduser, vbirdpasswd, 则配置为:
1 |
|
启动 iSCSI, 查看信息以及防火墙设置
1 |
|
查看端口
1 |
|
查看 target 相关信息, 以及 LUN
1 |
|
防火墙设置
1 |
|
iSCSI initiator 的设置
需要安装 scsi-initiator-utils
, 其能够挂载来自 target 的磁盘到 Linux 主机上:
1 |
|
重要文件有:
/etc/iscsi/iscsid.conf
, 主配置文件, 用于连接到 iSCSI target/usr/sbin/iscsid
, 启动 iSCSI initiator 的主程序/usr/sbin/iscsiadm
, 管理 iSCSI initiator
设置登录用的账户密码
修改 /etc/iscsi/iscsi.conf
文件:
1 |
|
侦测 target 的相关数据
1 |
|
侦测到的信息会存储到 /var/lib/iscsi/nodes/
目录下.
1 |
|
根据侦测的数据启动 target
1 |
|
显示目前系统上所有的 target 数据
1 |
|
登入某一个 target
1 |
|
更新/删除/新增 target 数据
登出一个 target
1 |
|
基于命令行的 target 配置
主要用 tgtadm
命令, 启用于管理 target.
创建一个 target
1 |
|
--lld iscsi
, “lower-level driver”, 指定使用 ISCSI 作为底层存储驱动--mode target
, 表示要操作的对象是 ISCSI 存储目标--op new
, “operation”, 表示要执行的具体操作是 “new”, 即创建一个新的目标--tid 1
, “target id”, 指定创建目标的 ID 为 1--targetname
, 指定 target 名称
查看创建的 target 信息
1 |
|
给一个 target 添加新的 LUN
1 |
|
--tid 1
: 指定我们要在 ID 为 1 的 ISCSI 存储目标上创建这个逻辑单元--lun 1
: 为新创建的逻辑单元指定一个逻辑单元号为 1--backing-store /dev/vdb
: 指定这个逻辑单元的后备存储设备是/dev/vdb
, 这个设备可以是一个物理磁盘分区或者一个逻辑卷
target 共享配置
1 |
|
--initiator-address 192.168.1.21
: 指定要绑定的 ISCSI initiator 的 IP 地址为 192.168.1.21
注意 IP 共享为 target 级别的.
删除允许连接的 initiator 地址
1 |
|
删除指定 tid 下的 lun
1 |
|
删除 target
1 |
|
基于命令行的 initiator 操作
发现 target
1 |
|
-m
, “mode”, 实际上是指定 operation, 这里是发现-t
, “type”, 只有 discovery mode 需要用到, 表明查找的类型是什么-p
, “portal”, 要查找的 ipv4 地址和端口
关联所有发现的 targets
1 |
|
-m node
, 表示对已发现的 iSCSI 节点操作-L all
, “login all”, 登入所有节点
之后可用:
1 |
|
查看.
登出 target
1 |
|
-T
, “targetname”, 指定 targetname 以操作-u
, “logout”, 登出操作
越过发现指定连接
1 |
|
-l
, “login”
查看连接状态
1 |
|
启用自动登录
1 |
|