一、实验环境(rhel7.0版本)
主机环境:rhel7.0
各主机信息
主机名 | IP |
---|---|
server | 172.25.254.1 |
client | 172.25.254.2 |
二、iSCSI 磁盘共享介绍
如果你的系统需要大量的磁盘容量,但是身边却没有 NAS (CIFS 文件系统、NFS 文件系统等)或外接的存储设备,仅有个人计算机,那怎么办?此时,通过网络的 SCSI 磁盘(iSCSI)就能够提供帮助。这个 iSCSI 是将来自网络的数据仿真成本机的 SCSI 设备,因此可以进行诸如 LVM 方面的操作,而不是单纯使用服务器端提供的文件系统而已,相当有帮助。
1、NAS 与 SAN
(1)NAS(Network Attached Storage,网络附加存储服务器)
基本上,NAS 其实就是一台可以提供大容量文件系统地主机,只要将 NAS 连接上网络,那么在网络上面的其他主机就能够访问 NAS 上的数据了。简单地说,NAS 就是一台 File Server。
NAS 也通常支持 TCP/IP,并会提供 NFS、SAMBA、FTP 等常见地通信协议来提供客户端取得文件系统。
(2)SAN(Storage Area Networks,存储局域网)
单台主机能够提供的磁盘接口再怎么样也是有限的,所以并不能无限制地在同一台实体主机上面安插磁盘。但是如果偏偏你就是有大量磁盘使用地需求,那怎么是好?这时就需要使用到 SAN 了。
最简单的看法,就是将 SAN 视为一个外接式的存储设备。一般单纯的外接式存储设备仅能通过某些接口(SCSI 或 SATA)提供单独一台主机使用,而 SAN 却可以通过某些特殊的接口或信道来提供局域网内的所有机器进行磁盘访问。要注意,SAN 提供“磁盘(block device)”给主机用,而不像 NAS 提供的是“网络协议的文件系统(NFS、SAMBA)”。
NAS 和 SAN 的差异挺大的。因此,挂载使用 SAN 的主机会多出一个大磁盘,并可针对 SAN 提供的磁盘进行分区与格式化等操作。想想看,你能对 NAS 提供的文件系统格式化吗?不能。
既然,SAN 可以提供磁盘,而 NAS 则是提供相关的网络文件系统,那么 NAS 能不能通过网络去使用 SAN 所提供的磁盘呢?答案是当然可以。因为 SAN 最大的目的就是提供磁盘给服务器主机使用,NAS 也是一台完整的服务器,所以 NAS 当然可以使用 SAN。同时其他的网络服务器也能够使用这个 SAN 来进行数据访问。
2、iSCSI 介绍
之前介绍过网络文件共享系统NFS和CIFS。在系统中,设备也是可以共享的,这就是iSCSI(Internet Small Computer System Interface,小型网络计算机系统接口),它可以用来建立和管理IP存储设备、主机和客户机等之间的相互连接。磁盘共享的方式不使用文件系统,直接传送二进制,传送更高效。下面将简要介绍这种网络设备共享系统。
- iSCSI target:就是储存设备端,存放磁盘或 RAID 的设备,目前 也能够将 Linux 主机仿真成 iSCSI target 了。目的在于提供其他主机使用的磁盘。
- iSCSI initiator:就是能够使用 target 的客户端,通常是服务器。也就是说,想要连接到 iSCSI target 的服务器,也必须要安装 iSCSI initiator 的相关功能后才能够使用 iSCSI target 提供的磁盘。
- IQN:“iSCSI限定名称”。每个发起端和目标需要唯一名称进行标识,最好的做法是使用一个在Internet上可能独一无二的名称。
3、iSCSI 磁盘共享的常用的基本概念
名词 对应说明 target iscsi 服务器上的存储资源 initiator(启动器) 以软件或硬件实施的 iscsi客户端 node 单个 iscsi启动器或者目标 wwn 用于标识单个光纤通道端口和节点的唯一编号 IQN 用于标识单个 iSCSI 目标和启动器的唯一名称(全部小写) LUN iSCSI 服务器上的块设备 TPG 启动器或者目标上的单个 IP 连接地址 ACL 访问权限控制列表,用来验证客户端启动器的访问,通常是客户端 iSCSI 启动器的 IQN 名称 Portal 网络接口及端口
- IQN 的格式为:
iqn.年份-月份.com|cn|net|org.域名:自定义标识
如:iqn.2018-08.com.xin:desktop
;其中的字母均应为小写,即使输入时包含大写,命令执行后,系统会自动转换成小写。
4、iSCSI 磁盘共享的服务端的存储类型
可用于 iSCSI 的服务存储类型用四种:
类型 说明 block 块设备,磁盘驱动器、磁盘分区、逻辑卷、以及服务器上定义的任何 b
类型的设备文件fileio 在服务器上生成的一个指定大小的文件,类似于虚拟机中的虚拟磁盘 pscsi 物理 SCSI,通常不使用 ramdisk 内存盘,其中存储的数据在服务器重启后将全部丢失 以上四种类型在 iSCSI 管理中都归到 backstores 项下,其结构示例为:
5、ISCSI 的服务端口
ISCSI这个服务的端口开在 3260
三、iscsi磁盘共享的配置过程
服务端(target)——172.25.254.1:
1、
因为iSCSI是设备共享系统,所以在进行操作之前,需要先有一个硬盘设备。本文使用"fdisk /dev/vdb"来新建一个分区设
备"/dev/vdb1"来作为共享设备(因为lvm可以拉伸和缩减,所以本文建立的分区为lvm分区)。
LVM适用于设备大小提前未知的情况,即可以扩大和压缩磁盘空间,其本质也是一个设备,所以也可以应用于iSCSI,使得
共享设备在空间不够时可以实现空间扩大。
分区过程
lvm的建立过程
2、服务端需要安装targetcli软件,来提供targetcli命令
yum install targetcli -y
这里需要注意的是:该软件下载好之后,不用开启相应的服务(当然也可以利用命令"systemctl start target"开启target服务。只是开启了target服务之后,利用targetcli命令进入交互界面时,不会再出现警告。如果是开启该服务进行配置的。那么在下次开机再次进行测试时,该服务也是必须开启的)
3、关闭防火墙设置开机不启动或者对防火墙进行设置。
【1】、方法一:关闭防火墙,并设置防火墙开机不自启动
systemctl stop firewalld
systemctl disable firewalld
【2】、方法二:或者对防火墙进行配置
对防火墙进行设置:firewall-cmd --permanent --add-port=3260/tcp
4、输入"targetcli"命令,进入下图界面,输入"ls"可以查看是否有配置(当然也可以输入help查看帮助)。
5、下面对共享设备"/dev/vdb1"进行配置,配置步骤如下所示:
要实现的功能为:创建新的 iSCSI Target,添加已创建的磁盘分区作为 Backstore,并且仅限于 initiname 为iqn.2018-11.com.xin:xinkey的客户端使用。
(1)添加已创建的逻辑卷(/dev/vg0/lv0)到 backstores 项下:
/backstores/block create xin:storage1 /dev/vg0/lv0。建立一个基于"/dev/vg0/lv0"的共享设备,名称为xin:storage1(共享设备)。
(2)创建新的 Target:
/iscsi create iqn.2018-11.com.xin:storage1"。建立一个"iscsi",名称为"iqn.2018-11.com.xin:storage1"(共享名称),用于客户端连接。
创建iqn后就会出现tpg : Target Protal Group (目标端口组),包括acls、luns、portals 这些设置选项。
acl (acess control list,访问控制列表):指定哪些人可以访问我们共享的东西。
lun (logical unit number,逻辑单位编号):给我们共享出去的东西里面的每个设备一个编号
portal (端口号):从哪个端口访问我们的共享出去的东西。默认是3260(添加protal时就可以看到。需要我们指定的这个target所在主机的IP,然后默认端口是3260)
(3)在 tpg 项下,新建 acl 设置 IQN 为iqn.2018-11.com.xin:xinkey的客户端使用:
"/iscsi/iqn.2018-11.com.xin:storage1/tpg1/acls create iqn.2018-11.com.xin:xinkey"。生成一个加密密钥,密钥名称为xinkey。
(4)添加 backstores 磁盘到 lun 项下,系统将自动映射到acl iqn.2018-11.com.xin:xinkey项下:
"/iscsi/iqn.2018-11.com.xin:storage1/tpg1/luns create /backstores/block/xin:storage1"。将建立的"iscsi"(共享名称)与建立的"xin:storage1"(共享设备)连接起来。
(5) 指定的这个target所在主机的IP:(本机ip)
"/iscsi/iqn.2018-11.com.xin:storage1/tpg1/portals create 172.25.254.1"。打开服务的端口,到服务器的ip。
(6)完成后输入"exit"退出。配置就完成了。
在服务端配置完成后,就需要在客户端挂载这个设备,如果挂载成功,那么就实现了网络设备共享。在客户端还要做如下配置:
客户端(initator)——172.25.254.2:
1、安装相应的软件,并打开服务
yum install iscsi-initiator-utils.x86_64 -y
systemctl start iscsid.service(该服务在安装完软件之后是,自动启动的,所以也可以不需要手动启动。即开启服务这步可做,可不做)
2、
编辑认证文件/etc/iscsi/initiatorname.iscsi,并重启服务
在这个文件中编写服务端中设置的加密密钥,输入"InitiatorName=iqn.2018-11.com.xin:xinkey"。
3、发现设备
查看"172.25.254.1"的主机即服务端共享了什么设备。
iscsiadm -m discovery -t st -p 172.25.254.1
4、使用设备
加载服务端共享的设备"iqn.2018-11.com.xin:storage1"。
iscsiadm -m node -T iqn.2018-11.com.xin:storage1 -p 172.25.254.1 -l
-T表示网络设备名称;-l表示登陆
5、查看设备
利用命令"fdisk -l"。可以看到系统识别的设备里多了一个设备"/dev/sda"(这里需要注意的是:服务端共享的设备是/dev/vg0/lv0,而在客户端看到的是/dev/sda)。
6、
"fdisk /dev/sda"。对这个设备分区,完成后输入"mkfs.xfs /dev/sda1"来格式化设备,以便挂载进行使用。
对/dev/sda进行分区
为/dev/sda1铺设文件系统
7、上述步骤完成后,客户端就可以挂载这个设备"/dev/sda1",进行使用了。
当lvm的空间不够时,在服务端,通过下面的操作,扩大空间
服务端——172.25.254.1:
新增一个lvm分区
拉伸lvm
这里需要注意的是:想要,拉伸lvm,指定的PE的个数是总的PE的个数,而不是,剩余的PE的个数
客户端——172.25.254.2:
但是在服务端的lvm扩大空间后,客户端并不能自动刷新。如下图所示,将这个lvm设备扩大至"1.97g",需
要在客户端先输入命令"iscsiadm -m node -T iqn.2017-08.com.example:storage1 -u"卸载这个加载的设备,然
后"iscsiadm -m node -T iqn.2017-08.com.example:storage1 -l"重新挂载这个设备,
再使用"fdisk -l"就可以看到这个共享设备的空间成功扩大至1.9g了。
四、客户端共享设备的自动挂载
客户端——172.25.254.2:
无法开机挂载,因为是网络磁盘。启动的时候,磁盘先挂载,但是没有启动网络无法获取硬盘。
需要声明为网络设备,才可以自动挂载。
测试成功:系统重启之后,仍然在挂载
五、客户端的共享设备卸载:客户端卸载 iSCSI Target
出于种种目的,如:磁盘扩容、客户端不再使用 iSCSI 进行数据存储、客户端布署其他应用而不再使用原应用等等,就需要将已经挂载的 iSCSI Target 进行卸载,并出于信息安全的目的,删除已经保存的服务端的相关信息,这时就需要进行下面的操作。具体步骤如下所示:
要卸载已经挂载到客户端系统目录上的iSCSI Target,首先要确认当前分区没有被使用,避免出现数据丢失。
- 先在客户端上卸载已挂载的磁盘分区。
- 卸载并删除共享设备
1、vim /etc/fstab 将共享设备的自动挂载的代码注释掉
2、umount /mnt 卸载挂载的共享设备。
3、
iscsiadm -m node -T iqn.2018-11.com.xin:storage1 -u 卸载之前所加载的共享设备,只是暂时卸载。
(此时发现,执行"iscsiadm -m node -T iqn.2018-11.com.xin:storage1 -l"这个命令之后,通过"df"命令,发现/dev/sda1自动挂载)
4、
iscsiadm -m node -T iqn.2018-11.com.xin:storage1 -o delete 删除这个共享设备
要删除共享设备的原因是:如果只是使用卸载命令,虽然使用"fdisk -l"看不到这个设备,但是如果重启"iscsi"服务(systemctl restart iscsi,而不是systemctl restart iscsid.service——这个重启之后,也是看不到的),这个设备还会自动重新加载,所以需要删除这个设备。
可以下载tree这个软件方便进行查看
可以看到,东西并没有彻底删除,所以要删除共享设备
之后重启服务,通过命令''fdisk -l",也查看不到/dev/sda1
到此就已经在客户端成功删除了 iSCSI Target。
六、服务端的配置的删除:服务端删除 iSCSI Target 及 Backstores
- 前面对服务端的操作,都是添加相关设置,没有删除设置。这里介绍如何进行配置的删除;
- 下面的步骤是从完整的配置删除全部配置到初始化状态的操作。但大家也可以使用其中的一步或几步,删除配置中的某几个内容,而不是全部;
- 进行配置的完整删除,基本上就是正常添加配置的逆过程。之前在添加操作中,由系统自动添加的部分,如客户端 IQN 下的磁盘映射等,不需要手工删除,系统会根据已删除的项目自动进行删除。
方法一:直接全部删除
targetcli 进入共享设备配置界面。
clearconfig confirm=True 输入此命令删除之前所做的所有设备共享配置。(clearconfig命令通过help命令查看)
方法二:一步一步的删除
1、进入 targetcli 并查看当前设置
2、删除 portals 入口点 IP 和端口
3、删除 luns 添加的 Backstore 磁盘
4、删除 acls 中客户端 IQN 的认证信息
5、删除 iSCSI Target
6、删除 Backstroes 中已加入的磁盘
所有的设置都已删除,恢复到初始配置状态。