感谢伟哥的文档跟帮助,伟哥的blog://http://ylw6006.blog.51cto.com 此人大牛也...
环境:
系统:redhat 5.4
服务端:10.0.0.52
节点1:10.0.0.53
节点2:10.0.0.54
Redhat iscsi共享存储安装:
服务器端:
首先需要安装scsi-target-utils工具包,然后将tgtd服务设置成开机自动启动,然后划出一个LVM做共享盘阵,LVM的名称为mydata
[root@localhost ~]# yum install -y scsi-target-utils.x86_64
[root@localhost ~]# service tgtd start
Starting SCSI target daemon: [ OK ]
[root@localhost ~]# chkconfig tgtd on
[root@localhost ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
Lvmydata vg01 -wi-ao 310.41G
Lvroot vg01 -wi-ao 50.00G
Lvusr vg01 -wi-ao 50.00G
每次重启tgtd服务的时候,之前使用tgtdadmin绑定的target和logicalunit都会失效,因而写了个脚本用于简化操作
IQN命名规范:iqn.date. reverse.domain.name:optional name,例如:iqn.2011-12-15.com.hsf.data:shareddisk
这里设置允许所有的IP进行进行挂载,取消target绑定的时候需要先取消logicalunit然后取消target
[root@localhost ~]# vi /etc/init.d/tgtdrules
#!/bin/sh
# chkconfig: - 59 85
# Source function library.
. /etc/rc.d/init.d/functions
start() {
echo -e "Starting Tgtdrules Server:\n"
# Target
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2011-12-15.com.hsf.data:shareddisk
# Lun
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/vg01/Lvmydata
# Init
#tgtadm --lld iscsi --op bind --mode target --tid 1 -I 10.0.0.53
#tgtadm --lld iscsi --op bind --mode target --tid 1 -I 10.0.0.54
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
}
stop() {
echo -e "Stopping Tgtdrules Server:\n"
# Lun
tgtadm --lld iscsi --op delete --mode logicalunit --tid 1 --lun 1
# Target
tgtadm --lld iscsi --op delete --mode target --tid 1
# Init
#tgtadm --lld iscsi --op unbind --mode target --tid 1 -I 10.0.0.53
#tgtadm --lld iscsi --op unbind --mode target --tid 1 -I 10.0.0.54
tgtadm --lld iscsi --op unbind --mode target --tid 1 -I ALL
}
status() {
tgtadm --lld iscsi -o show -m target
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo {1}quot;Usage: tgtdrules {start|stop|status}"
;;
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/tgtdrules
服务器端测试:
[root@localhost ~]# service tgtd status
tgtd (pid 29246 29245) is running...
[root@localhost ~]# netstat -ntpl| grep :3260
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 29245/tgtd
tcp 0 0 :::3260 :::* LISTEN 29245/tgtd
[root@localhost ~]# service tgtdrules start
[root@localhost ~]# service tgtdrules status
Target 1: iqn.2011-12-15.com.hsf.data:shareddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0 MB
Online: Yes
Removable media: No
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 333296 MB
Online: Yes
Removable media: No
Backing store: /dev/vg01/Lvmydata
Account information:
ACL information:
ALL
节点安装:
安装iscsi-initiator-utils软件包,设置iscsi进程开机自动启动
[root@localhost ~]# yum install -y iscsi-initiator-utils.x86_64
[root@localhost ~]# service iscsi start
iscsid is stopped
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
[ OK ]
Setting up iSCSI targets: iscsiadm: No records found!
[ OK ]
[root@localhost ~]# chkconfig iscsi on
[root@localhost ~]# service iscsi status
iscsid (pid 29527) is running...
自动挂载iscsi脚本内容如下,挂载和卸载之前先发现,探测一次服务器端的共享是否正常
[root@localhost ~]# vi /etc/init.d/iscsiadmrules
#!/bin/bash
# chkconfig: - 20 85
# Source function library.
. /etc/rc.d/init.d/functions
start() {
echo -e "Starting Iscsiadmrules Server:\n"
iscsiadm --mode discovery --type sendtargets --portal 10.0.0.52
iscsiadm --mode node --targetname iqn.2011-12-15.com.hsf.data:shareddisk --portal 10.0.0.52:3260 --login
}
stop() {
echo -e "Stopping Iscsiadmrules Server:\n"
iscsiadm --mode discovery --type sendtargets --portal 10.0.0.52
iscsiadm --mode node --targetname iqn.2011-12-15.com.hsf.data:shareddisk --portal 10.0.0.52:3260 --logout
}
case "$1" in
start)
start
;;
stop)
stop
;;
esac
exit 0
[root@localhost ~]# chmod +x /etc/rc.d/init.d/iscsiadmrules
挂载:
[root@localhost ~]# service iscsiadmrules start
Starting Iscsiadmrules Server:
10.0.0.52:3260,1 iqn.2011-12-15.com.hsf.data:shareddisk
Logging in to [iface: default, target: iqn.2011-12-15.com.hsf.data:shareddisk, portal: 10.0.0.52,3260]
Login to [iface: default, target: iqn.2011-12-15.com.hsf.data:shareddisk, portal: 10.0.0.52,3260]: successful
[root@localhost ~]# service iscsi status
iscsid (pid 29527) is running...
[root@localhost ~]# fdisk -l
Disk /dev/sda: 449.4 GB, 449495171072 bytes
255 heads, 63 sectors/track, 54648 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 83 Linux
/dev/sda2 26 1069 8385930 82 Linux swap / Solaris
/dev/sda3 1070 54648 430373317+ 8e Linux LVM
Disk /dev/sdb: 333.2 GB, 333296173056 bytes
255 heads, 63 sectors/track, 40520 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
共享存储以/sdb形式加载进来了.
到服务端看一下.
[root@localhost ~]# service tgtdrules status
Target 1: iqn.2011-12-15.com.hsf.data:shareddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 1
Initiator: iqn.1994-05.com.redhat:424056be2e26
Connection: 0
IP Address: 10.0.0.53
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0 MB
Online: Yes
Removable media: No
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 333296 MB
Online: Yes
Removable media: No
Backing store: /dev/vg01/Lvmydata
Account information:
ACL information:
ALL
可以看到10.0.0.53已经挂载了.
在另外一台客户端也进行同步的操作再去服务端查看下:
[root@localhost ~]# service tgtdrules status
Target 1: iqn.2011-12-15.com.hsf.data:shareddisk
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 1
Initiator: iqn.1994-05.com.redhat:424056be2e26
Connection: 0
IP Address: 10.0.0.53
I_T nexus: 2
Initiator: iqn.1994-05.com.redhat:ba96a2c6310
Connection: 0
IP Address: 10.0.0.54
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0 MB
Online: Yes
Removable media: No
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 333296 MB
Online: Yes
Removable media: No
Backing store: /dev/vg01/Lvmydata
Account information:
ACL information:
ALL
GFS安装配置
先配置下yum源
[root@localhost ~]# cat /etc/yum.repos.d/base.repo
[base]
name=RHEL 5.4 Server
baseurl=ftp://10.0.0.23/pub/Server/
gpgcheck=0
[VT]
name=RHEL 5.4 VT
baseurl=ftp://10.0.0.23/pub/VT/
gpgcheck=0
[Cluster]
name=EHRL 5.4 Cluster
baseurl=ftp://10.0.0.23/pub/Cluster
gpgcheck=0
[ClusterStorage]
name=EHRL 5.4 ClusterStorage
baseurl=ftp://10.0.0.23/pub/ClusterStorage
gpgcheck=0
[root@localhost ~]# yum -y groupinstall "Cluster Storage" "Clustering"
创建配置文件,启动相关进程,两个节点做同样的配置
[root@localhost ~]# vi /etc/cluster/cluster.conf
<?xml version="1.0" ?>
<cluster config_version="2" name="file_gfs">
<fence_daemon post_fail_delay="0" post_join_delay="3"/>
<clusternodes>
<clusternode name="10.0.0.53" nodeid="1" votes="1">
<fence/>
</clusternode>
<clusternode name="10.0.0.54" nodeid="2" votes="1">
<fence/>
</clusternode>
</clusternodes>
<cman expected_votes="1" two_node="1"/>
<fencedevices/>
<rm>
<failoverdomains/>
<resources/>
</rm>
</cluster>
[root@localhost ~]# lvmconf --enable-cluster
[root@localhost ~]# service rgmanager start
Starting Cluster Service Manager: [ OK ]
[root@localhost ~]# chkconfig rgmanager on
[root@localhost ~]# service ricci start
Starting system message bus: [ OK ]
Starting oddjobd: [ OK ]
generating SSL certificates... done
Starting ricci: [ OK ]
[root@localhost ~]# chkconfig ricci on
[root@localhost ~]# service cman start
Starting cluster:
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing... done
[ OK ]
[root@localhost ~]# chkconfig cman on
[root@localhost ~]# service clvmd start
Starting clvmd: [ OK ]
Activating VGs: 3 logical volume(s) in volume group "vg01" now active
[ OK ]
[root@localhost ~]# chkconfig clvmd on
[root@localhost ~]# clustat
Cluster Status for file_gfs @ Thu Dec 15 13:53:40 2011
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
10.0.0.53 1 Online, Local
10.0.0.54 2 Offline
在共享存储上划分LVM,在一个节点上操作即可
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# vgcreate file_gfs /dev/sdb1
Clustered volume group "file_gfs" successfully created
[root@localhost ~]# vgdisplay file_gfs
--- Volume group ---
VG Name file_gfs
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
Clustered yes
Shared no
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 310.40 GB
PE Size 4.00 MB
Total PE 79462
Alloc PE / Size 0 / 0
Free PE / Size 79462 / 310.40 GB
VG UUID XebmJz-qHFl-Pe5U-gvEL-y1Ml-HbRV-j3GvSd
[root@localhost mnt]# lvcreate -n gfs -l 79462 file_gfs
Logical volume "gfs" created
如果报以下的错误:
[root@localhost ~]# lvcreate -n gfs1 -l 79462 file_gfs
Error locking on node 10.0.0.54: Volume group for uuid not found: XebmJzqHFlPe5UgvELy1MlHbRVj3GvSdig4REYsoFSRsUE7byErDdOYcJwu3DTct
Aborting. Failed to activate new LV to wipe the start of it.
可以先重启下两台节点的clvmd.
[root@localhost ~]# service clvmd restart
Deactivating VG file_gfs: 0 logical volume(s) in volume group "file_gfs" now active
[ OK ]
Stopping clvm: [ OK ]
Starting clvmd: [ OK ]
Activating VGs: 0 logical volume(s) in volume group "file_gfs" now active
3 logical volume(s) in volume group "vg01" now active
[ OK ]
如果还是不行.就在两台节点上vgs查看下.是不是都能看到这个vg.
[root@localhost mnt]# vgs
VG #PV #LV #SN Attr VSize VFree
file_gfs 1 1 0 wz--nc 310.40G 0
vg01 1 3 0 wz--n- 410.41G 0
[root@localhost ~]# service clvmd restart
Deactivating VG file_gfs: 0 logical volume(s) in volume group "file_gfs" now active
[ OK ]
Stopping clvm: [ OK ]
Starting clvmd: [ OK ]
Activating VGs: 1 logical volume(s) in volume group "file_gfs" now active
3 logical volume(s) in volume group "vg01" now active
[ OK ]
格式化lvm卷
[root@localhost ~]# gfs_mkfs -h
Usage:
gfs_mkfs [options] <device>
Options:
-b <bytes> Filesystem block size
-D Enable debugging code
-h Print this help, then exit
-J <MB> Size of journals
-j <num> Number of journals
-O Don't ask for confirmation
-p <name> Name of the locking protocol
-q Don't print anything
-r <MB> Resource Group Size
-s <blocks> Journal segment size
-t <name> Name of the lock table
-V Print program version information, then exit
[root@localhost ~]# gfs_mkfs -p lock_dlm -t file_gfs:gfs -j 2 /dev/file_gfs/gfs
This will destroy any data on /dev/file_gfs/gfs.
Are you sure you want to proceed? [y/n] y
Device: /dev/file_gfs/gfs
Blocksize: 4096
Filesystem Size: 81297320
Journals: 2
Resource Groups: 1242
Locking Protocol: lock_dlm
Lock Table: file_gfs:gfs
Syncing...
All Done
在两个节点上分别挂载,并测试写入数据
[root@localhost ~]# mount -t gfs /dev/file_gfs/gfs /data/
[root@localhost data]# dd if=/dev/zero of=aa bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 1.25589 seconds, 835 MB/s