linux中iscsi服务应用搭建的例子

一、ISCSI连接的相关概念

SCSI:小型计算机系统的接口 (Small Computer System Interface),ISCSI(Internent Small Computer System Interface)较SCSI协议多了一个Internet,就是基于以太网传输的SCSI协议。日常应用中非常常见的一个应用,提供存储服务的一端通常被称为iSCSI target ,使用存储空间的一段被称作iSCSI initiator 。iSCSI initiator连接存储端的方式有三种:

1、以太网卡+initiator软件方式

该方式基本使用现有环境就可以,只需要在客户机上安装一个客户端管理软件(Initiator)。优点是只需在现有的网络中就可以完成,成本很低;缺点是消耗客户端主机部分资源,适用的环境在一般的低I/O和低带宽性能要求的应用环境中。

2、硬件TOE网卡+initiator软件方式

TOE(TCP offload Engine)网卡是一个智能的以太网卡,它可以将这个网络的数据流量的处理工作全部转到网卡的集成硬件中完成。客户端主机可以从繁忙的协议解脱出来。这个优点是采用了TOE卡后可以大幅度提高数据的传输速率,降低客户端的主机的资源消耗,缺点是需要购买TOE智能以太网卡,成本较高。

3、ISCSI HBA卡连接方式

客户端安装专业的ISCSI HBA卡,从而实现主机和交换机之间、主机与存储之间的高效率数据的交换,这个优点是数据传输的性能最好,缺点是需要购买ISCSI HBA适配卡,成本非常高。

本篇主要介绍的就是第一种连接方式。

二、环境与需求

iSCSI target:

IP:192.168.1.200

iqn串:iqn.2015-08.com.361way:test-target

ACL允许主机:iqn.2015-08.com.361way:client00

iSCSI Initiator:

主机1:192.168.1.210 (linux主机)

主机2:192.168.1.211 (win7主机)

要注iscsi target可以为两台iscsi initiator主机提供磁盘存储服务。

三、iscsi target服务端配置

iscsi target管理工具的安装:

# yum -y install targetcli
安装完成后,其有一个targetcli工具,我们可以通过该工具进行交互式的管理:

# targetcli
---创建块设备
/> backstores/block create server1.disk /dev/sdb1   //也可以是不分区的一块整盘

/> backstores/fileio create test /tmp/test.img 100m   //使用img文件
---生成iqn串
/> iscsi/ create iqn.2015-08.com.361way:test-target
/> cd iscsi/iqn.2015-08.com.361way:test-target/tpg1/
---设置监听IP,默认是监听0.0.0.0,所有地址,不删除创建时会有报错
tpg1/> portals create 192.168.1.200:3260
Using default IP port 3260
Could not create NetworkPortal in configFS.
tpg1/> portals delete 0.0.0.0 3260
tpg1/> portals create 192.168.1.200:3260
Using default IP port 3260
Created network portal 192.168.1.200:3260
---创建lun
tpg1/> luns/ create /backstores/block/test server1.disk  //使用磁盘或分区时

tpg1/> luns/ create /backstores/fileio/test       //使用img文件时
---设置acl规则
tpg1/> acls/ create iqn.2015-08.com.361way.com:client01        //acl访问规则,只允许该iqn串客户端连接
---保存规则,
/> saveconfig
/> exit
1、iscsi target非常灵活,支持将block 设备、fileio img、pscsi 硬件连接设备、ramdisk 创建为lun ,并提供给其他主机提供磁盘共享服务。上面的示例中,给出了两种常用的设备:一种是磁盘、分区提供lun;一种是img文件提供lun ;

2、iqn串的格式为: iqn.YYYY(年)-MM(月).域名反写:随机串 ,其中随机串可以数字字幕任意输,只要便于识别就可以。

3、创建监听地址这一步操作可以省略,不过在主机同时存在内外网环境,我们只想给内网环境主机提供磁盘共享服务时,出于安全考虑,可以只监听内网网口。

4、所有的配置修改过后,除了要切到根目录下,通过saveconfig保存配置外,还需要特别注意一定要将target服务配置为开机自启动,不然重启后,配置会不存在,不过在现实环境或考试中也无需惊慌,在/etc/target/backup 目录有最近的几次更改的备份。

