linux 多路径存储是怎么回事

linux 多路径存储是怎么回事,第1张

Linux下HDS存储多路径查看

在Redhat下确定需要划分的存储空间。在本例中需要进行划分的空间是从HDS AMS2000上划分到服务器的多路径存储空间。其中sddlmad为ycdb1上需要进行划分的空间,sddlmah为ycdb2上需要进行划分的空间。具体如下:

查看环境

# rpm -qa|grep device-mapper

device-mapper-event-1.02.32-1.el5

device-mapper-multipath-0.4.7-30.el5

device-mapper-1.02.32-1.el5

# rpm -qa|grep lvm2 lvm2-2.02.46-8.el5

查看空间

#fdisk -l

Disk /dev/sddlmad: 184.2 GB, 184236900352 bytes 255 heads, 63 sectors/track, 22398 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sddlmah: 184.2 GB, 184236900352 bytes

255 heads, 63 sectors/track, 22398 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

查看存储

#cd /opt/DynamicLinkManager/bin/

#./dlnkmgr view -lu

Product : AMS

SerialNumber : 83041424 LUs : 8

iLU HDevName DevicePathID Status

0000 sddlmaa /dev/sdb 000000 Online

/dev/sdj 000008 Online

/dev/sdr 000016 Online

/dev/sdz 000017 Online

0001 sddlmab /dev/sdc 000001 Online

/dev/sdk 000009 Online

/dev/sds 000018 Online

/dev/sdaa 000019 Online

0002 sddlmac /dev/sdd 000002 Online

/dev/sdl 000010 Online

/dev/sdt 000020 Online

/dev/sdab 000021 Online

0003 sddlmad /dev/sde 000003 Online

/dev/sdm 000011 Online

/dev/sdu 000022 Online

/dev/sdac 000023 Online

0004 sddlmae /dev/sdf 000004 Online

/dev/sdn 000012 Online

/dev/sdv 000024 Online

/dev/sdad 000025 Online

0005 sddlmaf /dev/sdg 000005 Online

/dev/sdo 000013 Online

/dev/sdw 000026 Online

/dev/sdae 000027 Online

0006 sddlmag /dev/sdh 000006 Online

/dev/sdp 000014 Online

/dev/sdx 000028 Online

/dev/sdaf 000029 Online

0007 sddlmah /dev/sdi 000007 Online

/dev/sdq 000015 Online

/dev/sdy 000030 Online

/dev/sdag 000031 Online

##############################################################

4. lvm.conf的修改

为了能够正确的使用LVM,需要修改其过滤器:

#cd /etc/lvm #vi lvm.conf

# By default we accept every block device

# filter = [ "a/.*/" ]

filter = [ "a|sddlm[a-p][a-p]|.*|","r|dev/sd|" ]

例:

[root@bsrunbak etc]# ls -l lvm*

[root@bsrunbak etc]# cd lvm

[root@bsrunbak lvm]# ls

archive backup cache lvm.conf

[root@bsrunbak lvm]# more lvm.conf

[root@bsrunbak lvm]# pvs

Last login: Fri Jul 10 11:17:21 2015 from 172.17.99.198

[root@bsrunserver1 ~]#

[root@bsrunserver1 ~]#

[root@bsrunserver1 ~]# df -h

FilesystemSize Used Avail Use% Mounted on

/dev/sda4 30G 8.8G 20G 32% /

tmpfs 95G 606M 94G 1% /dev/shm

/dev/sda2 194M 33M 151M 18% /boot

/dev/sda1 200M 260K 200M 1% /boot/efi

/dev/mapper/datavg-oraclelv

50G 31G 17G 65% /oracle

172.16.110.25:/Tbackup

690G 553G 102G 85% /Tbackup

/dev/mapper/tmpvg-oradatalv

345G 254G 74G 78% /oradata

/dev/mapper/datavg-lvodc

5.0G 665M 4.1G 14% /odc

