总线接口、分区、格式化

一、IDE,ATA,SCSI;SATA,SAS

      总线接口在存储市场上占据了主导的地位。但随着CPU时钟频率和内存带宽的不断提升,两种主要的并行总线接口技术ATA(Advanced Technology Attachment)SCSI(Small Computer System Interface)逐渐显现出不足来。尽管ATA和SCSI均是并行总线接口但是它们之间却不兼容。无论是接口引脚,连接的数据线还是相应支持的软件均不相同。

      IT技术的日益发展,使得并行的总线接口陷入一个进退两难的窘境。一方面,随着硬盘制造技术的成熟,ATA硬盘的单位价格逐渐降低,目前一个100G的硬盘也只不过千元不到的价格,但是另一方面,ATA的技术潜力似乎已经走到尽头,在当今的中大型企业中,ATA现有的传输速率已经逐渐不能满足用户的需求。同时对于SCSI而言,尽管在传输速率和容错性的技术上有着优势,但是它昂贵的价格使得用户望而却步。
      对于ATA和SCSI技术,它们还面临着一个相同的问题。由于采用并行总行接口,传输数据和信号的总线是复用的,因此传输速率会受到一定的限制。如果要提高传输的速率,那么传输的数据和信号往往会产生干扰,从而导致错误

SAS和SATA的诞生
     在这种情况下,串行(Serial)总线接口技术就应运而生。串行总线接口技术并不是并行技术的改进,而是一种完全崭新的总线架构。同ATA和SCSI相对应的是SATA(Serial ATA)SAS(Serial Attached SCSI)两种技术,它们克服了原先并行总线接口技术中的不足。
     串行总线接口以它串行的数据发送方式得名。在数据传输的过程中,数据线和信号线独立使用,并且传输的时钟频率保持独立,因此同以往的并行总线接口技术相比,串行总线的传输速率是并行的30倍。
      SATA的出现扩展了原先的ATA技术,并且业界指定第一代SATA标准的峰值传输速率可达1.5G bps。随着SATA标准的不断完善,传输的速率会不断提高。业界估计,到2004年底,SATA硬盘基本上会取代原先的ATA硬盘,成为桌面PC,入门级服务器和网络存储系统底主要存储介质
       SAS技术可能读者不太熟悉,它是并行SCSI的改进技术,采用了串行的传输方式。SAS并不针对当今的主流市场,而是定位于高端的服务器市场。在系统中,每一个端口可以最多可以连接16256个外部设备,并且SAS采取直接的点到点的串行传输方式,传输的速率高达3Gbps。SAS的接口也做了较大的改进,它同时提供了3.5英寸和2.5英寸的接口,因此能够适合不同服务器环境的需求。
      更重要的一点是,SAS接口和SATA接口完全兼容。这一特性给了整个系统更多的选择空间和适用范围,用户可以根据不同的需求和承受能力,选择SAS和SATA进行组合。

      IDE是英文Integrated Drive Electronics的缩写,翻译成中文叫做“集成驱动器电子”,它的本意是指把控制器与盘体集成在一起的硬盘驱动器。通常我们所说的IDE指的是硬盘等设备的一种接口技术。IDE接口也叫ATA(Advanced Technology Attachment)接口,现在PC(个人电脑)机使用的硬盘大多数都是IDE兼容的,只需用一根40线电缆将它们与主板或接口卡连起来就可以了。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容,对用户而言,硬盘安装起来也更为方便。 
      SCSI的英文名称是“Small Computer System Interface”,中文翻译为"小型计算机系统专用接口";顾名思义,这是为了小型计算机设计的扩充接口,它可以让计算机加装其他外设设备以提高系统 性能或增加新的功能,例如硬盘、光驱、扫描仪等。
      IDE硬盘在转数和传输速度等方面都远不及服务器专用的SCSI硬盘,且IDE硬盘最大的缺点是在读写操作时都大量消耗CPU资源,最简单的例子,大家自己的机器都是IDE的,在复制数据时,CPU占用一般60-70%以上还多。这时同时做别的事会很慢。您想,如果做虚拟主机,100多个用户在同时读写,速度会如何呢?而SCSI硬盘就不同,因为它有自己的“处理器”,在大量数据读写时,自己的处理器会处理,占用CPU很少的资源,让CPU腾出更多时间去处理成千上万个数据请求。
      除了SCSI,IDE也是一种极为常用的接口。从使用简便的角度来看,IDE更加适合普通用户,再加上个人电脑用户不但需要配置的外设不多,而且对速度要求也不高,因此选用IDE接口更合适些。此外,IDE还具有性能价格比高、适用面广等特点。而SCSI接口尽管具有很多无与伦比的特点,但不论从哪 个角度看,该接口及其使用该接口的外设售价过于昂贵,一般用户实在无法承受,这也就决定了它的实际使用范围的局限性。

      1.IDE的工作方式需要CPU的全程参与,CPU读写数据的时候不能再进行其他操作,这种情况在Windows95/NT的多任务操作系统中,自然就会导致系统反应的 大大减慢。而SCSI接口,则完全通过独立的高速的SCSI卡来控制数据的读写操作,CPU就不必浪费时间进行等待,显然可以提高系统的整体性能。不过,现在的IDE接口为改善这个问题也做了很大改进,已经可以使用DMA模式而非PIO模式来读写,数据的交换由DMA通道负责,对CPU的占用可大大减小。 尽管如此,比较SCSI和IDE在CPU的占用率,还是可以发现SCSI仍具有相当的优势。

     2.SCSI的扩充性比IDE大,一般每个IDE系统可有2个IDE通道,总共连4个IDE设备,而SCSI接口可连接7~15个设备,比IDE要多很多,而且连接的电缆也远长于IDE。

     3.虽然SCSI设备价格高些,但与IDE相比,SCSI的性能更稳定、耐用,可靠性也更好。

 

 

