NAS(网络附加存储服务器) SAN(存储局域网络)
基本概念:
实验环境:
准备两台虚拟机,系统是 CentOS 7版本。
记住两个虚拟机之间要ping通。
一台用作服务端(Server),一台用作客户端(Client)。
主机名也必须得改,Server 改为Target Client改为Initiator
服务端IP192.168.1.60 客户端 IP192.168.1.61
安装后使用命令 yum -y update升级到最新;
安装epel数据源 yum -y install epel-release
在SAN中,主机一般都是Initiator,存储设备则是Target。
Initiator SCSI会话的发起方,向Target请求LUN,并将数据的读写指令发送给Target
Target 接受SCSI会话的一方 它接收来自Initiator的指令,为Initiator提供LUN,并实现对LUN的读写
IQN iqn.1994-05.com.redhat:737db83a23df 全球唯一名称,用于以强制命令格式来识别启动器和目标 iqn 表示此名称将使用域作为其标识符 yyyy-mm 拥有域名的第一个月 com.redhat 逆向域名 optional_string 以冒号为前缀的可选字符串,根据需要分配
192.168.1.60:server端 192.168.1.61:client端
先在Server端操作
[root@server ~]# yum -y install targetd targetcli [root@server ~]# systemctl start target [root@server ~]# systemctl enable target Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service. [root@server ~]# systemctl status target ● target.service - Restore LIO kernel target configuration Loaded: loaded (/usr/lib/systemd/system/target.service; enabled; vendor preset: disabled) Active: active (exited) since Sat 2020-05-09 18:12:28 CST; 9s ago Main PID: 17317 (code=exited, status=0/SUCCESS)
设置防火墙
[root@server ~]# firewall-cmd --add-port=3260/tcp --permanent success [root@server ~]# firewall-cmd --reload success [root@server ~]# firewall-cmd --list-ports 3260/tcp
执行targetcli工具
[root@Server ~]# yum install -y targetcli
安装完成后设置target服务开机启动,并启动服务
[root@Server ~]# systemctl enable target [root@Server ~]# systemctl start target
Client端
安装工具
[root@client ~]# yum -y install iscsi-initiator-utils给initiator命名
[root@client ~]# vim /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2020-05.com.bdqn:client1
启动服务
[root@client ~]# systemctl start iscsi [root@client ~]# systemctl enable iscsi [root@client ~]# systemctl status iscsi ● iscsi.service - Login and scanning of iSCSI devices Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled) Active: inactive (dead) Condition: start condition failed at Sat 2020-05-09 19:23:49 CST; 10s ago Docs: man:iscsiadm(8) man:iscsid(8
发现存储
[root@client ~]# iscsiadm -m discovery -t st -p 192.168.1.60 192.168.1.60:3260,1 iqn.2020-05.com.bdqn:disk1
登录存储/连接target
[root@client ~]# iscsiadm -m discovery -t st -p 192.168.1.60 -l 192.168.1.60:3260,1 iqn.2020-05.com.bdqn:disk1 Logging in to [iface: default, target: iqn.2020-05.com.bdqn:disk1, portal: 192.168.1.60,3260] (multiple) Login to [iface: default, target: iqn.2020-05.com.bdqn:disk1, portal: 192.168.1.60,3260] successful.
验证iscsi连接,查看是否得到外界硬盘
[root@client ~]# lsscsi [0:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda [2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0 [3:0:0:0] disk LIO-ORG server0.disk1 4.0 /dev/sdb
然后就可以像操作本地磁盘一样来操作iscsi磁盘 了。
[root@client ~]# gdisk /dev/sdb ... Number Start (sector) End (sector) Size Code Name 1 2048 10487807 5.0 GiB 8300 Linux filesystem 2 10487808 20971486 5.0 GiB 8300 Linux filesystem [root@client ~]# partprobe /dev/sdb [root@client ~]# partprobe /dev/sdb [root@client ~]# partprobe /dev/sdb [root@client ~]# cat /proc/partitions major minor #blocks name ... 8 16 10485760 sdb 8 17 5242880 sdb1 8 18 5241839 sdb2
这里将/dev/sdb1分区挂载到/mnt/iscsi目录中使用
[root@client ~]# mkdir /mnt/iscsi [root@client ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@client ~]# mount /dev/sdb1 /mnt/iscsi/ [root@client ~]# mount | tail -1 /dev/sdb1 on /mnt/iscsi type xfs (rw,relatime,seclabel,attr2,inode64,noquota) [root@client ~]# df -hT /mnt/iscsi/ Filesystem Type Size Used Avail Use% Mounted on /dev/sdb1 xfs 5.0G 33M 5.0G 1% /mnt/iscsi
iscsi,网络存储,经过网络,那么就必须要注意安全。注意是以防火墙来体现安全。 可以再开一台虚拟机。当做iscsi客户端,看看是否能够发现iscsi存储。
[root@work ~]# yum install iscsi* [root@work ~]# systemctl start iscsi [root@work ~]# iscsiadm -m discovery -t st -p 192.168.1.60 192.168.1.60:3260,1 iqn.2020-05.com.bdqn:disk1
查看状态
[root@server ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-09 18:06:03 CST; 5 days ago Docs: man:firewalld(1) Main PID: 6414 (firewalld) ...
查看开放端口
[root@server ~]# firewall-cmd --zone=public --list-ports 3260/tcp
然后我们就要想,怎么能够添加只允许的客户端IP。使用防火墙规则来实现。
[root@server ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.161 port port=3260 protocol=tcp accept' --permanent success [root@server ~]# firewall-cmd --reload success [root@server ~]# firewall-cmd --list-rich-rules rule family="ipv4" source address="192.168.1.161" port port="3260" protocol="tcp" accept
那么现在,我们的服务器同时有开启了httpd服务。那么如果没有设置的话,其他机器是无法访问的。 设置才能够让其他机器访问到那里。
[root@server ~]# systemctl start httpd [root@server ~]# cat > /var/www/html/index.html <How are you ? > I'm fine! > EOF [root@server ~]# curl 127.0.0.1 How are you ? I'm fine!
//此时其他机器是访问不了的。 [root@work ~]# curl 192.168.1.60 curl: (7) Failed connect to 192.168.1.60:80; No route to host
可以来添加一下规则,说明一下,这里仅仅只是为了练习添加规则,通常只是开启80端口即可。
[root@server ~]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.200 port port=80 protocol=tcp accept' --permanent success [root@server ~]# firewall-cmd --reload success
然后再用客户端,就可以访问了。
[root@work ~]# curl 192.168.1.60 How are you ? I'm fine