# systemctl start target
# systemctl enable target
5、在centos7中,所有配置保存在/etc/target/saveconfig.json 文件中,这个和之前的版本有所不同。如果在配置中出现配置错误,想要重新来过,直接该文件即可。

默认iscsi 监听端口为3260 ,需要在防火墙上放行,配置命令如下:

# firewall-cmd --permanent --add-port=3260/tcp
# firewall-cmd --reload
四、客户端挂载配置

1、linux客户机挂载方法

软件安装与配置修改

linux 主机挂载前需要先安装一个软件 iscsi-initiator-utils

# yum -y install iscsi-initiator-utils
安装完该包,需要修改 /etc/iscsi/initiatorname.iscsi 中的iqn 串为target端中acl 允许的串:

#cat  /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2015-08.com.361way:client01
如涉及到用户认证的还需要修改/etc/iscsi/iscsid.conf 文件中的node.session.auth.username、node.session.auth.password的值 。

discover发现target设备

# iscsiadm -m discovery -t sendtargets -p 192.168.1.200

# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.200 --discover
192.168.1.200:3260,1 iqn.2015-08.com.361way:test-target   //输出target端iqn相关信息
登入或登出

# iscsiadm -m node -T iqn.2015-08.com.361way:test-target -l      //登入
# iscsiadm -m node -T iqn.2015-08.com.361way:test-target -u     //登出
或者使用全写
# iscsiadm --mode node --targetname iqn.2015-08.com.361way:test-target --portal 192.168.1.200:3260 --login
# iscsiadm --mode node --targetname iqn.2015-08.com.361way:test-target --portal 192.168.1.200:3260 --logout
登入操作就相当于将远程盘映射到本地磁盘,login操作完成后,正常可以通过fdisk -l 查看到新增的磁盘,此时可以通过fdisk工看分区后像操作本地盘一样进行读写操作。

使用iscsiadm命令发现设备和登入登出时,我比较习惯使用全写,虽然容易记住,但在man iscsiadm 时有直接已经写好的样例,拿过来更改下就可以直接使用。

开机自动挂载

我们将新增的磁盘/dev/sdb ,格式化为ext4格式后,并将/dev/sdb1挂载/opt 目录下,在/etc/fstab中需要如下配置:

/dev/sdb1         /opt            ext4      defaults,_netdev        0 0
重点在增加了_netdev ,访参数的意思就是该设备的挂载需要网络,避免网络启动前挂载出现错误。

删除node

默认我们discover和login以后,会在/var/lib/iscsi目录有相关文件生成:

# tree
.
├── ifaces
├── isns
├── nodes
│   └── iqn.2015-08.com.361way:test-target
│       └── 192.168.1.200,3260,1
│           └── default
├── send_targets
│   └── 192.168.1.200,3260
│       ├── iqn.2015-08.com.361way:test-target,192.168.1.200,3260,1,default -> /var/lib/iscsi/nodes/iqn.2015-08.com.361way:test-target/192.168.1.200,3260,1
│       └── st_config
├── slp
└── static
10 directories, 2 files
使用logout 操作时,并不会清理相关记录,主机重启后,还会通过/etc/fstab下的配置重启挂载iscsi 共享,可以使用如下方法进行干净的删除:

# iscsiadm --mode node --targetname iqn.2015-08.com.361way:test-target --portal 192.168.1.200:3260 --logout
Logging out of session [sid: 1, target: iqn.2015-08.com.361way:test-target, portal: 192.168.1.200,3260]
Logout of [sid: 1, target: iqn.2015-08.com.361way:test-target, portal: 192.168.1.200,3260] successful.
# iscsiadm --mode node --targetname iqn.2015-08.com.361way:test-target --portal 192.168.1.200:3260 -o delete
# tree
.
├── ifaces
├── isns
├── nodes
├── send_targets
│   └── 192.168.1.200,3260
│       └── st_config
├── slp
└── static
7 directories, 1 file
-o delete以后,可以和login、logout后该目录文件的变化做下对比。

五、windows客户端挂载

win7和win2008以后的版本中默认都已经集成了iscsi 客户端管理工具,之前的版本也可以单独安装软件包。打开管理工个的方法为:windows 可以在开始---运行---iscsicpl 直接打开iscsi 客户端管理程序,如果记不住命令也可以通过 控制面板---所有控制面板项 --- 管理工具---iSCSI 发起程序  打开iscsi 管理工具:

discover 发现iscsi target:

连接target:

磁盘管理

在磁盘管理里会发现新增的磁盘

总结:

rhce 考试部分的iscsi 还是比较简单的,不涉及chap 用户认证 ,也不涉及多路径的配置。实际使用中,可以考虑使用较为成熟的专用存储OS系统,如开源的Openfiler、商业版的open-e dss-v7 。

时间: 2024-09-20 15:07:17

linux中iscsi服务应用搭建的例子的相关文章

linux中Samba服务器的搭建理论篇

一.Samba与NFS.ftp   在了解Samba服务之前,需要先了解一下cifs协议(Common Internet File System),该协议最早是微软搞出来的一个协议.cifs 协议最早实现的是window主机之间的文件共享与打印共享,并不支持在linux上运行,samba是由Andrew Tridgell工程师通过逆向工程实现的一个cifs协议软件.通过该包可以实现windows和linux之间的文件共享.这和NFS的走的路刚好相反,NFS最初只支持在类unix系统上运行,后被w

linux中expect实现自动登录的例子

使用expect实现简单自动登录,从网上看了几个脚本不错,借鉴一下 NO.1 #!/bin/sh auto_login_ssh(){ expect -c " set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send -- $1\r; interact;" } auto_login_ssh password user@hostname StrictHos

linux中批量查找替换文本内容例子

  .批量查找某个目下文件的包含的内容,例如: # grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. # sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./` sed的其他用法如下: 1.删除行首空格 sed 's/^[ ]*//g' filename sed 's/^ *//g' filename sed 's/^[[:space:]]*//g' filename 2.行

Linux中Oracle服务启动和停止脚本与开机自启动_Linux

在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介绍一般而言如何启动oracle. 一.在Linux下启动Oracle 登录到CentOS,切换到oracle用户权限 # su – oracle 接着输入: $ sqlplus "/as sysdba" 原本的画面会变为 SQL> 接着请输入 SQL> startup 就可以正

Linux 中 df 命令的11个例子

df 即"可用磁盘"disk free,用于显示文件系统的磁盘使用情况.默认情况下 df 命令将以每块 1K 的单位进行显示所有当前已挂载的文件系统,如果你想以人类易读的格式显示 df 命令的输出,像这样"df -h"使用 -h 选项. 在这篇文章中,我们将讨论 df 命令在 Linux 下11种不同的实例. 在 Linux 下 df 命令的基本格式为: # df {options} {mount_point_of_filesystem} 在 df 命令中可用的选项

linux中netstat查看80端口连接数例子

服务器上的一些统计数据: 1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3).统计已连接上的,状态为"established netstat -na|grep ESTABLISHED|wc -l 4).查出哪个IP地址连接最多,将其封了. netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $

linux中SSH Tunnel的简单使用例子

背景介绍: 目前,线上有好几个数据中心,不同数据中心之间的速度差异还是比较大的,我们一般选择一个最优的数据中心作为VPN的接入点. 但有些时候直接通过VPN访问其它数据中心的服务会很慢,于是就临时通过SSH Tunnel来解决. 应用场景: 直接访问服务器idc1-server1很快,但是直接访问idc2-server2很慢,而idc1-server1到idc2-server2却很快: 于是,我们打算用idc1-server1服务器作为跳板来连接idc2-server2. ssh -i /pat

linux中USM管理ATAE刀片的例子

华为USM系统是用来管理ATAE刀片.HP pcserver.IBM pcserver.Oceanspace的方案工具,其可以实现对设备系统的部署.数据的备份.设备的维护等.华为的产品肯定优先支持华为自己的设备,这里主要以ATAE主机为例. 一.远程重启及kdump转储 在维护过程中,经常会遇到主机挂死无响应或hang机的情况.可以通过以下步骤进程重启并转储Kdump信息: 1.打开浏览器输入https://USM_IP:18443 ,使用用户名密码登录后,选择维护--kvm 2.选择相应的刀框

linux中shell对数组的操作例子

bash shell 只支持一维数组,shell中对数组的大小没有限制.数组元素的下标由0开始编号. 定义数组 Shell 定义数组例子: array_name=(value0 value1 value2 valuen)或者array_name=(value0value1value2valuen) 还可以单独定义数组的各个分量: array_name[0]=value0array_name[1]=value1array_name[2]=value2 可以不使用连续的下标,而且下标的范围没有限制.