二、服务器硬盘分类

     服务器硬盘按照接口分类可分为以下几种
     1、SAS 该盘分为两种协议,即SAS1.0及SAS 2.0接口,SAS1.0接口传输带宽为3.0GB/s转速有7.2kr 10kr 15kr。该盘现已被SAS2.0接口盘取代,该盘尺寸有2.5寸及3.5寸两种。   SAS2.0接口传输带宽为6.0GB/s转速有10kr 15kr,常见容量为74.6G 146G 300G 600G 900G。常见转速:15000转/分
     2、SCSi传统服务器老传输接口,转速为10kr 15kr。但是由于受到线缆及其阵列卡和传输协议的限制,该盘片有固定的插法,例如要顺着末端接口开始插第一块硬盘,没有插硬盘的地方要插硬盘终结器等。该盘现已经完全停止发售。该盘只有3.5寸版。常见转速:10000转/分
     3、NL SAS 该盘片专业翻译为近线SAS,由于SAS盘价格高昂,容量大小有限,LSI等厂家就采用通过二类最高级别检测的SATA盘片进行改装,采用SAS的传输协议,SATA的盘体SAS的传输协议,形成市场上一种高容量低价格的硬盘。市场上现在单盘最大容量为3TB。容量分为2.5寸及3.5寸两种
     4、FDE/SDE 该盘体前者为IBM研发的SAS硬件加密硬盘,该盘体性能等同于SAS硬盘,但是由于本身有硬件加密系统,可以保证涉密单位数据不外泄,该盘主要用于高端2.5寸存储及2.5寸硬盘接口的机器上。SED盘雷同,厂家不一样。
     5、SSD 该盘为固态硬盘,与个人PC不同的是该盘采用一类固态硬盘检测系统检测出场,并采用SAS2.0协议进行传输,该盘的性能也将近是个人零售SSD硬盘的数倍以上。服务器业内主要供货的产品均 在300G单盘一下。
     6、FC硬盘 FC硬盘主要用于以光纤为主要传输协议的外部SAN上,由于盘体双通道,又是FC传输,传输带宽为2G 4G 8G三种传输速度快,在SAN上边,FC磁盘数量越是多IOPS(同写同读并发连接数)越是高。
     7、SATA硬盘:用SATA接口的硬盘又叫串口硬盘,是以后PC机的主流发展方向,因为其有较强的纠错能力,错误一经发现能自动纠正,这样就大大的提高了数据传输的安全性。新的SATA 使用了差动信号系统“differential-signal-amplified-system”。这种系统能有效的将噪声从正常讯号中滤除,良好的噪声滤除能力使得SATA只要使用低电压操作即可,和Parallel ATA高达5V的传输电压相比,SATA 只要0.5V(500mv) 的峰对峰值电压即可操作于更高的速度之上。“比较正确的说法是:峰对峰值‘差模电压’”。常见转速:7200转/分。
     以接口分类的话就是以上6种。

     根据硬盘托架分类又分为热插拔及易插拔两种。
     热插拔硬盘通常用于SAS接口硬盘,由于RAID的冗余性,在运行时单独拔出一块坏的硬盘进行更换不影响整个系统运行的稳定性。但整个功能必须得到阵列卡及硬盘背板支持。通常这类架子为有外部扳手。
     易插拔硬盘通常就是普通盘体硬盘,不能支持在磁盘阵列系统工作时候的热插拔,通常这类的硬盘架子为蓝色。

     特点

     同普通PC机的硬盘相比,服务器上使用的硬盘具有如下四个特点。
     (1) 速度快
     服务器使用的硬盘转速快,可以达到每分钟7200或10000转,甚至更高;它还配置了较大(一般为2MB或4MB)的回写式缓存(已经过时,目前台式机硬盘缓存可达64MB!);平均访问时间比较短;外部传输率和内部传输率更高,采用Ultra Wide SCSI、Ultra2 Wide SCSI、Ultra160 SCSI、Ultra320 SCSI等标准的SCSI硬盘,每秒的数据传输率分别可以达到40MB、80MB、160MB、320MB。
     (2) 可靠性高
     因为服务器硬盘几乎是24小时不停地运转,承受着巨大的工作量。可以说,各硬盘厂商均采用了各自独有的先进技术来保证数据的安全。为了避免意外的损失,服务器硬盘一般都能承受300G到1000G的冲击力。
     (3) 多使用SCSI接口
     多数服务器采用了数据吞吐量大、CPU占有率极低的SCSI/SAS硬盘(虽然目前台式机的SATA硬盘cpu占有率也较低,但跟SAS硬盘明显不在一个档次上)。SCSI硬盘必须通过SCSI接口才能使用,有的服务器主板集成了SCSI接口,有的安有专用的SCSI接口卡,一块SCSI接口卡可以接7个SCSI设备,这是IDE接口所不能比拟的(一个IDE接口只能扩展两个通道,而且相互干扰严重)。
     (4) 可支持热插拔
     热插拔(Hot Swap)是一些服务器支持的硬盘安装方式,可以在服务器不停机的情况下,拔出或插入一块硬盘,操作系统自动识别硬盘的改动。这种技术对于24小时不间断运行的服务器来说,是非常必要的。当然,目前SATA硬盘也具有了这个不过,对于非关键业务来说,让服务器重启明显比热插拔划算得多(热插拔有损失数据的危险)。 

 

 

