ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 转:UnixWare7.1.x操作系统下的硬盘管理

转:UnixWare7.1.x操作系统下的硬盘管理

原创 Linux操作系统 作者:wuft2003 时间:2012-02-02 17:49:53 0 删除 编辑

转自:http://www.chinaunix.net 作者:whan

传播好东西,也是行善积德!

UnixWare7.1.x操作系统下的硬盘管理
1. 硬盘管理概述
UnixWare7.1.x对硬盘的管理分为两个步骤,或者说是两个层次。一个就是用众所周知的fdisk命令划分的硬盘分区,应该说大部分操作系统都使用这一工具进行硬盘的分区划分和管理,为了与另一个管理方式“slice”相区别,我们用英文表示为”partition”,此硬盘分区不能在UnixWare7.1.x操作系统下直接进行操作,只能通过UnixWare7.1.x所特有的slice进行映射或者重新划分后才能够进行操作;另一个就是”slice”,它是UnixWare7.1.x所特有的管理硬盘的工具,并且UnixWare只有通过slice对硬盘进行访问。
1.1 Partition具有如下特点:
1.一个开始Sector;
2. 该分区的长度,用Sector计算的;
3. 该分区操作系统的类型,如UNIX, DOS, 或者 Extended DOS等等;
4. 如果是可引导分区必须具有Active标志;
5. 每个硬盘最多可以划分4个Partition;
6. 如果硬盘要被UnixWare操作系统使用则必须至少有一个分区(Partition);
7. UnixWare7.1.x操作系统利用命令fdisk进行划分。
1.2 Slice特点如下:
1.一个开始的Sector。
2. 该Slice的长度,用Sector计算。
3. Slice的类型,例如root, user, swap, stand等等。
4. 访问限制(valid and mountable/unmountable)。
5. UnixWare7.1.x操作系统只有通过Slice才能够访问和管理硬盘,而不能够通过其他方式对硬盘进行管理和访问。
6. 每个物理硬盘原则上最多是有256个Slice,实际上使用的只有188个,而这188个slice在系统中的体现要靠节点设备文件表现出来,如/dev/rdsk/c0b0t0d0s0,就是当前状态为ACTIVE的整个unix分区(P),下面将更详细的讨论。
7. 在一个物理硬盘上的当前活动的UNIX分区可以可以通过slice进行管理,而slice也只能对当前活动的UNIX分区进行更进一步的划分分区和管理。
8.  一个slice可以用做一个文件系统,可以被用做swap空间,可以作为生设备使用,也可以被其他应用程序使用,例如被数据库管理和使用。

1.3 Slice、分区(P)和节点设备文件的关系:
1、学习环境
首先让我们来看一个环境,主机的硬盘总容量是6173.4 MB,分了两个分区(P),第一个分区容量为1851.2MB,是当前的活动的UNIX系统分区,安装了SCO OpenServer 5.0.5;第二个分区容量为4322.2MB,是非活动UNIX系统分区,安装了UnixWare7.1.1操作系统,而当前正在运行的系统是第二分区的UnixWare,对操作系统本身来讲,第二个分区是当前UNIX系统分区(P)。具体分区情况如下所示:
Total disk size is 787 cylinders (6173.4 MB)
Cylinders               Approx
Partition   Status       Type       Start   End   Length    %      MB
=====  ====== ===========   =====   ===   ======   ===   ======
1       Active    UNIX System      0    235     236     30    1851.2
2                UNIX System    236    786     551     70    4322.2
表1-1

该主机通过一个SCSI Ultra160卡外挂了一个磁盘阵列柜,阵列柜有三个70G的SCSI硬盘,做了RAID 5,阵列柜的两个外接SCSI通道的ID都设为5,阵列柜做了RAID 5后,在逻辑盘空间划分了三个分区,这三个对应的逻辑号分别为0、1、2,这样通过主机的操作系统就能够看到三个硬盘的标识,通过系统命令”sdiconfig –l”可以看到如下信息:(我们在每一行的前面加了行号,这是为了我们方便的加以解释和说明)
1 # sdiconfig -l
2 0:0,7,0: HBA     : (ide,1) Generic ESDI/IDE/ATA
3   0,0,0: DISK    : Generic IDE/ESDI        1.00
4 1:0,7,0: HBA     : (ide,2) Generic ESDI/IDE/ATA
5   0,0,0: CDROM   : ATAPI   CD-ROM DRIVE-32XT2DP
6 2:0,7,0: HBA     : (adst70,2) Adaptec Ultra160
7   0,5,0: DISK    : NetStor DA8160          0001
8   0,5,1: DISK    : NetStor DA8160          0001
9   0,5,2: DISK    : NetStor DA8160          0001
表1-2
第1行是系统命令,这是在root用户下执行的,通过前面的”#”提示符可以看出来。
第2、4两行是IDE通道的信息,它们分别接着本地IDE硬盘(即第3行所示信息)和IDE光驱(即第5行所示信息)。
第6行是我们主机上的SCSI卡的信息,也就是接磁盘阵列柜的SCSI通道的信息,第7、8、9三行是磁盘阵列柜的三个分区的信息,这里的分区不同于我们对物理硬盘分区(Partition)的概念,它们类似于一个物理硬盘,操作系统在处理过程中也是安装一个物理硬盘来进行的。

