免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6749 | 回复: 17
打印 上一主题 下一主题

[备份软件] Cuddletech系列VERITAS教程之三(下) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-05 22:12 |只看该作者 |倒序浏览
到此,我们已经为实验做好了准备,让我们预先看一下disk group信息并继续创建volume吧!

# vxprint -g cuddledg -hrt
DG NAME NCONFIG NLOG MINORS GROUP-ID
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

dg cuddledg default default 10000 1029129226.1248.gaff

dm cuddle-f0 c1t0d0s2  sliced 3590 17678493 -
dm cuddle-f1 c1t1d0s2  sliced 3590 17678493 -
dm cuddle-f2 c1t2d0s2  sliced 3590 17678493 -
dm cuddle-f3 c1t3d0s2  sliced 3590 17678493 -
dm cuddle-f4 c1t4d0s2  sliced 3590 17678493 -
dm cuddle-f5 c1t5d0s2  sliced 3590 17678493 -
dm cuddle-f6 c1t6d0s2  sliced 3590 17678493 -
dm cuddle-r0 c1t16d0s2 sliced 3590 17678493 -
dm cuddle-r1 c1t17d0s2 sliced 3590 17678493 -
dm cuddle-r2 c1t18d0s2 sliced 3590 17678493 -
dm cuddle-r3 c1t19d0s2 sliced 3590 17678493 -
dm cuddle-r4 c1t20d0s2 sliced 3590 17678493 -
dm cuddle-r5 c1t21d0s2 sliced 3590 17678493 -
dm cuddle-r6 c1t22d0s2 sliced 3590 17678493 -
#

第一课: 最简单的volume

第一课我们只创建非常简单的volume,规定其大小为4G,命名为“simplevol”。创建的语法如下:
         vxassist -g <diskgroup> -U <usagetype> make <volname> <size>

        早些时候,我们已经讨论过”-g”的用法了。”-U”指定了两种类型的用法:gen或fsgen。”gen”是指raw volume(裸设备卷-字符设备);”fsgen”是指regular volume(字符设备和块设备)。唯一一次我见过人们使用”gen”是和大型数据库有关的情况下,有时候会选择raw volume而不是文件系统。本课程中,我们将使用”fsgen”。参数”make”向vxassist表明,我们希望创建一个volume。”volname”是即将创建的新volume的名字,”size”则是指它的大小。”size”可由以下几种方式指定:1,1m,1g。他们的意思是:1 sector(512KB),1M(megabyte) 和 1G(gigabyte)。
         现在我们已经了解语法了,开始创建吧:

# vxassist -g cuddledg -U fsgen make simplevol 4g
# vxprint -g cuddledg -hrt
DG NAME NCONFIG NLOG MINORS GROUP-ID
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

dg cuddledg default default 10000 1029129226.1248.gaff

dm cuddle-f0 c1t0d0s2 sliced 3590 17678493 -
dm cuddle-f1 c1t1d0s2 sliced 3590 17678493 -
dm cuddle-f2 c1t2d0s2 sliced 3590 17678493 -
dm cuddle-f3 c1t3d0s2 sliced 3590 17678493 -
dm cuddle-f4 c1t4d0s2 sliced 3590 17678493 -
dm cuddle-f5 c1t5d0s2 sliced 3590 17678493 -
dm cuddle-f6 c1t6d0s2 sliced 3590 17678493 -
dm cuddle-r0 c1t16d0s2 sliced 3590 17678493 -
dm cuddle-r1 c1t17d0s2 sliced 3590 17678493 -
dm cuddle-r2 c1t18d0s2 sliced 3590 17678493 -
dm cuddle-r3 c1t19d0s2 sliced 3590 17678493 -
dm cuddle-r4 c1t20d0s2 sliced 3590 17678493 -
dm cuddle-r5 c1t21d0s2 sliced 3590 17678493 -
dm cuddle-r6 c1t22d0s2 sliced 3590 17678493 -

v simplevol fsgen ENABLED ACTIVE 8388608 SELECT -
pl simplevol-01 simplevol ENABLED ACTIVE 8392167 CONCAT - RW
sd cuddle-f0-01 simplevol-01 cuddle-f0 0 8392167 0 c1t0d0 ENA
#

简单吧!我们已经准备好volume,可以创建文件系统啦。你将会注意到,新建volume的layout是”CONCAT”,在一块磁盘上。系统使用了它认为可用的第一块磁盘,并在此磁盘上创建了所有的子对象(sub-object)。volume已经好了。这就是为什么vxassist如此流行的原因,它的确十分快捷和简单。
为完整起见,我们在volume上创建一个文件系统并使用它:

# newfs /dev/vx/rdsk/cuddledg/simplevol
newfs: /dev/vx/rdsk/cuddledg/simplevol last mounted as /test
newfs: construct a new file system /dev/vx/rdsk/cuddledg/simplevol: (y/n)? y
/dev/vx/rdsk/cuddledg/simplevol:
8388608 sectors in 4096 cylinders of 32 tracks, 64 sectors
4096.0MB in 84 cyl groups (49 c/g, 49.00MB/g, 6144 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 100448, 200864, 301280, 401696, 502112, 602528, 702944, 803360, 903776,
1004192, 1104608, 1205024, 1305440, 1405856, 1506272, 1606688, 1707104,
1807520, 1907936, 2008352, 2108768, 2209184, 2309600, 2410016, 2510432,
2610848, 2711264, 2811680, 2912096, 3012512, 3112928, 3211296, 3311712,
3412128, 3512544, 3612960, 3713376, 3813792, 3914208, 4014624, 4115040,
4215456, 4315872, 4416288, 4516704, 4617120, 4717536, 4817952, 4918368,
5018784, 5119200, 5219616, 5320032, 5420448, 5520864, 5621280, 5721696,
5822112, 5922528, 6022944, 6123360, 6223776, 6324192, 6422560, 6522976,
6623392, 6723808, 6824224, 6924640, 7025056, 7125472, 7225888, 7326304,
7426720, 7527136, 7627552, 7727968, 7828384, 7928800, 8029216, 8129632,
8230048, 8330464,
# mkdir /simple_vol
# mount -F ufs /dev/vx/dsk/cuddledg/simplevol /simple_vol/
# cd /simple_vol/
# touch new_file
# ls -al
total 20
drwxr-xr-x 3 root root 512 Aug 11 23:24 .
drwxr-xr-x 33 root root 1024 Aug 11 23:23 ..
drwx------ 2 root root 8192 Aug 11 23:22 lost+found
-rw-r--r-- 1 root other 0 Aug 11 23:24 new_file
#

我们已经完成了,从开始到结束,从一块SCSI硬盘到一个可用的有文件系统的volume,甚至它已经被mount起来了。你会看到,设备路径是按照如下形式来表述的/dev/vx/(r)dsk/<diskgroup>/<volumename>。这样的路径你应该很熟悉啦。

我想尽量缩短命令的输出,比如我只列出了vxprint关于volume部分的输出,而非所有内容。我们也不再讲解文件系统创建之类的内容,相信你已经知道啦。所有的volume(无论以何种方式创建)都是以上面类似的方式创建文件系统的。这么说,我们开始下面一课吧!

第二课: Striped Volumes
默认地,VxAssist会创建串连的volumes。如果在第一课中我们想创建一个40G的volume,系统使用所需要数量的磁盘,创建一个串连的volume。但是,这种简单的volume不能满足我们对速度和性能的需求,因此,在这一课,我们将对vxassist做多一些的设置,并创建一个更大的(40G)striped volume。
让我们看一下创建的语法:
vxassist -g <diskgroup> -U <usagetype> make <volname> <size> \
layout=<layouttype> stwidth=<width> ncolumn=<#> <disk1> \
<disk2> <disk3> ....
好的,前面一些参数我们已经讨论过了。其它的参数,你也可以在VxMake一章创建striped plexes一节中回忆起来。”layout”指定了新volume的layout类型(concat, stripe, mirror, RAID5 等等)。参数”stwdith”和”ncolumn”定义了每一个column的stripe单位的大小(关于stwdith和ncolumn的定义,在cuddletech系列教程的第一篇《VX的土地上,谁是谁》里可以找到)。剩下的参数指明了vxassist要用来创建volume的vm disks。
        需要记住的是,我们可以或多或少的使用这些参数。例如,我们可以设置layout为stripe,但不指定stwdith和ncolumn。我们也可以设置layout为stripe并指定stwidth,但不需要设定ncolumn或要使用哪些vmdisk。你需要练习并获得一些选择参数的常识,多想一想,要达到你的目的,应该选择哪些参数。如果没有这些参数,VM会以它认为最好的方式来满足你的需求。下面的例子,我们将仅设置layout为stripe,创建一个striped的volume,其它工作都交给vxassist完成。

# vxassist -g cuddledg -U fsgen make stripevol 40g layout=stripe
# vxprint -g cuddledg -hrt
DG NAME NCONFIG NLOG MINORS GROUP-ID
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

(..... removed ..........)

v stripevol fsgen ENABLED ACTIVE 83886080 SELECT stripevol-01
pl stripevol-01 stripevol ENABLED ACTIVE 83907654 STRIPE 7/128 RW
sd cuddle-f0-01 stripevol-01 cuddle-f0 0 11986758 0/0 c1t0d0 ENA
sd cuddle-f1-01 stripevol-01 cuddle-f1 0 11986758 1/0 c1t1d0 ENA
sd cuddle-f2-01 stripevol-01 cuddle-f2 0 11986758 2/0 c1t2d0 ENA
sd cuddle-f3-01 stripevol-01 cuddle-f3 0 11986758 3/0 c1t3d0 ENA
sd cuddle-f4-01 stripevol-01 cuddle-f4 0 11986758 4/0 c1t4d0 ENA
sd cuddle-f5-01 stripevol-01 cuddle-f5 0 11986758 5/0 c1t5d0 ENA
sd cuddle-f6-01 stripevol-01 cuddle-f6 0 11986758 6/0 c1t6d0 ENA

VxAssist决定,创建这样的volume需要7块硬盘,stripe width为64k(128个sectors)。它不是必须使用每块硬盘的全部空间,因此它创建了7个subdisks,长度为11986758 sectors(5.9G)。这与我们使用vxmake创建striped volume不同。我们更可能采用5块硬盘,使用每块硬盘的全部空间,创建一个大约45G的volume,但vxassist不同的是,它会尽量逼近所期望的volume空间。这也有它的好处。
        让我们创建另外一个volume,但这一次要指定stwidth,ncolumn和希望用的vmdisks。

# vxassist -U fsgen -g cuddledg make stripevol2 40g \
layout=stripe stwidth=128k ncolumn=5 cuddle-f0 cuddle-f1 \
cuddle-f2 cuddle-f3 cuddle-f4
# vxprint -g cuddledg -hrt
DG NAME NCONFIG NLOG MINORS GROUP-ID
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

(..... removed ......)

v stripevol2 fsgen ENABLED ACTIVE 83886080 SELECT stripevol2-01
pl stripevol2-01 stripevol2 ENABLED ACTIVE 83903943 STRIPE 5/256 RW
sd cuddle-f0-01 stripevol2-01 cuddle-f0 0 16780743 0/0 c1t0d0 ENA
sd cuddle-f1-01 stripevol2-01 cuddle-f1 0 16780743 1/0 c1t1d0 ENA
sd cuddle-f2-01 stripevol2-01 cuddle-f2 0 16780743 2/0 c1t2d0 ENA
sd cuddle-f3-01 stripevol2-01 cuddle-f3 0 16780743 3/0 c1t3d0 ENA
sd cuddle-f4-01 stripevol2-01 cuddle-f4 0 16780743 4/0 c1t4d0 ENA
#

你看到了,在这个例子中我们告诉vxassist我们具体需要什么,我们也确确实实得到了我们需要的。希望这两个例子能够让你搞清楚vxassist是如何填补空白的。如果你曾设想vxassist使用5块硬盘新建一个40G volume,当你得到一个7块硬盘构成volume的时候,你会非常吃惊的。这帮助解释了,如果你认为layout是无关紧要的,你必须要确定这一点。否则,你所得到的和你所想象的将会大相径庭。
        由于这一章的概念较容易掌握,我们将进行更深入的研究(相对于VxMake课程)。接下来看看,vxassist创建镜像 volume和RAID0+1volume。

第三课: RAID1 and RAID0+1 Volumes
   
        和创建simple或striped volume一样简单的,我们现在要创建镜像volume啦。我们从10G的镜像volume开始,看一看用两块磁盘互为镜像的RAID1 volume是什么样子的。首先,看一下语法:

         vxassist -g <diskgroup> -U <usagetype> make <volname> <size> \
layout=<layouttype> <disk1> <disk2> <disk3> ...

         语法是重复的,对吗?在这个例子中,我们使用和以前同样的选项,但是,layout要被指定为”mirror-concat”。

# vxassist -U fsgen -g cuddledg make mirrorvol3 10g layout=mirror-concat
# vxprint -g cuddledg -hrt
DG NAME NCONFIG NLOG MINORS GROUP-ID
DM NAME DEVICE TYPE PRIVLEN PUBLEN STATE
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

(..... removed ......)

v mirrorvol fsgen ENABLED ACTIVE 20971520 SELECT -
pl mirrorvol-01 mirrorvol ENABLED ACTIVE 20975031 CONCAT - RW
sd cuddle-f4-01 mirrorvol-01 cuddle-f4 0 3296538 0 c1t4d0 ENA
sd cuddle-r4-01 mirrorvol-01 cuddle-r4 0 17678493 3296538 c1t20d0 ENA
pl mirrorvol3-02 mirrorvol ENABLED ACTIVE 20975031 CONCAT - RW
sd cuddle-f5-01 mirrorvol-02 cuddle-f5 0 3296538 0 c1t5d0 ENA
sd cuddle-r3-01 mirrorvol-02 cuddle-r3 0 17678493 3296538 c1t19d0 ENA

这么做的优点在于,镜像一下子就可以实现了。在layout后面多增加一个参数,你甚至可以指定多个镜像。用参数:”nmirror=X”, X指你希望镜像(plex)的数量。

请注意,你也可以先创建一个没有镜像的volume,接着再用以下命令为其添加一个镜像。

vxassist -g <diskgroup> mirror <volname>

这会创建一个和已有plex相同的镜像。下面的例子创建了一个10G的volume,接着再为它做镜像:

# vxassist -g cuddledg -U fsgen make stripevol 10g layout=stripe
# vxprint -g cuddledg -hrt stripevol

(... removed ...)

v stripevol fsgen ENABLED ACTIVE 20971520 SELECT stripevol-01
pl stripevol-01 stripevol ENABLED ACTIVE 20989653 STRIPE 7/128 RW
sd cuddle-f0-01 stripevol-01 cuddle-f0 0 2998485 0/0 c1t0d0 ENA
sd cuddle-f1-01 stripevol-01 cuddle-f1 0 2998485 1/0 c1t1d0 ENA
sd cuddle-f2-01 stripevol-01 cuddle-f2 0 2998485 2/0 c1t2d0 ENA
sd cuddle-f3-01 stripevol-01 cuddle-f3 0 2998485 3/0 c1t3d0 ENA
sd cuddle-f4-01 stripevol-01 cuddle-f4 0 2998485 4/0 c1t4d0 ENA
sd cuddle-f5-01 stripevol-01 cuddle-f5 0 2998485 5/0 c1t5d0 ENA
sd cuddle-f6-01 stripevol-01 cuddle-f6 0 2998485 6/0 c1t6d0 ENA
# vxassist -g cuddledg mirror stripevol
# vxprint -g cuddledg -hrt stripevol

(... removed ...)

v stripevol fsgen ENABLED ACTIVE 20971520 SELECT -
pl stripevol-01 stripevol ENABLED ACTIVE 20989653 STRIPE 7/128 RW
sd cuddle-f0-01 stripevol-01 cuddle-f0 0 2998485 0/0 c1t0d0 ENA
sd cuddle-f1-01 stripevol-01 cuddle-f1 0 2998485 1/0 c1t1d0 ENA
sd cuddle-f2-01 stripevol-01 cuddle-f2 0 2998485 2/0 c1t2d0 ENA
sd cuddle-f3-01 stripevol-01 cuddle-f3 0 2998485 3/0 c1t3d0 ENA
sd cuddle-f4-01 stripevol-01 cuddle-f4 0 2998485 4/0 c1t4d0 ENA
sd cuddle-f5-01 stripevol-01 cuddle-f5 0 2998485 5/0 c1t5d0 ENA
sd cuddle-f6-01 stripevol-01 cuddle-f6 0 2998485 6/0 c1t6d0 ENA
pl stripevol-02 stripevol ENABLED ACTIVE 20989653 STRIPE 7/128 RW
sd cuddle-r0-01 stripevol-02 cuddle-r0 0 2998485 0/0 c1t16d0 ENA
sd cuddle-r1-01 stripevol-02 cuddle-r1 0 2998485 1/0 c1t17d0 ENA
sd cuddle-r2-01 stripevol-02 cuddle-r2 0 2998485 2/0 c1t18d0 ENA
sd cuddle-r3-01 stripevol-02 cuddle-r3 0 2998485 3/0 c1t19d0 ENA
sd cuddle-r4-01 stripevol-02 cuddle-r4 0 2998485 4/0 c1t20d0 ENA
sd cuddle-r5-01 stripevol-02 cuddle-r5 0 2998485 5/0 c1t21d0 ENA
sd cuddle-r6-01 stripevol-02 cuddle-r6 0 2998485 6/0 c1t22d0 ENA
#

创建镜像volumes的过程中,有两件事情值得关注。第一,创建过程需要较长时间。上例中(创建一个10G的镜像),我们的Ultra机器花了20多分钟来做镜像之间的同步。你可能会认为,“嘿,这是一个新的volume,因此没有数据在上面,也就没有东西需要被同步”。是的,逻辑上看起来是这样的。但事实上,VM的的确确要做一个同步操作。volume上面什么都没有,即使这样,VM也要一个bit一个bit的同步过去。第二,使用VxVM 3.X,你创建simple的镜像volume时,要设定layout类型为”mirror-concat”,而不是简单的”mirror”。如果你指定layout类型为”mirror”,你得到的将是”concat-mirror”的volume,而非”mirror-concat”。二者的区别在于,”concat-mirror”是一种多层的volume(也被称为ConcatPro),这种类型的volume已经超出本教程的范围了。你可以在Cuddletech系列课程 “Exploring Layered Volumes”中找到关于它更多的内容。但在这儿,你只需要知道,如果你用多块磁盘做layout类型为”mirror”的volume,你得到的可能不是你所想要的。这样的问题不会出现在VxVM 2.X中,因为VxVM到了3.X才开始支持多层volumes概念的。

让我们再看一个例子吧,快速浏览一下如何直接创建一个layout类型为”mirror-stripe”的volume。我们将要创建的volume,和上面例子所创建的volume很相象(我们先创建了一个striped的volume,然后再为其做镜像),但在这儿,我们要同时实现创建和镜像。在这个例子中,让我们规定的更加具体一些,因为用7块硬盘来做一个10G的volume并不是我所希望的:

# vxassist -g cuddledg -U fsgen make raid01-test 10g \
layout=mirror-stripe ncolumns=3 stwidth=64k nmirror=2
# vxprint -g cuddledg -hrt raid01-test

(... removed ...)

v raid01-test fsgen ENABLED ACTIVE 20971520 SELECT -
pl raid01-test-01 raid01-test ENABLED ACTIVE 20975165 STRIPE 3/128 RW
sd cuddle-f0-01 raid01-test-01 cuddle-f0 0 6991677 0/0 c1t0d0 ENA
sd cuddle-f1-01 raid01-test-01 cuddle-f1 0 6991677 1/0 c1t1d0 ENA
sd cuddle-f2-01 raid01-test-01 cuddle-f2 0 6991677 2/0 c1t2d0 ENA
pl raid01-test-02 raid01-test ENABLED ACTIVE 20975165 STRIPE 3/128 RW
sd cuddle-f3-01 raid01-test-02 cuddle-f3 0 6991677 0/0 c1t3d0 ENA
sd cuddle-f4-01 raid01-test-02 cuddle-f4 0 6991677 1/0 c1t4d0 ENA
sd cuddle-f5-01 raid01-test-02 cuddle-f5 0 6991677 2/0 c1t5d0 ENA
#

我更喜欢这样。我得到了我想要的,我也不关心系统用了哪几块磁盘。因此我没有指定具体要使用的vmdisk,留给VM决定吧。如果当时我需要规定使用的磁盘,那我需要指定6个vmdisks,前3个vmdisks会组成一个plex,后3个vmdisks会组成另外
一个plex。另外,还有一个经常“迷惑”人的概念是这个例子中的”nmirror”参数。你也许会认为,“nmirror被设定为2,那就应该是两个镜像加上存放数据的volume,总共有三个plex!”,这是错的。请再次大声喊出“一个plex就是一个镜像!”。设定参数”nmirror”为2,意味着我们将得到2个plex。

同样的参数,同样的语法,我们现在要创建更大,更好,更酷的volumes啦!现在我们只涉及到了简单的RAID,RAID 0,RAID 0+1, RAID 1,接下来让我们继续往前,看一看,不推荐用vxmake实现的(是否能够使用手工创建RAID 5 volume还在争论之中,但实际上极少有人愿意尝试)创建RAID 5 volumes吧!

第四课: RAID5 Volumes

RAID 5实现起来非常简单。用vxassist创建volume,你能得到非常具体的volume。但总的说来,做RAID 5时,你不能违反一些基准。因此,在它的创建过程中,没什么太多可做的,除了指定layout类型为”raid 5”,还有你想使用的磁盘。
语法如下:

vxassist -g <diskgroup> -U <usagetype> make <volname> <size> \
layout=<layouttype> <disk1> <disk2> <disk3> ...

RAID 5有一些要求,你至少需要3个vmdisk创建RAID 5 volume(4个更好)。其中,3个subdisk用来构建volume本身,1个subdisk会被自动创建为RAID 5 日志plex。RAID 5 日志用于volume metadata(元数据)和parity(校验位)的日志。While

让我们看一个创建RAID 5 volume的例子:

# vxassist -g cuddledg -U fsgen make raid5vol 4g layout=raid5
# vxprint -g cuddledg -hrt raid5vol
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE
dm cuddle-f0 c1t0d0s2 sliced 3590 17678493 -
dm cuddle-f1 c1t1d0s2 sliced 3590 17678493 -
dm cuddle-f2 c1t2d0s2 sliced 3590 17678493 -
dm cuddle-f3 c1t3d0s2 sliced 3590 17678493 -
dm cuddle-f4 c1t4d0s2 sliced 3590 17678493 -
dm cuddle-f5 c1t5d0s2 sliced 3590 17678493 -
dm cuddle-f6 c1t6d0s2 sliced 3590 17678493 –

v raid5vol raid5 ENABLED ACTIVE 8388640 RAID -
pl raid5vol-01 raid5vol ENABLED ACTIVE 8402880 RAID 6/32 RW
sd cuddle-f0-01 raid5vol-01 cuddle-f0 0 1680588 0/0 c1t0d0 ENA
sd cuddle-f1-01 raid5vol-01 cuddle-f1 0 1680588 1/0 c1t1d0 ENA
sd cuddle-f2-01 raid5vol-01 cuddle-f2 0 1680588 2/0 c1t2d0 ENA
sd cuddle-f3-01 raid5vol-01 cuddle-f3 0 1680588 3/0 c1t3d0 ENA
sd cuddle-f4-01 raid5vol-01 cuddle-f4 0 1680588 4/0 c1t4d0 ENA
sd cuddle-f5-01 raid5vol-01 cuddle-f5 0 1680588 5/0 c1t5d0 ENA
pl raid5vol-02 raid5vol ENABLED LOG 3591 CONCAT - RW
sd cuddle-f6-01 raid5vol-02 cuddle-f6 0 3591 0 c1t6d0 ENA
#

我们可以看到,vxassist采用了6块磁盘来构建实际的volume,然后创建一个非常小(1.5M)的subdisk作为RAID 5日志plex。我们也可以使用”ncolumns”参数来指定RAID 5 volume要用subdisk的数量,就像我们前面例子中创建striped volume时做的那样。但请记住,如果你想指定”ncolumns”为5,并且想指定具体磁盘,你就要指定6块。这样,就不会强迫vxassist把日志plex放到数据磁盘上了。

这里是另一个例子,可以更好的解释上面的描述:

# vxassist -g cuddledg -U fsgen make raid5vol 4g layout=raid5 ncolumns=3 cuddlef0
cuddle-f1 cuddle-f2 cuddle-f3
# vxprint -g cuddledg -hrt raid5vol
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

dm cuddle-f0 c1t0d0s2 sliced 3590 17678493 -
dm cuddle-f1 c1t1d0s2 sliced 3590 17678493 -
dm cuddle-f2 c1t2d0s2 sliced 3590 17678493 -
dm cuddle-f3 c1t3d0s2 sliced 3590 17678493 -

v raid5vol raid5 ENABLED ACTIVE 8388608 RAID -
pl raid5vol-01 raid5vol ENABLED ACTIVE 8395712 RAID 3/32 RW
sd cuddle-f0-01 raid5vol-01 cuddle-f0 0 4197879 0/0 c1t0d0 ENA
sd cuddle-f1-01 raid5vol-01 cuddle-f1 0 4197879 1/0 c1t1d0 ENA
sd cuddle-f2-01 raid5vol-01 cuddle-f2 0 4197879 2/0 c1t2d0 ENA
pl raid5vol-02 raid5vol ENABLED LOG 3591 CONCAT - RW
sd cuddle-f3-01 raid5vol-02 cuddle-f3 0 3591 0 c1t3d0 ENA
#Cuddletech系列VERITAS教程之三(下)Cuddletech系列VERITAS教程之三(下)

[ 本帖最后由 kaiyi 于 2006-12-8 09:19 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-11-05 22:13 |只看该作者
第五课: Volume resizing

我们再多讨论一个话题吧。VxMake课程中有10多个命令,并且每个命令都有自己的参数,相对来说,本课程只有少量的晦涩的概念需要记住。我们再来谈一谈如何能够调整volume的大小?什么工具可以帮助我们实现它?

某些时候你会意识到你的volume没有足够的空间。这时你需要做一个决策,是新建一个volume,和老的volume一起使用呢;还是调整已有volume的大小。你已经知道了如何去创建一个新的volume,所以,现在我们来看看如何调整已有volume的大小吧!

上一个例子,我们用3块磁盘和一块日志磁盘创建了一个4G的RAID 5 volume。我突然发现我不是要缩减其空间,实际上我需要一个12G的volume。但首先,我需要确认,在不添加新磁盘的前提下,我的volume能扩展到多大?让我们先看看第一个工具的语法:

vxassist -g <diskgroup> maxgrow <volume> [ <disk1> <disk2> <disk3> ]

”maxgrow”参数可以帮我们计算出剩余空间的大小。带上maxgrow参数,如果没有指定具体的磁盘,vxassist命令会告诉我们该volume最大可以扩展到多大(占用该disk grouop上面所有的剩余空间)。但在扩展volume的过程中我想指定更多的细节信息,比如说指定所用的磁盘,可以使用接下来的参数。就刚才RAID 5例子中创建的volume,我们先看看它在所属disk group中最大可以扩展到多少空间?接着再列出我们用来构建该volume的3块磁盘,我们又可以知道如果不为其分配新的磁盘,该volume又可以扩展到多少空间?

# vxassist -g cuddledg maxgrow raid5vol
Volume raid5vol can be extended by 133038080 to 141426688 (69056Mb)
bash-2.03# vxassist -g cuddledg maxgrow raid5vol cuddle-f0 cuddle-f1 cuddle-f2
Volume raid5vol can be extended by 26968064 to 35356672 (17264Mb)

如果我们占用所属disk group上的所有未用空间,该volume可以扩展到大概70G。
如果我们占用构建该volume的3块磁盘的所有未用空间,该volume可以扩展到大概17.2G。早些时候我已经说过了,我们的目标是构建一个12G的volume, 17.2G已经足够大了,把已经用了的磁盘填满听起来是个好主意。为了实现它,我们可以采用下面的命令:

vxassist -g <diskgroup> growby <volume> <len_to_grow_by>

or

vxassist -g <diskgroup> growto <volume> <new_len>

注意了,我们可以通过两种方式来扩展volume空间:填写新增加的相对值或者是最终大小的绝对值。参考用”maxgrow”得到的信息来判断我们可以扩展多少空间。通常,我倾向于使用”growto”方法。当有人对你尖叫“我需要2G的空间”时,growby会好一些。

让我们看一看”growto”方法是如何使用的吧!

# vxprint -g cuddledg -hrt raid5vol
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

dm cuddle-f0 c1t0d0s2 sliced 3590 17678493 -
dm cuddle-f1 c1t1d0s2 sliced 3590 17678493 -
dm cuddle-f2 c1t2d0s2 sliced 3590 17678493 -
dm cuddle-f3 c1t3d0s2 sliced 3590 17678493 -

v raid5vol raid5 ENABLED ACTIVE 8388608 RAID -
pl raid5vol-01 raid5vol ENABLED ACTIVE 8395712 RAID 3/32 RW
sd cuddle-f0-01 raid5vol-01 cuddle-f0 0 4197879 0/0 c1t0d0 ENA
sd cuddle-f1-01 raid5vol-01 cuddle-f1 0 4197879 1/0 c1t1d0 ENA
sd cuddle-f2-01 raid5vol-01 cuddle-f2 0 4197879 2/0 c1t2d0 ENA
pl raid5vol-02 raid5vol ENABLED LOG 3591 CONCAT - RW
sd cuddle-f3-01 raid5vol-02 cuddle-f3 0 3591 0 c1t3d0 ENA

# vxassist -g cuddledg growto raid5vol 35356672
# vxprint -g cuddledg -hrt raid5vol
V NAME USETYPE KSTATE STATE LENGTH READPOL PREFPLEX
PL NAME VOLUME KSTATE STATE LENGTH LAYOUT NCOL/WID MODE
SD NAME PLEX DISK DISKOFFS LENGTH [COL/]OFF DEVICE MODE
SV NAME PLEX VOLNAME NVOLLAYR LENGTH [COL/]OFF AM/NM MODE

dm cuddle-f0 c1t0d0s2 sliced 3590 17678493 -
dm cuddle-f1 c1t1d0s2 sliced 3590 17678493 -
dm cuddle-f2 c1t2d0s2 sliced 3590 17678493 -
dm cuddle-f3 c1t3d0s2 sliced 3590 17678493 -

v raid5vol raid5 ENABLED ACTIVE 35356672 RAID -
pl raid5vol-01 raid5vol ENABLED ACTIVE 35356928 RAID 3/32 RW
sd cuddle-f0-01 raid5vol-01 cuddle-f0 0 17678493 0/0 c1t0d0 ENA
sd cuddle-f1-01 raid5vol-01 cuddle-f1 0 17678493 1/0 c1t1d0 ENA
sd cuddle-f2-01 raid5vol-01 cuddle-f2 0 17678493 2/0 c1t2d0 ENA
pl raid5vol-02 raid5vol ENABLED LOG 3591 CONCAT - RW
sd cuddle-f3-01 raid5vol-02 cuddle-f3 0 3591 0 c1t3d0 ENA
#
这是简单而又快捷的方法来扩展volume空间。当然,扩展volume空间还有其它值得注意的地方,但这已经超出本课程的范围了。你可以在以下资料中找到很好的说明: VxFS Admin Guide ,Solaris Administrators Collection for UFS。

还需要注意,也有相应的命令用来缩减volume空间,vxassist命令带上参数”shrinkto””shrinkby”,和上面扩展空间的用法差不多。需要更详细信息的话,请查看一下man页面。它就是和我们上面最后一个例子一样简单的。

还有另外一种方法可以让你完全改变volume,使用参数”relayout”。有了”relayout”,你可以改变ncolumn(对于RAID 5或者是stripe volume来说,添加或者删除磁盘非常重要),也可以改变plex类型(从concat改成stripe,反之亦然,从stripe-mirror改成RAID 5,反之亦然),甚至可以实现任何你所想做的改变。relayout可以让你脱离险境,是一个非常有用的工具,但不能滥用。有Relayout的教程,如果你想知道,请参考我的后续文章“Advanced Theory”课程和VxVM Administratiors Guide。

The Wrap Up-结束语

希望本教程能让你感到有些帮助。你已经一次又一次的看到vxassist的语法了。希望你现在对此已经有所感觉,这也是本教程的最终目标。vxassit可以为我们和volume做的事情远远超过了我们上面所列举的,但至少现在你已经具备了基本知识,可以在这么多的参数中冒险试试了。

最后的忠告:请总是小心翼翼的操作;请再三检查语法;创建或者修改对象之前请完全计划好。Vxassist最大的价值在于你能少说多做。但它不好的一面是,一旦你输入的命令不合适,可能导致非常可怕的破坏,而这些破坏不一定容易恢复。如果说有什么东西会让你发火,那就是它可能一瞬间就吹走了你几百G的数据,即使你有磁带。小心一点,细致一点,你会做的很好的。(这样干下去,你可能会象我以前一样,23岁就有心脏病。但至少你会有一份工作,不至于睡在纸盒子里!)

论坛徽章:
0
3 [报告]
发表于 2006-11-09 18:29 |只看该作者
再次沙发,再顶!

论坛徽章:
0
4 [报告]
发表于 2006-11-15 17:28 |只看该作者
这一章在实际应用中最实用

论坛徽章:
0
5 [报告]
发表于 2006-11-20 14:01 |只看该作者
非常感谢

论坛徽章:
0
6 [报告]
发表于 2006-11-21 17:41 |只看该作者
顶顶顶 楼主辛苦

论坛徽章:
0
7 [报告]
发表于 2006-11-24 23:15 |只看该作者
偶像啊 楼主 给大哥你发邮件了

论坛徽章:
0
8 [报告]
发表于 2006-11-26 12:30 |只看该作者
写得非常好,深入浅出,希望有一天我也能写出这样的帖子。

论坛徽章:
0
9 [报告]
发表于 2006-11-26 20:44 |只看该作者

佩服

写的真好,
给我发邮件吧
tsmao◎163.com

论坛徽章:
0
10 [报告]
发表于 2006-12-03 17:49 |只看该作者

好啊。。。

期待你的后续,广大人民群众希望在这个的基础上在发表两篇新的教程。。。。帅哥。。。。什么发表啊。。我等不了了。呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP