iscsi通过IP-SAN网络的iscsi协议, 把服务端的存储资源(RAID) 封装到本地,像使用本地硬盘那样使用网络上的硬盘。
iSCSI技术在工作形式上分为服务端(target)与客户端(initiator),iSCSI服务端即用于存放硬盘存储资源的服务器, 而iSCSI客户端则是用户使用的软件,用于获取远程服务端的存储资源
在Centos7上 默认的服务端软件是targetcli, 客户端的软件是iscsiadm
targetcli是 Target的用户态的管理配置工具。提供了一个类似Shell的环境
可以用使用一些shell命令 如:ls 、cd、 ctr+R 历史命令搜索 TAB 命令 补全
targetcli 把各种类型资源 抽象成目录。 我们在相应的目录进行创建就行,
只要理解了各种目录的含义就容易使用了
targetcli shell version 2.1.fb46 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] />
ramdisk 这个是把内存当作存储资源
我们目前用的是/backstores/block 这个目录和/iscsi目录下的一些目录。
#创建共享资源 并重命名disk0 $ /> /backstores/block create disk0 /dev/mapper/testraid60-123 #创建iscsi 格式 iqn.<如:2018-09>.com.<不能有下划线>:<不能有下划线> $ /backstores> /iscsi create iqn.2018-09.com.adawang:ada1 Created target iqn.2018-09.com.adawang:ada1. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. #进入创建后的iscsi目录 $ /backstores> cd /iscsi/iqn.2018-09.com.adawang:ada1/tpg1/ $ /iscsi/iqn.20...ang:ada1/tpg1> ls 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] # lun配置 添加最开始创建的disk0 $ /iscsi/iqn.20...ang:ada1/tpg1> cd luns $ /iscsi/iqn.20...da1/tpg1/luns>create /backstores/block/disk0 Created LUN 0. #Ip配置 需要删除默认的0.0.0.0 ip才能创建 $ /iscsi/iqn.20...ang:ada1/tpg1> cd ../portals $ /iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260 Deleted network portal 0.0.0.0:3260 $ /iscsi/iqn.20.../tpg1/portals> create 10.10.110.2 3260 Using default IP port 3260 Created network portal 10.10.110.2:3260. # acl配置 $ /iscsi/iqn.20.../tpg1/portals> cd ../acls #创建acl用户名 acl格式和iqn一致 $ /iscsi/iqn.20...da1/tpg1/acls> create iqn.2018-09.com.adawang:ada2 Created Node ACL for iqn.2018-09.com.adawang:ada2 Created mapped LUN 0. $ /iscsi/iqn.20...da1/tpg1/acls> cd iqn.2018-09.com.adawang:ada2/ #设置acl密码 $ /iscsi/iqn.20....adawang:ada2> set auth password=123456789012 Parameter password is now '123456789012'. #退出 $ /iscsi/iqn.20....adawang:ada2> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json
-
修改init端名称
$ echo 'InitiatorName=<名称>' > /etc/iscsi/initiatorname.iscsi $ source /etc/iscsi/initiatorname.iscsi #重启iscsi服务 $ systemctl restart iscsid.service
表示配置后的变量名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 =node.session.auth.password = <12位-16位长度密码> ....后文省略...
#发现门户ip下的所有target目标 $ iscsiadm -m discovery -t st -p <界面配置的门户ip> ##连接 $ iscsiadm -m node -T-p <门户ip> -l
方法一:fdisk -l 或 lsblk 命令查看
发现新增加的网络硬盘 /dev/sd
方法二: lsscsi -ds
常用参数 -d 显示设备主次序列号
-s 显示容量大小
-c 用全称显示默认的信息
14:0:0:1 最后的1代表lun id , 14代表主机控制器HOST序号
方法三:iscsiadm -m session -P 3
用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 23 09:53:59 2018 # 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/centos-root / xfs defaults 0 0 UUID=0b29b82e-20a5-488b-9606-b1b20e72e0aa /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 UUID=c02b0cbe-eaca-e082-4f4a-7490d831e96e /mnt/iscsi xfs defaults, _netdev 0 0 #确保fstab修改无误 $ mount -a
系统在启动的时候会自动挂载 fstab里的,如果发送错误 则会导致系统无法启动。
一般在修改fstab后用mount -a 命令 加载fstab配置表测试修改是否无误,没有打印代表正常。
因为/dev/sda 容易盘符漂移,所以用uuid全局唯一标示符来代替磁盘符号。
iscsi盘是网络存储设备,需要加上_netdev参数,表示联网后在挂载,否则导致开机太长或系统启动失败。
$ umount /mnt/iscsi # 如果 需要断开全部iscsi 使用iscsiadm -m node -u $ iscsiadm -m node -T-u # 删除节点记录。 # 如果 需要删除所有节点记录 使用iscsiadm -m node -o delete $ iscsiadm -m node -o delete -T -p <门户ip>
- 目录显示输入输出错误
- 挂载的时候显示文件系统损坏
不同文件系统的在线扩容方法以上2中情况都是因为没有断开iscsi的时候没有正常卸载,mount的时候显示文件系统的损化,是因为之前已经挂载过相同盘符或目录,可以通过mount命令查看挂载记录。
- 无法umount 目录
目录被BASH占用--在挂载目录进行卸载
这种情况切换到非挂载目录下就可以卸载了
因磁盘或目录被其他进程占用导致无法卸载
这种解决起来稍微麻烦点
1.用lsof 命令寻找到已经打开的文件的PID号
2.ps aux | grep <磁盘名或目录名> 查找进程的pid号
3.kill -9
4.最后umount卸载
iscsiadm -m session -R
-
刷新iscsi会话
iscsiadm -m session -R
-
ext4扩容
-
xfs扩容
xfs_growfs /dev/
可以看到 扩容前后 blocks 变化
$ multipath #打印提示驱动没有加载 Sep 12 17:22:38 | DM multipath kernel driver not loaded Sep 12 17:22:38 | 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 <指令> --- -r 重新加载配置表 multipthd.conf 。修改配置表或者用multipath -F命令后使用 -ll 显示当前所有路径的信息,一般用于测试多路径是否生效 -F 刷新所有多路径设备map表 -v3 调整debug调式级别打印, 一般用于错误诊断 (打印级别默认v2)
$ 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.9/multipath.conf /etc/ #如果不记得默认的配置表存放目录可以用Find 命令找出来 $ find / -name multipath.conf /etc/multipath.conf /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
$ multipth -ll #多路径合并后的设备 /dev/mapper/mpatha 以后都用这个设备进行操作 mpatha (360a9800064665072443469563477396c) dm-0 NETAPP,LUN size=35G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=4 status=active #多路径下的两个盘符sdb和sde. |- 1:0:0:0 sdb 8:16 active ready running `- 2:0:0:0 sde 8:64 active ready running