2、UnixWare7.1.x硬盘的标识
在任何一个Unix操作系统中,每一个硬件设备都对应着一个设备文件名,通过文件来对设备进行管理和操作,当然,UnixWare7.1.x也不例外,它对于SCSI和非SCSI硬盘的管理也是通过设备文件来进行的,有如下两种形式:
/dev/[r]dsk/cCbBtTdDsS 
/dev/[r]dsk/cCbBtTdDpP 
各个部分的解释如下:
1)[r]dsk
/rdsk目录下是原始设备(字符设备);/dsk目录下是块设备。
2)cC
C是系统中的主机通道适配器或者是IDE控制器的序列号,C的范围是0到31。
在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或者其他)进行排序。
3)bB
B是HBA总线编号,范围是0到7(依赖于增加的适配器),对于IDE硬盘来讲它总是0。
4)tT
T是SCSI目标控制器标号(ID),这个ID的范围从0到31。第一个IDE硬盘是0,第二个是1。
5)dD
D是硬盘设备的逻辑单元号(即LUN),范围从0到31,D对IDE硬盘来讲都是0。
6)sS
S是硬盘的Slice号,范围从0到b7(十六进制),十进制是0到183。
7)pP
P是fdisk(1M)硬盘分区号,范围是从0到4,在硬盘分区表中,p0代表整个硬盘,而p1到p4分别表示用fdisk命令显示的硬盘的分区1到分区4。
3、分析
我们来看一下目录/dev/rdsk/下有那些内容:
# pwd
/dev/rdsk
# lf
c0b0t0d0p0   c2b0t5d0s1   c2b0t5d1s7   c2b0t5d2sd   f05q         f15d16
c0b0t0d0p1   c2b0t5d0s2   c2b0t5d1s8   c2b0t5d2se   f05qt        f15d16t
c0b0t0d0p2   c2b0t5d0s3   c2b0t5d1s9   c2b0t5d2sf   f0d8d        f15d4
c0b0t0d0p3   c2b0t5d0s4   c2b0t5d1sa   f0           f0d8dt       f15d4t
c0b0t0d0p4   c2b0t5d0s5   c2b0t5d1sb   f03c         f0d8t        f15d8
c0b0t0d0s0   c2b0t5d0s6   c2b0t5d1sc   f03ct        f0d9d        f15d8t
c0b0t0d0s1   c2b0t5d0s7   c2b0t5d1sd   f03d         f0d9dt       f15d8u
c0b0t0d0s2   c2b0t5d0s8   c2b0t5d1se   f03dt        f0d9t        f15d9
c0b0t0d0s3   c2b0t5d0s9   c2b0t5d1sf   f03e         f0q15d       f15d9t
c0b0t0d0s4   c2b0t5d0sa   c2b0t5d2p0   f03et        f0q15dt      f15h
c0b0t0d0s5   c2b0t5d0sb   c2b0t5d2p1   f03h         f0q18d       f15ht
c0b0t0d0s6   c2b0t5d0sc   c2b0t5d2p2   f03ht        f0q18dt      f15q
c0b0t0d0s7   c2b0t5d0sd   c2b0t5d2p3   f03m         f0q9dt       f15qt
c0b0t0d0s8   c2b0t5d0se   c2b0t5d2p4   f03mt        f0t          f1d8d
c0b0t0d0s9   c2b0t5d0sf   c2b0t5d2s0   f03n         f1           f1d8dt
c0b0t0d0sa   c2b0t5d1p0   c2b0t5d2s1   f03nt        f13c         f1d8t
c0b0t0d0sb   c2b0t5d1p1   c2b0t5d2s2   f05d16       f13ct        f1d9d
c0b0t0d0sc   c2b0t5d1p2   c2b0t5d2s3   f05d16t      f13d         f1d9dt
c0b0t0d0sd   c2b0t5d1p3   c2b0t5d2s4   f05d4        f13dt        f1d9t
c0b0t0d0se   c2b0t5d1p4   c2b0t5d2s5   f05d4t       f13e         f1q15d
c0b0t0d0sf   c2b0t5d1s0   c2b0t5d2s6   f05d8        f13et        f1q15dt
c2b0t5d0p0   c2b0t5d1s1   c2b0t5d2s7   f05d8t       f13h         f1q18dt
c2b0t5d0p1   c2b0t5d1s2   c2b0t5d2s8   f05d8u       f13ht        f1q9dt
c2b0t5d0p2   c2b0t5d1s3   c2b0t5d2s9   f05d9        f13m         f1t
c2b0t5d0p3   c2b0t5d1s4   c2b0t5d2sa   f05d9t       f13mt
c2b0t5d0p4   c2b0t5d1s5   c2b0t5d2sb   f05h         f13n
c2b0t5d0s0   c2b0t5d1s6   c2b0t5d2sc   f05ht        f13nt
表1-3
在表1-3中具有/dev/[r]dsk/cCbBtTdDsS或者/dev/[r]dsk/cCbBtTdDpP格式的设备文件名称都代表了系统中的硬盘,可以归纳如下4行。
1 c0b0t0d0p[0-4],c0b0t0d0s[0-f]
2 c2b0t5d0p[0-4],c2b0t5d0s[0-f]
3 c2b0t5d1p[0-4],c2b0t5d1s[0-f]
4 c2b0t5d2p[0-4],c2b0t5d2s[0-f]
表1-4
注意:以上4行中[0-X],不是代表0到X中的任何一个,而是一个实际的范围,例如c0b0t0d0p[0-4]代表c0b0t0d0p0、c0b0t0d0p1、c0b0t0d0p2、c0b0t0d0p3。
表1-4中的每一行都代表着一个硬盘,实际情况是第1行代表本地IDE硬盘,即表1-2中第3行所示之硬盘;第2行代表磁盘阵列柜的逻辑分区1,设置此分区的LUN号为0,即表1-2中第7行对应磁盘阵列的逻辑分区1;第3、4两行代表磁盘阵列的逻辑分区2和3,LUN号分别为1和2。
我们结合上面的说明对表1-2重新进行分析:







