分类:
2011-03-28 09:16:19
UnixWare7.1.x操作系统下的硬盘管理
作者:whan
UnixWare7.1.x对硬盘的管理分为两个步骤,或者说是两个层次。一个就是用众所周知的fdisk命令划分的硬盘分区,应该说大部分操作系统都使用这一工具进行硬盘的分区划分和管理,为了与另一个管理方式“slice”相区别,我们用英文表示为”partition”,此硬盘分区不能在UnixWare7.1.x操作系统下直接进行操作,只能通过UnixWare7.1.x所特有的slice进行映射或者重新划分后才能够进行操作;另一个就是”slice”,它是UnixWare7.1.x所特有的管理硬盘的工具,并且UnixWare只有通过slice对硬盘进行访问。
1.一个开始Sector;
2. 该分区的长度,用Sector计算的;
3. 该分区操作系统的类型,如UNIX, DOS, 或者 Extended DOS等等;
4. 如果是可引导分区必须具有Active标志;
5. 每个硬盘最多可以划分4个Partition;
6. 如果硬盘要被UnixWare操作系统使用则必须至少有一个分区(Partition);
7. UnixWare7.1.x操作系统利用命令fdisk进行划分。
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、学习环境
首先让我们来看一个环境,主机的硬盘总容量是6173.4 MB,分了两个分区(P),第一个分区容量为1851.2MB,是当前的活动的UNIX系统分区,安装了SCO OpenServer
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卡外挂了一个磁盘阵列柜,阵列柜有三个
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(
3、分析
我们来看一下目录/dev/rdsk/下有那些内容:
# pwd
/dev/rdsk
# lf
c0b0t0d0p
c0b0t0d0p
c0b0t0d0p
c0b0t0d0p
c0b0t0d0p
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0s
c0b0t0d0sa c2b0t5d1p
c0b0t0d0sb c2b0t5d1p
c0b0t0d0sc c2b0t5d1p
c0b0t0d0sd c2b0t5d1p
c0b0t0d0se c2b0t5d1p
c0b0t0d0sf c2b0t5d1s
c2b0t5d0p
c2b0t5d0p
c2b0t5d0p
c2b0t5d0p
c2b0t5d0p
c2b0t5d0s
表1-3
在表1-3中具有/dev/[r]dsk/cCbBtTdDsS或者/dev/[r]dsk/cCbBtTdDpP格式的设备文件名称都代表了系统中的硬盘,可以归纳如下4行。
表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重新进行分析:
2 0:0,7,0: HBA : (ide,1) Generic ESDI/IDE/ATA 3 0,0,0: DISK : Generic IDE/ESDI 1.00 适配器号,对应C 逻辑单元号,对应D 目标控制器标号,对应T HBA总线号,对应B
上图中标出了表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。
Partition1 |
Partition2 (ACTIVE) |
Partition3 |
Partition4 |
cXbXtXdXp1 (sb9) |
cXbXtXdXp2 (sba) |
cXbXtXdXp3 (sbb) |
cXbXtXdXp4 (sbc) |
s1 |
cXbXtXdXs0 (s0,代表整个Partition 2) |
cXbXtXdXp0(sb8) (代表整个硬盘) |
s2 |
s3 |
s4 |
… … |
sb6 |
sb7 |
图1-1 |