一. 软件介绍
SUN Solstice DiskSuite是SUN公司自主研发的磁盘管理软件,并向广大用户免费提供。此软件支持Solaris 2.6 、Solaris 7、 Solaris 8。虽然在Solaris 9中更名为“Sun Volume Manager”,但原理和命令几乎没有任何改变。SUN Solstice DiskSuite最常用的用途是磁盘镜像RAID 1,串连RAID 0(striping,concatenation),RAID 5,RAID 0+1,RAID 1+0,磁盘热备(hotspare),Diskset,操作系统扩容(growfs),文件系统日志(UFS logging),具体见下图:
二. SUN Solstice DiskSuite软件安装
SUN Solstice DiskSuite软件免费提供于Solaris 2.6、Solaris 7、Solaris 8、Solaris 9及最新发布的Solaris 10中。在Solaris 9和Solaris 10中,SUN Solstice DiskSuite已经集成在操作系统当中,不需要安装就可以直接使用。在Solaris 2.6、Solaris 7、 Solaris 8的操作系统环境下,需要对SUN Solstice DiskSuite进行安装。以下介绍具体安装过程(以Solaris 8为例)。
SUN Solstice DiskSuite软件存在于Solaris8系统安装盘的software 2 of 2中,也就是平常所说的Solaris 8安装盘的第3张(通常所说的Solaris 8安装盘有4张:install ,software 1 of 2,software 2 of 2,language)。软件具体目录如下: /sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1
其中,sol_8_401为操作系统版本号,本例中的操作系统版本号为Solaris 8 0401。DiskSuite_4.2.1为SUN Solstice DiskSuite软件版本号,此版本为4.2.1(如果没有安装介质,可以到SUN的网站免费下载软件包)。SUN Solstice DiskSuite软件的安装路径在/usr/opt下,所以您的/usr下至少需要30兆空间来安装SUN Solstice DiskSuite软件。
软件安装方法有两种,在图形界面环境下可以直接执行以上路径中的installer脚本程序。启动图形界面,进而根据下一步提示完成安装。除了installer脚本程序,我们通常利用命令行通过安装软件包来安装SUN Solstice DiskSuite。SUN Solstice DiskSuite软件包存在目录为:sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/packages/
以下为安装实例:
1.进入Packages所在的目录
#cd /cdrom/cdrom0/Solaris_8/EA
#cd /products/DiskSuite_4.2.1/sparc/Packages
2.查看软件包
# ls
SUNWlvma SUNWlvmg SUNWlvmr SUNWmdg SUNWmdja SUNWmdnr SUNWmdnu SUNWmdr SUNWmdu SUNWmdx
3.添加软件包
# pkgadd -d . (注:“.”为安装路径为当前目录,不可省略)
he following packages are available:
1 SUNWlvma Solaris Volume Management API's
(sparc) 1.0,REV=2001.11.02.03.17
2 SUNWlvmg Solaris Volume Management Application
(sparc) 1.0,REV=2001.11.14.03.19
3 SUNWlvmr Solaris Volume Management (root)
(sparc) 1.0,REV=2001.11.14.03.19
4 SUNWmdg Solstice DiskSuite Tool
(sparc) 4.2.1,REV=1999.11.04.18.29
5 SUNWmdja Solstice DiskSuite Japanese localization
(sparc) 4.2.1,REV=1999.12.09.15.37
6 SUNWmdnr Solstice DiskSuite Log Daemon Configuration Files
(sparc) 4.2.1,REV=1999.11.04.18.29
7 SUNWmdnu Solstice DiskSuite Log Daemon
(sparc) 4.2.1,REV=1999.11.04.18.29
8 SUNWmdr Solstice DiskSuite Drivers
(sparc) 4.2.1,REV=1999.12.03.10.00
9 SUNWmdu Solstice DiskSuite Commands
(sparc) 4.2.1,REV=1999.11.04.18.29
10 SUNWmdx Solstice DiskSuite Drivers(64-bit)
(sparc) 4.2.1,REV=1999.11.04.18.29
Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]:
输入all来安装所有软件包。在实际安装过程中,笔者在较早的操作系统环境下曾经遇到安装不成功的情况,原因是驱动不符。SUN Solstice DiskSuite驱动由8号软件包SUNWmdr提供,大家如果碰到类似问题可以先安装8号软件包再安装其他软件包。也就是先在输入栏输入8,等待8号软件包安装成功后再对其它软件包进行安装。
三. Metadevice State Database介绍
SUN Solstice DiskSuite软件在使用的时候需要调用一个其特有的Metadevice State Database小数据库。Metadevice State Database通常被称为Metadb,Metadb用来存储SUN Solstice DiskSuite软件对服务器硬盘的所有配置信息。换句话说,我们所做的所有磁盘、卷、RAID的结构,都存储在Metadb当中。每当服务器重新启动,SUN Solstice DiskSuite软件就会自动调用Metadb中的信息,从而按照这些信息配置物理磁盘,挂接UFS文件系统,从而使操作系统正常启动。相反,如果Metadb被破坏了,操作系统就有可能无法正常启动,进入单用户状态,甚至可能丢失硬盘数据。
Metadb对于SUN Solstice DiskSuite软件来讲是异常重要的。因此我们会在建立Metadb时建立很多备份。一旦Metadb被破坏,SUN Solstice DiskSuite软件可以自动将其恢复,如果Metadb损坏严重,我们也可以手动恢复Metadb,Metadb和其备份之间是实时备份的。
在物理磁盘中,Metadb通常是磁盘的一个专有分区,也就是说在安装操作系统的时候要预留出一个分区给Metadb。这个分区不能存在文件系统,一旦这个分区被做成Metadb,它也就不能再做其他应用。我们通常把磁盘的7号分区预留给Metadb,其大小通常为10兆到50兆。当然,大家也可以用别的分区代替7号分区预留给Metadb。
在实际应用中,我们通常把SUN Solstice DiskSuite软件下的所有硬盘都建立一个Metadb。每个硬盘上的Metadb分区又可以存在多个备份,所有这些备份之间都是实时同步的。这样,我们就基本可以保证Metadb不会被破坏。
Metadb必须在SUN Solstice DiskSuite软件使用之前建立,否则SUN Solstice DiskSuite软件不会生效。我们使用metadb命令,建立Metadevice State Database。下面是一个建立Metadevice State Database的实例:
# metadb -a -f -c 3 cxtxdxsx cytydysy
metadb为软件命令;-a参数为增加metadb;-f参数为建立一个初始的metadb;-c参数后边要加个数字,表示在一个物理分区里的metadb备份的数目,此例中为每个分区里面3个备份;cxtxdxsx cytydysy 则是要建立metadb的物理分区,可以增加他的个数。注意,一旦metadb命令执行成功,预留分区上的其他数据将会被破坏。所以此条命令可以解释为:在cxtxdxsx cytydysy两个硬盘分区上建立初始的Metadb,每块硬盘分区上的备份数目为3。
下面介绍一个删除Metadb的实例:
# metadb –d cxtxdxsx
-d参数为删除metadb。这条命令可以解释为:在cxtxdxsx分区上删除原有的Metadb。我们要查看已经存在的Metadb可以用以下命令:
# metadb –I
最后,总结介绍一下metadb的参数:-a 参数意为增加一个metadb;-f 参数意为建立一个初始化的Metadb;-c n 其中n为数字,此参数意为在每一个分区中建立n个Metadb备份,如果不指定此参数,默认只建立一个Metadb;-d 参数意为删除一个Metadb;-I参数意为查询现有的Metadb的信息,包括备份个数,分布情况和Metadb的健康状况。
SUN Solstice DiskSuite软件的使用接口有三种:基于图形界面操作系统的GUI软件界面方式、命令行方式、修改/etc/opt/SUNWmd/md.tab文件方式。其中,命令行方式应用广泛,本文着重介绍命令行方式。
四. RAID 0
我们通常所说的RAID 0就是对硬盘进行串连,把两个或更多的硬盘或分区串接起来,当做一个逻辑设备使用。RAID 0增加了X倍的数据空间(X为磁盘个数),但是数据的危险性也同时增加到X倍。例如,我们做一个3块硬盘的RAID 0,那么数据空间就是原来的3倍,危险性也是原来的3倍,坏掉3块盘中任何一块硬盘,整个RAID的数据将会全部丢失。
SUN Solstice DiskSuite软件通过把物理硬盘上的逻辑分区设备转换成特殊的DiskSuite设备,通常我们将DiskSuite设备称为“metadevice”,可以通过metainit命令把一个系统逻辑分区做成一个metadevice。metadevice的设备路径和系统原来的设备路径不同,块设备路径在/dev/md/dsk下,裸设备路径在/dev/md/rdsk下。
SUN Solstice DiskSuite软件下的RAID 0有两种方式:concatenation方式和 striping方式。它们为RAID 0提供了两种不同的结构,而且各有各的优、缺点。
1. concatenation方式
concatenation方式把多个逻辑硬盘或分区首尾相接做成一个metadevice。具体结构如下图:
由于数据是从第一个block顺序往下写的,因此,concatenation方式具有良好的可扩展性。也就是说,管理员可以根据文件系统的实时使用情况随时扩充metadevice的大小。然而,就是因为这种顺序写入的结构,使得concatenation方式有个致命的缺点,即IO性能降低。因为当数据写入的时候,只要第一块硬盘没有写满,在其后的硬盘上,都不会有任何的写入动作。这样,也就造成了后面硬盘IO带宽的浪费,从而使整个concatenation方式的RAID 0 IO性能降低。下面是一个制作Concatenation方式RAID 0的实例:
# metainit d1 2 1 /dev/dsk/c0t0d0s1 1 /dev/dsk/c0t1d0s5
metainit为制作metadevice的命令;d1为metadevice的名字;metadevice的名字用dN表示,N可以从0到127;2 为RAID 0的子盘个数,子盘实际上是以striping的方式做成的;1 为每个striping的方式做成的子盘中的分区个数,只有当这个数字为1的时候,我们做成的metadevice才是真正的concatenation方式;/dev/dsk/c0t0d0s1 为要做成metadevice的物理分区。 这条命令可以解释为,用metainit命令制作一个concatenation方式的包含两个子盘名为d1的RAID 0,两个子盘分别为/dev/dsk/c0t0d0s1和/dev/dsk/c0t1d0s5。
2. striping方式
striping方式把多个逻辑硬盘以条带化的方式连接成一个metadevice。具体方式参照下图:
striping方式就是把硬盘分割成若干条带,数据写入的时候和concatenation方式不同。striping方式在写入数据的时候由于条带化的分割,对所有的磁盘都有写入操作,因此striping方式比concatenation方式有着良好的IO。但是,也由于这种条带结构,striping方式不可以在线扩充文件系统容量。下面是一个制作striping方式RAID 0的实例:
# metainit d2 1 2 /dev/dsk/c0t0d0s4 /dev/dsk/c0t0d0s5 –i 32k
metainit