代码改变世界

《鸟哥的Linux私房菜 服务器架设篇(第三版)》 第18章 网络驱动器设备:iSCSI服务器 笔记

2019-07-16 21:57  受匕图灵  阅读(560)  评论(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 的信息不见了!这样瞭了乎!