《鸟哥的Linux私房菜 服务器架设篇(第三版)》 第18章 网络驱动器设备:iSCSI服务器 笔记
2019-07-16 21:57 受匕图灵 阅读(577) 评论(0) 编辑 收藏 举报目录
介绍
NAS
SAN
iSCSI(Internet SCSI)
iSCSI target
安装scsi-target-utils
重要的配置
Target文件共享出的格式
磁盘准备
可以共享的磁盘类型
可以共享的磁盘类型的三大分类
大文件
分区
/etc/tgt/targets.conf
启动tgtd
查看服务
[root@www ~]# netstat -tlunp | grep tgt
[root@www ~]# tgt-admin --show
iSCSI initiator
安装iscsi-initiator-utils
重要的配置
/etc/iscsi/iscsid.conf
启动iscsi
Iscsiadm语法
Iscsiadm操作
介绍
NAS
(Network Attached Storage, 网络附加储存服务器)
NAS就是一部可以提供大容量文件系统的主机
SAN
(Storage Area Networks, 储存局域网络)
iSCSI(Internet SCSI)
早期的企业使用的服务器若有大容量磁盘的需求时,通常是透过 SCSI 来串接SCSI 磁盘,因此服务器上面必须要加装 SCSI 适配卡,而且这个 SCSI 是专属于该服务器的。后来这个外接式的 SCSI 设备被上述提到的 SAN 的架构所取代
iSCSI 这个架构主要将储存装置与使用的主机分为两个部分,分别是:
- · iSCSI target:就是储存设备端,存放磁盘或 RAID 的设备,目前也能够将Linux 主机仿真成 iSCSI target 了!目的在提供其他主机使用的『磁盘』;
- · iSCSI initiator:就是能够使用 target 的客户端,通常是服务器。 也就是说,想要连接到 iSCSI target 的服务器,也必须要安装 iSCSI initiator 的相关功能后才能够使用 iSCSI target 提供的磁盘就是了。
一部服务器通过以下三种放松取得磁盘或者是文件系统来利用的:
- ·直接存取 (direct-attached storage):例如本机上面的磁盘,就是直接存取设备;
- ·透过储存局域网络 (SAN):来自区网内的其他储存设备提供的磁盘;
- ·网络文件系统 (NAS):来自 NAS 提供的文件系统,只能立即使用,不可进行格式化。
iSCSI target
CentOS 将 tgt 的软件名称定义为 scsi-target-utils
安装scsi-target-utils
[root@www ~]# yum install -y scsi-target-utils
重要的配置
- ·/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:建置预计共享的映像文件装置的工具 (以映像文件仿真磁盘);
Target文件共享出的格式:
iqn.yyyy-mm.<reversed domain name>:identifier
iqn.年年-月.单位网域名的反转写法 :这个共享的 target 名称
例:iqn.2011-08.vbird.centos:vbirddisk
磁盘准备
可以共享的磁盘类型
- ·使用 dd 指令所建立的大型档案可供仿真为磁盘 (无须预先格式化);
- ·使用单一分割槽 (partition) 共享为磁盘;
- ·使用单一完整的磁盘 (无须预先分割);
- ·使用磁盘阵列共享 (其实与单一磁盘相同方式);
- ·使用软件磁盘阵列 (software raid) 共享成单一磁盘;
- ·使用 LVM 的 LV 装置共享为磁盘。
可以共享的磁盘类型的三大分类
(1)大型档案;
(2)单一分割槽;
(3)单一装置 (包括磁盘、数组、软件磁盘阵列、 LVM 的 LV 装置文件名等等)
大文件
[root@www ~]# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=500
[root@www ~]# chcon -Rv -t tgtd_var_lib_t /srv/iscsi/
分区
磁盘若有被使用,请 umount或 swapoff
/etc/tgt/targets.conf
[root@www ~]# vim /etc/tgt/targets.conf
# 此档案的语法如下:
<target iqn.相关装置的 target 名称>
backing-store /你的/虚拟设备/完整檔名-1
backing-store /你的/虚拟设备/完整檔名-2
initiator-address (用户端地址)
incominguser (用户账号密码设定)
write-cache [off|on] (是否使用快取,默认为on使用快取)
</target>
<target iqn.2011-04.vbird.centos:vbirddisk>
backing-store /home/iscsi/disk1.img
backing-store /dev/sda7
backing-store /dev/server/iscsi01
initiator-address 192.168.100.0/24
incominguser vbirduser vbirdpasswd
write-cache off
</target>
启动tgtd
[root@www ~]# /etc/init.d/tgtd start
[root@www ~]# chkconfig tgtd on
查看服务
[root@www ~]# netstat -tlunp | grep tgt
3260端口
[root@www ~]# tgt-admin --show
观察target 相关信息,以及提供的 LUN 数据内容。
iSCSI initiator
安装iscsi-initiator-utils
[root@www ~]# yum install -y iscsi-initiator-utils
重要的配置
/etc/iscsi/iscsid.conf:主要的配置文件,用来连结到 iSCSI target 的设定;
/sbin/iscsid:启动 iSCSI initiator 的主要服务程序;
/sbin/iscsiadm:用来管理 iSCSI initiator 的主要设定程序;
/etc/init.d/iscsid:让本机模拟成为 iSCSI initiater 的主要服务;
/etc/init.d/iscsi:在本机成为 iSCSI initiator 之后,启动此脚本,让我们可以登入 iSCSI target。所以 iscsid 先启动后,才能启动这个服务。为了防呆,所以 /etc/init.d/iscsi 已经写了一个启动指令, 启动 iscsi 前尚未启动 iscsid ,则会先呼叫 iscsid 才继续处理 iscsi 喔!
/etc/iscsi/iscsid.conf
[root@clientlinux ~]# vim /etc/iscsi/iscsid.conf
node.session.auth.username = vbirduser <==在 target 时设定的
node.session.auth.password = vbirdpasswd <==约在 53, 54 行
discovery.sendtargets.auth.username = vbirduser <==约在 67, 68 行
discovery.sendtargets.auth.password = vbirdpasswd
[root@clientlinux ~]# chkconfig iscsid on
[root@clientlinux ~]# chkconfig iscsi on
启动iscsi
范例:根据前一个步骤侦测到的资料,启动全部的 target
[root@clientlinux ~]# /etc/init.d/iscsi restart
Iscsiadm语法
找出目前本机上面所有侦测到的 target 信息,可能并未登入喔
iscsiadm -m node
侦测某IP:端口 target 的相关数据
iscsiadm -m discovery -t sendtargets -p IP:port
选项与参数:
-m discovery :使用侦测的方式进行 iscsiadmin 指令功能;
-t sendtargets :透过 iscsi 的协议,侦测后面的设备所拥有的 target 数据,且存储到/var/lib/iscsi/nodes/下!
-p IP:port :就是那部 iscsi 设备的 IP 与埠口,不写埠口预设是 3260 啰!
仅登入某部 target ,不需要重新启动 iscsi 服务
iscsiadm -m node -T target 名称 --login
选项与参数:
-T target 名称:仅使用后面接的那部 target ,target 名称可用上个指令查到!
--login:就是登入啊!
登出
iscsiadm -m node -T targetname --logout
--logout :就是注销 target,但是并没有删除 /var/lib/iscsi/nodes/ 内的数据
删除、新增、修改
iscsiadm -m node -o [delete|new|update] -T targetname
选项与参数:
-o delete:删除后面接的那部 target 链接信息 (/var/lib/iscsi/nodes/*)
-o update:更新相关的信息
-o new:增加一个新的 target 信息。
Iscsiadm操作
范例:侦测 192.168.100.254 这部 iSCSI 设备的相关数据,且存储到/var/lib/iscsi/nodes/下!
[root@clientlinux ~]# iscsiadm -m discovery -t sendtargets -p 192.168.100.254
查看利用 iscsiadm 侦测到的 target 结果:
[root@clientlinux ~]# ll -R /var/lib/iscsi/nodes/
范例:显示出目前系统上面所有的 target 数据:
[root@clientlinux ~]# iscsiadm -m node
结果:192.168.100.254:3260,1 iqn.2011-08.vbird.centos:vbirddisk
范例:仅登入某部 target ,不需要重新启动 iscsi 服务
[root@clientlinux ~]# iscsiadm -m node -T iqn.2011-08.vbird.centos:vbirddisk --login
# 这次进行会出现错误,是因为我们已经登入了,不可重复登入喔!
[root@clientlinux ~]# fdisk -l
会发现主机上面多出了三个新的磁盘
范例:关闭来自鸟哥的 iSCSI target 的数据,并且移除链接
[root@clientlinux ~]# iscsiadm -m node
[root@clientlinux ~]# iscsiadm -m node -T iqn.2011-08.vbird.centos:vbirddisk --logout
[root@clientlinux ~]# iscsiadm -m node -o delete -T iqn.2011-08.vbird.centos:vbirddisk
[root@clientlinux ~]# iscsiadm -m node
iscsiadm: no records found! <==嘿嘿!不存在这个 target 了~
[root@clientlinux ~]# /etc/init.d/iscsi restart
# 你会发现唔!怎么 target 的信息不见了!这样瞭了乎!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架