上图中标出了表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,况且这样的分区是作为一个完整的硬盘来进行处理的。
我们再回过头来看看表1-4,发现每一个硬盘对应的系统自动创建的设备文件都是一样的cXbXtXDxp[0-4]和cXbXtXdXs[0-f]共21个设备文件。这些设备文件是系统启动时由VTOC(Volume Table of Contents)驱动程序自动为硬盘创建的,这些设备文件是Slice的体现。下面我们具体的来看一下Slice与设备文件的对应情况。
1)cXbXtXdXs0是Slice0,对应整个活动的UNIX系统分区;
2)cXbXtXdXs1是slice1,是slice0所代表的当前活动的UNIX系统分区的第一个slice(类似于子分区,它可以用做swap分区、root分区或者boot分区等等);
3)cXbXtXdXs2是slice2,对应当前活动的UNIX系统分区的第二个子分区(请允许我如此称呼它),依次类推,直到cXbXtXdXsb7(slice183),它对应的是当前活动的UNIX系统分区的第183(b7是十六进制,换算到十进制是183)个子分区,也就是说,当前活动的UNIX系统分区最多具有184个slice,同时也说明了slice管理机制只能对当前活动的UNIX系统分区通过slice0到slice183来进行子分区的划分和管理;
4)cXbXtXdXp0对应slice184,代表整个硬盘;
5)cXbXtXdXp1到cXbXtXdXp4对应slice185到slice188,代表了硬盘的fdisk分区1到分区4。

4. 总结
综合以上1、2、3的内容可以看出slice、Partition和文件名称的关系如图1-1所示,对图中的内容说明如下:
1)用fdisk命令可以将一个硬盘划分为最多4个分区,当然也可以是一个分区。
2)UnixWare7.1.x操作系统在启动是由VTOC驱动程序自动为每个硬盘创建了设备文件名/dev/[r]dsk/cXbxtXdXp0-4和/dev/[r]dsk/cXbxtXdXs0-f共21个slice,他们的对应情况如图1-1所示。
3)从s0到sb7对Partition分区进一步分区只对active的Partition有效。
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分区。
5)如果硬盘的fdisk分区只有2个,p1和p2对应着分区1和分区2,而p3和p4其实没有任何作用了,应为它们没有对应的fdisk分区。
6)系统自动创建的s1-sf共15个slice有对应的文件,如果通过命令prtvtoc和edvtoc去增加slice时,系统会在启动时为增加的slice创建设备文件,它们从s11开始,最多到sb7。
 

2. 硬盘的管理操作及相关命令
2.1 命令diskadd
增加硬盘的命令diskadd的格式如下:
diskadd  [-F dm_type]  [disk_number]
1. 命令diskadd在增加硬盘的过程中是交互式的提示信息。
2. -F dm_type
这个参数是diskadd命令在执行添加命令时的交互式的管理界面,缺省是通过文件/dev/default/dskmgmt来获得此界面,当没有指定时本界面缺省界面,建议使用参数-F s5dm。如果你想有所改变可以通过更改此文件来达到修改的目的。
3. disk_number
这个参数指明了增加到系统中的硬盘设备。如果该参数设置为1则缺省增加系统的第二块硬盘。对于额外的硬盘使用cCbBtTdD此格式的硬盘设备文件格式。
我们建议本参数使用cCbBtTdD此种格式,这样比较明确是哪一个硬盘,有时候不好确定第二块硬盘是哪一个,容易混淆。同时注意此设备文件的名称不包含路径名,并且是cCbBtTdD而不是cCbBtTdDs0或cCbBtTdDp0,一定注意。例如我们增加学习环境中的磁盘阵列柜的第一个逻辑分区/dev/rdsk/c2b0t5d0[p0,s0],我们用命令diskadd –F s5dm c2b0t5d0或者diskadd  c2b0t5d0。
4. diskadd命令成功后将与硬盘slice有关的信息写入到文件/etc/vfstab中。该文件是文本文件可以用vi或者cat命令等查看。
2.2 命令prtvtoc和edvtoc
2.2.1 prtvtoc
该命令是一个磁盘VTOC信息的显示工具,该命令的命令模式如下:
prtvtoc [-ap] [-f vtoc-file] raw-device
1. -f vtoc-file
该参数就是指定将raw-device设备的硬盘VTOC信息写入到文件vtoc-file中,该文件可随意指定。当然该参数可以省略,此时将硬盘VTOC信息输出到标准输出。
我们只对-f参数进行讨论,其它两个参数请用man prtvtoc查看。
2. raw-device
该参数就是/dev/rdsk/目录下的设备文件,不能是/dev/dsk/目录下的设备文件。文件格式是cXbXtXdXs0或者cXbXtXdXp0。
3. 举个例子
在我们的测试环境中执行,至少要保证目录/dev/rdsk/有相应的设备文件。
prtvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0
意思是将本地硬盘的VTOC信息输出到文件/tmp/aaa中,其中aaa就是硬盘/dev/rdsk/c0b0t0d0s0的VTOC文件。
2.2.2 edvtoc
该命令是硬盘VTOC信息的编辑工具,因为每个硬盘在UnixWare7操作系统中都是VTOC驱动程序通过VTOC表进行管理的,所以说edvtoc也是UnixWare7修改硬盘分区的工具。
命令格式如下:
   edvtoc -f vtoc-file raw-device
   edvtoc -p raw-device
   edvtoc -s "stamp" raw-device
