LoveUnix » 其他UNIX & Linux » UnixWare7.1.x操作系统下的硬盘管理 zt
让LU留住您的每

一天 让LU博客留住您的每一天
2004-2-26 17:53 紫枫猪猪
1. 硬盘管理概述 <br />UnixWare7.1.x对硬盘的管理分为两个步骤,或者说是两个层次。一个就是用众所周知的fdisk命令划分的硬盘分区,应该说大部分操作系统都使用这一工具进行硬盘的分区划分和管理,为了与另一个管理方式“slice”相区别,我们用英文表示为”partition”,此硬盘分区不能在UnixWare7.1.x操作系统下直接进行操作,只能通过UnixWare7.1.x所特有的slice进行映射或者重新划分后才能够进行操作;另一个就是”slice”,它是UnixWare7.1.x所特有的管理硬盘的工具,并且UnixWare只有通过slice对硬盘进行访问。 <br />1.1 Partition具有如下特点: <br />1.一个开始Sector; <br />2. 该分区的长度,用Sector计算的; <br />3. 该分区操作系统的类型,如UNIX, DOS, 或者 Extended DOS等等; <br />4. 如果是可引导分区必须具有Active标志; <br />5. 每个硬盘最多可以划分4个Partition; <br />6. 如果硬盘要被UnixWare操作系统使用则必须至少有一个分区(Partition); <br />7. UnixWare7.1.x操作系统利用命令fdisk进行划分。 <br />1.2 Slice特点如下: <br />1.一个开始的Sector。 <br />2. 该Slice的长度,用Sector计算。 <br />3. Slice的类型,例如root, user, swap, stand等等。 <br />4. 访问限制(valid and mountable/unmountable)。 <br />5. UnixWare7.1.x操作系统只有通过Slice才能够访问和管理硬盘,而不能够通过其他方式对硬盘进行管理和访问。 <br />6. 每个物理硬盘原则上最多是有256个Slice,实际上使用的只有188个,而这188个slice在系统中的体现要靠节点设备文件表现出来,如/dev/rdsk/c0b0t0d0s0,就是当前状态为ACTIVE的整个unix分区(P),下面将更详细的讨论。 <br />7. 在一个物理硬盘上的当前活动的UNIX分区可以可以通过slice进行管理,而slice也只能对当前活动的UNIX分区进行更进一步的划分分区和管理。 <br />8. 一个slice可以用做一个文件系统,可以被用做swap空间,可以作为生设备使用,也可以被其他应用程序使用,例如被数据库管理和使用。 <br /><br />1.3 Slice、分区(P)和节点设备文件的关系: <br />1、学习环境 <br />首先让我们来看一个环境,主机的硬盘总容量是6173.4 MB,分了两个分区(P),第一个分区容量为1851.2MB,是当前的活动的UNIX系统分区,安装了SCO OpenServer 5.0.5;第二个分区容量为4322.2MB,是非活动UNIX系统分区,安装了UnixWare7.1.1操作系统,而当前正在运行的系统是第二分区的UnixWare,对操作系统本身来讲,第二个分区是当前UNIX系统分区(P)。具体分区情况如下所示: <br />Total disk size is 787 cylinders (6173.4 MB) <br />Cylinders Approx <br />Partition Status Type Start End Length % MB <br />===== ====== =========== ===== === ====== === ====== <br />1 Active UNIX System 0 235 236 30 1851.2 <br />2 UNIX System 236 786 551 70 4322.2 <br />表1-1 <br /><br />该主机通过一个SCSI Ultra160卡外挂了一个磁盘阵列柜,阵列柜有三个70G的SCSI硬盘,做了RAID 5,阵列柜的两个外接SCSI通道的ID都设为5,阵列柜做了RAID 5后,在逻辑盘空间划分了三个分区,这三个对应的逻辑号分别为0、1、2,这样通过主机的操作系统就能够看到三个硬盘的标识,通过系统命令”sdiconfig –l”可以看到如下信息:(我们在每一行的前面加了行号,这是为了我们方便的加以解释和说明) <br />1 # sdiconfig -l <br />2 0:0,7,0: HBA : (ide,1) Generic ESDI/IDE/ATA <br />3 0,0,0: DISK : Generic IDE/ESDI 1.00 <br />4 1:0,7,0: HBA : (ide,2) Generic ESDI/IDE/ATA <br />5 0,0,0: CDROM : ATAPI CD-ROM DRIVE-32XT2DP <br />6 2:0,7,0: HBA : (adst70,2) Adaptec Ultra160 <br />7 0,5,0: DISK : NetStor DA8160 0001 <br />8 0,5,1: DISK : NetStor DA8160 0001 <br />9 0,5,2: DISK : NetStor DA8160 0001 <br />表1-2 <br />第1行是系统命令,这是在root用户下执行的,通过前面的”#”提示符可以看出来。 <br />第2、4两行是IDE通道的信息,它们分别接着本地IDE硬盘(即第3行所示信息)和IDE光驱(即第5行所示信息)。 <br />第6行是我们主机上的SCSI卡的信息,也就是接磁盘阵列柜的SCSI通道的信息,第7、8、9三行是磁盘阵列柜的三个分区的信息,这里的分区不同于我们对物理硬盘分区(Partition)的概念,它们类似于一个物理硬盘,操作系统在处理过程中也是安装一个物理硬盘来进行的。 <br /><br />2、UnixWare7.1.x硬盘的标识 <br />在任何一个Unix操作系统中,每一个硬件设备都对应着一个设备文件名,通过文件来对设备进行管理和操作,当然,UnixWare7.1.x也不例外,它对于SCSI和非SCSI硬盘的管理也是通过设备文件来进行的,有如下两种形式: <br />/dev/[r]dsk/cCbBtTdDsS <br />/dev/[r]dsk/cCbBtTdDpP <br />各个部分的解释如下: <br />1)[r]dsk <br />/rdsk目录下是原始设备(字符设备);/dsk目录下是块设备。 <br />2)cC <br />C是系统中的主机通道适配器或者是IDE控制器的序列号,C的范围是0到31。 <br />在UnixWare7.1.x中,不同于SCO OpenServer 5.0.x中不同的适配器或IDE控制器的序列号是没有关系的,不是顺序增加的,例如有两个IDE控制器和两个SCSI控制器,在OpenServer中,第一个IDE控制器的C是0,第二个IDE控制器的C是1,第一个SCSI控制器的C是0,第二个控制器的C是1;而在UnixWare中,第一个IDE控制器的C是0,第二个IDE控制器的C是1,第一个SCSI控制器的C是2,第二个控制器的C是3,当然也可以第一个SCSI控制器的C是0,第二个控制器的C是1,第一个IDE控制器的C是2,第二个IDE控制器的C是3,就是说UnixWare中,不会区分控制器的类型而进行排序,它对所有的控制器(不论什么类型,IDE、SCSI或者其他)进行排序。 <br />3)bB <br />B是HBA总线编号,范围是0到7(依赖于增加的适配器),对于IDE硬盘来讲它总是0。 <br />4)tT <br />T是SCSI目标控制器标号(ID),这个ID的范围从0到31。第一个IDE硬盘是0,第二个是1。 <br />5)dD <br />D是硬盘设备的逻辑单元号(即LUN),范围从0到31,D对IDE硬盘来讲都是0。 <br />6)sS <br />S是硬盘的Slice号,范围从0到b7(十六进制),十进制是0到183。 <br />7)pP <br />P是fdisk(1M)硬盘分区号,范围是从0到4,在硬盘分区表中,p0代表整个硬盘,而p1到p4分别表示用fdisk命令显示的硬盘的分区1到分区4。 <br />3、分析 <br />我们来看一下目录/dev/rdsk/下有那些内容: <br /># pwd <br />/dev/rdsk <br /># lf <br />c0b0t0d0p0 c2b0t5d0s1 c2b0t5d1s7 c2b0t5d2sd f05q f15d16 <br />c0b0t0d0p1 c2b0t5d0s2 c2b0t5d1s8 c2b0t5d2se f05qt f15d16t <br />c0b0t0d0p2 c2b0t5d0s3 c2b0t5d1s9 c2b0t5d2sf f0d8d f15d4 <br />c0b0t0d0p3 c2b0t5d0s4 c2b0t5d1sa f0 f0d8dt f15d4t <br />c0b0t0d0p4 c2b0t5d0s5 c2b0t5d1sb f03c f0d8t f15d8 <br />c0b0t0d0s0 c2b0t5d0s6 c2b0t5d1sc f03ct f0d9d f15d8t <br />c0b0t0d0s1 c2b0t5d0s7 c2b0t5d1sd f03d f0d9dt f15d8u <br />c0b0t0d0s2 c2b0t5d0s8 c2b0t5d1se f03dt f0d9t f15d9 <br />c0b0t0d0s3 c2b0t5d0s9 c2b0t5d1sf f03e f0q15d f15d9t <br />c0b0t0d0s4 c2b0t5d0sa c2b0t5d2p0 f03et f0q15dt f15h <br />c0b0t0d0s5 c2b0t5d0sb c2b0t5d2p1 f03h f0q18d f15ht <br />c0b0t0d0s6 c2b0t5d0sc c2b0t5d2p2 f03ht f0q18dt f15q <br />c0b0t0d0s7 c2b0t5d0sd c2b0t5d2p3 f03m f0q9dt f15qt <br />c0b0t0d0s8 c2b0t5d0se c2b0t5d2p4 f03mt f0t f1d8d <br />c0b0t0d0s9 c2b0t5d0sf c2b0t5d2s0 f03n f1 f1d8dt <br />c0b0t0d0sa c2b0t5d1p0 c2b0t5d2s1 f03nt f13c f1d8t <br />c0b0t0d0sb c2b0t5d1p1 c2b0t5d2s2 f05d16 f13ct f1d9d <br />c0b0t0d0sc c2b0t5d1p2 c2b0t5d2s3 f05d16t f13d f1d9dt <br />c0b0t0d0sd c2b0t5d1p3 c2b0t5d2s4 f05d4 f13dt f1d9t <br />c0b0t0d0se c2b0t5d1p4 c2b0t5d2s5 f05d4t f13e f1q15d <br />c0b0t0d0sf c2b0t5d1s0 c2b0t5d2s6 f05d8 f13et f1q15dt <br />c2b0t5d0p0 c2b0t5d1s1 c2b0t5d2s7 f05d8t f13h f1q18dt <br />c2b0t5d0p1 c2b0t5d1s2 c2b0t5d2s8 f05d8u f13ht f1q9dt <br />c2b0t5d0p2 c2b0t5d1s3 c2b0t5d2s9 f05d9 f13m f1t <br />c2b0t5d0p3 c2b0t5d1s4 c2b0t5d2sa f05d9t f13mt <br />c2b0t5d0p4 c2b0t5d1s5 c2b0t5d2sb f05h f13n <br />c2b0t5d0s0 c2b0t5d1s6 c2b0t5d2sc f05ht f13nt <br />表1-3 <br />在表1-3中具有/dev/[r]dsk/cCbBtTdDsS或者/dev/[r]dsk/cCbBtTdDpP格式的设备文件名称都代表了系统中的硬盘,可以归纳如下4行。 <br />1 c0b0t0d0p[0-4],c0b0t0d0s[0-f] <br />2 c2b0t5d0p[0-4],c2b0t5d0s[0-f] <br />3 c2b0t5d1p[0-4],c2b0t5d1s[0-f] <br />4 c2b0t5d2p[0-4],c2b0t5d2s[0-f] <br />表1-4 <br />注意:以上4行中[0-X],不是代表0到X中的任何一个,而是一个实际的范围,例如c0b0t0d0p[0-4]代表c0b0t0d0p0、c0b0t0d0p1、c0b0t0d0p2、c0b0t0d0p3。 <br />表1-4中的每一行都代表着一个硬盘,实际情况是第1行代表本地IDE硬盘,即表1-2中第3行所示之硬盘;第2行代表磁盘阵列柜的逻辑分区1,设置此分区的LUN号为0,即表1-2中第7行对应磁盘阵列的逻辑分区1;第3、4两行代表磁盘阵列的逻辑分区2和3,LUN号分别为1和2。 <br />我们结合上面的说明对表1-2重新进行分析: <br /><br /><br /><br /><br /><br /><br /><br />上图中标出了表1-2每一个字符代表的意思,从表1-2可以看出三个控制器(第2、4、6行)是按照顺序进行编号0、1、2,不分控制器的类型,第2、4行代表的是IDE类型,第6行代表的是SCSI类型;每一个控制器都有自己的B、T、D号,巧合的是本系统中的三个控制器的T(target)都是7,这样通过该控制器相连接的设备的T就不能是7;同时我们看到,磁盘阵列上设置的通道ID在UnixWare7.1.x操作系统中是T,而磁盘阵列柜的逻辑盘中的分区对应的ID号(LUN),对应着系统中的D,况且这样的分区是作为一个完整的硬盘来进行处理的。 <br />我们再回过头来看看表1-4,发现每一个硬盘对应的系统自动创建的设备文件都是一样的cXbXtXDxp[0-4]和cXbXtXdXs[0-f]共21个设备文件。这些设备文件是系统启动时由VTOC(Volume Table of Contents)驱动程序自动为硬盘创建的,这些设备文件是Slice的体现。下面我们具体的来看一下Slice与设备文件的对应情况。 <br />1)cXbXtXdXs0是Slice0,对应整个活动的UNIX系统分区; <br />2)cXbXtXdXs1是slice1,是slice0所代表的当前活动的UNIX系统分区的第一个slice(类似于子分区,它可以用做swap分区、root分区或者boot分区等等); <br />3)cXbXtXdXs2是slice2,对应当前活动的UNIX系统分区的第二个子分区(请允许我如此称呼它),依次类推,直到cXbXtXdXsb7(slice183),它对应的是当前活动的UNIX系统分区的第183(b7是十六进制,换算到十进制是183)个子分区,也就是说,当前活动的UNIX系统分区最多具有184个slice,同时也说明了slice管理机制只能对当前活动的UNIX系统分区通过slice0到slice183来进行子分区的划分和管理; <br />4)cXbXtXdXp0对应slice184,代表整个硬盘; <br />5)cXbXtXdXp1到cXbXtXdXp4对应slice185到slice188,代表了硬盘的fdisk分区1到分区4。 <br /><br />4. 总结 <br />综合以上1、2、3的内容可以看出slice、Partition和文件名称的关系如图1-1所示,对图中的内容说明如下: <br />1)用fdisk命令可以将一个硬盘划分为最多4个分区,当然也可以是一个分区。 <br />2)UnixWare7.1.x操作系统在启动是由VTOC驱动程序自动为每个硬盘创建了设备文件名/dev/[r]dsk/cXbxtXdXp0-4和/dev/[r]dsk/cXbxtXdXs0-f共21个slice,他们的对应情况如图1-1所示。 <br />3)从s0到sb7对Partition分区进一步分区只对active的Partition有效。 <br />4)对于系统通过VTOC驱动程序自动创建的21个设备文件在硬盘还没有做fdisk分区的时候是没有什么作用的,如硬盘还没有用fdisk分区,则只能通过/dev/[r]dsk/cXbxtXdXp0和/dev/[r]dsk/cXbxtXdXs0这2个文件中对该硬盘进行操作,在对硬盘进行了fdisk分区以后,s1-15文件仍然无法使用,只有通过命令disksetup –I /dev/[r]dsk/cXbxtXdXs0对活动分区创建了slice子分区以后才能够正常使用,而pX则对应着具体的fdisk分区。 <br />5)如果硬盘的fdisk分区只有2个,p1和p2对应着分区1和分区2,而p3和p4其实没有任何作用了,应为它们没有对应的fdisk分区。 <br />6)系统自动创建的s1-sf共15个slice有对应的文件,如果通过命令prtvtoc和edvtoc去增加slice时,系统会在启动时为增加的slice创建设备文件,它们从s11开始,最多到sb7。 <br /><br /><br />2. 硬盘的管理操作及相关命令 <br />2.1 命令diskadd <br />增加硬盘的命令diskadd的格式如下: <br />diskadd [-F dm_type] [disk_number] <br />1. 命令diskadd在增加硬盘的过程中是交互式的提示信息。 <br />2. -F dm_type <br />这个参数是diskadd命令在执行添加命令时的交互式的管理界面,缺省是通过文件/dev/default/dskmgmt来获得此界面,当没有指定时本界面缺省界面,建议使用参数-F s5dm。如果你想有所改变可以通过更改此文件来达到修改的目的。 <br />3. disk_number <br />这个参数指明了增加到系统中的硬盘设备。如果该参数设置为1则缺省增加系统的第二块硬盘。对于额外的硬盘使用cCbBtTdD此格式的硬盘设备文件格式。 <br />我们建议本参数使用cCbBtTdD此种格式,这样比较明确是哪一个硬盘,有时候不好确定第二块硬盘是哪一个,容易混淆。同时注意此设备文件的名称不包含路径名,并且是cCbBtTdD而不是cCbBtTdDs0或cCbBtTdDp0,一定注意。例如我们增加学习环境中的磁盘阵列柜的第一个逻辑分区/dev/rdsk/c2b0t5d0[p0,s0],我们用命令diskadd –F s5dm c2b0t5d0或者diskadd c2b0t5d0。 <br />4. diskadd命令成功后将与硬盘slice有关的信息写入到文件/etc/vfstab中。该文件是文本文件可以用vi或者cat命令等查看。 <br />2.2 命令prtvtoc和edvtoc <br />2.2.1 prtvtoc <br />该命令是一个磁盘VTOC信息的显示工具,该命令的命令模式如下: <br />prtvtoc [-ap] [-f vtoc-file] raw-device <br />1. -f vtoc-file <br />该参数就是指定将raw-device设备的硬盘VTOC信息写入到文件vtoc-file中,该文件可随意指定。当然该参数可以省略,此时将硬盘VTOC信息输出到标准输出。 <br />我们只对-f参数进行讨论,其它两个参数请用man prtvtoc查看。 <br />2. raw-device <br />该参数就是/dev/rdsk/目录下的设备文件,不能是/dev/dsk/目录下的设备文件。文件格式是cXbXtXdXs0或者cXbXtXdXp0。 <br />3. 举个例子 <br />在我们的测试环境中执行,至少要保证目录/dev/rdsk/有相应的设备文件。 <br />prtvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0 <br />意思是将本地硬盘的VTOC信息输出到文件/tmp/aaa中,其中aaa就是硬盘/dev/rdsk/c0b0t0d0s0的VTOC文件。 <br />2.2.2 edvtoc <br />该命令是硬盘VTOC信息的编辑工具,因为每个硬盘在UnixWare7操作系统中都是VTOC驱动程序通过VTOC表进行管理的,所以说edvtoc也是UnixWare7修改硬盘分区的工具。 <br />命令格式如下: <br />edvtoc -f vtoc-file raw-device <br />edvtoc -p raw-device <br />edvtoc -s &quot;stamp&quot; raw-device <br />我们在这里只讨论格式edvtoc -f vtoc-file raw-device: <br />1. -f vtoc-file <br />该参数用vtoc-file文件更新硬盘的VTOC信息。 <br />2. raw-device <br />该参数是硬盘的设备文件,是/dev/rdsk/目录下的设备文件,不能是/dev/dsk/目录下的设备文件。文件格式是cXbXtXdXs0或者cXbXtXdXp0。 <br />3. 举个例子 <br />edvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0 <br />用/tmp/aaa这个硬盘VTOC信息文件更新硬盘/dev/rdsk/c0b0t0d0s0的信息文件。在更新以后,重新启动系统太能够起作用。 <br />2.2.3 VTOC文件 <br />VTOC的全称Volume Table of Contents,目录卷表。 <br />VTOC管理着fdisk分区表和slice的分区表。 <br />我们在这里不对VTOC进行深入的讨论,只是对它的实际应用进行一些分析。关于VTOC的更多内容请在UnixWare7系统中用man vtoc命令查看。 <br />1. 首先让我们来看一个实际的vtoc文件,这是我们的学习环境本地硬盘的VTOC文件。 <br />Total disk size is 787 cylinders (6173.4 MB) <br /><br />Cylinders Approx <br />Partition Status Type Start End Length % MB <br />==== ====== =========== ===== === ====== === ====== <br />1 Active UNIX System 0 235 236 30 1851.2 <br />2 UNIX System 236 786 551 70 4322.2 <br /><br />1 # prtvtoc -f /tmp/aaa /dev/rdsk/c0b0t0d0s0 <br />2 # cat /tmp/aaa <br />3 #SLICE TAG FLAGS START SIZE <br />4 0 0x5 0x201 3791340 8851815 -&gt;代表整个硬盘 <br />5 1 0x2 0x200 4112640 8401995 -&gt;Root文件系统 <br />6 2 0x3 0x201 3855600 257040 -&gt;Swap文件系统 <br />7 3 0x0 0x0 0 0 <br />8 4 0x0 0x0 0 0 <br />9 5 0x0 0x0 0 0 <br />10 6 0x0 0x0 0 0 <br />11 7 0x1 0x201 3791340 34 -&gt;boot 区 <br />12 8 0xd 0x201 3791374 16031 -&gt;Alternate sector/track <br />13 9 0x0 0x0 0 0 <br />14 10 0x9 0x200 3807405 48195 -&gt;Stand区 <br />15 11 0x0 0x0 0 0 <br />16 12 0x0 0x0 0 0 <br />17 13 0x0 0x0 0 0 <br />18 14 0x0 0x0 0 0 <br />19 15 0xf 0x201 12514635 16065-&gt;卷管理私有区 <br />20 # <br />21 # df -k <br />22 filesystem kbytes used avail capacity mounted on <br />23 /dev/root 4200997 3469859 731138 83% / <br />24 /dev/stand 24097 5592 18505 24% /stand <br />25 /proc 0 0 0 0% /proc <br />26 /dev/fd 0 0 0 0% /dev/fd <br />27 /processorfs 0 0 0 0% /system/processor <br />28 /tmp 10240 32 10208 1% /tmp <br />29 /var/tmp 40960 0 40960 0% /var/tmp <br />30 /dev/_tcp 0 0 0 0% /dev/_tcp <br /><br />2. 我们来看一下环境,第一个分区安装了SCO OpenServer 5.0.5,第二个分区安装了SCO UnixWare7.1.1,而此时我们是在UnixWare7.1.1系统下,也就是说,我们当前的活动的UNIX系统分区与系统fdisk命令显示的不同,显示的内容只能够说明当机器开始引导是先从第一个分区的Openserver 5.0.5进行引导,到了boot提示,转而启动Unixware系统,实际上当前活动的系统是第二个分区。因此我们使用命令prtvtoc时输出的是第二个分区的信息。 <br />3.对上面的vtoc文件各列的含义进行说明: <br />1)SLICE列就是系统中自动定义的16个slice,编号从0到15,此编号最大到183,16几其以后的编号只能由我们手动编辑VTOC文件,并通过命令edvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0进行更新。 <br />2)TAG <br />/* Slice tags */ <br />#define V_BOOT 0x01 /* Boot slice */ <br />#define V_ROOT 0x02 /* Root filesystem */ <br />#define V_SWAP 0x03 /* Swap filesystem */ <br />#define V_USR 0x04 /* User filesystem */ <br />#define V_BACKUP 0x05 /* full disk */ <br />#define V_ALTS 0x06 /* alternate sector space */ <br />#define V_OTHER 0x07 /* non-unix space */ <br />#define V_ALTTRK 0x08 /* alternate track space */ <br />#define V_STAND 0x09 /* Stand slice */ <br />#define V_VAR 0x0a /* Var slice */ <br />#define V_HOME 0x0b /* Home slice */ <br />#define V_DUMP 0x0c /* dump slice */ <br />#define V_ALTSCTR 0x0d /* Alternate sector/track */ <br />#define V_MANAGED1 0x0e /* Volume management public slice */ <br />#define V_MANAGED2 0x0f /* Volume management private slice */ <br /><br />3)FLAGS <br />/* Slice permission flags */ <br />#define V_UNMNT 0x01 /* Unmountable partition */ <br />#define V_RONLY 0x10 /* Read only */ <br />#define V_VALID 0x200 /* Partition is valid to use */ <br />另:0x201是原始设备,0x200是文件系统。 <br />4)START <br />这是slice的开始sector号,该编号是以整个硬盘为起点。一个sector是512字节。 <br />5)SIZE <br />该slice的以sector计算的长度。 <br />4. 对VTOC文件/tmp/aaa进行讨论 <br />1)如果我们将slice1、2、7、8、15的长度相加和slice0的长度进行比较看一下结果: <br />8401995(1) + 257040(2) + 34(7) + 16031( + 48195(10) + 16065(15) = 8739360 <br />而slice0的长度是8851815(0),与此结果比较相近。当然还有一部分空间没有使用。 <br />2)我们看一下各个slice的开始sector: <br />通过slice0可以看出,该fdisk分区是从sector 3791340到3791340 + 8851815 = 12643155。 <br />Slice7的分区是从3791340到3791374,依次类推,如图2-1所示。我们看到各个slice的开始sector和结束sector是首位相连的,从图中知道,该硬盘中还有一部分没有使用。我们可以手动增加slice,并用edvtoc命令。详细应用下面介绍。 <br /><br /><br />5. 用edvtoc命令增加slice <br />系统自动增加了s0到sf共16个 slice,如果我们继续增加只能通过编辑vtoc文件。 <br />1)prtvtoc –f /tmp/vtoc /dev/c0b0t0d0s0 <br />这样获得当前硬盘的VTOC信息文件。 <br />2)然后在文件的末尾增加如下16、17两行: <br />15 0xf 0x201 12514635 16065 <br />16 0x4 0x200 12530700 300 <br />17 0x4 0x200 12531000 400 <br />有一个原则,最后一个slice的结束sector不能超出整个fdisk分区的范围,如果超出,将产生不可预料的严重错误,甚至有导致整个系统瘫痪的可能。 <br />3)edvtoc –f /tmp/aaa /dev/c0b0t0d0s0 <br />通过修改后的vtoc文件/tmp/aaa更新硬盘的VTOC信息。 <br />4)然后重新启动系统,系统将自动给新增加的两个slice创建两个设备文件/dev/[r]dsk/c0b0t0d0s11和/dev/[r]dsk/c0b0t0d0s12。这样我们就可以通过这两个设备文件对slice进行操作了。 <br />2.3 增加硬盘 <br />将硬盘正确的连接到主机系统上,并且连接硬盘的适配器(或者通道或者卡)的驱动程序已经正确安装,则操作系统在启动的时候能够正确的检测到硬盘,并由VTOC驱动程序创建了21个与slice对应的设备文件/dev/[r]dsk/cXbXtXdXp0-4和/dev/[r]dsk/cXbXtXdXs0-f,只有发现系统正确的检测到了硬盘时我们才能够通过命令diskadd增加硬盘,否则无法进行。举个例子,在我们的学习环境中,磁盘阵列柜是通过SCSI Ultra29160卡连接到主机上的,如果在UnixWare7.1.x操作系统中没有正确的安装此SCSI卡的驱动程序,将无法进行增加硬盘,因为系统根本无法在启动时自动检测到该磁盘阵列柜并为其创建设备文件,所以不可能正确的执行命令diskadd。 <br />2.3.1 第一个例子 <br />增加磁盘阵列柜第一个逻辑分区/dev/[r]dsk/c2b0t5d0,这个例子详细列出整个过程,目的是让大家有一个较为详细的了解。 <br />1 # diskadd c2b0t5d0 <br />2 UX:diskadd: INFO: You have invoked the System V disk management (s5dm) diskadd . <br />3 The purpose of this utility is to set up additional disk drives. <br />4 This utility can destroy the existing data on the disk. <br />5 Do you wish to continue? <br />6 (Type y for yes or n for no followed by ENTER): <br />注释: <br />1)第1行是增加硬盘的命令,它是建立在系统启动时检测到该硬盘并正确的创立了/dev/[r]dsk/目录下的设备文件的基础之上的。 <br />2)第2行的提示可以看出,当我们省略了参数-F时,缺省调用s5dm交互界面。 <br />3)第4行有一个该操作可能破坏硬盘上存在数据的提示。 <br />4)第5、6两行询问你是否继续,如果可以回答y,如果不想继续则回答n。 <br /><br />7 y <br />8 The recommended default partitioning for your disk is: <br /><br />0. a 100% &quot;UNIX System&quot; partition. <br /><br />9 To select this, please type &quot;y&quot;. To partition your disk <br />10 differently, type &quot;n&quot; and the &quot;fdisk&quot; program will let you <br />11 select other partitions. y <br /><br />12 Surface analysis of your disk is recommended <br />13 but not required. <br />注释: <br />1)第7行就是我们的回答”y”,是由我们手动输入的。 <br />2)第8到11行提示我们是用缺省的将该逻辑分区100%的划分为UNIX分区还是手动用fdisk自己进行分区,我们在11行回答的是”y”。 <br /><br />14 Do you wish to skip surface analysis? (y/n) y <br />15 You will now be queried on the setup of your disk.After you <br />16 have determined which slices will be created, you will be <br />17 queried to designate the sizes of the various slices. <br /><br />18 How many slices/filesystems do you want created on the disk (1 - 13)? 2 <br />注释:创建两个slices。 <br />19 Please enter the absolute pathname (e.g., /home3) for <br />20 slice/filesystem 1 (1 - 32 chars)? /home/s1 <br />注释:输入文件系统的挂接点目录/home/s1。 <br />21 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs), <br />22 type &#39;na&#39; if no filesystem is needed, or press <br />23 &lt;ENTER&gt; to use the default (vxfs): <br />注释:使用缺省的文件系统类型vxfs,如果使用其它的文件系统可以手动输入后确认。 <br />24 Specify the block size from the the following list <br />25 (1024, 2048, 4096, 8192), or press &lt;ENTER&gt; to use the first one: <br />注释:指定slice的块(block)大小,此处缺省。 <br />26 Should /home/s1 be automatically mounted during a reboot? <br />27 Type &quot;no&quot; to override auto-mount or press &lt;ENTER&gt; to enable the option: no <br />注释:询问是否在系统启动时自动mount该文件系统。 <br />28 Please enter the absolute pathname (e.g., /home3) for <br />29 slice/filesystem 2 (1 - 32 chars)? /home/s2 <br /><br />30 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs), <br />31 type &#39;na&#39; if no filesystem is needed, or press <br />32 &lt;ENTER&gt; to use the default (vxfs): <br /><br />33 Specify the block size from the the following list <br />34 (1024, 2048, 4096, 8192), or press &lt;ENTER&gt; to use the first one: <br /><br />35 Should /home/s2 be automatically mounted during a reboot? <br />36 Type &quot;no&quot; to override auto-mount or press &lt;ENTER&gt; to enable the option: no <br />注释:28-36行定义第二个slice,步骤和内容和第一个slice相同。 <br /><br />37 You will now specify the size in cylinders of each slice. <br />38 (One cylinder is approximately 2 megabytes of disk space.) <br />39 There are now 17542 cylinders available on your disk. <br />40 The filesystem type you have chosen is limited to 541064 cylinders. <br />41 How many cylinders would you like for /home/s1 (0 - 17542)? <br />42 Press &lt;ENTER&gt; for 0 cylinders: 1000 <br />43 There are now 16542 cylinders available on your disk. <br />44 The filesystem type you have chosen is limited to 541064 cylinders. <br />45 How many cylinders would you like for /home/s2 (0 - 16542)? <br />46 Press &lt;ENTER&gt; for 0 cylinders: 1000 <br /><br />47 Notice: The selections you have made will leave 15542 cylinders unused. <br /><br />48 You have specified the following disk configuration: <br />49 A /home/s1 filesystem with 1000 cylinders (1938.0 MB) <br />50 A /home/s2 filesystem with 1000 cylinders (1938.0 MB) <br /><br />51 Is this allocation acceptable to you (y/n)? y <br />52 UX:sh (sh): ERROR: disk3: Not found <br />53 UX:sh (sh): ERROR: disk5: Not found <br />54 UX:sh (sh): ERROR: disk6: Not found <br />注释:第37行到54行对上面定义的两个slice分配空间,以cylinder为单位进行,在第38行有提示说一个cylinder大约接近2MB的空间,在41行提示整个逻辑分区的空间是17542个cylinder。第49、50行说明了上面我们分配的两个slice的大小,并在51行询问是否接受以上定义,我们回答”y”。 <br />55 Filesystems will now be created on the needed slices <br /><br />56 Creating the /home/s1 filesystem on /dev/rdsk/c2b0t5d0s1 <br />57 Allocated approximately 496093 inodes for this file system. Specify a <br />58 new value or press &lt;ENTER&gt; to use the default: <br />59 Creating the /home/s2 filesystem on /dev/rdsk/c2b0t5d0s2 <br />60 Allocated approximately 496093 inodes for this file system. Specify a <br />61 new value or press &lt;ENTER&gt; to use the default: <br />62 UX:diskadd: INFO: Diskadd for Disk Drive 2 DONE at Tue Feb 24 13:44:02 CST 2004 <br />63 # <br />注释:第55到62行创建slice成功,并有说明s1是/dev/rdsk/c2b0t5d0s1,s2是/dev/rdsk/c2b0t5d0s2,这样我们就完成了添加硬盘的工作,并在该逻辑分区上创建了两个子分区。 <br /><br />下面我们用命令prtvtoc将该分区的vtoc表给输出到文件/tmp/aaa,该文件内包含了该分区的子分区(slice)的相关信息。 <br />64 # prtvtoc -f /tmp/aaa /dev/rdsk/c2b0t5d0s0 <br />注释: <br />1)-f /tmp/aaa <br />使vtoc表输出到文件/tmp/aaa,该文件可以随意定义。 <br />2)参数/dev/rdsk/c2b0t5d0s0 <br />必须是目录/dev/rdsk,该参数也可以是/dev/rdsk/c2b0t5d0p0。 <br /><br />65 # cat /tmp/aaa <br />66 #SLICE TAG FLAGS START SIZE <br />67 0 0x5 0x201 63 69628104 <br />68 1 0x4 0x200 3969 3969000 <br />69 2 0x4 0x200 3972969 3969000 <br />70 3 0x0 0x0 0 0 <br />71 4 0x0 0x0 0 0 <br />72 5 0x0 0x0 0 0 <br />73 6 0x0 0x0 0 0 <br />74 7 0x1 0x201 63 34 <br />75 8 0xd 0x201 97 3872 <br />76 9 0x0 0x0 0 0 <br />77 10 0x0 0x0 0 0 <br />78 11 0x0 0x0 0 0 <br />79 12 0x0 0x0 0 0 <br />80 13 0x0 0x0 0 0 <br />81 14 0x0 0x0 0 0 <br />82 15 0x0 0x0 0 0 <br /><br />注释:我们可以看到/dev/[r]dsk/c2b0t5d0s1和/dev/[r]dsk/c2b0t5d0s2对应的两个slice,第2和3行。也可以看到该活动UNIX系统分区的大小。关于该表的具体介绍请参考《prtvtoc命令介绍一节》。 <br />83 # mount <br />84 /home/s1 on /dev/dsk/c2b0t5d0s1 read/write/log/setuid/mincache =closesync/noquot4 <br />85 /home/s2 on /dev/dsk/c2b0t5d0s2 read/write/log/setuid/mincache =closesync/noquot4 <br />86 # <br />a) Total disk size is 17543 cylinders (33998.1 MB) <br /><br />Cylinders Approx <br />87 Partition Status Type Start End Length % MB <br />88 ====== ====== ======= ===== === ====== === ====== <br />1 Active UNIX System 0 17542 17543 100 33998.1 <br /><br /><br />89 SELECT ONE OF THE FOLLOWING: <br /><br />0. Overwrite system master boot code <br />1. Create a partition <br />2. Change Active (Boot from) partition <br />3. Delete a partition <br />4. Exit (Update disk configuration and exit) <br />5. Cancel (Exit without updating disk configuration) <br />90 Enter Selection: 4 <br />这样,我们就成功的将磁盘阵列的第一个逻辑分区增加到系统中,并且给该分区增加了两个slice子分区。 <br />2.3.2 第二个例子 <br />增加磁盘阵列柜第二个逻辑分区/dev/rdsk/c2b0t5d1。准备将该逻辑分区分成2个fdisk分区,并将该逻辑分区的活动fdiskUNIX系统分区(第一个fdisk分区)再分成三个子分区(slice)。 <br />1. 用diskadd –F s5dm c2b0t5d1命令。 <br />2. 在第一个例子的第11行处输入“n” ,进入fdisk程序对该逻辑分区进行分区。 <br />3. 分成两个fdisk分区,整个过程如下所示: <br /># fdisk /dev/rdsk/c2b0t5d1s0 <br />The recommended default partitioning for your disk is: <br /><br />a 100% &quot;UNIX System&quot; partition. <br /><br />To select this, please type &quot;y&quot;. To partition your disk <br />differently, type &quot;n&quot; and the &quot;fdisk&quot; program will let you <br />select other partitions.y <br /><br />Cylinders Approx <br />Partition Status Type Start End Length % MB <br />====== ====== ========== ===== === ====== === ====== <br />1 Active UNIX System 0 15299 15300 45 15300.0 <br />2 UNIX System 15300 33998 18699 55 18699.0 <br /><br />4. diskadd调用fdisk将硬盘分区完成以后调用disksetup –I /dev/rdsk/c2b0t5d1s0命令对该硬盘进行子分区(slice)。这个过程与第一个例子类似,我们可以证明划分子分区只是针对了active分区,通过下面的操作可以看出来。 <br />1 You will now specify the size in cylinders of each slice. <br />2 (One megabyte of disk space is approximately 1 cylinders.) <br />3 There are now 15299 cylinders available on your disk. <br />4 The filesystem type you have chosen is limited to 1048576 cylinders. <br />5 How many cylinders would you like for /home/s21 (0 - 15299)? <br />第5行中的0-15299说明该UNIX系统分区的空间是15300个cylinder长度,这与用fdisk命令所划分的第1分区(当前活动的UNIX系统分区)的长度完全一样。从而印证了我们关于slice只能对硬盘的当前活动UNIX系统分区继续进行子分区的观点。 <br />2.2.3 第三个例子 <br />这个例子就是一个系统主机的本地IDE硬盘的第二个分区的使用情况。 <br />我们这个例子的环境是一个IDE硬盘被分成两个fdisk分区,其中分区1安装了UnixWare7.1.x操作系统,是当前的活动的UNIX系统分区,容量为3702.4MB,472个cylinder,第二个分区是UNIX系统分区,容量为2470.9MB,315个cylinder。 <br />我们无法象OpenServer一样将第二个分区在进行细分成很多子分区,然后使用它们,只能利用mkfs命令将第二个fdisk分区作为一个整体进行使用,不能够在继续划分子分区。 <br />Cylinders Approx <br />Partition Status Type Start End Length % MB <br />===== ====== =========== ===== === ====== === ====== <br />1 Active UNIX System 0 471 472 60 3702.4 <br />2 UNIX System 472 786 315 40 2470.9 <br /><br />1. mkfs –F vxfs /dev/rdsk/c0b0t0d0p2 5060475 <br />1)-F vxfs是指明要创建的文件系统。 <br />2)/dev/rdsk/c0b0t0d0p2是第二个分区对应的设备文件。 <br />3)5060475是以512字节进行计算的sector数量。 <br />4)这个命令的作用就是将第二个分区创建成一个vxfs类型的文件系统。 <br />2. mount –F vxfs /dev/dsk/c0b0t0d0p2 /home/p2 <br />这个命令将第二个分区mount到目录/home/p2上,我们可以象一般的文件系统一样进行使用。 <br />2.4 删除硬盘 <br />2.4.1 diskrm命令 <br />diskrm [-F dm_type] [disk_number] <br />diskrm命令的参数与diskadd完全相同,代表的意思也完全一样,它的作用就是将/etc/vfstab文件中的相应记录删除。 <br />2.4.2 一个例子 <br />我们这个例子是删除我们学习环境的磁盘阵列的第二个逻辑分区/dev/[r]dsk/c2b0t5d1。 <br />我们先来看一下在没有执行命令diskrm前的/etc/vfstab的内容,我们看到第14到16行都是磁盘阵列第二逻辑分区的子分区的信息。 <br />1 # vi /etc/vfstab <br />2 /dev/root /dev/rroot / vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />3 /dev/stand /dev/rstand /stand bfs 1 no - SYS_RANGE_MAX <br />4 /proc - /proc proc - no - <br />5 /processorfs - /system/processor profs - yes - <br />6 /dev/fd - /dev/fd fdfs - no - <br />7 /dev/dsk/f0t /dev/rdsk/f0t /install s5 - no - <br />8 /dev/dsk/f1t /dev/rdsk/f1t /install s5 - no - <br />9 /dev/dsk/f0 /dev/rdsk/f0 /install s5 - no - <br />10 /dev/dsk/f1 /dev/rdsk/f1 /install s5 - no - <br />11 /tmp - /tmp memfs - yes swapmax=10485760,rootmode=1777 <br />12 /var/tmp - /var/tmp memfs - yes swapmax=41943040,rootmode=1777 <br />13 /dev/_tcp - /dev/_tcp specfs - yes dev=tcp <br />14 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1 /home/s21 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />15 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2 /home/s22 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />16 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3 /home/s23 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />17 /dev/dsk/c2b0t5d2s1 /dev/rdsk/c2b0t5d2s1 /home/31 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />18 /dev/dsk/c2b0t5d2s2 /dev/rdsk/c2b0t5d2s2 /home/32 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />19 /dev/root /dev/rroot / vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />20 /dev/stand /dev/rstand /stand bfs 1 no - SYS_RANGE_MAX <br />21 /proc - /proc proc - no - <br />22 /processorfs - /system/processor profs - yes - <br />23 /dev/fd - /dev/fd fdfs - no - <br />24 /dev/dsk/f0t /dev/rdsk/f0t /install s5 - no - <br />25 /dev/dsk/f1t /dev/rdsk/f1t /install s5 - no - <br />26 /dev/dsk/f0 /dev/rdsk/f0 /install s5 - no - <br />27 /dev/dsk/f1 /dev/rdsk/f1 /install s5 - no - <br />28 /tmp - /tmp memfs - yes swapmax=10485760,rootmode=1777 <br />29 /var/tmp - /var/tmp memfs - yes swapmax=41943040,rootmode=1777 <br />30 /dev/_tcp - /dev/_tcp specfs - yes dev=tcp <br />31 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1 /home/s21 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />32 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2 /home/s22 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />33 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3 /home/s23 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />34 /dev/dsk/c2b0t5d2s1 /dev/rdsk/c2b0t5d2s1 /home/31 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />35 /dev/dsk/c2b0t5d2s2 /dev/rdsk/c2b0t5d2s2 /home/32 vxfs 1 no mincache=closesync SYS_RANGE_MAX <br />36 @ <br />37 &quot;/etc/vfstab&quot; 21 lines, 1483 characters <br /><br />我们执行命令diskrm c2b0t5d1后,在/etc/vfsvtab文件中看不到上面14到16行所显示的内容,说明删除成功。在执行该命令的过程中显示内容如下所示: <br />1 # diskrm c2b0t5d1 <br />2 UX:diskrm: INFO: You have invoked the System V disk management (s5dm) diskrm ut. <br />3 The purpose of this utility is to remove entries from the /etc/vfstab file. <br />4 Do you wish to continue? <br />5 (Type y for yes or n for no followed by ENTER): <br />6 y <br />7 UX:diskrm: INFO: <br />8 Do you want to delete the following entry? <br /><br />9 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1 /home/s21 vxfs 1 X <br /><br />10 (Type y for yes or n for no and press &lt;ENTER&gt;): <br />11 y <br />12 UX:diskrm: INFO: <br />13 Do you want to delete the following entry? <br /><br />14 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2 /home/s22 vxfs 1 X <br /><br />15 (Type y for yes or n for no and press &lt;ENTER&gt;): <br />16 y <br />17 UX:diskrm: INFO: <br />18 Do you want to delete the following entry? <br /><br />19 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3 /home/s23 vxfs 1 X <br /><br />20 (Type y for yes or n for no and press &lt;ENTER&gt;): <br />21 y <br />22 UX:diskrm: INFO: saving /etc/vfstab to /etc/Ovfstab <br />23 UX:diskrm: INFO: creating a new /etc/vfstab <br />24 UX:diskrm: INFO: Diskrm for disk c2b0t5d1 DONE at Thu Feb 26 14:07:46 CST 2004 <br />25 # <br />附录 <br />参考资料: <br />1. www,chinaunix.net论坛上的相关文章。 <br />2. UnixWare7.1.1和7.1.3上的联机手册,包括:prtvtoc、edvtoc、vtoc、fdisk、disksetup、diskadd、diskrm等。

2007-4-15 11:58 lbs999
我是unixware初学者,急需此文,非常感谢

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.