存储有三种类型:DAS,NAS,SAN。
DAS:直接附加存储,这个存储就在本地,在服务器主板上面接的存储,这个存储在进行存储的时候依赖于服务器本身的CPU进行处理的,如果需要扩展也是比较麻烦的。对服务器的性能是会造成影响的,(依赖于本地资源CPU,内存进行处理)。
NAS:网络附加存储,NFS,CIFS,提供的是文件系统共享,扩展性比较方便,对于大容量数据容易出现瓶颈。
SAN:存储区域网络,提供的是block设备,一块硬盘进行分区,硬盘是由block组成的,分区就将硬盘分为了多少个block,直接提供的就是block设备。主要分为两种 IP SAN(ISCSI),FC SAN,一种是IP存储,一种是光纤存储,光纤存储的性能比IP存储性能好。
ISCSI:SCSI OVER IP是让SCSI指令跑到IP上面(在TCP/IP网络上面来跑SCSI指令,让其提供远程存储)
这里分为两端
target:提供存储,和服务器一样,专门提供存储
initiator:去访问存储,一般是数据库去访问存储,比如mysql。
服务端提供存储:
(1)将分区/vdb1和file1共享出去
[root@server0 ~]# fdisk -l | grep /dev
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/vdb1 2048 2099199 1048576 83 Linux
[root@server0 ~]# dd if=/dev/zero of=/file1 bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 9.17652 s, 58.5 MB/s
(2)安装软件包
[root@server0 ~]# yum install -y targetcli
Loaded plugins: langpacks
Package targetcli-2.1.fb34-1.el7.noarch already installed and latest version
Nothing to do
[root@server0 ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb34
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]
/>
(3)配置backstores
/> /backstores/block/ create block1 /dev/vdb1 --block1是创建的名字,/dev/vdb1是物理存储
Created block storage object block1 using /dev/vdb1.
/> ls /backstores/block/
o- block ......................................................................................... [Storage Objects: 1]
o- block1 ............................................................... [/dev/vdb1 (1.0GiB) write-thru deactivated]
/> /backstores/fileio create file1 /file1
Created fileio file1 with size 536870912
/> ls /backstores/fileio/
o- fileio ........................................................................................ [Storage Objects: 1]
o- file1 ................................................................. [/file1 (512.0MiB) write-back deactivated]
(4)配置ISCSI Target
在/iscsi必须创建iqn,就是取一个名字
/> /iscsi create iqn.2018-10.com.example:server0
Created target iqn.2018-10.com.example:server0.
Created TPG 1.
格式:Iqn.创建时间.域名反写:标签(随便取名也可以,最好写上主机名)
/> ls
o- / ............................................................................................................ [...]
o- backstores ................................................................................................. [...]
| o- block ..................................................................................... [Storage Objects: 1]
| | o- block1 ........................................................... [/dev/vdb1 (1.0GiB) write-thru deactivated]
| o- fileio .................................................................................... [Storage Objects: 1]
| | o- file1 ............................................................. [/file1 (512.0MiB) write-back deactivated]
| o- pscsi ..................................................................................... [Storage Objects: 0]
| o- ramdisk ................................................................................... [Storage Objects: 0]
o- iscsi ............................................................................................... [Targets: 1]
| o- iqn.2018-10.com.example:server0 ...................................................................... [TPGs: 1]
| o- tpg1 .................................................................................. [no-gen-acls, no-auth]
| o- acls ............................................................................................. [ACLs: 0]
| o- luns ............................................................................................. [LUNs: 0]
| o- portals ....................................................................................... [Portals: 0]
o- loopback ........................................................................
(5)配置acl指定哪些initiator可以访问存储(只给哪个客户端可以使用)。
/> /iscsi/iqn.2018-10.com.example:server0/tpg1/acls create iqn.2018-10.com.example:desktop
Created Node ACL for iqn.2018-10.com.example:desktop
/> ls
o- / ............................................................................................................ [...]
o- backstores ................................................................................................. [...]
| o- block ..................................................................................... [Storage Objects: 1]
| | o- block1 ........................................................... [/dev/vdb1 (1.0GiB) write-thru deactivated]
| o- fileio .................................................................................... [Storage Objects: 1]
| | o- file1 ............................................................. [/file1 (512.0MiB) write-back deactivated]
| o- pscsi ..................................................................................... [Storage Objects: 0]
| o- ramdisk ................................................................................... [Storage Objects: 0]
o- iscsi ............................................................................................... [Targets: 1]
| o- iqn.2018-10.com.example:server0 ...................................................................... [TPGs: 1]
| o- tpg1 .................................................................................. [no-gen-acls, no-auth]
| o- acls ............................................................................................. [ACLs: 1]
| | o- iqn.2018-10.com.example:desktop ......................................................... [Mapped LUNs: 0]
| o- luns ............................................................................................. [LUNs: 0]
| o- portals ....................................................................................... [Portals: 0]
o- loopback ...................................................................................
(6)上面acls配置完了配置luns,luns指定了要访问哪些存储,下面可以看到一个是lun0,一个是lun1可以访问。
/> /iscsi/iqn.2018-10.com.example:server0/tpg1/luns create /backstores/block/block1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2018-10.com.example:desktop
/> /iscsi/iqn.2018-10.com.example:server0/tpg1/luns/ create /backstores/fileio/file1
Created LUN 1.
Created LUN 1->1 mapping in node ACL iqn.2018-10.com.example:desktop
/> ls
o- / ............................................................................................................ [...]
o- backstores ................................................................................................. [...]
| o- block ..................................................................................... [Storage Objects: 1]
| | o- block1 ............................................................. [/dev/vdb1 (1.0GiB) write-thru activated]
| o- fileio .................................................................................... [Storage Objects: 1]
| | o- file1 ............................................................... [/file1 (512.0MiB) write-back activated]
| o- pscsi ..................................................................................... [Storage Objects: 0]
| o- ramdisk ................................................................................... [Storage Objects: 0]
o- iscsi ............................................................................................... [Targets: 1]
| o- iqn.2018-10.com.example:server0 ...................................................................... [TPGs: 1]
| o- tpg1 .................................................................................. [no-gen-acls, no-auth]
| o- acls ............................................................................................. [ACLs: 1]
| | o- iqn.2018-10.com.example:desktop ......................................................... [Mapped LUNs: 2]
| | o- mapped_lun0 ................................................................... [lun0 block/block1 (rw)]
| | o- mapped_lun1 ................................................................... [lun1 fileio/file1 (rw)]
| o- luns ............................................................................................. [LUNs: 2]
| | o- lun0 .......................................................................... [block/block1 (/dev/vdb1)]
| | o- lun1 ............................................................................. [fileio/file1 (/file1)]
| o- portals ....................................................................................... [Portals: 0]
o- loopback ............................................................................................ [Targets: 0]
o- iqn.2018-10.com.example:desktop有两个存储可以使用,一个是o- mapped_lun0 ,一个是o- mapped_lun1。
(7)配置监听在哪个IP上面,这个是服务端的IP。
/> iscsi/iqn.2018-10.com.example:server0/tpg1/portals create 172.25.0.11
Using default IP port 3260 --等下要将这个端口在防火墙开通
Created network portal 172.25.0.11:3260.
最后目录结构如下:
(7)重启服务,将端口加入防火墙
[root@server0 ~]# firewall-cmd --permanent --add-port=3260/tcp --这里是添加端口,而不是添加service
success
[root@server0 ~]# firewall-cmd --reload
Success
[root@server0 ~]# systemctl restart target
总结一下:上面的步骤创建了一个target( iqn.2018-10.com.example:server0),这个target只有o- iqn.2018-10.com.example:desktop .客户可以使用,里面的话只有两个存储mapped_lun0,mapped_lun1,最后这个服务开放在ip为172.25.0.11:3260的3260这个端口上面。
上面是服务端的配置,那么下面就是客户端的配置了。
客户端配置
(1)安装软件包
[root@desktop0 ~]# yum install iscsi*
Loaded plugins: langpacks
rhel_dvd | 4.1 kB 00:00:00
Package iscsi-initiator-utils-6.2.0.873-21.el7.x86_64 already installed and latest version
Package iscsi-initiator-utils-iscsiuio-6.2.0.873-21.el7.x86_64 already installed and latest version
Nothing to do
(2)将服务重启
[root@desktop0 ~]# systemctl restart iscsi --这个服务主要是用来发现和挂载存储
[root@desktop0 ~]# systemctl enable iscsi
(3)修改配置文件
[root@desktop0 ~]# vi /etc/iscsi/initiatorname.iscsi
[root@desktop0 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-10.com.example:desktop --这个是在服务端配置的(acl指定在客户端哪些initiator可以访问存储),其实这就是客户端和服务端通讯的密码
上面配置好之后就是发现服务端的存储了
(4)发现服务端
[root@desktop0 ~]# iscsiadm -m discovery -t st -p 172.25.0.11 --172.25.0.11是服务端的ip
172.25.0.11:3260,1 iqn.2018-10.com.example:server0 --可以看到发现服务端了
(5)登入到服务端
[root@desktop0 ~]# iscsiadm -m node -T iqn.2018-10.com.example:server0 -l
Logging in to [iface: default, target: iqn.2018-10.com.example:server0, portal: 172.25.0.11,3260] (multiple)
Login to [iface: default, target: iqn.2018-10.com.example:server0, portal: 172.25.0.11,3260] successful.
[root@desktop0 ~]# fdisk -l | grep /dev
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sda: 1073 MB, 1073741824 bytes, 2097152 sectors --可以看到多了两个存储
Disk /dev/sdb: 536 MB, 536870912 bytes, 1048576 sectors
这个时候使用远端的存储就像使用本地的存储一样,可以将其分区格式化,最后就可以挂载了。