最近在研究VERITAS VM,但在网上找了很久,只能找到一些以命令为核心的学习笔记。大部分的中文资料,写的都是各命令的用法,没有基本概念的讲解,也没有对基本原理的分析。看了之后不禁让我十分混淆。比如说,网上有文章讲如何使用vxassist命令创建
volume,却没有讲volume,plex,subdisk和vm disk之间的关系。就如同看超级女声却没有张靓颖一样。这样的文章对于那些已经理解基本概念的人来说,比较有参考价值。但是对于象我这样的初学者来说,太过于晦涩难懂啦。因此,在学习VERITAS的过程中,由于概念模糊,理解起来十分痛苦。终于,看到了一系列极好的英文教程,这套教程深入浅出的讲解了VERITAS的各个概念以及命令的使用方法。对于初学者来说是万分难得的入门教材,对于熟手高手来说也是不错的查询资料。特翻译成中文,和大家共享。希望大家能够喜欢。
Cuddletech系列VERITAS教程之一
VX的土地上,谁是谁?
介绍
欢迎来到VERITAS的世界!
本课程是学习无序但神奇的VERITAS的第一步。对于你以后继续其它的课程,本课程绝对是非常重要的。如果你已经掌握本课程的内容,至少它可以让你很好的复习一下。
在我们开始之前,你需要知道很多关于我(您谦虚的讲述者)的事情。
为什么我在做这些
你也许很好奇我为什么浪费生命来编撰这些课程。可能你已经知道了(从以前的课程中得知)我不是一个专业的讲师。是的,你是对的:我的确不是一个专业的讲师。但是,我是一个UNIX系统管理员,专注于Sun的企业级存贮系统。我不想用我学习的故事来烦扰你,但是有好几个月的时间我想学习VERITAS,没有人能够教我多少东西,也没有钱去付费听课。我请求公司给我一些资料或者让我参加培训。我以非常艰苦的方式学习VERITAS。在得到大量VERITAS经验之前,我从
SUN的网站上下载了一些资料,并花了好几周的时间去研究。VERITAS的各种概念在我脑海里翻转了数日甚至数周,我才完全理解。我的资料和我的课程就是我帮助你的方式,使你第一次阅读时就能搞懂绝大部分内容。希望你只需花几天甚至几个小时就能够掌握VERITAS,而不用花好几星期。这就是我回馈“社区”的方式。我不是专家,也没有什么所谓的专家。我仅仅是与大家分享我去年学到的知识。我的教学在很多其他人身上效果良好,也希望你能从我的作品中获益。
现在,我们开始吧!
VERITAS Volume Manager 文档及参考书目
• VERITAS Volume Manager: Installation Guide (P/N: 100-001121)
• VERITAS Volume Manager: Getting Started Guide (P/N: 100-001123)
• VERITAS Volume Manager: Command Line Interface Administrators Guide (P/N:
100-001124)
• VERITAS Volume Manager:
Storage Administrator: Administrators Guide (P/N:
100-000954)
• VERITAS Volume Manager: Administrators Reference Guide (P/N: 100-001125)
上面有SUN的part numbers。当我写这篇文档的时候,有些资料在web上面还找不到,只在VERITAS VM3.1的软件里有。但是,你可以从docs.sun.com上找到VERITAS VM 2.6的文档。要想下载文档(HTML/PDF),请到docs.sun.com。接着点击“Browse By Collection”,再顺着往下找“Sun StorEdge Volume Manager 2.6 AnswerBook”。点击它,你将看到三个条目:
• Sun StorEdge Volume Manager 2.6 User's Guide
• Sun StorEdge Volume Manager 2.6 Storage Administrator User's Guide
• Sun StorEdge Volume Manager 2.6 System Admin Guide
注意,当你看到以上页面的时候,“下载PDF”选项在右上方角落。最好把它打印出来。
VERITAS Volume Manager: 概述
SUN的网站上面有一段关于VERITAS的摘录:
VERITAS Volume Manager软件是一个高端系统级的
磁盘/存贮阵列
解决方案。它可以实现简单的、在线的磁盘管理和配置,大大减少了系统维护的宕机时间。该产品同样可以帮助你实现
数据集成和高可靠性(快速
恢复和容错
性能)。VERITAS Volume Manager软件也可以为企业电脑和新兴的
SAN(Storage Area Network)提供易用、在线的存贮管理功能。通过对
RAID技术的支持,VERITAS Volume Manager软件提高了现有硬件的容错能力,防止磁盘和硬件故障。它还提供逻辑Volume管理层,这样,VERITAS Volume Manager克服了物理磁盘的硬件限制。
也许,你已经注意到了。但还是让我列出他们完全忽略了的事情:
• Support for: Simple, RAID0, RAID1, RAID0+1, RAID1+0,
RAID5• Dynamic Multipathing (DMP): Load balancing and redundant I/O paths to disk arrays supporting multi-controller attachment.
• Online Relayout: VERITAS allows you to change the layout of a VERITAS volume while it is live and mounted. Change a RAID0 to a RAID5 without a second of downtime!
• Snapshoting: Take a snapshot of your data, creating a "shadow" of it which you can use for online backups.
• Hot Relocation: Designate "spares" which will take the place of failed disks onthe-fly.
• Dirty Region Logging (DRL): Volume transaction logs which provide fast recoveries after system crashes.
• More...... more than I can list!
那,我们开始吧!VERITAS Volume Manager是VERITAS公司()的一个产品。Sun公司采用了它,分配给了它PN(part number),把它卖给Sun的客户。VERITAS也可以被称为“Vx”或者“VRTS”(VERITAS包和VERITAS订单符号的前缀)。VERITAS Volume Manager常常被缩写成“VxVM”。在VERITAS 3.x以前,Sun在市场上为VERITAS取了自己的名字。这些名字和版本号如下:
• <= Vx 2.5: Sun Enterprise Volume Manager (SEVM)
• = Vx 2.6: Sun StorEdge Volume Manager (Sun SEVM)
• >; Vx 3.x: VERITAS Volume Manger (VxVM)
支持VERITAS的操作系统有:
• SEVM 2.5: Solaris 2.5.1 and older.
• SEVM 2.6: Solaris 2.6 and Solaris 2.5.x
• VxVM 3.0.2: Solaris 7, Solaris 2.6, and Solaris 2.5.
• VxVM 3.0.3: Solaris 8, Solaris 7, and Solaris 2.6
再说一句,就像世界上绝大部分公司一样,如果Sun和/或VERITAS宣称“OS xxx 不被支持”,并不意味着他们进行过十分仔细的测试。VERITAS实际上安装在系统的kernal模块中。因此,如果你在solaris7下运行SEVM2.6,你将在solaris7的kernal环境下运行solaris6的kernal模块,我试过了!
VERITAS Volume Manager and Vx Objects
VERITAS是一个逻辑卷管理软件。在这里,最重要的词是“逻辑”。因此,为了保证事务的有序性(VERITAS的概念有些复杂),使用不同方法创建volume时,我们必须理解一些基本“对象”(“对象”是指VERITAS中的一些逻辑概念,如 plex,subdisk,VM
Disk等):
• Disk :有
SCSI id的普通物理磁盘(c0t0d0..)
• VM Disk (dm) :Vx控制下的磁盘
• Sub Disk (sd) : VM disk的一部分,用来构成plex
• Plex (pl) :镜像
• Volume (v):虚拟磁盘,可以容纳数据;
(就相当于我们在操作系统下看到的一个slice 比如: /var)
现在,让我们来讨论一下这些概念。磁盘,没有什么新鲜或者神奇的。如果我们希望在VERITAS中使用一个磁盘,必须先把这个磁盘移交给VERITAS,由VERITAS来管理它。移交后,VERITAS会分配给这块磁盘一个逻辑名(比如:disk01)。这时,这块磁盘对于任何VERITAS之外的系统来说,都是不可操控了。移交给VERITAS管理的不是磁盘的某个分区(c0t0d0s0),而是整块磁盘(c0t0d0)。现在,VM Disk已经创建好了,接着可以在这个VM Disk中创建subdisk。subdisk可视为VERITAS的一个区。VM Disk既可划分为一个Sub Disk,这个SubDisk占据了整个VM Disk空间,也能划分为多个subdisk。你可以按照自己的想法把VM Disk划分成任意多个subdisk。由subdisk(一个或多个)组成的,我们称之为plex。plex的概念有些模糊,我们多说点吧。
请大声的说出“一个plex就是一个镜像;一个plex就是一个镜像;一个plex就是一个镜像。”也许你要这样喊很多次。你也可能会感到有些愚蠢,但在VERITAS的世界里,plex是最基础的概念。Volume就像容器,可以容纳一个或多个plex。一个plex就是一个镜像,是的,但只用一个plex也能构成一个Volume(volume由n个plex构成,在这里 0 < n < 33;每个plex是一个镜像,也就是说,同一个volume下每个plex存贮的内容完全相同)。很奇怪,Volume的镜像是用一个plex来实现吗?当然不是啦!我们待会儿再来讨论这个
问题,但是你最好先把它记在你的脑海中。一个或多个subdisk组成了plex。有趣的是,VERITAS的世界里,几乎所有工作都是plex完成的。因此,当我们说我需要创建一个stripe的Volume时,真正的内涵是我需要创建一个stripe的plex,并把它attach到Volume里。Volume没有什么好关心的,它只是一个容器而已。发现关键问题了吗?我们把所有信息放在一起,在想象中构建一个VERITAS的Volume吧!
现有29G的
硬盘,我打算从中够建一个striped(RAID0)的Volume。系统中现有两块磁盘,第一块命名为c1t0d0,第二块为c1t1d0。
第一步,要把磁盘的管理权从操作系统移交给VERITAS软件,所以,先创建两个VM Disk,命名为disk01和disk02。
第二步,要从这两个VM Disk中创建两个Subdisk。在每个VM Disk中创建一个subdisk,并且让这个subdisk占据该VM Disk的所有空间。VM Disk disk01中的subdisk称之为disk01-01,disk02中的subdisk称之为disk02-01。现在,到创建plex的时候啦!
第三步,要用我们的两个subdisk – “disk01-01”和 “disk02-01”创建一个stripe的plex,并将之命名为“myplex”(现在不要去关心如何去创建plex,重要的是把概念掌握好了)。现在,我们有了一个plex,由subdisk “disk01-01” “disk02-01”组成。
第四步,用“myplex”创建一个名为“myVol”的Volume。Bingo!我们有了一个stripe的18G Volume,并准备在上面创建
文件系统。我们用先前的命名把各组件列出来,如下:
dm disk01 c1t0d0 <-- VM Disk named "disk01" made from "c1t0d0"
dm disk02 c1t1d0 <-- VM named "disk02" made from "c1t1d0"
sd disk01-01 disk01 <-- Subdisk named "disk01-01" made from "disk01"
sd disk02-01 disk02 <-- Subdisk named "disk02-01" made from "disk02"
pl myplex striped <-- Striped Plex named "myplex"
sd disk01-01 <-- Made using subdisk "disk01-01"
sd disk02-01 <-- and subdisk "disk02-01"
v myvol <-- Volume made from....
pl myplex striped <-- the striped plex named "myplex", made from...
sd disk01-01 <-- Subdisk "disk01-01", and...
sd disk02-01 <-- "disk02-01"
看起来OK吗?如果是的话,请看下面的内容。这就是VERITAS真正的输出,内容是我在测试机上创建的一个真实的Volume。
v myvol fsgen ENABLED 35356957 - ACTIVE - -
pl myplex myvol ENABLED 35357021 - ACTIVE - -
sd disk01-01 myplex ENABLED 17678493 0 - - -
sd disk02-01 myplex ENABLED 17678493 0 - - -
觉得这些有什么意思吗?全部都能理解吗?我希望是的。如果能够全部理解,说明你作好学习VERITAS的准备了。随着我们学习的深入,我们将解释更多更丰富的内容,但是,至少你应该理解以下内容:
Volume 是由plex组成的。
Plex 是由subdisk组成的。
Subdisk 是由VM Disk组成的。
VM Disk 是由disk(实际物理硬盘)组成的。
Disk 可以组成VM Disk。
VM Disk 可以组成subdisk。
Subdisk 可以集合成plex。
plex 可以集合成Volume。
好样的!在我们继续之前,还有一点必须注意:关于plex的一个常规。plex是镜像,因此,如果我们要为刚才创建的Volume(myvol)创建一个镜像,只需要利用另外两个subdisk,创建一个和“myplex”一模一样的plex,并且将其attach到mybol上就可以了。这样,就完成了镜像。这可真是酷!镜像是非常神奇的东西。任何事情都和它有关。如果你有一面镜子,你只能看到你自己。但如果你想看到镜像的话,你就需要另外一面镜子!懂了吗?
VERITAS Object Creation
VERITAS中,有两种方法可以创建“对象”,“vxmake”方法和“vxassist”方法。它们的区别如下:
每次创建“对象”时,“vxmake”根据你的要求,精确的构造出你所希望的“对象”。我们之前提到的方法(增加一个磁盘,构造VM Disk,创建subdisk…),都是我们如何使用vxmake的例子。一步一步的,我们构造出“对象”,并且组合他们。这非常的酷,因为我们清楚的规定了构造过程中的每一个细节,并没有不清楚的地方。我们说“构建这个‘对象’”,它就被创造啦。(我们先创建vm disk, 再创建subdisk,接着是plex,最后是volume。必须一步一步往下做,每做一步,生成的仅仅是我们所指定要创建的东西;而不是说“创建plex”,该命令就先自动生成n个subdisk,再用这些subdisk来组成plex)。下一个课程,我们将学习到vxmake的更多细节知识。
VxAssist是另外一种方式。当你学习本课程的时候,你是否觉得“创建‘对象’是一件复杂的工程”?哈哈,简单的方法就在这里:VsAssist。当你打算创建Volume,但又不想指定所有细节,我们可以先创建VM Disk,然后让VxAssist完成所有剩下的工作(subdisk和plex不用自己创建,会由VxAssist命令自动生成)。代替了vxmake“创建xx,只有xx”的哲学,我们采用VxAssist的做法,“这里是一些磁盘,你帮我用RAID5创建一个可以存贮10G的Volume……,我不关心你如何实现,只要快点就行”。较为复杂或是你不关心整个创建过程的情况下,VxAssist较为方便实用。再强调一下,我们将在以后的课程中详细的讨论如何使用VxAssist创建“对象”。
哪种方法更好一些? 呵呵,可能你现在还不能作出决定。等我们接触到后面讲解这些方法的课程时(有很多例子),大家自己去研究吧,你们将会有自己的喜好。但请记住,你可以在不同情况下交替使用这两种方法,也可以两种都采用。对此要多加注意,因为他们是完全不同的方式。
Special Notes on RAID0 and RAID5: Layouts
我想简要的讨论一下layout(对不起读者,本人实在是找不出一个中文单词可以清楚的表述出layout的意思,所以就直接引用英文)。在讲解创建plex时,我们将深入钻研layout的概念。但由于“VERITAS Getting Started Guide”提到了,所以我想让你们重视它。这是非常基础的内容,但随着你在VERITAS上工作的增多,你会越来越赏识layout的。
layout可视为各种RAID方法之间的不同之处。简单(simple)RAID实际上没有layout。它仅仅是线性的从第一块磁盘的开始,写到这块磁盘的结尾,再从第二块磁盘的开始接着写,一直到最后一块磁盘的结尾。但条块化(Stripe)RAID较为特殊。layout有两个术语:
• stripe width (stwidth): 一次写入一块磁盘的数据量。默认为32k;
• columns (ncolumn): 指subdisk;
Stripe RAID中,subdisk被称之为column,每个 subdisk有一个“column号”。例如:由四块磁盘组成的RAID 0,应该有四个columns。第一块盘的column号为“0”(记住,所有编号都是从0开始的),第二块为column“1”,第三块为column“2”,依此类推,第四块为column“3”。我们可以指定“stripe width”(stwidth)的大小和“columns”的数量(ncolumns)来创建stripe RAID。就像刚才提到的一样,我们有4块磁盘,我们知道每个subdisk的column号。如果我们指定一个volume的“stwidth”为32k,并写数据到这个volume里。VERITAS先写32k数据到第一块磁盘(column 0),接着写32k到第二块磁盘(column 1),……第三块……,在第四块磁盘(column 3)写完32k后又转回第一块磁盘(column 0),依次反复,直到所有数据写完。在“RAID理论”课程中,我们有更多关于这个话题的内容。如果你对此仍感到有些模糊,请回到前面重新看一下,因为我们创建plex时要再次用到这些知识。
RAID5是另外一种stripe方式,和RAID0有点象。它的layout被称为“Left Symmetric Layout”,一般也被称为“RAID5 layout”。解释这些要花太多的时间,所以还是请大家去查阅一下有关书籍。可能你要多读两次,但最终你会掌握的。
Volumes and Devices
我们已经知道了volume是如何创建的,也知道它是如何工作的。现在,让我们来谈谈如何使用volume吧!
以前提到过,volume是一个“容器”,象只“小桶”。相对于普通的磁盘分区来说,Volume的优点在于,它不是静态的。你可以增大,缩小,修改,重新分配和控制volume,在磁盘分区上这些方式都不能实现。以上各种功能都可以在mount起来的live系统(正在使用的系统)中实施,甚至不用重启机器。如果文件系统空间不够了,你就可以先增大文件系统所在的volume空间,再扩充该文件系统。非常容易!
你也许会问,“实际上,我怎么使用一个volume呢?”。好的,这非常容易。volume的使用方法和磁盘块设备(disk block device)一样。VERITAS安装和配置后,在/dev下产生一个新的目录,叫做/dev/vx。所有volume块设备(volume block device)都在这儿。如果你创建了一个名为“myVol”的volume,并想在上面建立一个文件系统,你可以这样做:
# newfs /dev/vx/rdsk/myvol
你也可以这样把它mount起来:
# mount /dev/vx/dsk/myvol /myvol
酷吧?没有什么神秘的。仔细研究一下/dev/vx下的内容,所有“物件”都有一个容易读懂的名字。你可以直接从名字知道它是用来做什么的。如果设备目录(device tree)对于你来说是一个新鲜玩意儿,那你只要记住你可以在/dev/vx/dsk中访问到volume,把它当作是一个普通磁盘。
看到了吧,VERITAS是多么容易并富含逻辑性啊!这也是VERITAS为什么这么cool。没有模糊的东西。在VERITAS中,所有的事情都被清晰的
设计和组织。我喜欢VxVM,希望你也开始使用吧。
Kernels and Daemons
VERITAS和其它卷管理软件有一个很大的区别是:VERITAS是集成在操作系统中的。事实上,VERITAS实现了kernal 模块(应用程序的基础)。在/etc/system文件中,有很多的“driver forceload”配置,用来装载各种驱动。这一点比较重要,一般在系统启动时,很多“WARNING: Forceload of dev/XXX Failed!”消息会打印出来。不要为此担心,这仅仅意味着VERITAS试图装载一个驱动,但系统中没有相应的硬件。
我不多说关于VERITAS安装的内容了,请参考安装手册。但我想强调,在安装了VERITAS的机器上,升级solaris和/或VERITAS必须非常非常的小心谨慎。请记住,由于VERITAS集成在kernal模块中,如果kernal模块出问题或者是被替换掉了,VERITAS可能会坏掉……这将意味着你要独自一人从书上和系统中学习如何恢复被毁坏掉的VERITAS。真的,我想告诉你,我这样毁掉了好几个系统。幸好,它们都是“测试”机而非商用机。
VERITAS启动后,有几个进程会一直运行,监测volume并保证其平稳运行。“ps –ef | grep vx”命令可以查看这些进程。一般有三个进程,它们是:
• vxiod : VERITAS的IO管理进程,负责volume的读写处理。
• vxconfigd : Vx配置管理进程。
• vxrelocd : Vx Hot Swap 管理进程, 磁盘故障时它尝试用
备份替换。
也许,现在你在急着问“快点告诉我,VERITAS的配置文件在什么地方?”了。其实VERITAS中不存在任何配置文件。vxconfigd进程会监测到所有对VERITAS的操作,并更新它的“对象”
数据库。接着继续监测……。与其它进程相比较,vx进程的名字就体现了它们的功能上。Vxiod进程保证数据按照要求的方式写到volume里(例如:volume是stripe类型的,就必须以stripe的方式写到磁盘里)。Vxrelocd负责发现磁盘故障,并尝试用备份来替换。
Intro to Advanced Features
(此处省去1000字)
(由于本章涉及到高级属性,不属于初学范围,先不翻译,日后补上。感兴趣的读者可以查看原文,链接如下:
http://www.cuddletech.com/veritas/vxcrashkourse/index.html)
The Wrap Up
恭喜你!现已准备好学习VERITAS了,相信你对要做什么非常清楚啦。下面的课程被分为两部分,一个是关于VxMake的,一个是关于VxAssist的。无论你选择哪种方法,你应该把两个课程都读一下。如果你是3.x用户,你需要读或者重读“VERITAS Getting Started Guide”;如果你是SEVM2.6或更早的用户,请读SEVM的第一章。务必理解所有概念,再接着看后面的课程。