Centos7 ISCSI配置 完全攻略
Centos7 ISCSI配置 完全攻略
一. iscsi简单介绍
iSCSI( Internet Small Computer System Interface 互联网小型计算机系统接口)
iscsi通过IP-SAN网络的iscsi协议, 把服务端的存储资源(RAID) 封装到本地,像使用本地硬盘那样使用网络上的硬盘。
iSCSI技术在工作形式上分为服务端(target)与客户端(initiator),iSCSI服务端即用于存放硬盘存储资源的服务器, 而iSCSI客户端则是用户使用的软件,用于获取远程服务端的存储资源
在Centos7上 默认的服务端软件是targetcli, 客户端的软件是iscsiadm
二. 标准的iscsi连接方式(包含CHAP认证)
服务端targetcli的简单介绍
targetcli是 Target的用户态的管理配置工具。提供了一个类似Shell的环境
可以用使用一些shell命令 如:ls 、cd、 ctr+R 历史命令搜索 TAB 命令 补全
targetcli 把各种类型资源 抽象成目录。 我们在相应的目录进行创建就行,
只要理解了各种目录的含义就容易使用了
targetcli shell version 2.1.fb46
Copyright - by Datera, Inc and others.
For help on commands, type 'help'. /> ls
o- / ............................................................................ [...]
o- backstores ................................................................. [...]
| o- block ..................................................... [Storage Objects: ]
| o- fileio .................................................... [Storage Objects: ]
| o- pscsi ..................................................... [Storage Objects: ]
| o- ramdisk ................................................... [Storage Objects: ]
o- iscsi ............................................................... [Targets: ]
o- loopback ............................................................ [Targets: ]
/>
/backstores/block 这个目录是服务端配置一般存储资源。
ramdisk 这个是把内存当作存储资源
我们目前用的是/backstores/block 这个目录和/iscsi目录下的一些目录。
targetcli创建iscsi简单流程
#创建共享资源 并重命名disk0
$ /> /backstores/block create disk0 /dev/mapper/testraid60-
#创建iscsi 格式 iqn.<如:->.com.<不能有下划线>:<不能有下划线>
$ /backstores> /iscsi create iqn.-.com.adawang:ada1
Created target iqn.-.com.adawang:ada1.
Created TPG .
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port .
#进入创建后的iscsi目录
$ /backstores> cd /iscsi/iqn.-.com.adawang:ada1/tpg1/
$ /iscsi/iqn....ang:ada1/tpg1> ls
o- tpg1 .............................. [no-gen-acls, no-auth]
o- acls ......................................... [ACLs: ]
o- luns .......................................... [LUNs: ]
o- portals .................................... [Portals: ]
o- 0.0.0.0: ...................................[OK]
# lun配置 添加最开始创建的disk0
$ /iscsi/iqn....ang:ada1/tpg1> cd luns
$ /iscsi/iqn....da1/tpg1/luns>create /backstores/block/disk0
Created LUN .
#Ip配置 需要删除默认的0.0.0. ip才能创建
$ /iscsi/iqn....ang:ada1/tpg1> cd ../portals
$ /iscsi/iqn..../tpg1/portals> delete 0.0.0.0
Deleted network portal 0.0.0.0:
$ /iscsi/iqn..../tpg1/portals> create 10.10.110.2
Using default IP port
Created network portal 10.10.110.2:.
# acl配置
$ /iscsi/iqn..../tpg1/portals> cd ../acls
#创建acl用户名 acl格式和iqn一致
$ /iscsi/iqn....da1/tpg1/acls> create iqn.-.com.adawang:ada2
Created Node ACL for iqn.-.com.adawang:ada2
Created mapped LUN .
$ /iscsi/iqn....da1/tpg1/acls> cd iqn.-.com.adawang:ada2/
#设置acl密码
$ /iscsi/iqn.....adawang:ada2> set auth password=
Parameter password is now ''.
#退出
$ /iscsi/iqn.....adawang:ada2> exit
Global pref auto_save_on_exit=true
Last configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
Initiator客户端 配置
修改配置文件
修改init端名称(可选部分)
$ echo 'InitiatorName=<名称>' > /etc/iscsi/initiatorname.iscsi
$ source /etc/iscsi/initiatorname.iscsi
#重启iscsi服务
$ systemctl restart iscsid.service
source /etc/iscsi/initiatorname.iscsi
表示配置后的变量名InitiatorName 加载到当前Bash环境下( source 可以用 . 代替)
2.修改iscsi配置文件 iscsid.conf (一般首次配置 修改)
$ vim /etc/iscsi/iscsid.conf
....省略...
# *************
# CHAP Settings
# *************
# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP
# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = <initiatorname.iscsi文件配置的名称>
node.session.auth.password = <12位-16位长度密码>
....后文省略...
发现并连接target目标
#发现门户ip下的所有target目标
$ iscsiadm -m discovery -t st -p <界面配置的门户ip>
##连接
$ iscsiadm -m node -T <target目标名> -p <门户ip> -l
连接成功后查询连接的磁盘
方法一:fdisk -l 或 lsblk 命令查看
发现新增加的网络硬盘 /dev/sd<a-z>
方法二: lsscsi -ds
常用参数 -d 显示设备主次序列号
-s 显示容量大小
-c 用全称显示默认的信息
14:0:0:1 最后的1代表lun id , 14代表主机控制器HOST序号
方法三:iscsiadm -m session -P 3
最后一行 Attached scsi disk sda
-m session 显示会话信息 ,参数 -P <0-3> 对应print级别,级别越高信息越详细。
格式化成xfs文件系统并挂载
用mkfs工具对发现的磁盘分区创建文件系统
$ mkfs.xfs <磁盘路径 如:/dev/sda >
$ mkdir /mnt/iscsi
$ mount /dev/sda /mnt/iscsi
设置开机自动挂载(可选部分)
#blkid命令 查看挂载磁盘的uuid
$ blkid | grep sda
/dev/sda: UUID="c02b0cbe-eaca-e082-4f4a-7490d831e96e" TYPE="xfs"
#修改fstab
$ vim /etc/fstab
# /etc/fstab
# Created by anaconda on Fri Feb ::
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(), findfs(), mount() and/or blkid() for more info
/dev/mapper/centos-root / xfs defaults
UUID=0b29b82e-20a5-488b--b1b20e72e0aa /boot xfs defaults
/dev/mapper/centos-home /home xfs defaults
/dev/mapper/centos-swap swap swap defaults
UUID=c02b0cbe-eaca-e082-4f4a-7490d831e96e /mnt/iscsi xfs
defaults, _netdev
#确保fstab修改无误
$ mount -a
系统在启动的时候会自动挂载 fstab里的,如果发送错误 则会导致系统无法启动。
一般在修改fstab后用mount -a 命令 加载fstab配置表测试修改是否无误,没有打印代表正常。
因为/dev/sda 容易盘符漂移,所以用uuid全局唯一标示符来代替磁盘符号。
iscsi盘是网络存储设备,需要加上_netdev参数,表示联网后在挂载,否则导致开机太长或系统启动失败。
三. 标准的iscsi断开方式
$ umount /mnt/iscsi
# 如果 需要断开全部iscsi 使用iscsiadm -m node -u
$ iscsiadm -m node -T <target名称> -u
# 删除节点记录。
# 如果 需要删除所有节点记录 使用iscsiadm -m node -o delete
$ iscsiadm -m node -o delete -T <target的名称> -p <门户ip>
四. 你可能会遇见的问题
- 目录显示输入输出错误
- 挂载的时候显示文件系统损坏
不同文件系统的在线扩容方法以上2中情况都是因为没有断开iscsi的时候没有正常卸载,mount的时候显示文件系统的损化,是因为之前已经挂载过相同盘符或目录,可以通过mount命令查看挂载记录。
解决办法:mount <盘符或者挂载目录>
- 无法umount 目录
有2种情况:
目录被BASH占用--在挂载目录进行卸载
这种情况切换到非挂载目录下就可以卸载了
因磁盘或目录被其他进程占用导致无法卸载
这种解决起来稍微麻烦点
1.用lsof 命令寻找到已经打开的文件的PID号
2.ps aux | grep <磁盘名或目录名> 查找进程的pid号
3.kill -9 <pid号> 命令 杀死该进程
4.最后umount卸载
五. 在线添加lun方法
服务器新添加了一个LUN,那么主机端需要刷新下会话
iscsiadm -m session -R
六. ext4 xfs文件系统的在线扩容方法
刷新iscsi会话
iscsiadm -m session -R
ext4扩容
resize2fs /dev/<LUN挂载的设备名>
xfs扩容
xfs_growfs /dev/<LUN挂载的设备名>
可以看到 扩容前后 blocks 变化
七. Centos7 多路径的一般使用
加载多路径驱动和启动服务
$ multipath
#打印提示驱动没有加载
Sep :: | DM multipath kernel driver not loaded
Sep :: | DM multipath kernel driver not loaded
$ modprobe dm-multipath
$ modprobe dm-round-robin
#查看多路径multipathd服务状态 结果显示未启动
$ systemctl status multipathd
● multipathd.service - Device-Mapper Multipath Device Controller
Loaded: loaded (/usr/lib/systemd/system/multipathd.service; disabled; vendor preset: enabled)
Active: inactive (dead)
# 启动服务
$ systemctl start multipathd
常用的multipath 指令
$ multipath <指令> --- -r 重新加载配置表 multipthd.conf 。修改配置表或者用multipath -F命令后使用 -ll 显示当前所有路径的信息,一般用于测试多路径是否生效 -F 刷新所有多路径设备map表 -v3 调整debug调式级别打印, 一般用于错误诊断 (打印级别默认v2)
配置多路径软件 multipthd.conf
$ vim /etc/multipthd.conf
## Use user friendly names, instead of using WWIDs as names.
defaults {
user_friendly_names yes
find_multipaths yes
}
如果/etc/multipthd.conf 不存在, 可以用默认的多路径配置拷贝到 /etc目录
$ cp /usr/share/doc/device-mapper-multipath- 0.4./multipath.conf /etc/
#如果不记得默认的配置表存放目录可以用Find 命令找出来
$ find / -name multipath.conf
/etc/multipath.conf
/usr/share/doc/device-mapper-multipath-0.4./multipath.conf
查看多路径合成结果
$ multipth -ll
#多路径合并后的设备 /dev/mapper/mpatha 以后都用这个设备进行操作
mpatha (360a9800064665072443469563477396c) dm- NETAPP,LUN size=35G features='' hwhandler='' wp=rw `-+- policy='round-robin 0' prio= status=active
#多路径下的两个盘符sdb和sde.
|- ::: sdb : active ready running `- ::: sde : active ready running
注意:以后都用合成后的设备/dev/mapper/mpatha进行格式化挂载等操作,不能用其他设备进行操作
Centos7 ISCSI配置 完全攻略的更多相关文章
- Android-x86虚拟机安装配置全攻略
转自Android-x86虚拟机安装配置全攻略 注:这里安装从简,具体请参考虚拟机Vmware安装运行安卓4.0详细教程 Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这 ...
- StartCom 申请 SSL 证书及 Nginx HTTPS 支持配置全攻略
来源:https://www.williamyao.com/index.php/archives/1397/ 前言 最近收到 StartCom 的邮件,数字证书即将过期,想到去年在 StartSSL ...
- 长平狐 Android-x86虚拟机安装配置全攻略
Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这篇文章能把主要的配置介绍给您,帮助您少走一些弯路. 本文分别针对VMWare和Virtual Box两种虚拟机介绍安装配置 ...
- sublime配置全攻略
大家好,今天给大家分享一款编辑器:sublime text2 我用过很多编辑器, EditPlus.EmEditor.Notepad++.Notepad2.UltraEdit.Editra.V ...
- cas配置全攻略(转)
转:http://www.blogjava.net/tufanshu/archive/2011/01/21/343290.html 经过将近两天的测试,参考众多网友的贡献,终于完成了对cas的主要配置 ...
- Log4j实现对Java日志的配置全攻略
1. 配置文件 Log4J配置文件的基本格式如下: #配置根Logger log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , ...
- Ubuntu下嵌入式Qt开发环境配置全攻略
http://qpcwth.blog.163.com/blog/static/20993024620139151424822/ 在安装的过称中,出现一些问题,注意试想: 1.本次开发环境的配置,是基于 ...
- Tomcat配置全攻略
tomcat的的下载地址http://www.apache.org/dist/jakarta/tomcat-4/ 1.安装jdk,详细操作请参考本站windows 2k和redhat 8.0下java ...
- Linux环境变量配置全攻略
Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...
随机推荐
- Java 11 新垃圾回收器 ZGC
可伸缩.低延迟的垃圾回收器 GC 暂停时间不超过 10ms 堆管理容量范围(小M级别,大到T级别) 对应用吞吐量影响不超过15%(对比 G1) 为进一步的添加新特性和优化做基础 默认支持 Linux/ ...
- CodeForce 377 A mazes(dfs+连通性问题)
Pavel 喜欢网格迷宫.一个网格迷宫是一个 n × m 的长方形迷宫,其中每个单元格要么是空白的,要么是墙体.您可以从一个单元格走到另一个单元格,只要两个单元格均是空白的,且拥有一条公共的边. Pa ...
- ModuleNotFoundError: No module named 'numpy.testing.nosetester'
- JAVA 注解教程(四)Java 预置的注解
@Deprecated 这个元素是用来标记过时的元素,想必大家在日常开发中经常碰到.编译器在编译阶段遇到这个注解时会发出提醒警告,告诉开发者正在调用一个过时的元素比如过时的方法.过时的类.过时的成员变 ...
- python之路之socket
一.网络编程 1.socket介绍 import socket def handle_request(client): buf = client.recv(1024) client.sendall(b ...
- DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】
XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...
- 环境配置 | Pycharm远程开发的环境配置
目的:同局域网中的两台电脑,Mac上看视频学习编程 + 当服务器跑代码:Windows上使用Pycharm写代码.学习远程开发 (当前底子有限,很多操作可能存在理解偏差) Mac上代码存放路径:~/O ...
- 解决“(1146, "Table 'mydb.django_session' doesn't exist")”报错的方法
执行 ./manage.py makemigrations sessions ./manage.py migrate sessions
- 题解【洛谷P3884】[JLOI2009]二叉树问题
题面 题解 这道题目可以用很多方法解决,这里我使用的是树链剖分. 关于树链剖分,可以看一下我的树链剖分学习笔记. 大致思路是这样的: 第\(1\)次\(dfs\)记录出每个点的父亲.重儿子.深度.子树 ...
- awk从放弃到入门(2):awk分隔符
一.awk分隔符 awk的默认分割符是空格,但是,这样描述并不精确,因为,awk的分隔符还分为两种,"输入分隔符" 和 "输出分隔符" . (1)输入分隔符:英 ...