三、合理规划硬盘分区

    (1)、关于硬盘种类、物理几何结构及硬盘容量、分区大小计算;

     1、硬盘种类、物理几何结构

     硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如 SCSI标准已经经历了SCSI-1 、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的;IDE 遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本;IDE是并口设备,而SATA是串口,SATA的发展目的是替换IDE;

     硬盘的物理几何结构是由盘、磁盘表面、柱面、扇区组成,一个张硬盘内部是由几张碟片叠加在一起,这样形成一个柱体面;每个碟片都有上下表面;磁头和磁盘表面接触从而能读取数据;

     2、硬盘容量及分区大小的算法;

     我们通过fdsik -l 可以发现如下的信息:

     Disk /dev/hda: 80.0 GB, 80026361856 bytes
     255 heads, 63 sectors/track, 9729 cylinders
     Units = cylinders of 16065 * 512 = 8225280 bytes
     Device Boot Start End Blocks Id System
     /dev/hda1 * 1 765 6144831 7 HPFS/NTFS
     /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
     /dev/hda3 2806 9729 55617030 5 Extended
     /dev/hda5 2806 3825 8193118+ 83 Linux
     /dev/hda6 3826 5100 10241406 83 Linux
     /dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
     /dev/hda8 5199 6657 11719386 83 Linux
     /dev/hda9 6658 7751 8787523+ 83 Linux
     /dev/hda10 7752 9729 15888253+ 83 Linux

     其中 heads 是磁盘面;sectors 是扇区;cylinders 是柱面;每个扇区大小是 512byte,也就是0.5M;

     通过上面的例子,我们发现此硬盘有 255个磁盘面,有63个扇区,有9729个柱面;所以整个硬盘体积换算公式应该是:

     磁面个数 x 扇区个数 x 每个扇区的大小512 x 柱面个数 = 硬盘体积 (单位bytes)

     所以在本例中磁盘的大小应该计算如下:

     255 x 63 x 512 x 9729 = 80023749120 bytes

     提示:由于硬盘生产商和操作系统换算不太一样,硬盘厂家以10进位的办法来换算,而操作系统是以2进位制来换算,所以在换算成M或者G 时,不同的算法结果却不一样;所以我们的硬盘有时标出的是80G,在操作系统下看却少几M;

     上面例子中,硬盘厂家算法 和 操作系统算数比较:

     硬盘厂家: 80023749120 bytes = 80023749.120 K = 80023.749120 M (向大单位换算,每次除以1000)

     操作系统: 80023749120 bytes = 78148192.5 K = 76316.594238281 M (向大单位换算,每次除以1024)

     我们在查看分区大小的时候,可以用生产厂家提供的算法来简单推算分区的大小;把小数点向前移动六位就是以G表示的大小;比如 hda1 的大小约为 6.144831G ;

    (2)、关于硬盘分区划分标准及合理分区结构;

     1、硬盘分区划分标准

     硬盘的分区由主分区、扩展分区和逻辑分区组成;所以我们在对硬盘分区时要遵循这个标准;主分区(包括扩展分区)的最大个数是四个,主分区(包含扩展分区)的个数由硬盘的主引导记录MBR(Master Boot Recorder)决定的,MBR存放启动管理程序(GRUB,LILO,NTLOARDER等)和分区表记录。其中扩展分区也算一个主分区;扩展分区下可以包含更多的逻辑分区所以主分区(包括扩展分区)范围是从1-4,逻辑分区是从5开始的;比如下面的例子:

     Device Boot Start End Blocks Id System
     /dev/hda1 * 1 765 6144831 7 HPFS/NTFS
     /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
    /dev/hda3 2806 9729 55617030 5 Extended
      /dev/hda5 2806 3825 8193118+ 83 Linux
     /dev/hda6 3826 5100 10241406 83 Linux
     /dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
     /dev/hda8 5199 6657 11719386 83 Linux
     /dev/hda9 6658 7751 8787523+ 83 Linux
     /dev/hda10 7752 9729 15888253+ 83 Linux

     通过这个例子,我们可以看到主分区有3个,从 hda1-hda3 ,扩展分区由 hda5-hda10 ;此硬盘没有主分区4,所以也没有显示主分区hda4 ;但逻辑分区不可能从4开始,因为那是主分区的位置,明白了吧;

     2、硬盘设备(包括移动存储设备)在Linux或者其它类Unix系统的表示;

     IDE 硬盘在Linux或者其它类Unix系统的一般表示为 hd* ,比如hda、hdb ... ... ,我们可以通过 fdisk -l 来查看;有时您可能只有一个硬盘,在操作系统中看到的却是 hdb ,这与硬盘的跳线有关;另外hdc 大多表示是光驱设备;如果您有两块硬盘,大多是 hda和hdb。在这方面说的太多也无用,还是以fdisk -l 为准为好;

     SCSI 和SATA 硬盘在Linux通常也是表示为 sd* ,比如 sda 、sdb ... ... 以fdisk -l 为准

     移动存储设备在linux表示为 sd* ,比如 sda 、sdb ... ... 以fdisk -l 为准

     3、合理的规划分区;

     关于一个磁盘的分区,一个磁盘应该有四个主分区,其中扩展也算一个主分区;存在以下情况:

     1)分区结构之一:四个主分区,没有扩展分区;

     [主|分区1] [主|分区2] [主|分区3] [主|分区4]

     这种情况,如果您想在一个磁盘上划分五个以上分区,这样是行不通的

     三个主分区 一个扩展分区;

     [主|分区1] [主|分区2] [主|分区3] [扩展分区]
                                                     |
                     [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...

     这种情况行得通,而且分区的自由度比较大;分区也不受约束,能分超过5个分区;这只是举一个例子;

     2)最合理的的分区方式;

     最合理的分区结构:主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区;主分区的个数+扩展分区个数要控制在四个之内;比如下面的分区是比较好的;

     [主|分区1] [主|分区2] [主|分区3] [扩展分区]
                                                    |
             [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...


     [主|分区1] [主|分区2] [扩展分区]
                                       |
     [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...


     [主|分区1] [扩展分区]
                       |
     [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...
   

     最不合理的分区结构: 主分区包围扩展分区;比如下面的;

     [主|分区1] [主|分区2] [扩展分区] [主|分区4] [空白未分区空间]
                                      |
     [逻辑|分区5] [逻辑|分区6] [逻辑|分区7] [逻辑|分区8] ... ...

     这样 [主|分区2] 和 [主|分区4] 之间的 [扩展分区] 是有自由度,但[主|分区4]后的[空白未分区空间]怎么办?除非把主分区4完全利用扩展分区后的空间,否则您想在主分区4后再划一个分区是不可能的,划分逻辑分区更不可能; 虽然类似此种办法也符合一个磁盘四个主分区的标准,但这样主分区包围扩展分区的分区方法实在不可取;

     我们根据这个标题,查看一下我们的例子,是不是符合这个标准呢?

     Device Boot Start End Blocks Id System
     /dev/hda1 * 1 765 6144831 7 HPFS/NTFS
     /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
     /dev/hda3 2806 9729 55617030 5 Extended
     /dev/hda5 2806 3825 8193118+ 83 Linux
     /dev/hda6 3826 5100 10241406 83 Linux
     /dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
     /dev/hda8 5199 6657 11719386 83 Linux
     /dev/hda9 6658 7751 8787523+ 83 Linux
     /dev/hda10 7752 9729 15888253+ 83 Linux

     后记:

     把分区基础写出来,主要是想让新手弟兄知道什么是合理的分区结构,如果把硬盘分区规划好了,也为以学习省却了不少麻烦;在此文后,我计划写具体的分区工具介绍;这也算一个基础知识的积累;虽然老手都会,但新手可能还是需要的;

 


四、分区与格式化

   (1)、fdisk 的介绍

     fdisk - Partition table manipulator for Linux,磁盘分区表操作工具;fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux 、fat32、 linux 、linux swap 、fat16 以及其类Unix类操作系统的文件系统等;当然我们用fdisk对磁盘操作分区时,并不是一个终点,我们还要对分区进行格式化所需要的文件系统;这样一个分区才能使用;这和DOS中的fdisk是类似的;


   (2)、合理规划您的硬盘分区

    在操作分区之前,我们要明白硬盘分区一点理论,比如硬盘容量和分区大小的计算;对一个硬盘如何规划分区等,请参考如下文档,谢谢; 《合理规划您的硬盘分区》


   (3)、fdisk -l 查看硬盘及分区信息

    通过《合理规划您的硬盘分区》 ,我们知道主分区(包括扩展分区)的总个数不能超过四个;也不能把扩展分区包围在主分区之间;根据这个原则,我们划分硬盘分区就比较容易的多;也能为以后减少不必要的麻烦;

    1、通过fdisk -l 查看机器情况;
    所挂硬盘个数及分区
    [root@localhost beinan]# fdisk -l
    Disk /dev/hda: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot Start End Blocks Id System
    /dev/hda1 * 1 765 6144831 7 HPFS/NTFS
    /dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
    /dev/hda3 2806 9729 55617030 5 Extended
    /dev/hda5 2806 3825 8193118+ 83 Linux
    /dev/hda6 3826 5100 10241406 83 Linux
    /dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
    /dev/hda8 5199 6657 11719386 83 Linux
    /dev/hda9 6658 7751 8787523+ 83 Linux
    /dev/hda10 7752 9729 15888253+ 83 Linux
    Disk /dev/sda: 1035 MB, 1035730944 bytes
    256 heads, 63 sectors/track, 125 cylinders
    Units = cylinders of 16128 * 512 = 8257536 bytes
    Device Boot Start End Blocks Id System
    /dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
    /dev/sda2 26 125 806400 5 Extended
    /dev/sda5 26 50 201568+ 83 Linux
    /dev/sda6 51 76 200781 83 Linux
    通过上面的信息,我们知道此机器中挂载两个硬盘(或移动硬盘),其中一个是hda 另一个是sda ;如果我们想查看单个硬盘情况,可以通过 fdisk -l /dev/hda1 或者fdisk -l /dev/sda1    来操作;以fdisk -l 输出的硬盘标识为准;其中 hda有三个主分区(包括扩展分区),分别是主分区 hda1 hda2 和hda3(扩展分区) ;逻辑分区是 hda5到hda10;其中 sda 有两个主分区(包括扩展分区),分别是 hda1 和hda2 (扩展分区);逻辑分区是 sda5 hda6 ;硬盘总容量=主分区(包括扩展分区)总容量
扩展分区容量=逻辑分区总容量通过上面的例子,我们可以得知 hda=hda1+hda2+hda3,其中hda3=hda5+hda6+hda7+hda8+hda9+hda10 ... ...

     2、关于fdisk -l 一些数值的说明
     Disk /dev/hda: 80.0 GB, 80026361856 bytes
     255 heads, 63 sectors/track, 9729 cylinders
     Units = cylinders of 16065 * 512 = 8225280 bytes
     这个硬盘是80G的,有255个磁面;63个扇区;9729个磁柱;每个 cylinder(磁柱)的容量是 8225280 bytes=8225.280 K(约为)=8.225280M(约为);

分区序列       引导       开始       终止         容量          分区类型ID         分区类型
Device        Boot       Start      End          Blocks             Id                System
/dev/hda1     *            1          765         6144831          7                 HPFS/NTFS
/dev/hda2                   766       2805       16386300       c                   W95 FAT32 (LBA)
/dev/hda3                   2806       9729       55617030       5                   Extended
/dev/hda5                   2806       3825       8193118+       83                   Linux
/dev/hda6                   3826       5100       10241406       83 Linux
/dev/hda7                   5101       5198       787153+       82 Linux           swap / Solaris
/dev/hda8                   5199       6657       11719386       83 Linux
/dev/hda9                   6658       7751       8787523+       83 Linux
/dev/hda10                   7752       9729       15888253+       83 Linux
说明: 硬盘分区的表示:在Linux 是通过hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c ... ... x表示的数字 1、2、3 ... ... hd大多是IDE硬盘;sd大多是SCSI或移动存储
引导(Boot):表示引导分区,在上面的例子中 hda1 是引导分区;
Start (开始):表示的一个分区从X cylinder(磁柱)开始;
End (结束):表示一个分区到 Y cylinder(磁柱)结束;
id和System 表示的是一个意思,id看起来不太直观,我们要在fdisk 一个分区时,通过指定id来确认分区类型;比如 7表示的就NTFS 分区;这个在fdisk 中要通过t功能来指定。下面的部分会提到;
Blocks(容量):这是我翻译的,其实不准确,表示的意思的确是容量的意思,其单位是K;一个分区容量的值是由下面的公式而来的; Blocks = (相应分区End数值 - 相应分区Start数值)x 单位cylinder(磁柱)的容量 所以我们算一下 hda1的 Blocks 的大小 : hda1 Blocks=(765-1)x8225.280=6284113.92 K = 6284.113.92M  (255*63*512=8225280)注:换算单位以硬盘厂家提供的10进位算起,如果以操作系统二进制来算,这个分区容量应该更少一些,得出的这个值和我们通过 fdisk -l 看到的 /dev/hda1的值是大体相当的,因为换算方法不一样,所以也不可能尽可能的精确;再加上分区时的一点损失之类,有时或大或小是存在的;我们查看分区大小或者文件的时候,还是用十进制来计算比较直观;推算办法是 byte 向前推小数点三位就是K ,K单位的值向前推小数点三位就是M,M向前推小数点三位就是G... ... 一般也差不了多少;这么算就行;

3、估算一个存储设备是否被完全划分
我们估算一个硬盘是否完全被划分,我们只要看 fdisk -l 输出的内容中的 cylinders(柱体) 上一个分区的End 和 下一个分区的Start是不是一个连续的数字,另外要看一下每个硬盘设备的fdisk -l 的开头部分,看一下他的 cylinders(柱体)的值;比如hda设备,我们看到的是 9729 cylinders ;我们通过 hda的分区表可以看到上一个分区的End的值+1 就是下一个分区的Start 的值;比如 hda2的Start的值是 hda1 的End 的值+1,这证明 hda1 和hda2 中间没有空白分区,是连续的,以此类推;在 hda10,我们看到 End 的值是9729 ,而在fdisk -l头部信息中也有9729 cylinders,证明这个硬盘已经完全划分; Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 76 200781 83 Linux
我们再看看 sda 移动储是不是被完全划分了;sda有 125个cylinders (柱体),有一个主分区和一个扩展分区构成;在扩展分区中,我们看到End的值为125,而这个移动硬盘的cylinder也是125,这能说明这个硬盘不可能再添加任何主分区了;根据我们上面所说的 sda1 sda2 sda5 sda6 之间未有任何未划分空间,但sda6 的cylinders (柱体)的End值却是 76 ,而 sda总的cylinders (柱体)有125个,由此看来sda 在 sda6后面有未划分区域;至于sda 有多少未划分空间,我们算一下就知道了;扩展分区总容量是 806400 K ,大约是 806.400M左右,而逻辑分区 sda5 和sda6 的大小加起来是 400M左右,所以还仍有400M左右未划分空间,并且只能划分为链逻辑分区;

(4)、fdisk 对硬盘及分区的操作
我们可以对硬盘进行分区操作,前提是您把fdisk -l 弄明白了;通过fdisk -l ,我们能找出机器中所有硬盘个数及设备名称;比如上面的例子,我们会看到两个设备一个是/dev/hda ,另一个是/dev/sda ;
fdisk 操作硬盘的命令格式如下:
[root@localhost beinan]# fdisk 设备
比如我们通过 fdisk -l 得知 /dev/hda 或者 /dev/sda设备;我们如果想再添加或者删除一些分区,可以用 [root@localhost beinan]# fdisk /dev/hda
或[root@localhost beinan]# fdisk /dev/sda
注:在以后的例子中,我们要以 /dev/sda设备为例,来讲解如何用fdisk 来操作添加、删除分区等动作;

1、fdisk 的说明;
当我们通过 fdisk 设备,进入相应设备的操作时,会发现有如下的提示;以 fdisk /dev/sda 设备为例,以下同; [root@localhost beinan]# fdisk /dev/sda
Command (m for help): 在这里按m ,就会输出帮助;
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition 注:这是删除一个分区的动作;
l list known partition types 注:l是列出分区类型,以供我们设置相应分区的类型;
m print this menu 注:m 是列出帮助信息;
n add a new partition 注:添加一个分区;
o create a new empty DOS partition table
p print the partition table 注:p列出分区表;
q quit without saving changes 注:不保存退出;
s create a new empty Sun disklabel
t change a partition's system id 注:t 改变分区类型;
u change display/entry units
v verify the partition table
w write table to disk and exit 注:把分区表写入硬盘并退出;
x extra functionality (experts only) 注:扩展应用,专家功能;
其实我们常用的只有注有中文的,其它的功能我们不常用(呵,主要是我不会用,否则早会卖弄一下了);x扩展功能,也不是常用的;一般的情况下只要懂得 d l m p q t w 就行了;下面以实例操作来详述,没有例子没有办法就,新手也看不懂;

2、列出当前操作硬盘的分区情况,用p;
Command (m for help): p
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 76 200781 83 Linux

3、通过fdisk的d指令来删除一个分区;
Command (m for help): p 注:列出分区情况;
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 76 200781 83 Linux
Command (m for help): d 注:执行删除分区指定;
Partition number (1-6): 6 注:我想删除 sda6 ,就在这里输入 6 ;
Command (m for help): p 注:再查看一下硬盘分区情况,看是否删除了?
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
Command (m for help):
警告:删除分区时要小心,请看好分区的序号,如果您删除了扩展分区,扩展分区之下的逻辑分区都会删除;所以操作时一定要小心;如果知道自己操作错了,请不要惊慌,用q不保存退出;切记切记!!!!在分区操作错了之时,千万不要输入w保存退出!!!

4、通过fdisk的n指令增加一个分区;
Command (m for help): p
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
Command (m for help): n 注:增加一个分区;
Command action
l logical (5 or over) 注:增加逻辑分区,分区编号要大于5;为什么要大于5,因为已经有sda5了;
p primary partition (1-4) 注:增加一个主分区;编号从 1-4 ;但sda1 和sda2都被占用,所以只能从3开始;
p
Partition number (1-4): 3
No free sectors available 注:失败中,为什么失败?
注:我试图增加一个主分区,看来是失败了,为什么失败?因为我们看到主分区+扩展分区把整个磁盘都用光了,看扩展分区的End的值,再看一下 p输出信息中有125 cylinders;最好还是看前面部分;那里有提到;所以我们只能增加逻辑分区了; Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l 注:在这里输入l,就进入划分逻辑分区阶段了;
First cylinder (51-125, default 51): 注:这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;
Using default value 51
Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:这个是定义分区大小的,+200M 就是大小为200M ;当然您也可以根据p提示的单位cylinder的大小来算,然后来指定 End的数值。回头看看是怎么算的;还是用+200M这个办法来添加,这样能直观一点。如果您想添加一个10G左右大小的分区,请输入 +10000M ;
Command (m for help):

5、通过fdisk的t指令指定分区类型;
Command (m for help): t 注:通过t来指定分区类型;
Partition number (1-6): 6 注:要改变哪个分区类型呢?我指定了6,其实也就是sda6
Hex code (type L to list codes):L 注:在这里输入L,就可以查看分区类型的id了
Hex code (type L to list codes): b 注:如果我想让这个分区是 W95 FAT32 类型的,通过L查看得知 b是表示的是,所以输入了b;
Changed system type of partition 6 to b (W95 FAT32) 注:系统信息,改变成功;是否是改变了,请用p查看;
Command (m for help): p
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 75 201568+ b W95 FAT32

6、fdisk 的退出,用q或者 w;
其中 q是 不保存退出,w是保存退出; Command (m for help): w
或Command (m for help): q

7、一个添加分区的例子;
本例中我们会添加两个200M的主分区,其它为扩展分区,在扩展分区中我们添加两个200M大小的逻辑分区; Command (m for help): p 注:列出分区表;
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
Command (m for help): n 注:添加分区;
Command action
e extended
p primary partition (1-4)
p 注:添加主分区;
Partition number (1-4): 1 注:添加主分区1;
First cylinder (1-125, default 1): 注:直接回车,主分区1的起始位置;默认为1,默认就好;
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-125, default 125): +200M 注:指定分区大小,用+200M来指定大小为200M
Command (m for help): n 注:添加新分区;
Command action
e extended
p primary partition (1-4)
p 注:添加主分区
Partition number (1-4): 2 注:添加主分区2;
First cylinder (26-125, default 26):
Using default value 26
Last cylinder or +size or +sizeM or +sizeK (26-125, default 125): +200M 注:指定分区大小,用+200M来指定大小为200M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e 注:添加扩展分区;
Partition number (1-4): 3 注:指定为3 ,因为主分区已经分了两个了,这个也算主分区,从3开始;
First cylinder (51-125, default 51): 注:直接回车;
Using default value 51
Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): 注:直接回车,把其余的所有空间都给扩展分区
Using default value 125
Command (m for help): p
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ 83 Linux
/dev/sda2 26 50 201600 83 Linux
/dev/sda3 51 125 604800 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l 注:添加逻辑分区;
First cylinder (51-125, default 51):
Using default value 51
Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:添加一个大小为200M大小的分区;
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l 注:添加一个逻辑分区;
First cylinder (76-125, default 76):
Using default value 76
Last cylinder or +size or +sizeM or +sizeK (76-125, default 125): +200M 注:添加一个大小为200M大小的分区;
Command (m for help): p 列出分区表;
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ 83 Linux
/dev/sda2 26 50 201600 83 Linux
/dev/sda3 51 125 604800 5 Extended
/dev/sda5 51 75 201568+ 83 Linux
/dev/sda6 76 100 201568+ 83 Linux
然后我们根据前面所说通过t指令来改变分区类型;最后不要忘记w保存退出;


(5)、对分区进行格式化,以及加载;

硬盘驱动器分区后,它被映射成一部分一部分区域,但区域是空的。就像是一个新建成的图书馆,放书之前,先要放好书架,标志,卡片目录。一个分区的内部组织结构被称为文件系统。格式化分区即是创建文件系统。linux中可以用 mkfs.bfs mkfs.ext2 mkfs.jfs mkfs.msdos mkfs.vfatmkfs.cramfs mkfs.ext3 mkfs.minix mkfs.reiserfs mkfs.xfs 等命令来格式化分区,比如我想格式化sda6为ext3文件系统,则输入; [root@localhost beinan]# mkfs.ext3 /dev/sda6
如果我想加载sda6到目前系统来存取文件,应该有mount 命令,但首先您得建一个挂载目录;比如 /mnt/sda6 ; [root@localhost beinan]# mkdir /mnt/sda6
[root@localhost beinan]# mount /dev/sda6 /mnt/sda6
[root@localhost beinan]# df -lh
Filesystem 容量 已用 可用 已用% 挂载点
/dev/hda8 11G 8.4G 2.0G 81% /
/dev/shm 236M 0 236M 0% /dev/shm
/dev/hda10 16G 6.9G 8.3G 46% /mnt/hda10
/dev/sda6 191M 5.6M 176M 4% /mnt/sda6
这样我们就能进入 /mnt/sda6目录,然后存取文件了;

 

 

五、例子

(1)分区

注意分区类型

 

(2)格式化

格式化完成后,创建的文件系统结构:

 

【参考资料】

1、关于fdisk -l看到的heads:http://zhumeng8337797.blog.163.com/blog/static/100768914201010183442986/?suggestedreading&wumii

 

【扩展阅读】

引导块(第0号块)——选择sys_setup:

for (drive=0 ; drive<NR_HD ; drive++) {
        if (!(bh = bread(0x300 + drive*5,0))) {
            printk("Unable to read partition table of drive %d\n\r",
                drive);
            panic("");
        }
        if (bh->b_data[510] != 0x55 || (unsigned char)
            bh->b_data[511] != 0xAA) {
            printk("Bad partition table on drive %d\n\r",drive);
            panic("");
        }
        p = 0x1BE + (void *)bh->b_data;
        for (i=1;i<5;i++,p++) {
            hd[i+5*drive].start_sect = p->start_sect;
            hd[i+5*drive].nr_sects = p->nr_sects;
        }
        brelse(bh);
    }

 

超级块(第1号块)——选自read_super:

if (!(bh = bread(dev,1))) {
        s->s_dev=0;
        free_super(s);
        return NULL;
    }
    *((struct d_super_block *) s) =
        *((struct d_super_block *) bh->b_data);
    brelse(bh);
    if (s->s_magic != SUPER_MAGIC) {
        s->s_dev = 0;
        free_super(s);
        return NULL;
    }
    for (i=0;i<I_MAP_SLOTS;i++)
        s->s_imap[i] = NULL;
    for (i=0;i<Z_MAP_SLOTS;i++)
        s->s_zmap[i] = NULL;

 

i节点位图块(第2号块开始)——选自read_super:

for (i=0;i<Z_MAP_SLOTS;i++)
        s->s_zmap[i] = NULL;
    block=2;
    for (i=0 ; i < s->s_imap_blocks ; i++)
        if (s->s_imap[i]=bread(dev,block))
            block++;
        else
            break;
    for (i=0 ; i < s->s_zmap_blocks ; i++)
        if (s->s_zmap[i]=bread(dev,block))
            block++;
        else
            break;
    if (block != 2+s->s_imap_blocks+s->s_zmap_blocks) {
        for(i=0;i<I_MAP_SLOTS;i++)
            brelse(s->s_imap[i]);
        for(i=0;i<Z_MAP_SLOTS;i++)
            brelse(s->s_zmap[i]);
        s->s_dev=0;
        free_super(s);
        return NULL;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值