北京人在SUN北京
Disk label in Solaris
在SUN工作的头一年,我做了很多关于disk label的bug。可能是由于我的名字被列在了很多和label相关的bug的RE(resposible engineer)里,经常我能接到一些工程师或者客户支持的同事打电话来询问有关一些label的问题,所以我决定把我知道的一些label相关的基础知识blog在这里。这样,也许下回电话那端的你,可以和我讨论如何改进solaris对label的支持了。Disk Lable 总是在磁盘的开头,记录了磁盘信息和数据存储格式,包括Label的类型,磁盘的大小,磁盘分区信息,VTOC Label中还有磁盘的geometry信息。下面我们就Solaris支持的两种Label, VTOC和EFI,在SPARC和x86平台,进行分别介绍。
1. VTOC Label 在SPARC平台
VTOC label disk 在SPARC平台上的layout
其中S代表slice,也就是我们说的分区。VTOC Label在SPARC上支持8个分区,所以也叫VTOC8。其中S2代表全盘,它的Tag永远是backup。在/dev/rdsk/目录下,我们可以看到这些设备文件,c*t*d*s0~c*t*d*s7。vtoc的分区表就放在磁盘的第一个sector里,一共512个字节。
2. VTOC Label 在X86平台
VTOC label disk 在X86平台上的layout
和SPARC平台不同,X86平台上有了FDISK分区的概念,FDISK分区表在磁盘的第一个扇区里(MBR)。Solaris支持4个逻辑分区,不支持扩展分区。Solaris可以安装在任意一个逻辑分区里,也可以在不同的逻辑分区里安装不同版本的solaris,但是只能有一个分区里的Solaris是active的。在/dev/rdsk/里我们可以看到c*t*d*p0~c*t*d*p4. 其中p0表示全盘,p1到p4分别表示4个分区。图中的例子里,活动solairs分区被安装在第一个分区里。
活动solaris分区的的disk label在该solaris分区的第一个扇区,512个字节。VTOC Lable在x86上支持16个分区,所以也叫VTOC16。S2代表全Solaris FDISK分区,tag是backup。在/dev/rdsk目录下,我们可以看到这些设备文件,c*t*d*s0~c*t*d*s15。不过,用format工具我们只能看到10个分区,s0到s9。
3. EFI Label 在SPARC和X86平台
可扩展固件接口(英文名Extensible Firmware Interface 或EFI)是由英特尔公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案。在EFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入,新结构中,磁盘的分区数不再受限制(在MBR结构下,只能存在4个主分区),并且分区类型将由GUID来表示。
无论是SPARC还是X86,EFI Label都有着相同的layout。所以,拥有EFI Label的磁盘可以在SPARC和X86平台上自由的切换,目前VTOC Label还做不到这一点。
LBA0是PMBR,这个在EFI Label里基本没什么用,只是一个MBR的遗留产物,不过它里边标识了该磁盘使用EFI Label。
LBA1是GPT(Global Partition Table) Header,也就是EFI Label的头,里边记录了EFI Label的位置和用户区域的位置以及backup label的位置。
LBA2到LBA33是具体的GPT Entries,每个LBA可以有4个entries。Solaris只用了9个entries,其它的都是0。
LBA34到LBAn-33是9个分区。
LBAn-32到LBAn-1是备份的GPT Entries。(n是磁盘的LBA数,容量-1)
LBAn是备份的GPT Header。
尽管EFI Label不再对分区的数量有所规定,但是目前Solaris创建的EFI Label还是有一定的限制。Solaris创建的EFI Label支持9个分区,S0到S8。S2不再代表全盘,而是一个普通的分区;S7被用来表示全盘,这一点对用户是不可见的,用户只能看到c*t*d*的设备文件被用来表示全盘;S8被用作保留分区,不创建设备文件,用户不能使用。所以用户能够使用的分区就是S0到S6。
不过,在别的操作系统上创建的EFI Label,Solaris也是可以识别的,也没有分区数目的限制,使用format(1M)或prtvtoc(1M)可以看到具体的分区表。但是只有S0到S6是可读写的,其它分区没有设备节点,不能进行读写操作。
Posted at 05:25下午 八月 06, 2007 by Yu Larry Liu in Sun | 评论[6]
星期一 八月 06, 2007
发表于 Grant 在 2007年08月06日, 06:15 下午 HKT #
<a href="http://www.chinavtour.com/" target="_blank">Beijing Tour</a> ChinaVtour is a leading China travel agency and <a href="http://www.chinavtour.com/" target="_blank">Beijing Tour</a> operator in Beijing,we offer better quality and lower price. We provide more than a regular <a href="http://www.chinavtour.com/" target="_blank">Beijing Tour</a>,Beijing tour,include famous Great wall tour,forbidden city Tian'an men square in Beijing, our goal is to give you a perfect memorable <a href="http://www.chinavtour.com/" target="_blank">Beijing Tour</a> dream.We also offer free China map,<a href="http://www.chinavtour.com/" target="_blank">Beijing Tour</a> map and China travel map, <a href="http://www.chinavtour.com/" target="_blank">Beijing Tour</a> Online Reservation.
发表于 Beijing Tour 在 2007年08月08日, 09:53 下午 HKT #
你好,VTOC在x86平台中的描述是否有误?我一直的认知是,通常而言,硬盘可以分为主分区和扩展分区,他俩之和至多为四。其中扩展分区不能直接使用,旗下分成的众多逻辑分区才能直接被使用,没有数量限制。所以,请指正。 我认为应该更正为solaris支持主分区,不支持扩展或逻辑分区,可以在任意主分区上安装。
发表于 even 在 2008年05月08日, 09:47 下午 HKT #
你说的不错,在这里用逻辑分区的概念不太妥当。其实在Solaris里,一般只说支持4个分区,而不谈主分区。
这里有个概念叫活动分区,即只能有一个active solaris分区,而安装时,安装程序会把solaris安装到active solaris分区上。可以用fdisk或format命令来设置活动分区,这样可以在不同的分区上安装solaris。
发表于 Larry 在 2008年05月08日, 10:39 下午 HKT #
好文章,对我帮助很大。谢过!
发表于 Jason Zhang 在 2008年06月06日, 04:19 下午 HKT #
cool
发表于 wow gold 在 2008年11月03日, 09:21 上午 HKT #