我们在这里只讨论格式edvtoc -f vtoc-file raw-device:
1. -f vtoc-file
该参数用vtoc-file文件更新硬盘的VTOC信息。
2. raw-device
该参数是硬盘的设备文件,是/dev/rdsk/目录下的设备文件,不能是/dev/dsk/目录下的设备文件。文件格式是cXbXtXdXs0或者cXbXtXdXp0。
3. 举个例子
edvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0
用/tmp/aaa这个硬盘VTOC信息文件更新硬盘/dev/rdsk/c0b0t0d0s0的信息文件。在更新以后,重新启动系统太能够起作用。
2.2.3 VTOC文件
VTOC的全称Volume Table of Contents,目录卷表。
VTOC管理着fdisk分区表和slice的分区表。
我们在这里不对VTOC进行深入的讨论,只是对它的实际应用进行一些分析。关于VTOC的更多内容请在UnixWare7系统中用man vtoc命令查看。
1. 首先让我们来看一个实际的vtoc文件,这是我们的学习环境本地硬盘的VTOC文件。
             Total disk size is 787 cylinders (6173.4 MB)

                                       Cylinders                Approx
Partition   Status       Type       Start   End   Length    %      MB
====   ======  ===========  =====   ===   ======   ===   ======
    1      Active  UNIX System      0    235     236     30    1851.2
    2              UNIX System    236    786     551     70    4322.2

1 # prtvtoc -f /tmp/aaa /dev/rdsk/c0b0t0d0s0
2 # cat /tmp/aaa
3 #SLICE  TAG     FLAGS   START   SIZE
4 0      0x5      0x201   3791340  8851815 ->;代表整个硬盘
5 1      0x2      0x200   4112640  8401995 ->;Root文件系统
6 2      0x3      0x201   3855600  257040 ->;Swap文件系统
7 3      0x0      0x0     0        0
8 4      0x0      0x0     0        0
9 5      0x0      0x0     0        0
10 6      0x0      0x0     0       0
11 7      0x1      0x201   3791340 34 ->;boot 区
12 8      0xd      0x201   3791374 16031 ->;Alternate sector/track
13 9      0x0      0x0     0       0
14 10      0x9      0x200   3807405 48195 ->;Stand区
15 11      0x0      0x0     0       0
16 12      0x0      0x0     0       0
17 13      0x0      0x0     0       0
18 14      0x0      0x0     0       0
19 15      0xf      0x201   12514635        16065->;卷管理私有区
20 #
21 # df -k
22 filesystem          kbytes   used     avail    capacity  mounted on
23 /dev/root           4200997  3469859  731138   83%       /
24 /dev/stand          24097    5592     18505    24%       /stand
25 /proc               0        0        0         0%       /proc
26 /dev/fd             0        0        0         0%       /dev/fd
27 /processorfs        0        0        0         0%       /system/processor
28 /tmp                10240    32       10208     1%       /tmp
29 /var/tmp            40960    0        40960     0%       /var/tmp
30 /dev/_tcp           0        0        0         0%       /dev/_tcp

2. 我们来看一下环境,第一个分区安装了SCO OpenServer 5.0.5,第二个分区安装了SCO UnixWare7.1.1,而此时我们是在UnixWare7.1.1系统下,也就是说,我们当前的活动的UNIX系统分区与系统fdisk命令显示的不同,显示的内容只能够说明当机器开始引导是先从第一个分区的Openserver 5.0.5进行引导,到了boot提示,转而启动Unixware系统,实际上当前活动的系统是第二个分区。因此我们使用命令prtvtoc时输出的是第二个分区的信息。
3.对上面的vtoc文件各列的含义进行说明:
1)SLICE列就是系统中自动定义的16个slice,编号从0到15,此编号最大到183,16几其以后的编号只能由我们手动编辑VTOC文件,并通过命令edvtoc –f /tmp/aaa /dev/rdsk/c0b0t0d0s0进行更新。
2)TAG
   /* Slice tags */
   #define V_BOOT               0x01    /* Boot slice */
   #define V_ROOT               0x02    /* Root filesystem */
   #define V_SWAP               0x03    /* Swap filesystem */
   #define V_USR                0x04    /* User filesystem */
   #define V_BACKUP      0x05    /* full disk */
   #define V_ALTS               0x06    /* alternate sector space */
   #define V_OTHER              0x07    /* non-unix space */
   #define V_ALTTRK      0x08    /* alternate track space */
   #define V_STAND              0x09    /* Stand slice */
   #define V_VAR                0x0a    /* Var slice */
   #define V_HOME               0x0b    /* Home slice */
   #define V_DUMP               0x0c    /* dump slice */
   #define V_ALTSCTR     0x0d    /* Alternate sector/track */
   #define V_MANAGED1    0x0e    /* Volume management public slice */
   #define V_MANAGED2    0x0f    /* Volume management private slice */

3)FLAGS
   /* Slice permission flags */
   #define V_UNMNT              0x01    /* Unmountable partition */
   #define V_RONLY              0x10    /* Read only */
   #define V_VALID              0x200   /* Partition is valid to use */
另:0x201是原始设备,0x200是文件系统。
4)START
这是slice的开始sector号,该编号是以整个硬盘为起点。一个sector是512字节。
5)SIZE
该slice的以sector计算的长度。
4. 对VTOC文件/tmp/aaa进行讨论
1)如果我们将slice1、2、7、8、15的长度相加和slice0的长度进行比较看一下结果:
8401995(1) + 257040(2) + 34(7) + 16031(8) + 48195(10) + 16065(15) = 8739360
而slice0的长度是8851815(0),与此结果比较相近。当然还有一部分空间没有使用。
2)我们看一下各个slice的开始sector:
通过slice0可以看出,该fdisk分区是从sector 3791340到3791340 + 8851815 = 12643155。
Slice7的分区是从3791340到3791374,依次类推,如图2-1所示。我们看到各个slice的开始sector和结束sector是首位相连的,从图中知道,该硬盘中还有一部分没有使用。我们可以手动增加slice,并用edvtoc命令。详细应用下面介绍。

 
5. 用edvtoc命令增加slice
系统自动增加了s0到sf共16个 slice,如果我们继续增加只能通过编辑vtoc文件。
1)prtvtoc –f /tmp/vtoc /dev/c0b0t0d0s0
这样获得当前硬盘的VTOC信息文件。
2)然后在文件的末尾增加如下16、17两行:
15      0xf      0x201   12514635        16065
16  0x4 0x200  12530700 300
17  0x4 0x200  12531000 400
有一个原则,最后一个slice的结束sector不能超出整个fdisk分区的范围,如果超出,将产生不可预料的严重错误,甚至有导致整个系统瘫痪的可能。
3)edvtoc –f /tmp/aaa /dev/c0b0t0d0s0
通过修改后的vtoc文件/tmp/aaa更新硬盘的VTOC信息。
4)然后重新启动系统,系统将自动给新增加的两个slice创建两个设备文件/dev/[r]dsk/c0b0t0d0s11和/dev/[r]dsk/c0b0t0d0s12。这样我们就可以通过这两个设备文件对slice进行操作了。
2.3 增加硬盘
将硬盘正确的连接到主机系统上,并且连接硬盘的适配器(或者通道或者卡)的驱动程序已经正确安装,则操作系统在启动的时候能够正确的检测到硬盘,并由VTOC驱动程序创建了21个与slice对应的设备文件/dev/[r]dsk/cXbXtXdXp0-4和/dev/[r]dsk/cXbXtXdXs0-f,只有发现系统正确的检测到了硬盘时我们才能够通过命令diskadd增加硬盘,否则无法进行。举个例子,在我们的学习环境中,磁盘阵列柜是通过SCSI Ultra29160卡连接到主机上的,如果在UnixWare7.1.x操作系统中没有正确的安装此SCSI卡的驱动程序,将无法进行增加硬盘,因为系统根本无法在启动时自动检测到该磁盘阵列柜并为其创建设备文件,所以不可能正确的执行命令diskadd。
2.3.1 第一个例子
增加磁盘阵列柜第一个逻辑分区/dev/[r]dsk/c2b0t5d0,这个例子详细列出整个过程,目的是让大家有一个较为详细的了解。
1 # diskadd c2b0t5d0
2 UX:diskadd: INFO: You have invoked the System V disk management (s5dm) diskadd .
3 The purpose of this utility is to set up additional disk drives.
4 This utility can destroy the existing data on the disk.
5 Do you wish to continue?
6 (Type y for yes or n for no followed by ENTER):
注释:
1)第1行是增加硬盘的命令,它是建立在系统启动时检测到该硬盘并正确的创立了/dev/[r]dsk/目录下的设备文件的基础之上的。
2)第2行的提示可以看出,当我们省略了参数-F时,缺省调用s5dm交互界面。
3)第4行有一个该操作可能破坏硬盘上存在数据的提示。
4)第5、6两行询问你是否继续,如果可以回答y,如果不想继续则回答n。

7 y
8 The recommended default partitioning for your disk is:

0. a 100% "UNIX System" partition.

9 To select this, please type "y".  To partition your disk
10 differently, type "n" and the "fdisk" program will let you
11 select other partitions. y

12 Surface analysis of your disk is recommended
13 but not required.
注释:
1)第7行就是我们的回答”y”,是由我们手动输入的。
2)第8到11行提示我们是用缺省的将该逻辑分区100%的划分为UNIX分区还是手动用fdisk自己进行分区,我们在11行回答的是”y”。