[root@bsrunserver1 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda5datavg lvm2 a-- 208.06g 153.06g

/dev/sddlmba tmpvg lvm2 a-- 200.00g 49.99g

/dev/sddlmbb tmpvg lvm2 a-- 200.00g 0

[root@bsrunserver1 ~]# cd /etc/lvm

[root@bsrunserver1 lvm]# more lvm.conf

# Don't have more than one filter line active at once: only one gets

used.

# Run vgscan after you change this parameter to ensure that

# the cache file gets regenerated (see below).

# If it doesn't do what you expect, check the output of 'vgscan -vvvv'.

# By default we accept every block device:

# filter = [ "a/.*/" ]

# Exclude the cdrom drive

# filter = [ "r|/dev/cdrom|" ]

# When testing I like to work with just loopback devices:

# filter = [ "a/loop/", "r/.*/" ]

# Or maybe all loops and ide drives except hdc:

# filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]

# Use anchors if you want to be really specific

# filter = [ "a|^/dev/hda8$|", "r/.*/" ]

filter = [ "a|/dev/sddlm.*|", "a|^/dev/sda5$|", "r|.*|" ]

[root@bsrunserver1 lvm]# df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda4 30963708 9178396 20212448 32% /

tmpfs 99105596620228 98485368 1% /dev/shm

/dev/sda2 198337 33546154551 18% /boot

/dev/sda1 204580 260204320 1% /boot/efi

/dev/mapper/datavg-oraclelv

51606140 31486984 17497716 65% /oracle

172.16.110.25:/Tbackup

722486368 579049760 106736448 85% /Tbackup

/dev/mapper/tmpvg-oradatalv

361243236 266027580 76865576 78% /oradata

/dev/mapper/datavg-lvodc

5160576680684 4217748 14% /odc

[root@bsrunserver1 lvm]#

You have new mail in /var/spool/mail/root

[root@bsrunserver1 lvm]#

[root@bsrunserver1 lvm]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda5datavg lvm2 a-- 208.06g 153.06g

/dev/sddlmba tmpvg lvm2 a-- 200.00g 49.99g

/dev/sddlmbb tmpvg lvm2 a-- 200.00g 0

[root@bsrunserver1 lvm]#

进入文件:

[root@bsrunbak lvm]# cd /opt/D*/bin

or

[root@bsrunbak bin]# pwd

/opt/DynamicLinkManager/bin

显示HDS存储卷:

[root@bsrunbak lvm]# ./dlnkmgr view -lu

负载均衡是一项困难的任务。我们经常需要通过NFS(网络文件系统)或其他机制来为数据提供中心地址,从而共享文件系统。虽然你的安全机制可能可以让你免于Web服务器节点的故障,但是你仍然需要通过中央存储节点来共享数据。

通过GFS(全局文件系统)——Linux的一个免费集群文件系统——你可以创建一个不需要依赖其他服务器的真正稳定的集群。在这篇文章中,我们将展示如何正确地设置GFS.

从概念上来说,一个集群文件系统可以允许多个 *** 作系统载入同一个文件系统并可以在同一时间内向同一文件系统写入数据。现在有许多集群文件系统,包括Sun的Lustre,Oracle的OCFS(Oracle集群文件系统),以及Linux的GFS.

有许多方法可以让一个块设备同时被多个服务器所使用。你可以分区出一个对多个服务器都可视的SAN(存储局域网)LUN(逻辑单元号),设置好相应的iSCSI(互联网小型计算机系统接口),或使用DRBD(分布式复制块设备)在两台服务器之间复制一个分区。在使用DRBD的时候,你将需要在主/主节点中设置好DRBD以使用GFS.

GFS要求

运行GFS意味着你在运行一个集群。目前为止,运行GFS的最简单的手段就是使用Red Hat Cluster Suite(RHCS:Red Hat集群套件)。这个套件在CentOS中就有。此外,还需要下面这些包:cman——集群管理器lvm2-cluster——使LVM(逻辑卷管理器)可以支持集群的CLVM(集群逻辑卷管理器)包kmod-gfs——GFS内核模块最后是gfs-utils.

集群管理器(cman)包含必要的工具,比如分布式锁管理器。除非你希望花时间来确认各种不同的分发版本是如何采用cman的,否则我们强烈推荐使用CentOS或RHEL.同时,你还将获得RH(Red Hat)所维护的各种最新版本的集群服务,此外你还可以获得一个比较稳定的环境。

Fencing(阻绝)机制是绝对必要的。一些指导性文章建议将阻绝模式设定成"手动",因为阻绝设置有可能比较复杂。阻绝意味在集群中进行隔离,或马上中断某些危险节点的运作。如果集群无法阻绝某个发生故障的节点,那么你的GFS将会出现很多问题,因此不要跳过这个步骤。

创建集群设置

你可以通过/etc/cluster/里面的cluster.conf完成大部分的集群设置。我不建议使用各种集群管理应用程序来创建这个设置文件。即使是完全支持的RHEL应用程序,比如两个月前发布的Conga,也经常会创建一些无效的cluster.conf文件,并且无法被必要的服务所解析。

下面是一个cluster.conf文件的例子。这个设置文件采用漂亮的XML格式,其内容非常直接。首先,我们对集群进行命名,我们将这个集群称作"Web.1".

先跳过fence daemon选项,下一个部分就是集群主体的设置内容。你需要在clusternodes部分定义两个节点。设置文件将同时存放在两个节点上,这样这两个节点就都知道彼此的情况。

集群内的每个节点都声明其阻绝方式的名称是独一无二的。在clusternames结束标签下面,我们看到fencedevice部分定义了每个节点如何阻绝其他节点的方式。使用一个支持IPMI(智能平台管理接口)的服务器是最好的方式,而且其设置也是相当简单。你只要将IPMI的地点以及登录方式告诉IP就可以了。为了避免在cluster.conf中留下密码,你可以将它指向一个由根所拥有的脚本并由这个脚本来返回密码。

我们还要指出的是我们在设置中定义了两个节点。这是必须的,因为通常来说,除非大部分节点都同意自己的状态,否则集群无法达到"Quorate"状态。如果只有两个节点的话,没有肯定多数,因此这种方式让集群只能在两个节点下工作,而不能只在只有一个节点的情况下工作。这是设置基本集群的必要方式。

在每个节点上运行"service cman start",系统应该可以开始正常运作。你可以检查"clustat"或"cman nodes"来确认节点是否良好运行。如果有哪个必要的部分没有启动,那么集群将不会显示"Quorate"状态。

GFS设置

首先,我们需要设置CLVM,这样我们才可以通过GFS使用LVM.激活CLVM只要在lvm.conf中设定"locking type=3"就可以了。

然后,就像平常一样创建一个LVM卷组和卷,但是使用的是共享的块设备。如果你使用的是DRBD,你将有可能使用/dev/drbd0.我创建了一个物理卷,然后创建一个名为vg01的卷组,然后创建一个名为web1的逻辑卷,这个卷在:/dev/vg01/web1.

最后,我们需要创建文件系统:

gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 /dev/vg01/web1

-t中给定的名称必须是集群的名称,然后后面是你给这个文件系统所起的名字。只有web1集群的成员才可以载入这个文件系统。然后,设定分布式锁管理器的锁钥类型,指明你需要两份journal(因为这是一个双节点集群)。如果你预计未来要增加更多的节点,那么你需要在这时设定足够高的journal数量。

总结

我们现在可以开始使用这个文件系统了。在两个节点上启动"clvmd"和"gfs"服务。现在你就可以通过"-t gfs"来将类型指定为GFS,从而载入文件系统。

在开始启动之前,一定要设定好cman,clvmd和gfs服务。你最好能熟悉clustat和gfs_tool命令,因为在系统出现问题的时候,你可以用这些命令来查找问题所在。

不要指望GFS能很快。如果有一个节点在进行大量的写入 *** 作的话,那么在访问文件系统的时候出现停顿是很正常的。对于一个数据读取 *** 作比数据写入 *** 作多得多的Web集群来说,这倒不是什么问题。如果出现明显延迟,那么首先要检查一下所有组件的状况,然后评估正在写入的数据。防止延迟现象的最常见措施就是确保HTTP对话中的数据不是写入GFS卷。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8370900.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存