• 17.4 配置Linux客户端

    17.4 配置Linux客户端

    我们在前面的章节中已经配置了很多Linux服务,基本上可以说,无论是什么服务,客户端的配置步骤都要比服务端的配置步骤简单一些。在RHEL 7系统中,已经默认安装了iSCSI客户端服务程序initiator。如果您的系统没有安装的话,可以使用Yum软件仓库手动安装。

    1. [root@linuxprobe ~]# yum install iscsi-initiator-utils
    2. Loaded plugins: langpacks, product-id, subscription-manager
    3. Package iscsi-initiator-utils-6.2.0.873-21.el7.x86_64 already installed and latest version
    4. Nothing to do

    前面讲到,iSCSI协议是通过客户端的名称来进行验证,而该名称也是iSCSI客户端的唯一标识,而且必须与服务端配置文件中访问控制列表中的信息一致,否则客户端在尝试访问存储共享设备时,系统会弹出验证失败的保存信息。

    下面我们编辑iSCSI客户端中的initiator名称文件,把服务端的访问控制列表名称填写进来,然后重启客户端iscsid服务程序并将其加入到开机启动项中:

    1. [root@linuxprobe ~]# vim /etc/iscsi/initiatorname.iscsi
    2. InitiatorName=iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80:client
    3. [root@linuxprobe ~]# systemctl restart iscsid
    4. [root@linuxprobe ~]# systemctl enable iscsid
    5. ln -s '/usr/lib/systemd/system/iscsid.service' '/etc/systemd/system/multi-user.target.wants/iscsid.service'

    iSCSI客户端访问并使用共享存储资源的步骤很简单,只需要记住刘遄老师的一个小口诀“先发现,再登录,最后挂载并使用”。iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,用户需要先使用这个工具扫描发现远程iSCSI服务端,然后查看找到的服务端上有哪些可用的共享存储资源。其中,-m discovery参数的目的是扫描并发现可用的存储资源,-t st参数为执行扫描操作的类型,-p 192.168.10.10参数为iSCSI服务端的IP地址:

    1. [root@linuxprobe ~]# iscsiadm -m discovery -t st -p 192.168.10.10
    2. 192.168.10.10:3260,1 iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80

    在使用iscsiadm命令发现了远程服务器上可用的存储资源后,接下来准备登录iSCSI服务端。其中,-m node参数为将客户端所在主机作为一台节点服务器,-T iqn.2003-01. org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80参数为要使用的存储资源(大家可以直接复制前面命令中扫描发现的结果,以免录入错误),-p 192.168.10.10参数依然为对方iSCSI服务端的IP地址。最后使用—login或-l参数进行登录验证。

    1. [root@linuxprobe ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 -p 192.168.10.10 --login
    2. Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80, portal: 192.168.10.10,3260] (multiple)
    3. Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80, portal: 192.168.10.10,3260] successful.

    在iSCSI客户端成功登录之后,会在客户端主机上多出一块名为/dev/sdb的设备文件。第6章曾经讲过,udev服务在命名硬盘名称时,与硬盘插槽是没有关系的。接下来可以像使用本地主机上的硬盘那样来操作这个设备文件了。

    1. [root@linuxprobe ~]# file /dev/sdb
    2. /dev/sdb: block special

    下面进入标准的磁盘操作流程。考虑到大家已经在第6章学习了这部分内容,外加这个设备文件本身只有40GB的容量,因此我们不再进行分区,而是直接格式化并挂载使用。

    1. [root@linuxprobe ~]# mkfs.xfs /dev/sdb
    2. log stripe unit (524288 bytes) is too large (maximum is 256KiB)
    3. log stripe unit adjusted to 32KiB
    4. meta-data=/dev/sdb isize=256 agcount=16, agsize=654720 blks
    5. = sectsz=512 attr=2, projid32bit=1
    6. = crc=0
    7. data = bsize=4096 blocks=10475520, imaxpct=25
    8. = sunit=128 swidth=256 blks
    9. naming =version 2 bsize=4096 ascii-ci=0 ftype=0
    10. log =internal log bsize=4096 blocks=5120, version=2
    11. = sectsz=512 sunit=8 blks, lazy-count=1
    12. realtime =none extsz=4096 blocks=0, rtextents=0
    13. [root@linuxprobe ~]# mkdir /iscsi
    14. [root@linuxprobe ~]# mount /dev/sdb /iscsi
    15. [root@linuxprobe ~]# df -h
    16. Filesystem Size Used Avail Use% Mounted on
    17. /dev/mapper/rhel-root 18G 3.4G 15G 20% /
    18. devtmpfs 734M 0 734M 0% /dev
    19. tmpfs 742M 176K 742M 1% /dev/shm
    20. tmpfs 742M 8.8M 734M 2% /run
    21. tmpfs 742M 0 742M 0% /sys/fs/cgroup
    22. /dev/sr0 3.5G 3.5G 0 100% /media/cdrom
    23. /dev/sda1 497M 119M 379M 24% /boot
    24. /dev/sdb 40G 33M 40G 1% /iscsi

    从此以后,这个设备文件就如同是客户端本机主机上的硬盘那样工作。需要提醒大家的是,由于udev服务是按照系统识别硬盘设备的顺序来命名硬盘设备的,当客户端主机同时使用多个远程存储资源时,如果下一次识别远程设备的顺序发生了变化,则客户端挂载目录中的文件也将随之混乱。为了防止发生这样的问题,我们应该在/etc/fstab配置文件中使用设备的UUID唯一标识符进行挂载,这样,不论远程设备资源的识别顺序再怎么变化,系统也能正确找到设备所对应的目录。

    blkid命令用于查看设备的名称、文件系统及UUID。可以使用管道符(详见第3章)进行过滤,只显示与/dev/sdb设备相关的信息:

    1. [root@linuxprobe ~]# blkid | grep /dev/sdb
    2. /dev/sdb: UUID="eb9cbf2f-fce8-413a-b770-8b0f243e8ad6" TYPE="xfs"

    刘遄老师还要再啰嗦一句,由于/dev/sdb是一块网络存储设备,而iSCSI协议是基于TCP/IP网络传输数据的,因此必须在/etc/fstab配置文件中添加上_netdev参数,表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败:

    1. [root@linuxprobe ~]# vim /etc/fstab
    2. #
    3. # /etc/fstab
    4. # Created by anaconda on Wed May 4 19:26:23 2017
    5. #
    6. # Accessible filesystems, by reference, are maintained under '/dev/disk'
    7. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    8. #
    9. /dev/mapper/rhel-root / xfs defaults 1 1
    10. UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
    11. /dev/mapper/rhel-swap swap swap defaults 0 0
    12. /dev/cdrom /media/cdrom iso9660 defaults 0 0
    13. UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /iscsi xfs defaults,_netdev 0 0

    如果我们不再需要使用iSCSI共享设备资源了,可以用iscsiadm命令的-u参数将其设备卸载:

    1. [root@linuxprobe ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80 -u
    2.  
    3. Logging out of session [sid: 7, target : iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80, portal: 192.168.10.10,3260]
    4.  
    5. Logout of [sid: 7, target: iqn.2003-01.org.linux-iscsi.linuxprobe.x8664:sn.d497c356ad80,portal:192.168.10.10,3260] successful.
    6.