一、基本的磁盘结构的介绍
磁盘设备有物理和逻辑成分.物理成分包括磁盘浅盘和读写磁头.逻辑成分包括磁盘片,柱面,磁轨和扇区.
1.物理磁盘结构
磁盘的物理结构由一系列平面的,在轴上有一堆有磁力的盘片组成的.当读写头定位机械臂移动,盘片则在旋转.读写数据写入到磁盘上.
下面描述了磁盘的物理组成:
l 磁盘存储区域是由一个或多个磁片组成.
l 这些磁片是旋转的.
l 磁盘读写定位机械臂移动磁盘头来进行定位.
l 读写头读写数据到磁盘表面的磁介质上.
2. 在磁盘磁片上的数据组织
一个磁盘磁片分为扇区,磁道,柱面.
扇区:磁片上的最小单元地址.一个扇区有512byte的数据,也就是一个磁盘块.
磁道:一系列扇区定位在首尾相连的圆形轨道上.
柱面:一堆磁道.
许多扇区的每个磁道在磁片上随着磁道的变化而变化.最外面的磁道最大,可以支撑比里面磁道更多的扇区.
因为磁盘读写定位机械臂继续移动磁盘头来定位,最有效的搜索会发生,当扇区被读或被写到指定的柱面上.
3. 磁盘片
磁盘片就是将一个磁盘在逻辑上被分为出来的分区.磁盘片被柱面分组,他们一般被功能上组织数据.
例如,一个磁盘片可以存储重要的系统文件和程序,当另一个磁片在同一磁盘上可以存储用户创建的文件.
在Solaris OS下,一个磁盘可以分成8个区,他们是从Slice0~Slice 7
一般来说,Slice2代表了整个磁盘, Slice2维护了关于整个磁盘的重要的数据,比如目前磁盘的大小,可用柱面存储文件和目录的总的数字.
下面显示磁盘片和他们所有的不同文件系统
Slice |
Name |
Function |
0 |
/ |
根目录的系统文件 |
1 |
swap |
交换区域 |
2 |
|
整个磁盘 |
5 |
/opt |
可选的软件 |
6 |
/usr |
系统可执行的程序 |
7 |
/export/home |
用户文件和目录 |
(1)磁片命名规则
磁片的全名由8个字符组成.字符包括控制号,目标号,磁盘号和磁片号.
Controller number: 识别主机总线适配器HBA(host bus adapter),它控制系统和磁盘单元之间的通信.HBA关心接收和发送到设备上的命令和数据.控制号按顺序排列,如c0,c1,c2…
Target number: 目标号,如t0,t1,t2和t3,符合唯一硬件地址,它分配给每一个磁盘,磁带,或CD-ROM.一些外部磁盘驱动器有一个地址开关定位于后面板.一些内部磁盘有地址插脚,它的跳号作为磁盘的目标号.
Disk number:磁盘号也作为合理的单元数LUN(logical unit number).这个数字在目标位置上反应了磁盘的数字.
Slice number:磁片号的范围从0到7.
嵌入SCSI配置和集成电路设备IDE配置(integrated device electronics)表现磁盘片的命名规则,它是通过两个不同的结构组成.磁盘号通常设为d0为嵌入SCSI磁盘.
磁盘的命名规则一般为:c#t#d#s#的方式.
二、Solaris OS设备命名规则的介绍
在Solaris OS中,所有的设备分成三种不同类型的命名:逻辑设备名、物理设备名、实名.
1. 逻辑设备名
逻辑设备名是来源于物理设备名的一个连接,它连接于/device目录.当你在命令行用命令进入时,逻辑设备名主要是涉及到一些设备.所有的逻辑设备名都在/dev目录下.逻辑设备名包含控制号,目标号,磁盘号和磁片号.
每个磁盘设备既可以用/dev/dsk,又可以用/dev/rdsk目录进入块设备和字符磁盘设备.显示/dev/dsk目录,执行命令:
# ls /dev/dsk
c0t0d0s0 c0t0d0s4 c0t2d0s0 c0t2d0s4 c1t1d0s0 c1t1d0s4
c0t0d0s1 c0t0d0s5 c0t2d0s1 c0t2d0s5 c1t1d0s1 c1t1d0s5
c0t0d0s2 c0t0d0s6 c0t2d0s2 c0t2d0s6 c1t1d0s2 c1t1d0s6
c0t0d0s3 c0t0d0s7 c0t2d0s3 c0t2d0s7 c1t1d0s3 c1t1d0s7
2. 物理设备名
物理设备名是系统中唯一用来标识硬盘设备的物理位置.设备名在/devices目录下.
物理设备名由硬盘信息,一系统的接点名组成,指向设备的路径.显示物理设备名的执行命令:
# ls -l /dev/dsk/c0t0d0s0
lrwxrwxrwx 1 root root 46 Sep 24 10:59 /dev/dsk/c0t0d0s0 ->
../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a
FC-AL磁盘与其他的有点不同,因为他们显示的是WWN(World Wide Name).下面的以SUN企业的3500服务器为例.
# ls -l /dev/rdsk/c0t0d0s0
lrwxrwxrwx 1 root root 78 Jun 16 2000 /dev/rdsk/c0t0d0s0 ->
../../devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020375b9ab6,0:a,raw
3. 实例名
实例名是由内核为每个设备分配的缩写名.
实例名是物理设备名的简短的名字.下面显示两个例子:
sdn: sd是磁盘名,n是数字.如sd0表示第一个SCSI磁盘设备.
dadn: dad(direct access device)是磁盘名,n是数字.如dad0表示第一个IDE磁盘设备.
三、列出系统的设备
在Solaris OS中,有一些方法列出系统的设备,包括:
l 使用/etc/path_to_inst文件
l 使用prtconf命令
l 使用format命令
1. /etc/path_to_inst文件
对每个设备来说, 系统在/etc/path_to_inst文件中记录它的物理名和实例名. 这些名字被内核用来标识每个可能的设备.这个文件只在启动时可读.
/etc/path_to_inst文件是由内核来维护的,一般没有必要,也不建议系统管理员去改变这个文件.
下面授例子显示/etc/path_to_inst文件的条目.括号内的文本指定条目中的设备引用的设备,这在实际的文件中是不会显示的.
#cat /etc/path_to_inst
"/pci@1f,0" 0 "pcipsy" (PCI bus controller, “psycho” chip)
"/pci@1f,0/pci@1,1" 0 "simba" (PCI bus B)
"/pci@1f,0/pci@1,1/ebus@1" 0 "ebus" (extended bus)
"/pci@1f,0/pci@1,1/ebus@1/power@14,724000" 0 "power" (power management bus)
"/pci@1f,0/pci@1,1/ebus@1/fdthree@14,3023f0" 0 "fd" (floppy disk)
"/pci@1f,0/pci@1,1/ebus@1/SUNW,CS4231@14,200000" 0 "audiocs" (crystal semiconductor)
"/pci@1f,0/pci@1,1/network@1,1" 0 "hme" (Fast Ethernet)
上例中显示的设备实例号,是被记录到这个文件是的设备实例名的前半截.
Note:不同的系统有不同的物理设备路径.上例中是一个PCI总线架构的机器的设备.
下面是一个不同的架构机器的/etc/path_to_inst文件. 这是一台在SUN系统总线SBus(System bus).
#cat /etc/path_to_inst
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@3,0” 3 “sd”
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@2,0” 2 “sd”
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@1,0” 1 “sd”
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0” 0 “sd”
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@6,0” 6 “sd”
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@5,0” 5 “sd”
“/sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@4,0” 4 “sd”
2. prtconf命令
使用prtconf命令显示系统的配置信息,包括安装的内存的总数,系统外设的配置,这些形成一个设备树.
prtconf命令开出所有可能设备的实例名,不论设备有没有连接到系统中.要列出只连接到系统中的设备的列表.执行命令:
# prtconf | grep -v not
System Configuration: Sun Microsystems sun4u
Memory size: 256 Megabytes
System Peripherals (Software Nodes):
SUNW,Ultra-5_10
scsi_vhci, instance #0
options, instance #0
pci, instance #0
pci, instance #0
ebus, instance #0
power, instance #0
su, instance #0
su, instance #1
fdthree, instance #0
network, instance #0
SUNW,m64B, instance #0
ide, instance #0
sd, instance #3
dad, instance #1
pci, instance #1
scsi, instance #0
pseudo, instance #0
#
Note: grep -v命令用于从输出中忽略包含单词“not”的行,例如driver not attached。
3. format命令
使用format命令列出所有当前可用的硬盘的物理设备名与逻辑设备名.执行如下命令查看当前可用的硬盘的物理设备与逻辑设备名:
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <ST38410A cyl 16706 alt 2 hd 16 sec 63>
/pci@1f,0/pci@1,1/ide@3/dad@0,0
1. c1t3d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,0/pci@1/scsi@1/sd@3,0
Specify disk (enter its number):^D
#
Note:按Ctrl+D不做任何选择退出format命令.
四、重新配置设备
如果调用重新配置启动或运行devfsadm命令,有两种方式系统会去识别新增加的外围设备.
1. 执行重新配置启动
例如,你可以使用启动程序添加新的设备到新产生/etc/path_to_inst文件与到/dev和/devices目录中.
下面的步骤重新配置系统去识别新的磁盘.
1) 创建/reconfigure文件.这个文件让系统在加电或启动时检测新安装的设备的存在.
# touch /reconfigure
#
2) 使用init 5命令关闭系统.这个命令安全地关闭系统电源,虑及到增加的设备或移除的设备.(如果设备已经连接到你的系统,你可以使用init 0命令关闭到ok提示符下.)
# init 5
3) 安装外围设置.确定在系统上要添加的设备地址没有和其他设备的地址相冲突.
4) 打开电源开启所有的外部设备.
5)使用prtconf命令或者format命令检查是否被添加到系统中.
在磁盘经过系统难后,开始处理定义的磁盘片.
Note: 如果/reconfigure文件在系统关闭前没有被创建,你可以使用PROM级命令来执行一个手工的重新配置启动:boot –r.
2. 使用devfsadm命令
许多系统7*24小时的运行重要的客户应用软件.在这些系统中,它不可能执行重新配置启动.在这种情况下,你可以使用devfsadm命令.
devfsadm命令执行设备重新配置程序,并且在重新配置事件中更新/etc/path_to_inst文件和/dev及/devices目录.
/devfsadm命令尝试装载系统中所有的驱动程序,且将之与可能的设备实例匹配.然后它在/device目录中创建设备文件,在/dev目录中创建逻辑连接.另外devfsadm命令也维护/etc/path_to_inst文件.
# devfsadm
为了限制devfsadm命令到只搜索特定类的设备文件,使用-c 选项.
devfsadm –c device_class
device_calss的值包括disk, tape, port, audio, and pseudo. 例如,要限制devfsadm命令到disk设备类型,执行命令:
# devfsadm –c disk
要指定多个设备类型,可以多次使用-c选项.如,指定disk, tape和audio设备类型,执行命令:
# devfsadm –c disk –c tape –c audio
要限制devfsadm命令只配置与某个已知的设备驱动程序相关的设备,使用-i选项.
devfsadm –i driver_name
下面的例子使用-i选项.
l 为配置只由dad驱动支持的硬盘.执行命令:
#devfsadm –i dad
l 为配置只由sd驱动支持,执行命令:
#devfsadm –i sd
l 为配置只由st驱动的支持,执行命令:
#devfsadm –i st
l 如果打印改变的设备树,执行命令:
#devfsadm –v
l 要执行不再被引用的符号链接清除,使用命令:
#devfsadm -C
五、硬盘分区
在Solaris OS中,format工具是一个重要的系统管理工具,它用于对使用硬盘前的准备操作.
虽然format工具也执行各种磁盘管理动作,但它主要的功能是分区
Note:在安装Solaris OS之前,不需要对硬盘进行分区.
1. 介绍磁盘分区的基本原理
要把磁盘分成片:
1) 标识正确的磁盘.
2) 规划磁盘分片布局
3) 使用format工具把磁盘分区.
4) 把磁盘新的分片标上卷标.
只有超级用户有权限使用format工具.如果是一般用户运行format工具,会出现下面的错误信息:
$ /usr/sbin/format
Searching for disk...done
No permission (or no disk found)!
2. 认识磁盘空间及其内部条件
磁盘分片以柱面的偏移量与大小来定义.偏移量是距离柱面0的距离.
3. 浪费的磁盘空间
当一个勤务多个柱面没有被分配给磁盘分片时,就会产生浪费的磁盘空间.
浪费的磁盘空间产生于分区过程中,当一个或多个柱面没有被分配磁盘分片时.这可能是由于无意或是偶然造成的.如果有未分配的分片,浪费的空间可以后来指定给新的分片.
4. 认识磁盘分片交错
当一个或多个磁盘分片被分配给一个以上的磁盘分片时,磁盘分片交错就会出现.
这种情况出现在当一个磁盘分片的大小增长了,而下一个磁盘分片的起始柱面号没有校正的情况下.只有format工具的modify命令会警告你有磁盘分片交错.
partition> modify
Select partitioning base:
0. Current partition table (unnamed)
1. All Free Hog
Choose base (enter number) [0]? 0
Warning: Overlapping partition (1) in table.
Warning: Fix, or select a different partition table.
警告:不要改变当前正在使用的磁盘分片的大小.当已有分息的磁盘被重新分区与重新标记卷标以后,磁盘上的数据会丢失且不可访问.在分区前,把磁盘上已有的数据拷贝到备份介质上,然后在磁盘被重新标记卷标并安装了新的文件系统后,把数据恢复到磁盘上来.
Note:如果两个分区出现了交错,当数据保存到其中一个分区时,数据被在相同磁盘柱面上的位于磁道上的另一个分区所覆盖.
5. 磁盘分区表的介绍
作为root用户,使用format工具选择一个磁盘去分区时,磁盘的分区表的一份拷贝被从磁盘的卷标中读到内存中,并作为当前磁盘分区表显示.
format工具还使用一个工作文件称作/etc/format.dat, format工具运行时会读取该文件.
/etc/format.dat文件的内容是可用的磁盘类型与一个预定义分区的集合,使用这些预定义分区表,就可以很快的对磁盘进行分区.
1) 磁盘卷标的介绍
磁盘卷标是一个保留区域,它存储了关于磁盘的控制器,几何学和分片的信息.用于描述磁盘卷标的另一个术语是内容卷表(VTOC). 磁盘的卷标或VTOC被存储在磁盘的第一个扇区中.
标记一个磁盘就是写分片信息到磁盘上,如果你不能在定义分片后标记磁盘,分片信息就会丢失.
磁盘卷标的一个重要部分是分区表,它识别磁盘的分片,分片以柱面为边界,及分片的总的大小.
Note:术语磁盘分片与磁盘分区是可互换的.
6. 使用format命令
format工具中的命令被分为两个层次.
当你在命令行输入format,第一层的命令出现,这个命令集可以选择磁盘,选择分区,保存新的磁盘和定义的分区,及写入标签到磁盘上.最高层的命令是format>提示符所表示.
当在format>提示符下输入partition时,第二层的命令出现.这个命令集可以家底各分片的特征,打印已有的分区表,写分区位图与卷标到硬盘.其提示符是partition>.
磁盘分区术语与使用描述
术语 |
描述 |
Part |
分片即分区号,有效值得0-7. |
Tag |
分片使用的指示值. 0 = unassigned 1 = boot 2 = boot 3 = swap 4 = usr 5 = backup 6 = stand 8 = home 卷标管理组标识: 14 = public 15 = private |
Flag |
00 wm = 磁盘分片可写,可挂载. 01 wu = 磁盘分片可写,但不可挂载.这是用于交换区域的分片为默认状态. 10 rm = 磁盘分片只读,可挂载. 11 ru = 磁盘分片只读,但不可挂载. |
Cylinders |
硬盘分片的起始柱面号与终止柱面号 |
Size |
分片大小:MB, GB, b(blocks), c(柱面). |
Blocks |
分片中柱面的总数与扇区的总数. |
7. 磁盘分区
警告:不要改变当前正在使用的磁盘分片的大小.
下面的步骤演示如何分区磁盘分片:
1) 以root身份,在命令行输入format,回车.
#format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <ST38410A cyl 16706 alt 2 hd 16 sec 63>
/pci@1f,0/pci@1,1/ide@3/dad@0,0
1. c1t3d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
/pci@1f,0/pci@1/scsi@1/sd@3,0
Specify disk (enter its number):
format工具搜索所有安装并加电的硬盘.对于找到的每个硬盘,format工具都会显示其逻辑设备名,SUN的产品代号,物理参数,与物理设备名.
2) 选择第二块硬盘,只要输入位于硬盘的逻辑设备名的左边的数字序号即可.对于前面的显示,选择1.然后format工具会出现主菜单.
Specify disk (enter its number): 1
selecting c1t3d0
[disk formatted]
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
scsi - independent SCSI mode selects
cache - enable, disable or query SCSI disk cache
volname - set 8-character volume name
!<cmd> - execute <cmd>, then return
quit
format>
用来查看,改变,提交硬盘分区的选项包括:
partition 显示分区菜单
label 将当前的分区定义写至硬盘卷标中
verify 读并显示硬盘卷标
quit 退出format工具
3) 在format提示符下输入partition. partition分区菜单出现:
format> partition
PARTITION MENU:
0 - change ‘0’ partition
1 - change ‘1’ partition
2 - change ‘2’ partition
3 - change ‘3’ partition
4 - change ‘4’ partition
5 - change ‘5’ partition
6 - change ‘6’ partition
7 - change ‘7’ partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
!<cmd> - execute <cmd>, then return
quit
分区菜单可以使你执行下面的功能:
0-7 指定8个分片的偏移量及大小
select 从/etc/format.dat文件中选择预定义的分区表
modify 更改当前内存中的分区表
name 提供了指定在/etc/format.dat文件中的分区表的方法
print 显示内存中当前分区表
label 写当前的分区表到硬盘卷标中
!<cmd> 不退出format执行shell中的cmd命令,如要执行ls, 输入!ls即可.
4) 在partition提示符下输入print显示当format启动时读入RAM中的磁盘卷标.
partition> print
Current partition table (original):
Total disk cylinders available: 4924 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup ru 0 - 4923 8.43GB (4924/0/0) 17682084
3 unassigned wu 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
分区表的名字在输出的表的第一行的括号中显示.
Part 磁盘分片号
Tag 预定义的,可选标签
Flag 预定义的,可选标记
Cylinders 分片的起始与终止柱面号
Size 分片大小,单位可以是块(b),柱面(c),兆字节(MB), G字节(GB)
Blocks 各分区柱面总数与扇区总数
5) 输入0,选择分片0.
partition> 0
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
6) 当提示ID标签时, 输入问号(?), 按回车列出可用的选择.可以输入新的标签名改变标签.
Enter partition id tag[unassigned]: ?
Expecting one of the following: (abbreviations ok):
unassigned boot root swap
usr backup stand var
home alternates reserved
Enter partition id tag[unassigned]:
7) 输入标签alternates, 按回车键.
Enter partition id tag[unassigned]: alternates
8) 当提示输入权限标记时,输入问号(?),按回车查看可用选项.输入新的标签名可更改标签.
Enter partition permission flags[wm]: ?
Expecting one of the following: (abbreviations ok):
wm - read-write, mountable
wu - read-write, unmountable
rm - read-only, mountable
ru - read-only, unmountable
Enter partition permission flags[wm]:
9) 按回车接受默认标签.即上面的wm.
Enter partition permission flags[wm]: <return>
10) 按回车接受起始柱面号为0.
Enter new starting cyl[0]: <return>
11) 输入分片0的大小为400mb.
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 980mb
12) 输入print, 按回车,显示分区表.
partition> print
Current partition table (unnamed):
Total disk cylinders available: 1965 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 alternates wm 0 - 558 980.16MB (559/0/0) 200736
1 unassigned wm 0 0 (0/0/0) 0
2 backup ru 0 - 4923 8.43GB (4924/0/0) 17682084
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
当前的分区表显示了对分片0的更改.
现在调整分片1的起始柱面.
13) 输入1,选择分片1.
partition> 1
Part Tag Flag Cylinders Size Blocks
1 unassigned wm 0 0 (0/0/0) 0
14) 输入标签swap,按回车.
Enter partition id tag[unassigned]: swap
15) 在权限标签选项中输入wu, 按回车.
Enter partition permission flags[wm]: wu
16) 输入分片1新的起始柱面号.
Enter new starting cyl[0]: 559
17) 输入分片1新的分区大小.
Enter partition size[0b, 0c, 603e, 0.00mb, 0.00gb]: 512mb
18) 输入print, 按回车.
partition> print
Current partition table (unnamed):
Total disk cylinders available: 1965 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 alternates wm 0 - 558 980.16MB (559/0/0) 2007369
1 swap wu 559 - 851 513.75MB (293/0/0) 1052163
2 backup ru 0 - 4923 8.43GB (4924/0/0) 17682084
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
当前分区表显示了对分片1的更改.
分片1的起始柱面号是分片0的结束柱面号加1.
现在调整分片7的起始柱面号.
19) 输入7,选择分片7.
partition> 7
Part Tag Flag Cylinders Size Blocks
7 unassigned wm 0 0 (0/0/0) 0
20) 输入标签home,按回车
Enter partition id tag[unassigned]: home
21) 按回车接受默认的标签wm.
Enter partition permission flags[wm]: <return>
22) 输入分片7的新的起始柱面号.
Enter new starting cyl[0]: 694
23) 输入分片7的分片号,这里输入美元$符.
Enter partition size[0b, 0c, 694e, 0.00mb, 0.00gb]: $
Note:输入一个美元($)符的值是最后分区的大小是在这磁盘分片上自动分配余下空间.
24) 输入print显示当前的分区表
partition> print
Current partition table (unnamed):
Total disk cylinders available: 1965 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 alternates wm 0 - 558 980.16MB (559/0/0) 2007369
1 swap wu 559 - 851 513.75MB (293/0/0) 1052163
2 backup ru 0 - 4923 8.43GB (4924/0/0) 17682084
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 home wm 852 - 4923 6.97GB (4072/0/0) 14622552
将分片0,1,和7的blocks栏中的柱面数加起来.其结果应该等于分片2中所含的柱面总数.
25) 在检查分区表确认无误后,输入label将卷标写入硬盘.
partition> label
Ready to label disk, continue? y
partition>
六、管理磁盘卷标
Solaris OS中每个硬盘都有卷标,用来存储关于磁盘控制器,几何特征及分片的信息.
1. 查个把磁盘VTOC
可以使用两个方法查看磁盘的卷标或VTOC:
l 使用format工具的verify命令
l 在命令行上输入prtvtoc命令
1) 使用verify命令读取磁盘的VTOC
verify命令可以在format工具内查看磁盘的VTOC.读取磁盘的VTOC,执行下面的步骤:
1. 在format提示符下,输入verify命令,按回车
format> verify
Primary label contents:
Volume name = < >
ascii name = <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
pcyl = 4926
ncyl = 4924
acyl = 2
nhead = 27
nsect = 133
Part Tag Flag Cylinders Size Blocks
0 alternates wm 0 - 558 980.16MB (559/0/0) 2007369
1 swap wu 559 - 851 513.75MB (293/0/0) 1052163
2 backup ru 0 - 4923 8.43GB (4924/0/0) 17682084
3 unassigned wu 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wu 0 0 (0/0/0) 0
7 home wm 852 - 4923 6.97GB (4072/0/0) 14622552
2. 输入quit或q,按回车退出format菜单
2) 使用prtvtoc命令读取磁盘的VTOC
prtvtoc命令可在命令行查看磁盘的VTOC.从命令行中查看磁盘的VTOC,输入以下命令:
# prtvtoc /dev/dsk/c1t3d0s0
* /dev/dsk/c1t3d0s0 partition map
*
* Dimensions:
* 512 bytes/sector
* 133 sectors/track
* 27 tracks/cylinder
* 3591 sectors/cylinder
* 4926 cylinders
* 4924 accessible cylinders
*
* Flags:
* 1: unmountable
* 10: read-only
*
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 9 00 0 2007369 2007368
1 3 01 2007369 1052163 3059531
2 5 11 0 17682084 17682083
7 8 00 3059532 14622552 17682083
磁盘标签信息包括以下领域:
Dimensions 描述磁盘的逻辑空间
Flags 描述列在分区表中的标志信息
Partition 分区号.
Tag 标识分区如何使用.
Flags 00标签是读/写,挂接; 01是读/写,不挂接; 10是只读.
First Sector 定义分片的起始扇区.
Sector Count 定义分片中的扇区计数
Last Sector 定义分片中的最后一个扇区.
Mount Directory 如果这域是空,分片当前未挂接,且在/etc/vfstab文件中没有关于该分片的条目.
2. 重标记磁盘
使用prtvtoc命令将磁盘的VTOC存储到文件中.以后就可以使用fmthard命令来重标记硬盘,如果出现下列情况:
l 磁盘上的VTOC已经被损坏.
l 无意中在磁盘上修改了分区信息,却没有在/etc/format.dat文件保存备份的卷标.
保存磁盘的VTOC到文件上,执行命令:
# prtvtoc /dev/dsk/c1t3d0s0 > /var/tmp/c1t3d0.vtoc
1) fmthard命令
重标记磁盘,可将prtvtoc命令的输出重定向到另一个磁盘上的文件中,并使用该文件作为fmthard命令的参数.
fmthard -s datafile /dev/rdsk/c#t#d#s2
警告: fmthard命令不能写磁盘卷标到未标记的磁盘上.使用format工具标记磁盘.
如果需要重标记磁盘,而且有以前保存的磁盘的VTOC文件记录,可以使用下面的选项:
l 运行fomrat,选择磁盘,并使用默认的分区表标记它.
l 使用fmthard命令写入想要的卷标信息,及以前存放在datafile中的VTOC备份.
# fmthard -s /var/tmp/c1t3d0.vtoc /dev/rdsk/c1t3d0s2
l 使用fmthard命令初始化磁盘的VTOC
# fmthard -s /dev/null /dev/rdsk/c1t3d0s2