solaris学习1:磁盘

  1. 云栖社区>
  2. 博客>
  3. 正文

solaris学习1:磁盘

技术小胖子 2017-11-09 17:43:00 浏览1005
展开阅读全文

这篇blog是我对磁盘分区的一些认识,可能随着我理解的提高而修改一些。
接触solaris有一段时间了,想对磁盘的认识作个简单整理。下面是我的一些基本认识整理:
1、   磁盘和磁盘控制器
磁盘(指温氏硬盘不是SSD固态硬盘)包括盘片(存储部分)和磁盘驱动器(包括电机、磁头、机械臂等),需要注意的是硬盘有数个盘片,每盘片两个面,每个面一个磁头。每个盘片在分区时的划分是一致的,即盘片1、盘片3是一模一样的。
磁盘控制器:是磁盘的控制设备,一个磁盘控制器可以控制多个磁盘,如IDE控制器、sata控制器等

上图已很好的说明了什么是磁盘控制器。另外操作系统只关心磁盘控制器的类型和磁盘控制器的工作模式
磁盘控制器工作模式一般有:IDE(PATA)、SATA、AHCI、RAID等,而磁盘控制器工作模式与磁盘类型是基本无关的。这也就是说,即使你是SATA的硬盘,而如果磁盘控制器开启的是IDE工作模式,那么系统也仅仅把你的SATA硬盘当做一个IDE硬盘来对待。0 K( L( j/ f- f
同一个磁盘控制器可能会存在多种工作模式,例如同时拥有PATA、AHCI和RAID工作模式,一般可以在CMOS中进行设置。而每种工作模式下磁盘 控制器的硬件ID又是不同的,也就是说虽然磁盘控制器还是这个磁盘控制器,但由于它工作模式的变更,它的硬件ID也随之变更,那么就需要为它重新安装磁盘 控制器驱动。" A% x3 t- S- y9 c1 ~0 E! r, R
这样也从另外一个角度解释了为什么系统安装完毕后,如果更改磁盘控制器工作模式,会造成蓝屏的问题。例如安装系统时,磁盘控制器工作模式为SATA, 系统为磁盘控制器安装的是SATA模式的驱动,而一旦磁盘控制器工作模式改为了AHCI,由于系统里针对磁盘控制器的驱动仍是SATA模式的,系统无法正 常操作磁盘控制器,所以就出现蓝屏宕机的情况。
  
2、 服务器常用的磁盘接口类型:SCSI、SATA、SAS

3、 磁盘物理存储结构:sector 、track、cylinder
heads : 磁盘面,盘片面
sector扇区:512字节,多个连续sector组成簇(即数据块),OS通常以数据块对磁盘读写。在创建磁盘分区时可以自定义每个簇包含的sector数量,默认通常为8个。新标准将每个sector的容量从512字节增加到4096字节,不过新标准的磁盘还没有产品上市。
track 磁道: 容量随半径增大而增加,即外面磁道比里面磁道有更多sector。
cylinder 柱面: 从外到内(区别光盘的从内到外)编号,最外面的柱面编号为“0”。
下面是solaris的一个slice的信息:
# prtvtoc /dev/dsk/c0d0s0
* /dev/dsk/c0d0s0 partition map
* Dimensions:
*     512 bytes/sector
*      63 sectors/track
*     255 tracks/cylinder
*   16065 sectors/cylinder
*   31263 cylinders
*   31261 accessible cylinders
 
4、 硬盘标识: VTOC和EFI
VTOC是传统硬盘标识,但只能创建小于1TB的文件系统。EFI可以创建大于1TB的文件系统,但不支持IDE硬盘、不能作为启动盘启动OS、不能用SMC管理等缺点。
在solaris中format命令的label可以查看,VTOC label为SMI。soaris9以前版本不能识别EFI,对于EFI要注意几个地方:首先是分区的基本单位,VTOC分区以柱面为基本单位来分区,即s1分区可能为柱面100~2000间,而EFI标号中不存储柱面、磁头,扇区信息大小以块数报告,即以扇区号进行操作,分区大小用“块”(block)来表示,如s1分区为sector 100~2000间。EFI 标号的大小通常为 34 个扇区,因此分区从第 34 个扇区开始。此特性意味着任何分区都不能从扇区零 (0) 开始。
# prtvtoc /dev/rdsk/c0t0d0s0       ##VTOC
* /dev/rdsk/c0t0d0s0 partition map 
* Dimensions: 
* 512 bytes/sector 
* 63 sectors/track 
* 15 tracks/cylinder 
* 945 sectors/cylinder 
* 8894 cylinders 
* 8892 accessible cylinders
 
# prtvtoc /dev/rdsk/c3t1d0s0       ##EFI
* /dev/rdsk/c3t1d0s0 partition map 
* Dimensions: 
* 512 bytes/sector 
* 2479267840 sectors 
* 2479267773 accessible sectors
 
其次slice不同,如下:
                      X86                             SPARC
VTOC      10个slice,号码为0~9         8个slice,号码为0~7
 EFI           7个slice,号码为0~6         7个slice,号码为0~6
s0默认是根分区“/”,包含启动信息。
s1默认代表交换分区(swap)
关于S2问题,在VTOC中,在SPARC机器上是代表整个硬盘,在X86机器上代表类型为Solaris的那个分区的整个空间(如果整个硬盘都划成solaris分区,那就代表整个硬盘了)。
在EFI中,S2 分区也是一个普通的可用分区,全盘表示方法为 cxtydz。EFI label 盘上的有一个UUID(Universally Unique Identifer),直接复制(相当于ghost)会导致两盘的UUID重复,某些软件产品读到重复UUID时会发生数据问题,因此需要在复制后重新生成UUID。
s8、s9是保留分片,用户不能使用。

由上图可以看出,如果安装solaris时选择默认分片,则会使用s0、s1、s7,s2代表整个磁盘,那么剩余的只有s3、s4、s5、s6分区可用。
 
 
5、 solaris的slice分片
BSD也是用slice来分区(相当于windows的C、D、E盘分区)。
windows、linux、unix都以柱面为最小单位来分区。
为方便理解以windows的角度理解磁盘分区,以便对solaris的分区更深入理解。

主引导扇区和引导扇区:
主引导扇区是0号柱面、0号磁头、0号磁道的第一个扇区,大小512字节,主引导记录MBR占446字节,DPT分区表占64字节,其它的就不写了。其中MBR是引导程序,DPT是记录4个主分区用的,不做引导。另外有且只有一个扩展分区(特殊主分区),扩展分区不可以直接使用,必须以逻辑分区的形式出现,逻辑分区是以链式形式存在的,即每个逻辑分区都记录下一个逻辑分区的位置信息,依次串联,逻辑分区表记录分区信息和一个指向下一个逻辑分区的指针,当一个逻辑分区损坏,则下一个逻辑分区不可用,上一个可用,即逻辑分区是OS管理的级别。
每个分区都有引导扇区。
当slice高级格式化成USF文件系统时,以下几个块需了解:
超级块:超级块存储文件系统信息(块大小、总块数、柱面数等),有多个备份来确保它的安全--备份超级块,因为超级块包含着临界数据,所以他被复制到每一个柱头组用来防止灾难发生。当文件系统被建立之后,这个工作就已经完成了。当超级块损坏时,系统在重启时会调用fsck来自动修复,如果fsck无法自动修复,就需要手动修复,下面是手动修复的两步:
newfs -N /dev/rdsk/c0t0d0s6    列出备用超级块在文件系统中的位置。
fsck -F ufs -o b=106368(位置值)/dev/rdsk/c0t0d0s6
i节点: i节点表存放在超级块之后,其长度是由超级块中的s_isize字段决定的,其作用是用来描述文件的属性、长度、属主、属组、数据块表等,不包括文件名。
在创建文件系统时可以用newfs -i来增加或减少索引节点的数目。一旦文件系统建立,就无法更改索引节点数目,许多小文件容易消耗索引节点数。可以用df -i查看每个slice的i-node状况。如果文件系统i-node不够用,只能创建新的文件系统,将原文件系统数据备份再copy到新文件系统里。

磁盘容量的计算:
存储容量=磁头数(盘片数)×磁道(柱面)数×每道扇区数×每扇区字节数
___________________________|-----磁道的总字节数-----|      
_______________|-------磁盘一个盘面的总字节数------------|
__________|-----磁盘容量(磁头数个盘面)--------------------|

slice命名:c#t#d#s#
c --controller number 控制器编号(如HBA、RAID控制器)
t --target number 目标编号(每个 磁盘、磁带、CDROM等设备的硬件地址),也可认为是磁盘插槽。
d --disk number 磁盘编号,标识第几个磁盘,如第一个磁盘为d0,也可以是逻辑单元号LUN(磁盘阵列)。
s --slice number 分区编号,通常为0~7,

slice和文件系统关系:一个slice不能包含多个文件系统,同样一个文件系统不能跨越多个slice。

6、 磁盘硬件设备名字(其它设备暂且另说明)
设备的3种名字:物理设备名、逻辑设备名、实例名
物理设备名: /devices 
逻辑设备名:/dev/dsk、/dev/rdsk(裸磁盘逻辑名)下指向/devices的link。
                   对每个物理磁盘上的每个片slice,都有两个唯一的存取路径:块设备路 径(/dev/dsk)和裸设备路径(/dev/rdsk)
实例名: 内核为系统的每个设备指定的缩写名字,如IDE硬盘为dad、scsi硬盘为sd、sata硬盘为cmdk。查看磁盘的实例名:iostat -E ,每个设备和其实例名的映射在/etc/path_to_inst文件中(不要轻易修改此文件)。
物理设备名和逻辑设备名的link关系
lrwxrwxrwx   1 root     root          51  1ÔÂ 15ÈÕ 15:36 c0d0s0 -> ../../devices/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0:a
lrwxrwxrwx   1 root     root          51  1ÔÂ 15ÈÕ 15:36 c0d0s1 -> ../../devices/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0:b,依次类推.
slice分片的对应:s0 -->cmdk@0,0:a     s1 -->cmdk@0,0:b

lrwxrwxrwx   1 root     root          51  1ÔÂ 15ÈÕ 15:36 c0d0p0 -> ../../devices/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0:q
lrwxrwxrwx   1 root     root          51  1ÔÂ 15ÈÕ 15:36 c0d0p1 -> ../../devices/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0:r
lrwxrwxrwx   1 root     root          51  1ÔÂ 15ÈÕ 15:36 c0d0p2 -> ../../devices/pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0:s
主分区的对应:p0 -->cmdk@0,0:q   p1-->cmdk@0,0:r,依次类推.

7、  命令 format (format为sparc分区,fdisk为x86平台用即容量不超过1TB)、prtvtoc

8、 每个slice分区表两个术语

Tag: 用于描述此分区中挂载的文件系统的数值。即标记此分区的用途。
0=UNASSIGEND 1=BOOT 2=ROOT 3=SWAP 4=USR 5=BACKUP 7=VAR 8=HOME 11=RESERVED

Flag: 分区读写挂载标志
wm:可写且可挂载   wu 可写不可挂载  rm 只读可挂载 ru 只读不可挂载
wm rm swap分区的标志。

理解实例以windows的PM分区软件角度看
1、 一个磁盘全部为solaris分区
以windows的PM分区软件角度看

从solaris的format查看

solaris系统下划分三个slice,但PM无法查看。

2、 三个主分区(有ntfs、fat32、solaris)

相当于windows下PM分区软件看有三个主分区:ntfs、fat32、solaris,而solaris系统安装在solaris分区下有三个slice分区,但在PM无法体现。

3、 扩展分区下的逻辑分区
由于没有VM环境,只能文字说明(有时间会建vm测试下面陈述)。假设(PM分区软件看)磁盘划分为:c:\ (主分区NTFS)、solaris分区(主分区)、EXT扩展分区(逻辑分区1、逻辑分区2(fat32))
现在在solaris系统下如何挂载逻辑分区2。
solaris没有定义设备符号来表示硬盘的逻辑分区,所以逻辑分区通常使用c#t#d#p#:x 来表示。
现在有两种情况:当逻辑分区1为ntfs时,则逻辑分区2表示为:c0t0d0p2:1 ,从1开始的。当逻辑分区1为fat32时,则逻辑分区2表示为:c0t0d0p2:2,逻辑分区1表示为:c0t0d0p2:1
其它为
c:\ (主分区NTFS)--- c0t0d0p1
solaris分区  --- c0t0d0p3
EXT扩展分区   --- c0t0d0p2

9、 查看文件系统类型


================================================
IE报错后将所有网页自动关闭
方法一、
  重新注册IE项,修复IE注册。从开始->运行
  regsvr32 actxprxy.dll”
  regsvr32 shdocvw.dll
二、 查看 进程情况,看是否有异常的进程
     IE的插件过多,查看是否有IE插件导致
     IE 安全设置问题
三、 升级到IE8.0
1.控制面板 添加删除 里卸载 IE 
2.控制面板 添加删除 添加WINDOWS组件 里找到 IE然后卸掉
3.C:\Program Files\目录下找到Internet Explorer 删除Internet Explorer 
4.注册表删除 
①对IE 5.0的重装可按以下步骤进行: 
第一步:打开“注册表编辑器”,找到[HKEY_LOCAL_ MACHINE\Software\Microsoft\Internet Explorer],单击其下的Version Vector键。 
第二步:在右侧窗格中双击IE子键,将原来的“5.0002”改为“4.0”,单击“确定”后退出“注册表编辑器”。 
第三步:重启后,就可以重装IE 6。0了。 
②IE 6.0的重装有两种方法: 
方法1:打开“注册表编辑器”,找到[HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\Active Setup\ 
Installed Components\{89820200-ECBD-11cf-8B85-00AA005B4383}],将IsInstalled的DWORD值改为0就可以了。







      本文转自fuhaixiong 51CTO博客,原文链接:http://blog.51cto.com/heliy/171707,如需转载请自行联系原作者


网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注