2016-10-01/21:07:24
http://www.cnblogs.com/wuchanming/p/4019660.html
http://czmmiao.iteye.com/blog/2055805
http://lookingdream.blog.51cto.com/5177800/1825286 还有些细节要仔细看
官网与相关标准
http://www.open-iscsi.com/
https://github.com/open-iscsi/open-iscsi
http://www.rfc-base.org/rfc-3720.html
iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的、可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。
iSCSI可分享的设备类型有很多,包括镜像文件(*.img)、分区(partition)、物理硬盘、raid设备、逻辑卷等,下面我们将准备其中的几种来测试,其他类型大家可以自行测试。
iSCSI 服务端和客户端的通讯就是一个在网络上封包和解包的过程,在网络的一端,数据包被封装成包括TCP/IP头、iSCSI 识别包和SCSI 数据三部分内容,传输到网络另一端时,这三部分内容分别被顺序地解开。为了保证安全,iSCSI 有约定操作顺序。在首次运行时,客户端(initiator)设备需要登录到服务端(target)中。任何一个接收到没有执行登录过程的客户端的iSCSI PDU (iSCSI rotocol Data Units,iSCSI 协议数据单元)服务端都将生成一个协议错误,并且关闭连接。在关闭会话之前,服务端可能发送回一个被驳回的iSCSI PDU。
在工作时,iSCSI使SCSI数据块由原来的SCSI总线连接扩展到internet上,这一过程有些产品通过硬件来实现,这种硬件产品被简称为TOE(TCP Offload Engine),随着近年来服务器芯片技术的不断发展,服务器处理能力日益强劲,目前更为普遍的是通过软件来实现SCSI数据块的封装过程。这种软件通常被称为iSCSI Initiator软件/驱动。Initiator软件可以将以太网卡虚拟为iSCSI卡,接受和发送iSCSI数据报文,通过普通以太网卡来进行网络连接,但是需要占用CPU资源。另外的TOE和HBA连接转换方式都需要专门的硬件设备来完成,虽然相对昂贵但执行效率高,也可以减轻主机CPU的负载。本文客户端采用Initiator驱动的连接方式。
open-iscsi包括两个守护进程iscsid和iscsi,其中iscsid是主进程,iscsi进程则主要负责根据配置在系统启动时进行发起端(Initiator)到服务端(target)的登录,建立发起端与服务端的会话,使主机在启动后即可使用通过iSCSI提供服务的存储设备。
iscsid进程实现iSCSI协议的控制路径以及相关管理功能。例如守护进程(指iscsid)可配置为在系统启动时基于持久化的iSCSI数据库内容,自动重新开始发现(discovery)目标设备。
Open-iSCSI是通过以下iSCSI数据库文件来实现永久配置的:
Discovery (/var/lib/iscsi/send_targets)
在 /var/lib/iscsi/send_targets 目录下包含iSCSI portals的配置信息,每个portal对应一个文件,文件名为“iSCSI portal IP,端口号”(例如172.29.88.61,3260)。
Node (/var/lib/iscsi/nodes)
在 /var/lib/iscsi/nodes 目录下,生成一个或多个以iSCSI存储服务器上的Target名命名的文件夹如iqn.2000-01.com.synology:themain-3rd.ittest,在该文件夹下有一个文件名为“iSCSI portal IP,编号” (例如172.29.88.62,3260,0)的配置参数文件default,该文件中是initiator登录target时要使用的参数,这些参数的设置是从/etc/iscsi/iscsi.conf中的参数设置继承而来的,可以通过iscsiadm对某一个参数文件进行更改(需要先注销到target的登录)。
iscsiadm是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。
iSCSI node是一个在网络上可用的SCSI设备标识符,在open-iscsi中利用术语node表示目标(target)上的门户(portal)。一个target可以有多个portal,portal 由IP地址和端口构成。
MPIO可允许1个iSCSI Initiator透过多个Session连入同1个iSCSI Target设备,以便利用多网卡或iSCSI HBA启用负载平衡与故障失效切换机制,也可称作Multiple Sessions per Initiator。
LUN和控制器关系
如果能做到像TCP负载均衡设备一样的话,也需要在FC网络层增加均衡网关,通过盘阵自身均衡没有意义,因为后端是一份LUN。
每个控制器接管不同的LUN,不用切来切去的,这是不争的事实啊,难道还有疑问
在同一个控制器上的多链路做负载均衡,在不同控制器上的多链路做故障切换。
当4G的主机port速率或者是单端口的IOPS成为瓶颈的时候,多路径负载均衡就有作用了。
在任何时刻,一个LUN只能由一个控制器来控制
所谓iSCSI共享存储协议,是指一个iSCSI设备可以被多台服务器共享,而不是指一个卷可被共享。你还是要在openiler上做两个卷,分别用iscsi initiator挂载在两台服务器上。
而集群文件系统,就是指多台服务器共享一个卷。因为集群文件系统可以让多台服务器共同读写一个卷,并且不同服务器看到该卷中的数据都是同步的。而直接挂载,就会出现你所说的现象,两台服务器看到的数据不同步。
round-robin
n. [计] 循环;循环赛
[root@rac1 dev]# iscsiadm -m host
tcp: [15] 192.168.30.31,[<empty>],eth0 <empty>
tcp: [16] 192.168.30.31,[<empty>],eth0 <empty>
cat /sys/class/iscsi_host/host15/ipaddress
------------------------------------------------------------------
存储端:
storage storwize v3700
Machine Type and Model: 6099-12C
Machine Part Number: 6099L2C
Serial Number: 78B1633
添加主机,port,再mapping volume
主机端:
centos6.8
4 fdisk -l
6 yum install iscsi-initiator-utils
7 cat /etc/iscsi/initiatorname.iscsi
8 iscsiadm -m discovery -t sendtargets -p 192.168.40.101
9 service iscsi status
10 iscsiadm --mode node --targetname iqn.1986-03.com.ibm:2145.storage.node1 --portal 192.168.40.101:3260 --login
11 fdisk -l
12 service iscsi restart
18 service iscsi status
21 fdisk -l
23 iscsiadm -m node
------------------------------------------------------
man iscsiadm
specify the mode. op must be one of discoverydb, node, fw, host iface or session.
for node and session mode.
for discovery mode.
iSCSI defines 3 discovery types: SendTargets, SLP, and iSNS.
iscsiadm supports the iSNS (isns) or SendTargets (st) discovery type. An SLP implementation is under development.
------------------------------------------------------
就如同一般外接式储存装置 (target 名称) 可以具有多个磁盘一样,我们的 target 也能够拥有数个磁盘装置的。 每个在同一个 target 上头的磁盘我们可以将它定义为逻辑单位编号 (Logical Unit Number, LUN)。
1.一般的网卡就能当作 iSCSI Target 但是缺点就是会消耗太多的 CPU 资源,针对这样的问题所以发展出另外两种的 iSCSI Target 网卡.
2.一种是软件的 iscsi + TOE (TOE:TCP/IP offload engine),它可以针对 TCP/IP 的封包直接在网络卡 上运算所以不会因此占用系统上的 CPU 的使用率,
3.另外一种就是硬件式的 iSCSI + TOE. 它除了具有 TOE 还可以直接针对 iSCSI 的数据做运算.基本上它的使用上就像是一般存储设备 HBA.你可以直接在 BIOS 选项作 iSCSI 硬件开机的动作.
ISCSI Target 的标准命名方式为:
"Target "+ target名字 (格式如下: iqn.yyyy-mm.<reversed domain name>[:identifier] )
iqn.2001-04.com.example:storage.disk2.sys1.xyz
initiator名称用来唯一标识一个iSCSI Initiator端。保存此名称的配置文件为/etc/iscsi/initiatorname.iscsi
[root@rac2 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:f7977cdb666
target概念
portal概念
[root@www ~]# vi /etc/sysconfig/iptables
iptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 3260 -j ACCEPT
yum install iscsi-initiator-utils
service iscsi start
cat /etc/iscsi/initiatorname.iscsi
/var/lib/iscsi/目录下记录着相关信息
/etc/iscsi/iscsid.conf:主要的配置文件,用来连结到 iSCSI target 的设定;
/sbin/iscsid:启动 iSCSI initiator 的主要服务程序;
/sbin/iscsiadm:用来管理 iSCSI initiator 的主要设定程序;
/etc/init.d/iscsid:让本机模拟成为 iSCSI initiater 的主要服务;
/etc/init.d/iscsi:在本机成为 iSCSI initiator 之后,启动此脚本,让我们可以登入 iSCSI target。所以 iscsid 先启动后,才能启动这个服务。为了防呆,所以 /etc/init.d/iscsi 已经写了一个启动指令, 启动 iscsi 前尚未启动 iscsid ,则会先呼叫 iscsid 才继续处理 iscsi 喔!
老实说,因为 /etc/init.d/iscsi 脚本已经包含了启动 /etc/init.d/iscsid 的步骤在里面,所以,理论上, 你只要启动 iscsi 就好啦!
[root@clientlinux ~]# chkconfig iscsid on
[root@clientlinux ~]# chkconfig iscsi on
service iscsid [status|start]
service iscsi status 查看iscisi的信息,只有在连接成功后才输出
这里可能遇到start始终没有启动成功的信息输出,请继续往下执行discovery,一般会启动iscsid。
1.发现target
iscsiadm -m discovery -t st -p ISCSI_IP
iscsiadm -m discovery -t sendtargets -p 192.168.3.16
2.查看iscsi发现记录:
iscsiadm -m node
-m node:找出目前本机上面所有侦测到的 target 信息,可能并未登入喔
3.登陆与登出target
iscsiadm -m node -T LUN_NAME -p ISCSI_IP -l
加-p或--portal与不加是有所区别的,参看target与portal的概念。一个target上有两个portal
iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node1 -p 192.168.40.101:3260 --login
iscsiadm -m node --targetname iqn.1986-03.com.ibm:2145.storage.node1 --portal 192.168.40.101:3260 --login
iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout
仅登入某部 target ,不要重新启动 iscsi 服务
-T target名称
-l --login
[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --login Logging in to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] (multiple) Logging in to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] (multiple) Login to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] successful. Login to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful. [root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout Logging out of session [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] Logging out of session [sid: 7, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] Logout of [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] successful. Logout of [sid: 7, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful. [root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 -p 192.168.40.104 -l Logging in to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] (multiple) Login to [iface: default, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful. [root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout Logging out of session [sid: 8, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] Logout of [sid: 8, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.104,3260] successful. [root@rac2 ~]#
iscsiadm -m node -T targetname --logout 这个时候的 target 连结还是存在的,虽然注销你还是看的到!
iscsiadm -m node -o [delete|new|update] -T targetname
选项与参数:
--logout :就是注销 target,但是并没有删除 /var/lib/iscsi/nodes/ 内的数据
-o delete:删除后面接的那部 target 链接信息 (/var/lib/iscsi/nodes/*)
-o update:更新相关的信息
-o new :增加一个新的 target 信息。
[root@rac1 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node1 --logout
Logging out of session [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node1, portal: 192.168.40.101,3260]
Logout of [sid: 6, target: iqn.1986-03.com.ibm:2145.storage.node1, portal: 192.168.40.101,3260] successful.
[root@rac2 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout
Logging out of session [sid: 5, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260]
Logout of [sid: 5, target: iqn.1986-03.com.ibm:2145.storage.node2, portal: 192.168.40.102,3260] successful.
[root@rac1 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node1 --logout
iscsiadm: No matching sessions found
[root@rac1 ~]# iscsiadm -m node -T iqn.1986-03.com.ibm:2145.storage.node2 --logout
iscsiadm: No matching sessions found
[root@rac1 ~]# iscsiadm -m node
192.168.40.104:3260,1 iqn.1986-03.com.ibm:2145.storage.node2
192.168.40.102:3260,1 iqn.1986-03.com.ibm:2145.storage.node2
192.168.40.103:3260,1 iqn.1986-03.com.ibm:2145.storage.node1
192.168.40.101:3260,1 iqn.1986-03.com.ibm:2145.storage.node1
[root@rac1 ~]# iscsiadm -m node -o delete -T iqn.1986-03.com.ibm:2145.storage.node1
[root@rac1 ~]# iscsiadm -m node -o delete -T iqn.1986-03.com.ibm:2145.storage.node2
[root@rac1 ~]# iscsiadm -m node
iscsiadm: No records found
存储LUN扩容
http://wutaoblog.blog.51cto.com/80263/1180783
一、ISCSI连接方式
1.先将存储上对应LUN扩容
2.上到前端服务器重新扫描ISCSI的session
iscsiadm -m node -R 扫描所有session
iscsiadm -m node -T target -R 扫描指定的target
这时可以运行fdisk -l 查看磁盘是否扩大
如果配置了多路径,会发现ISCSI硬盘LUN对应的磁盘设备扩大了但是multipath映射的硬盘没有增大,需要重载多路径服务才可以。
centos
1.service multipath reload
ubuntu
1.service multipath-tools reload
这时用户fdisk -l查看会发现/dev/mapper/映射磁盘名 已经扩大
3.查看df -h发现分区还没有扩大,运行下面命令将分区扩大
resize2fs /dev/mapper/映射磁盘名
例:你在multipath中alias 的名称是test
resize2fs /dev/mapper/test
二、FC或HBA卡scsi线直连
centos
同样先在存储上扩容LUN
在服务器上fdisk -l发现存储的LUN没有扩大需要
可以运行scsi-rescan --forcerescan
扩容分区文件系统
resize2fs /dev/对应磁盘
如果提示没有scsi-rescan 命令需要安装sg3_utils
yum install sg3_utils
[root@rac1 ~]# iscsiadm -m node -R
Rescanning session [sid: 2, target: iqn.1986-03.com.ibm:2145.storage.node1, portal: 192.168.40.101,3260]
4.开机自动:
iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op update -n node.startup -v automatic
5.查看存储是否挂载上
fdisk -l
6.用parted进行分区
parted /dev/sdb
mklabel gpt 设置分区为gpt
mkpart primary 0% 100% 将空间划分为一个分区
print
quit
注:fdisk支持小于2TB的磁盘,大于2TB的磁盘需要用parted
7.格式化分区
mkfs.ext4 -T largefile /dev/sdb1
注:-T largefile对格式化大文件速度要快很多
查看磁盘的uuid
blkid /dev/sdb1
/dev/sdb1: UUID="27f0ec37-d7ab-4c93-b9e3-cd09ddd9e340" TYPE="ext4"
8.挂载硬盘
mount -t ext4 /dev/sdb1 /data
9.开机自动挂载
先在/etc/rc.local进行登陆
vim /etc/rc.lcoal
iscsiadm -m node -T iqn.2001-05.com.equallogic:0-af1ff6-dce2985d0-95e004e6a155508d-bak-disk01 -p 192.168.3.16:3260 --login
vim /etc/fstab
UUID=27f0ec37-d7ab-4c93-b9e3-cd09ddd9e340 /data ext4 defaults 0 0
注:default后面的一定要注意,第一个0为是否之处dump,第二个0问支持fsck,这个在启动后会fsck /dev/sdb1,而此时没有挂载导致启动失败。
chap认证
-------------------------------------------------------------------------------
本组下的各个设置项主要用来指定Initiator与target验证方式。
vi /etc/iscsi/iscsid.conf
# To enable CHAP authentication set node.session.auth.authmethod
node.session.auth.authmethod = CHAP 去掉注释
# To set a CHAP username and password for initiator
node.session.auth.username = ittest 修改为网管提供的认证username/passwordnode.session.auth.password = Storageittest
上面是在我的环境中最为简单的一种CHAP(Challenge Handshake Authentication Protocol)认证方式,而且只验证的节点会话initiator端。其实iSCSI验证可以是双向的,根据服务端的设置,可以验证节点会话的target端(username_in),验证发现会话的CHAP initiator,验证发现会话的CHAP target。(节点会话node.session即登录认证,发现会话discovery.sendtargets即查看)
登入需验证码的节点
(1)开启认证
iscsiadm -m node -T LUN_NAME -o update --name node.session.auth.authmethod --value=CHAP
*.使用-o同--op
(2)添加用户
iscsiadm -m node -T LUN_NAME --op update --name node.session.auth.username --value=[用户名]
(3)添加密码
iscsiadm –m node –T LUN_NAME –op update –name node.session.auth.password –value=[密码]
[root@rac1 iscsi]# iscsiadm -m discovery -P 0 192.168.40.103:3260 via sendtargets 192.168.40.102:3260 via sendtargets 192.168.40.101:3260 via sendtargets [root@rac1 iscsi]# iscsiadm -m discovery -P 1 SENDTARGETS: DiscoveryAddress: 192.168.40.103,3260 DiscoveryAddress: 192.168.40.102,3260 Target: iqn.1986-03.com.ibm:2145.storage.node2 Portal: 192.168.40.104:3260,1 Iface Name: default Portal: 192.168.40.102:3260,1 Iface Name: default DiscoveryAddress: 192.168.40.101,3260 iSNS: No targets found. STATIC: No targets found. FIRMWARE: No targets found. [root@rac1 iscsi]# iscsiadm -m node -P 0 192.168.40.104:3260,1 iqn.1986-03.com.ibm:2145.storage.node2 192.168.40.102:3260,1 iqn.1986-03.com.ibm:2145.storage.node2 [root@rac1 iscsi]# iscsiadm -m node -P 1 Target: iqn.1986-03.com.ibm:2145.storage.node2 Portal: 192.168.40.104:3260,1 Iface Name: default Portal: 192.168.40.102:3260,1 Iface Name: default [root@rac2 ~]# iscsiadm -m session tcp: [3] 192.168.40.103:3260,2 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash) tcp: [4] 192.168.40.101:3260,1 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash) [root@rac2 ~]# [root@rac1 ~]# iscsiadm -m session tcp: [7] 192.168.40.102:3260,1 iqn.1986-03.com.ibm:2145.storage.node2 (non-flash) tcp: [8] 192.168.40.104:3260,2 iqn.1986-03.com.ibm:2145.storage.node2 (non-flash) [root@rac2 ~]# iscsiadm -m session -P 0 tcp: [3] 192.168.40.103:3260,2 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash) tcp: [4] 192.168.40.101:3260,1 iqn.1986-03.com.ibm:2145.storage.node1 (non-flash) [root@rac2 ~]# iscsiadm -m session -P 1 Target: iqn.1986-03.com.ibm:2145.storage.node1 (non-flash) Current Portal: 192.168.40.103:3260,2 Persistent Portal: 192.168.40.103:3260,2 ********** Interface: ********** Iface Name: default Iface Transport: tcp Iface Initiatorname: iqn.1994-05.com.redhat:f7977cdb666 Iface IPaddress: 192.168.30.32 Iface HWaddress: <empty> Iface Netdev: <empty> SID: 3 iSCSI Connection State: LOGGED IN iSCSI Session State: LOGGED_IN Internal iscsid Session State: NO CHANGE Current Portal: 192.168.40.101:3260,1 Persistent Portal: 192.168.40.101:3260,1 ********** Interface: ********** Iface Name: default Iface Transport: tcp Iface Initiatorname: iqn.1994-05.com.redhat:f7977cdb666 Iface IPaddress: 192.168.30.32 Iface HWaddress: <empty> Iface Netdev: <empty> SID: 4 iSCSI Connection State: LOGGED IN iSCSI Session State: LOGGED_IN Internal iscsid Session State: NO CHANGE
多路径
http://blog.csdn.net/orangelizq/article/details/12849413 存储的一些基本概念
http://blog.csdn.net/cybertan/article/details/8293211
http://blog.csdn.net/yaoyao4959/article/details/11476201
udev解决iscsi磁盘设备名称固定化
yum install device-mapper-multpath
[root@rac1 dev]# multipath -ll
mpathb (36005076300810df6f800000000000002) dm-2 IBM,2145
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=10 status=active
|- 15:0:0:0 sdb 8:16 active ready running
`- 16:0:0:0 sdc 8:32 active ready running
[root@rac1 ~]# cd /dev/mapper/
[root@rac1 mapper]# ll
total 0
crw-rw----. 1 root root 10, 58 9月 30 19:46 control
lrwxrwxrwx. 1 root root 7 10月 1 18:50 vg_rac1-LogVol00 -> ../dm-1
lrwxrwxrwx. 1 root root 7 10月 1 18:50 vg_rac1-LogVol01 -> ../dm-0
[root@rac1 mapper]# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/
[root@rac1 mapper]# multipath -ll
[root@rac1 mapper]# multipath -ll
[root@rac1 mapper]# service multipathd reload
Reloading multipathd: [ OK ]
[root@rac1 mapper]# multipath -ll
mpathb (36005076300810df6f800000000000002) dm-2 IBM,2145
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=10 status=active
|- 15:0:0:0 sdb 8:16 active ready running
`- 16:0:0:0 sdc 8:32 active ready running
[root@rac1 mapper]# ll
total 0
crw-rw----. 1 root root 10, 58 9月 30 19:46 control
lrwxrwxrwx. 1 root root 7 10月 2 11:13 mpathb -> ../dm-2
lrwxrwxrwx. 1 root root 7 10月 1 18:50 vg_rac1-LogVol00 -> ../dm-1
lrwxrwxrwx. 1 root root 7 10月 1 18:50 vg_rac1-LogVol01 -> ../dm-0
如果出现iscsi共享存储,已经丢失。但多路径中的磁盘还在,最好重载一下multipath服务。就会正常了
[root@rac1 ~]# fdisk -l
Disk /dev/mapper/36005076300810df6f800000000000002: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 32768 bytes / 32768 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/mapper/36005076300810df6f800000000000002p1 1 2611 20971519+ ee GPT
Partition 1 does not start on physical sector boundary.
[root@rac1 ~]# service multipathd status
multipathd is stopped
[root@rac1 ~]# service multipathd start
Starting multipathd daemon: [ OK ]
[root@rac1 ~]# fdisk -l
就正常了
安装multipath
yum install device-mapper-multipath
lsmod |grep multipath
dm_multipath 17724 2 dm_round_robin
dm_mod 84209 14 dm_multipath,dm_mirror,dm_log
vi /etc/multipath.conf
#####
blacklist{
devnode "^sda"
}
defaults {
user_friendly_names yes
udev_dir /dev
path_grouping_policy multibus
failback immediate
no_path_retry fail
}
#####
multipath -F
multipath
# multipath -F #删除现有路径 两个新的路径就会被删除
# multipath -v2 #格式化路径 格式化后又出现
multipathd -k 进入命令交互
multipathd> help
multipath-tools v0.4.9 (04/04, 2009)
CLI commands reference:
list|show paths
list|show paths format $format
list|show paths raw format $format
list|show status
list|show daemon
list|show maps|multipaths
list|show maps|multipaths status
list|show maps|multipaths stats
list|show maps|multipaths format $format
list|show maps|multipaths raw format $format
list|show maps|multipaths topology
list|show topology
list|show map|multipath $map topology
list|show config
list|show blacklist
list|show devices
list|show wildcards
add path $path
remove|del path $path
add map|multipath $map
remove|del map|multipath $map
switch|switchgroup map|multipath $map group $group
reconfigure
suspend map|multipath $map
resume map|multipath $map
resize map|multipath $map
disablequeueing map|multipath $map
restorequeueing map|multipath $map
disablequeueing maps|multipaths
restorequeueing maps|multipaths
reinstate path $path
fail path $path
paths count
forcequeueing daemon
restorequeueing daemon
quit|exit
map|multipath $map getprstatus
map|multipath $map setprstatus
map|multipath $map unsetprstatus
多路径设备扩容方法1:
在rac1上
yum install iscsi-initiator-utils
yum install device-mapper-multipath
service iscsid start
service iscsi start
iscsiadm -m discovery -t st -p 192.168.40.101
iscsiadm -m node -l
vi /etc/multipath.conf
service multipathd start
mulitpath -ll
parted /dev/mapper/mpathb
mkfs
pv
mount /dev/mapper/mpathb /mnt
在A节点上装好multipath,并配置好后,分区格式化后,挂载测试好后
在B节点上直接挂载就行了,不需要分区格式化了,可以看到之前的文件,在b上删除文件后,a上不能立即看到,a需要重新挂载一下
但是两个是不同步的,需要集群文件系统的帮助。
存储端的卷扩容以后
主机端重新扫描下,sd设备也扩容了
iscsiadm -m node -R
主机端多路径也重载一下,多路径设备也扩容了
service multipathd reload
以下是分区,文件系统的扩容,每个节点都要做一次
umount /mnt
parted /dev/mapper/mpathb
rm 1
mkpart primary 0% 100%
quit
mount /dev/mapper/mpathbp1 /mnt
parted /dev/mapper/mpathbp1
rm 1
mkpart 0% 100%
quit
resize2fs /dev/mapper/mpathbp1
df -h
容量扩大,数据不丢失
机器重启的问题
vi /etc/fstab,加入下面行
/dev/mapper/mpathbp1 /mnt ext4 defaults 0 0
可能出现问题如下:
[root@rac01 ~]# resize2fs /dev/mapper/mpathbp1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/mpathbp1 is mounted on /mnt; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 5
Performing an on-line resize of /dev/mapper/mpathbp1 to 18349568 (4k) blocks.
resize2fs: Invalid argument While trying to add group #512
解决如下:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=451388
less /var/log/messages
umount /mnt
e2fsck /dev/mapper/mpathbp1
mount /dev/mapper/mpathbp1 /mnt
df -h
resize2fs /dev/mapper/mpathbp1
df -h
就正常了
多路径设备扩容方法2:
91 parted /dev/mapper/mpathb
100 pvcreate /dev/mapper/mpathbp1
101 pvcreate /dev/mapper/mpathbp2
103 pvdisplay
105 vgcreate lun /dev/mapper/mpathbp1
106 vgdisplay
113 lvcreate -n lv1 -L 9G lun
114 lvdisplay
115 mkfs.ext4 /dev/lun/lv1
117 mount /dev/mapper/lun-lv1 /mnt
122 pvdisplay
123 vgextend lun /dev/mapper/mpathbp2
124 vgdisplay
130 lvextend -n /dev/lun/lv1 -L +10G
131 df -h
132 fdisk -l
133 resize2fs /dev/lun/lv1
134 df -h
135 pvdisplay
fdisk -l 看磁盘大小是否正常 fdisk /dev/sda p,n,3,t,8e,p,w reboot pvcreate /dev/sda3 pvdisplay vgdisplay vgextend VolGroup /dev/sda3 lvdisplay lvextend -L +4GB -n /dev/VolGroup/lv_root resize2fs /dev/VolGroup/lv_root reboot 这样就扩容完成了
[root@rac02 mnt]# multipath -ll mpathb (36005076300810df6f800000000000005) dm-3 IBM,2145 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=0 status=active | |- 10:0:0:0 sdd 8:48 failed faulty offline | `- 9:0:0:0 sde 8:64 failed faulty running `-+- policy='round-robin 0' prio=10 status=enabled |- 7:0:0:0 sdb 8:16 active ready running `- 8:0:0:0 sdc 8:32 active ready running [root@rac02 mnt]# multipath -ll mpathb (36005076300810df6f800000000000005) dm-3 IBM,2145 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=0 status=enabled | |- 10:0:0:0 sdd 8:48 failed faulty running | `- 9:0:0:0 sde 8:64 failed faulty running `-+- policy='round-robin 0' prio=10 status=active |- 7:0:0:0 sdb 8:16 active ready running `- 8:0:0:0 sdc 8:32 active ready running =================================================== avg-cpu: %user %nice %system %iowait %steal %idle 0.17 0.00 1.26 14.41 0.00 84.16 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0 dm-1 0.00 0.00 0.00 0 0 dm-2 0.00 0.00 0.00 0 0 sdb 77.00 0.00 78848.00 0 78848 sdc 86.00 0.00 88064.00 0 88064 sdd 0.00 0.00 0.00 0 0 sde 0.00 0.00 0.00 0 0 dm-3 163.00 0.00 166912.00 0 166912 dm-4 19967.00 0.00 159736.00 0 159736 avg-cpu: %user %nice %system %iowait %steal %idle 0.34 0.00 0.42 6.08 0.00 93.16 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0 dm-1 0.00 0.00 0.00 0 0 dm-2 0.00 0.00 0.00 0 0 sdb 75.00 0.00 74768.00 0 74768 sdc 72.00 0.00 73088.00 0 73088 sdd 0.00 0.00 0.00 0 0 sde 0.00 0.00 0.00 0 0 dm-3 147.00 0.00 147856.00 0 147856 dm-4 50.00 0.00 400.00 0 400 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 scd0 0.00 0.00 0.00 0 0 dm-0 0.00 0.00 0.00 0 0 dm-1 0.00 0.00 0.00 0 0 dm-2 0.00 0.00 0.00 0 0 sdb 112.00 0.00 114688.00 0 114688 sdc 112.00 0.00 114688.00 0 114688 sdd 0.00 0.00 0.00 0 0 sde 0.00 0.00 0.00 0 0 dm-3 224.00 0.00 229376.00 0 229376 dm-4 28800.00 0.00 230400.00 0 230400 [root@rac02 mnt]# multipath -ll mpathb (36005076300810df6f800000000000005) dm-3 IBM,2145 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=50 status=enabled | |- 10:0:0:0 sdd 8:48 failed ready running | `- 9:0:0:0 sde 8:64 failed ready running `-+- policy='round-robin 0' prio=10 status=active |- 7:0:0:0 sdb 8:16 active ready running `- 8:0:0:0 sdc 8:32 active ready running [root@rac02 mnt]# multipath -ll mpathb (36005076300810df6f800000000000005) dm-3 IBM,2145 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=50 status=enabled | |- 10:0:0:0 sdd 8:48 failed ready running | `- 9:0:0:0 sde 8:64 failed ready running `-+- policy='round-robin 0' prio=0 status=enabled |- 7:0:0:0 sdb 8:16 failed faulty offline `- 8:0:0:0 sdc 8:32 failed faulty offline [root@rac02 mnt]# multipath -ll mpathb (36005076300810df6f800000000000005) dm-3 IBM,2145 size=50G features='0' hwhandler='0' wp=rw |-+- policy='round-robin 0' prio=50 status=active | |- 10:0:0:0 sdd 8:48 active ready running | `- 9:0:0:0 sde 8:64 active ready running `-+- policy='round-robin 0' prio=10 status=enabled |- 7:0:0:0 sdb 8:16 active ready running `- 8:0:0:0 sdc 8:32 active ready running