分类: 服务器与存储
2012-07-12 09:57:29
本文将向大家介绍如何监控磁盘,磁盘组、卷的状态,确保存储时刻保持在稳定应用的状态;修改卷的存储模式,指定存储属性;以及如何利用日志记录存储实时的状态,保证系统可以在发生故障的时候快速恢复。
为了说明清楚,文章假设用户已经用三块磁盘disk1,disk2,disk3组成了磁盘组TestDG,并且在上面创建了普通卷TestVol:
一, 检查磁盘状态
# vxdisk -o alldgs list
DEVICE TYPE DISK GROUP STATUS
Disk1 auto:cdsdisk TestDG01 TestDG online
Disk2 auto:cdsdisk TestDG02 TestDG online
Disk3 auto:cdsdisk TestDG03 TestDG online
Disk4 auto:none - online invalid
Disk5 auto:none - error
Disk6 auto:cdsdisk OtherDG OtherDG online
从这个命令我们能得出这样一些信息:
1) Disk1,disk2和disk3组成了磁盘组TestDG,而且它的状态是online,说明可以被Storage Foundation正常使用;
2) Disk4的状态是online invalid,说明该盘是可以正常使用的,但是没有被Storage Foundation初始化,所以不能被Storage Foundation管理。一般来说,操作系统所在盘就是这个状态;
3) Disk5显示的状态是error,说明该磁盘有错误,不能被Storage Foundation使用。需要对磁盘进行初始化或者磁盘修复才能使用;
4) Disk6也是被Storage Foundation初始化并且可以正常使用的磁盘,但是它属于另一个磁盘组otherDG。
二, 查看磁盘的详细信息
# vxdisk -g TestDG list disk1
Device: Disk1
devicetag: Disk1
type: auto
hostid: Test
disk: name=TestDG01 id=20070412.1191.Test
group: name= TestDG id=20070412.1191.Test
。。。。
通过该命令可以得到某磁盘的唯一ID号,所属组等信息
除此命令之外,我们还可以使用
# vxdisk -s list 得到所有磁盘的信息概况。
三, 管理磁盘组
a) 检查磁盘组的基本信息
# vxdg list
NAME STATE ID
TestDG enabled,cds 9200745983.1025.cassius
otherDG enabled,cds 9200745984.1025.cassius
b) 了解TestDG的信息
# vxdg list TestDG
通过该命令可以知道该磁盘组包含多少磁盘和卷。
c) 检查磁盘组的剩余空间大小
# vxdg -g TestDG free
作为一个数据管理员,当发现一个以前运行良好的程序突然发生写入失败故障的时候,应该能首先想到是否是之前大量的磁盘写入导致磁盘容量不足,就需要该命令来查看磁盘剩余空间
四, 管理卷
a) 显示卷的属性最重用的命令是vxprint,其最常见的参数包括:
-h:列出卷以及其包含的物理子磁盘和逻辑子磁盘的信息,每个子磁盘信息是一条记录;
-t:每个显示的记录分行显示;
-r:显示卷及其相应的子卷的信息;
-l:显示每个记录的详细信息;
-a:显示每个记录的详细信息,每个记录分行显示
-A:从活动的磁盘组选择卷
该命令最普通的用法是:
# vxprint –g TestDG –ht TestVol
这样可以得到TestVol的所有子磁盘的信息,并且分行显示,如图所示:
vxprint命令的常见用法
b) 如果想要得到更多卷的属性信息,需要输入下列命令:
# vxassist -g TestDG help showattrs
这样可以得到卷的属性
五, 为重要数据增加镜像卷
很多时候,业务的停顿是因为其存储的重要数据的丢失,然后,由于磁盘的寿命都是固定的,硬件故障很多情况下都是不可避免的。所以,能够保证数据快速恢复是一个存储系统重要的衡量指标。而镜像是一种最简单,便宜的保证数据快速恢复的解决方案。现在来说明一下Storage Foundation中如何做数据镜像:
前文曾经提到,在创建卷的时候,可以配置卷为镜像卷:
# vxassist –g TestDg make TestVol 1g layout=mirror。
然而在很多情况下,因为镜像是要多占用一倍存储空间的,所以用户起初不会选择镜像存储,只有在存储了重要的业务数据之后,才会想起来去镜像其重要的一部分数据,这时候他们需要做的就是:
# vxassist -g TestDG mirror TestVol
这样,Storage Foundation就会在TestDG另外找一块空闲的空间为TestVol卷做镜像。(注意,TestDG必须有至少TestVol大小的空闲空间用来存放镜像数据,否则该操作就会失败)。
与此相对应的是:如果想要删除一个镜像数据,扩展磁盘组空间,则需要:
# vxassist -g TestDG remove mirror TestVol,这样Storage Foundation会自动把后备镜像删除,非常简单。
六, 设置卷的存储属性
Storage Foundation可以为用户量身订做符合用户需要的存储结构。用户可以为自己创建的卷指定其存放在特定的控制器控制下,特定目标端口下的特定硬盘上;也可以指定卷数据不能放在某些控制器、目标端口下的磁盘上。灵活的定制存储可以极大的丰富用户的选择,满足不同的存储环境。
1. 创建一个卷包括disk2:
# vxassist –g TestDG make TestVol 1g disk2
2. 创建一个卷不能包括disk3:
# vxassist –g TestDG make TestVol 1g !disk3
3. 创建一个卷包含所有控制器1下,除了目标端口4以外的所有磁盘:
# vxassist –g TestDG make TestVol 1g ctlr:c1 !target:clt4
4. 创建一个镜像卷,其包含两个镜像,一个在目标控制器2下,另一个在目标控制器3下:
# vxassist –g TestDG make TestVol 1g layout=mirror nmirror=2 mirror=ctlr ctlr:c2 ctlr:c3
实际用起来,Storage Foundation也并不像想象中的那么难,是吧?
七, 添加日志卷
添加日志卷有什么好处呢?一般来说日志的目的有两个:一是减少数据的丢失;二是加速数据的恢复。在Storage Foundation的提醒里面,就包含着两周不同的日志类型:脏数据日志(Dirty Region Logging DRL)和RAID5日志。
1, 脏数据日志(DRL):主要是为镜像卷提供日志保护,日志主要记录了硬盘数据读写的操作,如果磁盘发生故障,那么根据该日志,Storage Foundation仅仅需要把有发生过改动的数据区的数据恢复到故障前的最后一个检查点上面。加速了数据的恢复速的
2, RAID5日志是保存了一份数据拷贝和奇偶校验的内容,顾名思义,该日志是为了保护RAID5格式的卷的内容和快速恢复。在普通的RIAND5数据保护中,虽然理论上说一个磁盘发生故障,数据不会丢失。但是实际应用中,因为数据的奇偶校验位分布在不同的磁盘上面,所有剩余磁盘的同步是非常缓慢的过程。然而如果是Storage Foundation的RAID5结构的卷发生故障,那么以为该日志卷存放在同一个地方,就可以快速的恢复RAID5的数据,使之尽快恢复到正常的状态。
3, 为了增加脏数据到一个镜像卷,需要:
# vxassist -g TestDG addlog DRLVol logtype=drl;
4, 为了增加一个RAID5日志到一个RAID5的卷:
# vxassist -g TestDG addlog Raid5LogVol;
5, 删除一个日志卷
# vxassist -g TestDG remove log volume;
通过今天的主题,我们了解到了如何磁盘,磁盘组,卷的状态;了解到如何修改卷的存储设置和存储属性;了解到了两种卷日志的优点以及如何添加和删除卷日志。希望这些文字能够起到抛砖引玉的作用,能是大家更好的了解和使用Storage Foundation这个产品。
下一讲中我讲仔细讲述一下如何在不影响应用的情况下为扩大文件系统;以及如何减小一些文件系统的大小,把有效的磁盘空间,投入到无限的应用中去。尤其是动态缩小磁盘空间这个特点,是其他文件系统都无法做到的。想想看,如果你能随意把磁盘空间随意的分配给不同的应用系统,那么再也不用为存储的扩容和数据的迁移烦恼了,这将会给您的管理带来多大的方便啊!