14 Do you wish to skip surface analysis? (y/n) y
15 You will now be queried on the setup of your disk.After you
16 have determined which slices will be created, you will be
17 queried to designate the sizes of the various slices.

18 How many slices/filesystems do you want created on the disk (1 - 13)? 2
注释:创建两个slices。
19 Please enter the absolute pathname (e.g., /home3) for
20 slice/filesystem 1 (1 - 32 chars)? /home/s1
注释:输入文件系统的挂接点目录/home/s1。
21 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),
22 type 'na' if no filesystem is needed, or press
23 ; to use the default (vxfs):
注释:使用缺省的文件系统类型vxfs,如果使用其它的文件系统可以手动输入后确认。
24 Specify the block size from the the following list
25 (1024, 2048, 4096, 8192), or press ; to use the first one:
注释:指定slice的块(block)大小,此处缺省。
26 Should /home/s1 be automatically mounted during a reboot?
27 Type "no" to override auto-mount or press ; to enable the option: no
注释:询问是否在系统启动时自动mount该文件系统。
28 Please enter the absolute pathname (e.g., /home3) for
29 slice/filesystem 2 (1 - 32 chars)? /home/s2

30 Enter the filesystem type for this slice (vxfs,ufs,s5,sfs),
31 type 'na' if no filesystem is needed, or press
32 ; to use the default (vxfs):

33 Specify the block size from the the following list
34 (1024, 2048, 4096, 8192), or press ; to use the first one:

35 Should /home/s2 be automatically mounted during a reboot?
36 Type "no" to override auto-mount or press ; to enable the option: no
注释:28-36行定义第二个slice,步骤和内容和第一个slice相同。

37 You will now specify the size in cylinders of each slice.
38 (One cylinder is approximately 2 megabytes of disk space.)
39 There are now 17542 cylinders available on your disk.
40 The filesystem type you have chosen is limited to 541064 cylinders.
41 How many cylinders would you like for /home/s1 (0 - 17542)?
42 Press ; for 0 cylinders: 1000
43 There are now 16542 cylinders available on your disk.
44 The filesystem type you have chosen is limited to 541064 cylinders.
45 How many cylinders would you like for /home/s2 (0 - 16542)?
46 Press ; for 0 cylinders: 1000

47 Notice: The selections you have made will leave 15542 cylinders unused.

48 You have specified the following disk configuration:
49 A /home/s1 filesystem with 1000 cylinders (1938.0 MB)
50 A /home/s2 filesystem with 1000 cylinders (1938.0 MB)

51 Is this allocation acceptable to you (y/n)? y
52 UX:sh (sh): ERROR: disk3: Not found
53 UX:sh (sh): ERROR: disk5: Not found
54 UX:sh (sh): ERROR: disk6: Not found
注释:第37行到54行对上面定义的两个slice分配空间,以cylinder为单位进行,在第38行有提示说一个cylinder大约接近2MB的空间,在41行提示整个逻辑分区的空间是17542个cylinder。第49、50行说明了上面我们分配的两个slice的大小,并在51行询问是否接受以上定义,我们回答”y”。
55 Filesystems will now be created on the needed slices

56 Creating the /home/s1 filesystem on /dev/rdsk/c2b0t5d0s1
57 Allocated approximately 496093 inodes for this file system. Specify a
58 new value or press ; to use the default:
59 Creating the /home/s2 filesystem on /dev/rdsk/c2b0t5d0s2
60 Allocated approximately 496093 inodes for this file system. Specify a
61 new value or press ; to use the default:
62 UX:diskadd: INFO: Diskadd for Disk Drive 2 DONE at Tue Feb 24 13:44:02 CST 2004
63 #
注释:第55到62行创建slice成功,并有说明s1是/dev/rdsk/c2b0t5d0s1,s2是/dev/rdsk/c2b0t5d0s2,这样我们就完成了添加硬盘的工作,并在该逻辑分区上创建了两个子分区。

下面我们用命令prtvtoc将该分区的vtoc表给输出到文件/tmp/aaa,该文件内包含了该分区的子分区(slice)的相关信息。
64 # prtvtoc -f /tmp/aaa /dev/rdsk/c2b0t5d0s0
注释:
1)-f /tmp/aaa
使vtoc表输出到文件/tmp/aaa,该文件可以随意定义。
2)参数/dev/rdsk/c2b0t5d0s0
必须是目录/dev/rdsk,该参数也可以是/dev/rdsk/c2b0t5d0p0。

65 # cat /tmp/aaa
66 #SLICE  TAG     FLAGS   START   SIZE
67 0      0x5     0x201   63      69628104
68 1      0x4     0x200   3969    3969000
69 2      0x4     0x200   3972969 3969000
70 3      0x0     0x0     0       0
71 4      0x0     0x0     0       0
72 5      0x0     0x0     0       0
73 6      0x0     0x0     0       0
74 7      0x1     0x201   63      34
75 8      0xd     0x201   97      3872
76 9      0x0     0x0     0       0
77 10      0x0     0x0     0       0
78 11      0x0     0x0     0       0
79 12      0x0     0x0     0       0
80 13      0x0     0x0     0       0
81 14      0x0     0x0     0       0
82 15      0x0     0x0     0       0

