主机挂载镜像
[root@rhel ~]# mount /dev/cdrom /mnt
cat <<EOF>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
yum repolist all
首先在虚拟机中添加4块新硬盘,用于创建RAID 5磁盘阵列和备份盘
使用mdadm命令创建RAID磁盘阵列。其中,-Cv参数为创建阵列并显示过程,/dev/md0为生成的阵列组名称,-n 3参数为创建RAID 5磁盘阵列所需的硬盘个数,-l 5参数为RAID磁盘阵列的级别,-x 1参数为磁盘阵列的备份盘个数。在命令后面要逐一写上使用的硬盘名称。
[root@rhel ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 25 18:52 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 25 18:52 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 25 18:52 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 25 18:52 /dev/sdb
brw-rw----. 1 root disk 8, 32 Oct 25 18:52 /dev/sdc
brw-rw----. 1 root disk 8, 48 Oct 25 18:52 /dev/sdd
brw-rw----. 1 root disk 8, 64 Oct 25 18:52 /dev/sde
[root@rhel ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
使用mdadm -D命令来查看设备的详细信息
[root@rhel ~]# mdadm -D /dev/md0
iSCSI技术在工作形式上分为服务端(target)与客户端(initiator)。iSCSI服务端即用于存放硬盘存储资源的服务器,它作为前面创建的RAID磁盘阵列的存储端,能够为用户提供可用的存储资源。iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源。
表17-1 iSCSI服务端和客户端的操作系统以及IP地址
主机名称 | 操作系统 | IP地址 |
---|---|---|
iSCSI服务端 | RHEL 7 | 192.168.30.10 |
iSCSI客户端 | RHEL 7 | 192.168.30.20 |
第1步:在RHEL 7/CentOS 7系统中,默认已经安装了iSCSI服务端程序,用户需要做的是配置好软件仓库后安装iSCSI服务端的交换式配置工具。
[root@rhel ~]# yum install -y targetcli
第2步:配置iSCSI服务端共享资源。targetcli是用于管理iSCSI服务端存储资源的专用配置命令
[root@rhel ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.51
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 0]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
/>
/backstores/block是iSCSI服务端配置共享设备的位置。我们需要把刚刚创建的RAID 5磁盘阵列md0文件加入到配置共享设备的“资源池”中,并将该文件重新命名为disk0,这样用户就不会知道是由服务器中的哪块硬盘来提供共享存储资源,而只会看到一个名为disk0的存储设备。
/> cd /backstores/block
/backstores/block> create disk0 /dev/md0
Created block storage object disk0 using /dev/md0.
/backstores/block> cd /
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- disk0 ......................................................................... [/dev/md0 (40.0GiB) write-thru deactivated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
/>
第3步:创建iSCSI target名称及配置共享资源。iSCSI target名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串
/> cd /iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 1]
o- iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412 .............................................................. [TPGs: 1]
o- tpg1 ................................................................................................. [no-gen-acls, no-auth]
o- acls ............................................................................................................ [ACLs: 0]
o- luns ............................................................................................................ [LUNs: 0]
o- portals ...................................................................................................... [Portals: 1]
o- 0.0.0.0:3260 ....................................................................................................... [OK]
系统在生成这个target名称后,还会在/iscsi参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加入到iSCSI共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录iSCSI服务端后,即可默认使用这硬盘设备提供的共享存储资源了。
/iscsi> cd iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412/
/iscsi/iqn.20....50e6bb5e0412> cd tpg1/luns
/iscsi/iqn.20...412/tpg1/luns> create /backstores/block/disk0
Created LUN 0.
第4步:设置访问控制列表(ACL)。iSCSI协议是通过客户端名称进行验证的。也就是说,用户在访问存储共享资源时不需要输入密码,只要iSCSI客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称。acls参数目录用于存放能够访问iSCSI服务端共享存储资源的客户端名称。推荐在刚刚系统生成的iSCSI target后面追加上类似于:client的参数,这样既能保证客户端的名称具有唯一性,又非常便于管理和阅读:
/iscsi/iqn.20...412/tpg1/luns> cd ..
/iscsi/iqn.20...bb5e0412/tpg1> cd acls
/iscsi/iqn.20...412/tpg1/acls> create iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412:client
Created Node ACL for iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412:client
Created mapped LUN 0.
第5步:设置iSCSI服务端的监听IP地址和端口号。位于生产环境中的服务器上可能有多块网卡,那么到底是由哪个网卡或IP地址对外提供共享存储资源呢?在配置文件中默认是允许所有网卡提供iSCSI服务,如果您认为这有些许不安全,可以手动删除:
/iscsi/iqn.20...412/tpg1/acls> cd ../portals/
/iscsi/iqn.20.../tpg1/portals> ls
o- portals ............................................................................................................ [Portals: 1]
o- 0.0.0.0:3260 ............................................................................................................. [OK]
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
继续进行设置,使系统使用服务器IP地址192.168.10.10的3260端口向外提供iSCSI共享存储资源服务:
/iscsi/iqn.20.../tpg1/portals> create 192.168.30.10
Using default IP port 3260
Created network portal 192.168.30.10:3260.
第6步:在参数文件配置妥当后,浏览刚刚配置的信息,确保上述提到的“目录”都已经填写了正确的内容。在确认信息无误后输入exit命令退出配置。
/iscsi/iqn.20.../tpg1/portals> cd /
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- disk0 ........................................................................... [/dev/md0 (40.0GiB) write-thru activated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 1]
| o- iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412 ............................................................ [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412:client ........................................ [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................. [lun0 block/disk0 (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ...................................................................... [block/disk0 (/dev/md0) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 192.168.30.10:3260 ............................................................................................... [OK]
o- loopback ......................................................................................................... [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
清空iptables防火墙中的默认策略,设置firewalld防火墙,使其放行iSCSI服务或3260/TCP端口号:
[root@rhel ~]# iptables -F
[root@rhel ~]# iptables-save
[root@rhel ~]# firewall-cmd --permanent --add-port=3260/tcp
success
[root@rhel ~]# firewall-cmd --reload
success
[root@redhat ~]# mount /dev/cdrom /mnt
cat <<EOF>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
yum repolist all
安装iSCSI客户端服务程序initiator,默认已经安装
[root@redhat ~]# yum install iscsi-initiator-utils
[root@redhat ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412:client
重启客户端iscsid服务程序并将其加入到开机启动项中:
[root@redhat ~]# systemctl restart iscsid
[root@redhat ~]# systemctl enable iscsid
Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service.
iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,用户需要先使用这个工具扫描发现远程iSCSI服务端,然后查看找到的服务端上有哪些可用的共享存储资源。其中,-m discovery参数的目的是扫描并发现可用的存储资源,-t st参数为执行扫描操作的类型,-p 192.168.30.10参数为iSCSI服务端的IP地址:
[root@redhat ~]# iscsiadm -m discovery -t st -p 192.168.30.10
192.168.30.10:3260,1 iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412
在使用iscsiadm命令发现了远程服务器上可用的存储资源后,接下来准备登录iSCSI服务端。其中,-m node参数为将客户端所在主机作为一台节点服务器,-T参数为要使用的存储资源,-p 192.168.30.10参数依然为对方iSCSI服务端的IP地址。最后使用--login或-l参数进行登录验证。
[root@redhat ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412 -p 192.168.30.10 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412, portal: 192.168.30.10,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412, portal: 192.168.30.10,3260] successful.
在iSCSI客户端成功登录之后,会在客户端主机上多出一块名为/dev/sdb的设备文件。
[root@redhat ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 25 20:31 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 25 20:31 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 25 20:31 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 25 20:55 /dev/sdb
[root@redhat ~]# file /dev/sdb
/dev/sdb: block special
下面进入标准的磁盘操作流程,外加这个设备文件本身只有40GB的容量,因此不必进行分区,而是直接格式化并挂载使用。
[root@redhat ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@redhat ~]# mkdir /iscsi
[root@redhat ~]# mount /dev/sdb /iscsi/
[root@redhat ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 974M 0 974M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 12M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/rhel-root 17G 4.2G 13G 25% /
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 199M 48K 198M 1% /run/user/1000
tmpfs 199M 0 199M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
/dev/sdb 40G 33M 40G 1% /iscsi
blkid命令用于查看设备的名称、文件系统及UUID
[root@redhat ~]# blkid | grep /dev/sdb
/dev/sdb: UUID="10bcca83-be2f-474d-b59b-fb139dd6ab21" TYPE="xfs"
[root@redhat ~]# vim /etc/fstab
[root@redhat ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Oct 25 20:24:26 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=52edf422-262b-4143-aad0-f55b7bc7be9c /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
UUID="10bcca83-be2f-474d-b59b-fb139dd6ab21" /iscsi xfs defaults,_netdev 0 0
scsiadm命令的-u参数将其设备卸载:
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.rhel.x8664:sn.50e6bb5e0412 -u
这种获取iSCSI远程存储的方法依赖的是RHEL 7系统自带的iSCSI initiator软件程序
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。