注释:我们可以看到/dev/[r]dsk/c2b0t5d0s1和/dev/[r]dsk/c2b0t5d0s2对应的两个slice,第2和3行。也可以看到该活动UNIX系统分区的大小。关于该表的具体介绍请参考《prtvtoc命令介绍一节》。
83 # mount
84 /home/s1 on /dev/dsk/c2b0t5d0s1 read/write/log/setuid/mincache =closesync/noquot4
85 /home/s2 on /dev/dsk/c2b0t5d0s2 read/write/log/setuid/mincache =closesync/noquot4
86 #
a) Total disk size is 17543 cylinders (33998.1 MB)

Cylinders                Approx
87 Partition  Status     Type       Start   End   Length    %      MB
88 ====== ======  =======   =====   ===   ======   ===   ======
1    Active    UNIX System    0   17542    17543    100    33998.1


89 SELECT ONE OF THE FOLLOWING:

0. Overwrite system master boot code
1. Create a partition
2. Change Active (Boot from) partition
3. Delete a partition
4. Exit (Update disk configuration and exit)
5. Cancel (Exit without updating disk configuration)
90 Enter Selection: 4
这样,我们就成功的将磁盘阵列的第一个逻辑分区增加到系统中,并且给该分区增加了两个slice子分区。
2.3.2 第二个例子
增加磁盘阵列柜第二个逻辑分区/dev/rdsk/c2b0t5d1。准备将该逻辑分区分成2个fdisk分区,并将该逻辑分区的活动fdiskUNIX系统分区(第一个fdisk分区)再分成三个子分区(slice)。
1. 用diskadd –F s5dm c2b0t5d1命令。
2. 在第一个例子的第11行处输入“n” ,进入fdisk程序对该逻辑分区进行分区。
3. 分成两个fdisk分区,整个过程如下所示:
# fdisk /dev/rdsk/c2b0t5d1s0
The recommended default partitioning for your disk is:

  a 100% "UNIX System" partition.

To select this, please type "y".  To partition your disk
differently, type "n" and the "fdisk" program will let you
select other partitions.y

                                      Cylinders                Approx
Partition   Status       Type       Start   End   Length    %      MB
======  ====== ==========   =====   ===   ======   ===   ======
1      Active   UNIX System      0   15299    15300     45    15300.0
2               UNIX System  15300   33998    18699    55    18699.0

4. diskadd调用fdisk将硬盘分区完成以后调用disksetup –I /dev/rdsk/c2b0t5d1s0命令对该硬盘进行子分区(slice)。这个过程与第一个例子类似,我们可以证明划分子分区只是针对了active分区,通过下面的操作可以看出来。
1 You will now specify the size in cylinders of each slice.
2 (One megabyte of disk space is approximately 1 cylinders.)
3 There are now 15299 cylinders available on your disk.
4 The filesystem type you have chosen is limited to 1048576 cylinders.
5 How many cylinders would you like for /home/s21 (0 - 15299)?
第5行中的0-15299说明该UNIX系统分区的空间是15300个cylinder长度,这与用fdisk命令所划分的第1分区(当前活动的UNIX系统分区)的长度完全一样。从而印证了我们关于slice只能对硬盘的当前活动UNIX系统分区继续进行子分区的观点。
2.2.3 第三个例子
这个例子就是一个系统主机的本地IDE硬盘的第二个分区的使用情况。
我们这个例子的环境是一个IDE硬盘被分成两个fdisk分区,其中分区1安装了UnixWare7.1.x操作系统,是当前的活动的UNIX系统分区,容量为3702.4MB,472个cylinder,第二个分区是UNIX系统分区,容量为2470.9MB,315个cylinder。
我们无法象OpenServer一样将第二个分区在进行细分成很多子分区,然后使用它们,只能利用mkfs命令将第二个fdisk分区作为一个整体进行使用,不能够在继续划分子分区。
                                       Cylinders                Approx
Partition   Status       Type       Start   End   Length    %      MB
=====   ====== ===========  =====   ===   ======   ===   ======
    1     Active   UNIX System      0    471     472     60    3702.4
    2             UNIX System    472    786     315     40    2470.9

1. mkfs –F vxfs /dev/rdsk/c0b0t0d0p2 5060475
1)-F vxfs是指明要创建的文件系统。
2)/dev/rdsk/c0b0t0d0p2是第二个分区对应的设备文件。
3)5060475是以512字节进行计算的sector数量。
4)这个命令的作用就是将第二个分区创建成一个vxfs类型的文件系统。
2. mount –F vxfs /dev/dsk/c0b0t0d0p2 /home/p2
这个命令将第二个分区mount到目录/home/p2上,我们可以象一般的文件系统一样进行使用。
2.4 删除硬盘
2.4.1 diskrm命令
diskrm [-F dm_type] [disk_number]
diskrm命令的参数与diskadd完全相同,代表的意思也完全一样,它的作用就是将/etc/vfstab文件中的相应记录删除。
2.4.2 一个例子
我们这个例子是删除我们学习环境的磁盘阵列的第二个逻辑分区/dev/[r]dsk/c2b0t5d1。
我们先来看一下在没有执行命令diskrm前的/etc/vfstab的内容,我们看到第14到16行都是磁盘阵列第二逻辑分区的子分区的信息。
1 # vi /etc/vfstab
2 /dev/root   /dev/rroot  /   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
3 /dev/stand  /dev/rstand /stand  bfs 1   no  -   SYS_RANGE_MAX
4 /proc -   /proc   proc    -   no  -
5 /processorfs -   /system/processor   profs    -   yes  -
6 /dev/fd   -   /dev/fd fdfs    -   no  -
7 /dev/dsk/f0t  /dev/rdsk/f0t   /install    s5  -   no  -
8 /dev/dsk/f1t  /dev/rdsk/f1t   /install    s5  -   no  -
9 /dev/dsk/f0   /dev/rdsk/f0    /install    s5  -   no  -
10 /dev/dsk/f1   /dev/rdsk/f1    /install    s5  -   no  -
11 /tmp    -   /tmp    memfs   -   yes swapmax=10485760,rootmode=1777
12 /var/tmp    -   /var/tmp    memfs   -   yes swapmax=41943040,rootmode=1777
13 /dev/_tcp   -   /dev/_tcp   specfs  -   yes dev=tcp
14 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1    /home/s21   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
15 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2    /home/s22   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
16 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3    /home/s23   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
17 /dev/dsk/c2b0t5d2s1 /dev/rdsk/c2b0t5d2s1    /home/31    vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
18 /dev/dsk/c2b0t5d2s2 /dev/rdsk/c2b0t5d2s2    /home/32    vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
19 /dev/root   /dev/rroot  /   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
20 /dev/stand  /dev/rstand /stand  bfs 1   no  -   SYS_RANGE_MAX
21 /proc -   /proc   proc    -   no  -
22 /processorfs -   /system/processor   profs    -   yes  -
23 /dev/fd   -   /dev/fd fdfs    -   no  -
24 /dev/dsk/f0t  /dev/rdsk/f0t   /install    s5  -   no  -
25 /dev/dsk/f1t  /dev/rdsk/f1t   /install    s5  -   no  -
26 /dev/dsk/f0   /dev/rdsk/f0    /install    s5  -   no  -
27 /dev/dsk/f1   /dev/rdsk/f1    /install    s5  -   no  -
28 /tmp    -   /tmp    memfs   -   yes swapmax=10485760,rootmode=1777
29 /var/tmp    -   /var/tmp    memfs   -   yes swapmax=41943040,rootmode=1777
30 /dev/_tcp   -   /dev/_tcp   specfs  -   yes dev=tcp
31 /dev/dsk/c2b0t5d1s1 /dev/rdsk/c2b0t5d1s1    /home/s21   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
32 /dev/dsk/c2b0t5d1s2 /dev/rdsk/c2b0t5d1s2    /home/s22   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
33 /dev/dsk/c2b0t5d1s3 /dev/rdsk/c2b0t5d1s3    /home/s23   vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
34 /dev/dsk/c2b0t5d2s1 /dev/rdsk/c2b0t5d2s1    /home/31    vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
35 /dev/dsk/c2b0t5d2s2 /dev/rdsk/c2b0t5d2s2    /home/32    vxfs    1   no  mincache=closesync  SYS_RANGE_MAX
36 @
37 "/etc/vfstab" 21 lines, 1483 characters

我们执行命令diskrm c2b0t5d1后,在/etc/vfsvtab文件中看不到上面14到16行所显示的内容,说明删除成功。在执行该命令的过程中显示内容如下所示:
1 # diskrm c2b0t5d1
2 UX:diskrm: INFO: You have invoked the System V disk management (s5dm) diskrm ut.
3 The purpose of this utility is to remove entries from the /etc/vfstab file.
4 Do you wish to continue?
5 (Type y for yes or n for no followed by ENTER):
6 y
7 UX:diskrm: INFO:
8 Do you want to delete the following entry?

9 /dev/dsk/c2b0t5d1s1     /dev/rdsk/c2b0t5d1s1    /home/s21       vxfs    1      X

10 (Type y for yes or n for no and press ;):
11 y
12 UX:diskrm: INFO:
13 Do you want to delete the following entry?

14 /dev/dsk/c2b0t5d1s2     /dev/rdsk/c2b0t5d1s2    /home/s22       vxfs    1      X

15 (Type y for yes or n for no and press ;):
16 y
17 UX:diskrm: INFO:
18 Do you want to delete the following entry?

19 /dev/dsk/c2b0t5d1s3     /dev/rdsk/c2b0t5d1s3    /home/s23       vxfs    1      X

20 (Type y for yes or n for no and press ;):
21 y
22 UX:diskrm: INFO: saving /etc/vfstab to /etc/Ovfstab
23 UX:diskrm: INFO: creating a new /etc/vfstab
24 UX:diskrm: INFO: Diskrm for disk c2b0t5d1 DONE at Thu Feb 26 14:07:46 CST 2004
25 #
附录
参考资料:
1. www,chinaunix.net论坛上的相关文章。
2. UnixWare7.1.1和7.1.3上的联机手册,包括:prtvtoc、edvtoc、vtoc、fdisk、disksetup、diskadd、diskrm等。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21634752/viewspace-715541/,如需转载,请注明出处,否则将追究法律责任。

上一篇: exp parfile 到处表
请登录后发表评论 登录
全部评论

注册时间:2009-05-12

  • 博文量
    295
  • 访问量
    329671