免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7964 | 回复: 12
打印 上一主题 下一主题

深入理解硬盘的 Linux 分区 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-26 14:01 |只看该作者 |倒序浏览
深入理解硬盘的 Linux 分区

在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然,现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多的人还是感觉无从下手。这其中的原因主要是不清楚 Linux 的分区规定,以及它下面最有效的分区工具— Fdisk 的使用方法。下面从这两个方面入手,来讲解这个困扰大家的问题。

Linux 的分区规定

1. 设备管理

在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。

Linux 把各种 IDE 设备分配了一个由 hd 前缀组成的文件;而对于各种 SCSI 设备,则分配了一个由 sd 前缀组成的文件。例如,第一个 IDE 设备,Linux 就定义为 hda;第二个 IDE 设备就定义为 hdb;下面以此类推。而 SCSI 设备就应该是 sda、sdb、sdc 等。

2. 分区数量

要进行分区就必须针对每一个硬件设备进行操作,这就有可能是一块IDE硬盘或是一块SCSI硬盘。对于每一个硬盘(IDE 或 SCSI)设备,Linux 分配了一个 1 到 16 的序列号码,这就代表了这块硬盘上面的分区号码。例如,第一个 IDE 硬盘的第一个分区,在 Linux 下面映射的就是 hda1,第二个分区就称作是 hda2。对于 SCSI 硬盘则是 sda1、sdb1 等。

3. 各分区的作用

在 Linux 中规定,每一个硬盘设备最多能有 4 个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。对于早期的 DOS 和 Windows(Windows 2000 以前的版本),系统只承认一个主分区,可以通过在扩展分区上增加逻辑盘符(逻辑分区)的方法,进一步地细化分区。

主分区的作用就是计算机用来进行启动操作系统的,因此每一个操作系统的启动,或者称作是引导程序,都应该存放在主分区上。这就是主分区和扩展分区及逻辑分区的最大区别。我们在指定安装引导 Linux 的 bootloader 的时候,都要指定在主分区上,就是最好的例证。

Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。因此,Linux 下面每一个硬盘总共最多有 16 个分区。

对于逻辑分区,Linux 规定它们必须建立在扩展分区上(在 DOS 和 Windows 系统上也是如此规定),而不是主分区上。因此,我们可以看到扩展分区能够提供更加灵活的分区模式,但不能用来作为操作系统的引导。

除去上面这些各种分区的差别,我们就可以简单地把它们一视同仁了。

5. 分区指标

对于每一个 Linux 分区来讲,分区的大小和分区的类型是最主要的指标。容量的大小读者很容易理解,但是分区的类型就不是那么容易接受了。分区的类型规定了这个分区上面的文件系统的格式。 Linux 支持多种的文件系统格式,其中包含了我们熟悉的FAT32、FAT16、NTFS、HP-UX,以及各种 Linux 特有的 Linux Native和 Linux Swap分区类型。在 Linux 系统中,可以通过分区类型号码来区别这些不同类型的分区。各种类型号码在介绍Fdisk的使用方式的时候将会介绍。

Fdisk 使用详解

下面通过介绍 Fdisk 的使用方法,来巩固上面所学到的各种关于 Linux 分区的知识。

Fdisk 是各种 Linux 发行版本中最常用的分区工具,是被定义为 Expert 级别的分区工具,它让初学者有点望而却步。

1. Fdisk 参数说明

运行Fdisk的时候,首先映入眼帘的如图 1 所示的欢迎界面,用户通过在这个界面中输入命令参数来操作Fdisk。




图 1 Fdisk 欢迎界面
http://linux.tcpip.com.cn/articl ... 3&parentid=2589


用户通过提示键入 “m”,可以显示 Fdisk 命令各个参数的说明。

读者可以看到 Fdisk 有很多参数,可是经常使用的就是几个,如果读者熟练掌握这几个参数就可以流畅地运用 Fdisk,对 Linux 的硬盘进行分区。我们先简单介绍各个参数的意义,然后详细说明几个重点参数,见表 1。

表 1 Fdisk 参数说明
http://linux.tcpip.com.cn/articl ... 3&parentid=2589



用户在 Linux 中进行分区的时候,最常用的参数分别是 d、l、m、n、p、q、t、w 等。

2.用 Fdisk 进行分区

在 Linux 分区过程,一般是先通过 p 参数来显示出硬盘分区表信息,然后根据信息确定将来的分区。如图2所示。




图 2 显示已有分区的
http://linux.tcpip.com.cn/articl ... 3&parentid=2589


图 2 显示了分区的大小和分区的类型。如果想完全改变硬盘的分区格式,就可以通过 d 参数一个个删除存在的硬盘分区。例如 d1,d2。

删除完毕,就可以通过 n 参数来增加新的分区。当按下 “n” 后,我们就可以看到图 3 所示的新增分区。




图 3 新增分区
http://linux.tcpip.com.cn/articl ... 3&parentid=2589


这里要选择新建的分区类型,是主分区还是扩展分区;然后选择 p 或是 e。它们的区别在上文中已经说明。然后就是设置分区的大小。需要提醒注意的是,如果硬盘上有扩展分区,就只能增加逻辑分区,不能增加扩展分区了,如图 4 所示。




图 4 新增逻辑分区
http://linux.tcpip.com.cn/articl ... 3&parentid=2589


在增加分区的时候,其类型都是默认的 Linux Native,如果需要把其中的某些分区改变为其它类型,例如 Linux Swap 或 FAT32 等,可以通过命令 t 来改变,如图 5。




图 5 转换分区类型
http://linux.tcpip.com.cn/articl ... 3&parentid=2589


当按下 “t” 改变分区类型的时候,系统会提示要改变哪个分区,并且改变为什么类型(如果想知道系统所支持的分区类型,键入 l)。图 5 表示把分区5的类型改变为 82 号 Linux 的 Swap 类型。

Linux 所支持的分区类型号码和其对应的分区类型,可以参考表 2(这些信息可以用 l 命令得到)。

表 2 分区类型对应表
http://linux.tcpip.com.cn/articl ... 3&parentid=2589



改变完了分区类型,就可以按下 “w”,保存并且退出。如果不想保存,那么可以选择 “q” 直接退出。

通过以上两个方面的学习,相信对于初学者来说,分区已经不再是 Linux 进阶中的绊脚石了。

论坛徽章:
0
2 [报告]
发表于 2011-05-26 14:19 |只看该作者
linux分区知识,可以帮助理解怎样给硬盘分区(转载重新编辑)
分区概念
首先我们需要知道,硬盘分区的存在,是由硬盘的物理特性决定的,并不会因为操作系统的不同而有所改变。
请您把一块硬盘想象为一本书……即便您不喜欢读书,您也一定非常熟悉它,所有的书都是相同的,包括我们使用的课本……您肯定非常熟悉
一本完整的书,通常包括书名、目录和正文。
如果您需要Linux,您首先需要找到一本书名为《linux》的书,书名相当于硬盘中的MBR,也就是主引导纪录。不同的是,MBR可以是几个书名合在一起,类似于《XX合订本》。这部分内容暂时还没有什么实用价值,您只需要大概的了解。
而正文,就是硬盘中纪录的数据,这也非常容易理解,且对于安装系统并没有什么影响,所以现在我们来了解目录:
目录相当于硬盘中的分区表,书中的每一个章节,相当于硬盘中的一个分区,它起始和结束的页次,都可以在目录中找到。试想,如果阅读一本撕掉目录的书,您将很难找到您想阅读的部分。同样,如果没有分区表,操作系统也不能够在硬盘上定位数据的位置。
由于历史的原因,硬盘中的分区表大小受到了限制,最多只可以容纳四个分区(主分区)。如果一本书,它的目录最多只能有四个章节,那不是太可怕了么?很多书的内容远远不止四个章节啊!
于是聪明的人们想到了一个变通的办法,就是利用其中的一个章节,来存储其它部分的目录。比如第一章是前言,第二章是其它部分的目录,我们翻到第二章,呵呵,这里是第二个目录,因为只有第一个目录受四个章节的限制,所以这个目录的内容可以非常的详尽。第二个目录就是分区表中的扩展分区了,其中定义的章节,就是硬盘中的逻辑分区,不是很难理解吧?
明白了这一点,我们来看看Linux和Windows对于分区不同的表示方法:
可能您已经很熟悉Windows了,它使用盘符来表示分区,比如 C: D: E: ,每一个分区使用一个盘符来标识,而且顺序可以颠倒, D: 并不一定就是您系统中的第二个分区。(如果您给第二个分区分配最后一个硬盘盘符,把所有的盘符按顺序排列好,并且重装一次系统,您就会理解什么叫作“头疼”了)
而在Linux中,分区是这样表示的
    /dev/hda    /dev/hda1    /dev/hda2    /dev/hda5    /dev/sdb1  [/pre]以 /dev/hda5 为例:
因为在Linux中,每一个设备都是用 /dev/ 文件夹下的一个文件来表示,所以 /dev/hda5 中, /dev/ 表示的是根目录下的dev目录,我们来看剩下的部分 hda5 。
前两位的字母 hd 表示这是一块IDE硬盘,如果是 sd ,则代表SATA硬盘,或者闪存等外设。
第三位的字母 a 表示这是该类型接口上的第一个设备。同理, b、c、d…… 分别代表该类型接口上的第二三四……个设备。例如 hdc 表示第二个IDE接口上的主硬盘(每个IDE接口上允许一个主设备和一个从设备)。
第四位的数字 5 ,并不表示这是该硬盘中的第5个分区,而是第一个逻辑分区。因为在Linux中,为了避免不必要的混乱,分区的顺序是不能改变的,分区标识则由它们在硬盘中的位置决定。系统又要为所有可能的主分区预留标识,所以 1-4 一定不会是逻辑分区, 5 则是第一个逻辑分区,以此类推。

挂载分区
在Linux系统的安装过程中,您需要选择系统目录的挂载点。
我们知道,安装Windows时,我们可以选择把系统安装在哪一个分区,把系统挂载到分区上。而在Linux中则相反,我们要把分区挂载到系统中。
当我们使用Windows的安装方式,把系统挂载到分区上,我们就不可能把Windows目录放在C盘,而把MyDocuments目录放到其它分区。您或者出于习惯,或者出于数据安全方面的考虑,通常把文档放到其它分区中。但是Windows下很多软件保存文件的默认目录就是MyDocument 目录,这就比较不方便。
在系统安装完成后,我们还是可以将MyDocuments目录转移到其它分区中,不过有点麻烦,可能许多朋友还不知道怎么去做……
而任何一种Linux系统时,我们可以在系统安装时就把分区挂载到目录下, /home 目录相当于Windows的 MyDocuments ,我们可以把 /dev/hda5 挂载到此目录下,这样我们往 /home 目录里存东西的时候,其实保存在第一个扩展分区中。如果再一次安装系统,只要把这个分区挂载到 /home 目录下,那么进入新系统就像回家一样,真是太棒了。
理论上来讲,您可以将分区挂载到任何目录下面,您可以自定义挂载的路径。但是我们并不推荐您这么作,因为那没有任何意义。
系统安装程序向您建议的挂载目录,通常也是我们向您建议的,现在我们来了解一下,这些目录通常都是用来作什么的:
/ 根目录,唯一必须挂载的目录。不要有任何的犹豫,选一个分区,挂载它!(在绝大多数情况下,有2G的容量应该是够用了。当然了,很多东西都是多多益善的)
swap 交换分区,可能不是必须的,不过按照传统,并且照顾到您的安全感,还是挂载它吧。它的容量只要大于您的物理内存就可以了,如果超过了您物理内存两倍的容量,那绝对是一种浪费。
/home 前面已经介绍过了,这是您的家目录,通常您自己创建的文件,都保存在这里,您最好给它分配一个分区
/usr 应用程序目录。大部分的软件都安装在这里。如果您计划安装许多软件,建议您也给它分配一个分区
/var 如果您要作一些服务器方面的应用,可以考虑给它分配一个较大的分区
/boot 如果您的硬盘不支持LBA模式(我想那不太可能:),您最好挂载它,如果挂载硬盘的第一个分区,应该比较稳妥。一般来说,挂载的分区只要100M大小就足够了
提示
也许您注意到了,Windows中,盘符既用于表示硬件(硬盘上的分区),又用于表示系统中的路径。而Linux中,硬件就是硬件,路径就是路径,不会混淆在一起,简单直接!

论坛徽章:
0
3 [报告]
发表于 2011-05-26 14:58 |只看该作者
硬盘 结构 原理 磁道,扇区和柱面图示
们知道硬盘中是由一片片的磁盘组成的,大家可能没有打开过硬盘,没见过它具体是什么样.不过这不要紧.我们只要理解了什么是磁道,扇区和柱面就够了.

在下图中,我们可以看到一圈圈被分成18(假设)等分的同心圆,这些同心圆就是磁道(见图).不过真打开硬盘你可看不到.它实际上是被磁头磁化的同心圆.如图可以说是被放大了的磁盘片.那么扇区就是每一个磁道中被分成若干等分的区域.相邻磁道是有间隔的,这是因为磁化单元太近会产生干扰.一个小软盘有80个磁道,硬盘嘛要远远大于此值,有成千上万的磁道.每个柱面包括512个字节。






那么什么是柱面呢?看下图,我们假设它只有3片.每一片中的磁道数是相等的.从外圈开始,磁道被分成0磁道,1磁道,2磁道......具有相同磁道编号的同心圆组成柱面,那么这柱面就像一个没了底的铁桶.哈哈,这么一说,你也知道了,柱面数就是磁盘上的磁道数.每个磁面都有自己的磁头.也就是说,磁面数等于磁头数.




硬盘的容量=柱面数(CYLINDER)*磁头数(HEAD)*扇区数(SECTOR)*512B.这下你也可以计算硬盘的一些参数了.

什么是簇?

文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。

为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。

硬盘的DOS管理结构

1.磁道,扇区,柱面和磁头数
  硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:
存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
要点:(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头
   (2)盘片被划分为多个扇形区域即扇区
   (3)同一盘片不同半径的同心圆为磁道
   (4)不同盘片相同半径构成的圆柱面即柱面
   (5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
   (6)信息记录可表示为:××磁道(柱面),××磁头,××扇区

2.簇
  “簇”是DOS进行分配的最小单位。当创建一个很小的文件时,如是一个字节,则它在磁盘上并不是只占一个字节的空间,而是占有整个一簇。DOS视不同的存储介质(如软盘,硬盘),不同容量的硬盘,簇的大小也不一样。簇的大小可在称为磁盘参数块(BPB)中获取。簇的概念仅适用于数据区。
本点:(1)“簇”是DOS进行分配的最小单位。
   (2)不同的存储介质,不同容量的硬盘,不同的DOS版本,簇的大小也不一样。
   (3)簇的概念仅适用于数据区。

3.扇区编号定义:绝对扇区与DOS扇区
  由前面介绍可知,我们可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域,或是说柱面/磁头/扇区与磁盘上每一个扇区有一一对应关系,通常DOS将“柱面/磁头/扇区”这样表示法称为“绝对扇区”表示法。但DOS不能直接使用绝对扇区进行磁盘上的信息管理,而是用所谓“相对扇区”或“DOS扇区”。“相对扇区”只是一个数字,如柱面140,磁头3,扇区4对应的相对扇区号为2757。该数字与绝对扇区“柱面/磁头/扇区”具有一一对应关系。当使用相对扇区编号时,DOS是从柱面0,磁头1,扇区1开始(注:柱面0,磁头0,扇区1没有DOS扇区编号,DOS下不能访问,只能调用BIOS访问),第一个 DOS扇区编号为0,该磁道上剩余的扇区编号为1到16(设每磁道17个扇区),然后是磁头号为2,柱面为0的17个扇区,形成的DOS扇区号从17到 33。直到该柱面的所有磁头。然后再移到柱面1,磁头1,扇区1继续进行DOS扇区的编号,即按扇区号,磁头号,柱面号(磁道号)增长的顺序连续地分配 DOS扇区号。
公式:记DH--第一个DOS扇区的磁头号
    DC--第一个DOS扇区的柱面号
    DS--第一个DOS扇区的扇区号
    NS--每磁道扇区数
    NH--磁盘总的磁头数
   则某扇区(柱面C,磁头H,扇区S)的相对扇区号RS为:
RS=NH×NS×(C-DC)+NS×(H-DH)+(S-DS)
   若已知RS,DC,DH,DS,NS和NH则
S=(RS MOD NS)+DS
H=((RS DIV NS)MOD NH)+DH
C=((RS DIV NS)DIV NH)+DC
要点:(1)以柱面/磁头/扇区表示的为绝对扇区又称物理磁盘地址
   (2)单一数字表示的为相对扇区或DOS扇区,又称逻辑扇区号
   (3)相对扇区与绝对扇区的转换公式

4.DOS磁盘区域的划分
  格式化好的硬盘,整个磁盘按所记录数据的作用不同可分为主引导记录(MBR:Main Boot Record),Dos引导记录(DBRos Boot Record),文件分配表(FAT:File Assign Table),根目录(BD:Boot Directory)和数据区。前5个重要信息在磁盘的外磁道上,原因是外圈周长总大于内圈周长,也即外圈存储密度要小些,可靠性高些。
要点:(1)整个硬盘可分为MBR,DBR,FAT,BD和数据区。
   (2)MBR,DBR,FAT,和BD位于磁盘外道。

5.MBR
  MBR位于硬盘第一个物理扇区(绝对扇区)柱面0,磁头0,扇区1处。由于DOS是由柱面0,磁头1,扇区1开始,故MBR不属于DOS扇区,DOS不能直接访问。MBR中包含硬盘的主引导程序和硬盘分区表。分区表有4个分区记录区。记录区就是记录有关分区信息的一张表。它从主引导记录偏移地址 01BEH处连续存放,每个分区记录区占16个字节。
分区表的格式
分区表项的偏移 意义   占用字节数
   00 引导指示符 1B
   01 分区引导记录的磁头号 1B
   02 分区引导记录的扇区和柱面号 2B
   04 系统指示符 1B
   05 分区结束磁头号 1B
   06 分区结束扇区和柱面号 2B
   08 分区前面的扇区数 4B
   0C 分区中总的扇区数 4B
4个分区中只能有1个活跃分区,即C盘。标志符是80H在分区表的第一个字节处。若是00H则表示非活跃分区。例如:
80 01 01 00 0B FE 3F 81 3F 00 00 00 C3 DD 1F 00
00 00 01 82 05 FE BF 0C 02 DE 1F 00 0E 90 61 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
要点:(1)MBR位于硬盘第一个物理扇区柱面0,磁头0,扇区1处。不属于DOS扇区,
   (2)主引导记录分为硬盘的主引导程序和硬盘分区表。

6.DBR
  DBR位于柱面0,磁头1,扇区1,即逻辑扇区0。DBR分为两部分:DOS引导程序和BPB(BIOS参数块)。其中DOS引导程序完成DOS系统文件(IO.SYS,MSDOS.SYS)的定位与装载,而BPB用来描述本DOS分区的磁盘信息,BPB位于DBR偏移0BH处,共13字节。它包含逻辑格式化时使用的参数,可供DOS计算磁盘上的文件分配表,目录区和数据区的起始地址,BPB之后三个字提供物理格式化(低格)时采用的一些参数。引导程序或设备驱动程序根据这些信息将磁盘逻辑地址(DOS扇区号)转换成物理地址(绝对扇区号)。BPB格式
序号 偏移地址 意义
1 03H-0AH OEM号
2 0BH-0CH 每扇区字节数
3 0DH 每簇扇区数
4 0EH-0FH 保留扇区数
5 10H FAT备份数
6 11H-12H 根目录项数
7 13H-14H 磁盘总扇区数
8 15H 描述介质
9 16H-17H 每FAT扇区数
10 18H-19H 每磁道扇区数
11 1AH-1BH 磁头数
12 1CH-1FH 特殊隐含扇区数
13 20H-23H 总扇区数
14 24H-25H 物理驱动器数
15 26H 扩展引导签证
16 27H-2AH 卷系列号
17 2BH-35H 卷标号
18 36H-3DH 文件系统号
DOS引导记录公式:
文件分配表≡保留扇区数
根目录≡保留扇区数+FAT的个数×每个FAT的扇区数
数据区≡根目录逻辑扇区号+(32×根目录中目录项数+(每扇区字节数-1))DIV每扇区字节数
绝对扇区号≡逻辑扇区号+隐含扇区数
扇区号≡(绝对扇区号MOD每磁道扇区数)+1
磁头号≡(绝对扇区号DIV每磁道扇区数)MOD磁头数
磁道号≡(绝对扇区号DIV每磁道扇区数)DIV磁头数
要点:(1)DBR位于柱面0,磁头1,扇区1,其逻辑扇区号为0
   (2)DBR包含DOS引导程序和BPB。
   (3)BPB十分重要,由此可算出逻辑地址与物理地址。

7.文件分配表
  文件分配表是DOS文件组织结构的主要组成部分。我们知道DOS进行分配的最基本单位是簇。文件分配表是反映硬盘上所有簇的使用情况,通过查文件分配表可以得知任一簇的使用情况。DOS在给一个文件分配空间时总先扫描FAT,找到第一个可用簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内。即形成了“簇号链”。FAT就是记录文件簇号的一张表。FAT的头两个域为保留域,对FAT12来说是3个字节,FAT来说是4个字节。其中头一个字节是用来描述介质的,其余字节为FFH 。介质格式与BPB相同。
第一个字节的8位意义:
7 6 5 4 3 2 1 0
└─────-┘ │ │ │┌0非双面
置1 │ │ └┤
│ │ └1双面
│ │┌0不是8扇区
│ └┤
│ └1是8扇区
│┌0不是可换的
└┤
└1是可换的
FAT结构含义
FAT12 FAT16 意义
000H 0000H 可用
FF0H-FF6H FFF0H-FFF6H 保留
FF7H FFF7H 坏
FF8H-FFFH FFF8H-FFFFH 文件最后一个簇
×××H ××××H 文件下一个簇
对于FAT16,簇号×2作偏移地址,从FAT中取出一字即为FAT中的域。
逻辑扇区号=数据区起始逻辑扇区号+(簇号-2)×每簇扇区数
簇号=(逻辑扇区号-数据区起始逻辑扇区号)DIV每簇扇区数+2
要点:(1)FAT反映硬盘上所有簇的使用情况,它记录了文件在硬盘中具体位置(簇)。
   (2)文件第一个簇号(在目录表中)和FAT的该文件的簇号串起来形成文件的“簇号链”,恢复被破坏的文件就是根
据这条链。
   (3)由簇号可算逻辑扇区号,反之,由逻辑扇区号也可以算出簇号,公式如上。
   (4)FAT位于DBR之后,其DOS扇区号从1开始。
8.文件目录
  文件目录是DOS文件组织结构的又一重要组成部分。文件目录分为两类:根目录,子目录。根目录有一个,子目录可以有多个。子目录下还可以有子目录,从而形成“树状”的文件目录结构。子目录其实是一种特殊的文件,DOS为目录项分配32字节。目录项分为三类:文件,子目录(其内容是许多目录项),卷标(只能在根目录,只有一个。目录项中有文件(或子目录,或卷标)的名字,扩展名,属性,生成或最后修改日期,时间,开始簇号,及文件大小。
目录项的格式
字节偏移 意义 占字节数
00H 文件名 8B
08H 扩展名 3B
0BH 文件属性 1B
0CH 保留 10B
16H 时间 2B
18H 日期 2B
1AH 开始簇号 2B
1CH 文件长度 4B
目录项文件名区域中第一个字节还有特殊的意义:00H代表未使用
05H代表实际名为E5H
EBH代表此文件已被删除
目录项属性区域的这个字节各个位的意义如下: 7 6 5 4 3 2 1 0
                      未 修 修 子 卷 系 隐 只
                      用 改 改 目 标 统 藏 读
                        标 标 录   属 属 属
                        志 志     性 性 性
注意:WINDOWS的长文件名使用了上表中所说的“保留”这片区域。
要点:(1)文件目录是记录所有文件,子目录名,扩展名属性,建立或删除最后修改日期。文件开始簇号及文件长度的一张
      登记表.
   (2)DOS中DIR列出的内容训是根据文件目录表得到的。
   (3)文件起始簇号填在文件目录中,其余簇都填在FAT中上一簇的位置上。

9.物理驱动器与逻辑驱动器
  物理驱动器指实际安装的驱动器。
  逻辑驱动器是对物理驱动器格式化后产生的。
要点:同上。

=================================================================================
fantaxy:
其实细节之外的最基本东西就是:磁道,扇区,柱面和磁头数
可以这么理解吗?:
1. 扇区
扇区不是扇形的,即不是两个半径之间的区域,而是个四边形:两个半径为两边,两个大小同心圆作为两外两边。
2. 磁道
磁道不是线性的,而是个区域,有两个大小同心圆组成
3. 柱面不是面而是号码相同的多个磁道组成的柱体
4. 磁头数:因为磁盘的双面存储性,使得计算时用磁头数而没有用盘片数
可以说:扇区是硬盘分割的最小单位。


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



另外如果想详细了解:硬盘+分区+fileSystem+file存取等细节,请看《鸟哥的Linux私房菜》--磁碟与档案系统一节,很很详细!http://blog.21ic.com/user1/4861/archives/2009/61984.html

LBA是Logincal   Block   Addeessing  简写,它的运行方式类似SCSI界面。BIOS传统的柱面/磁头/扇区/扇区数的参数,先被组合成连续的逻辑区块号码送至EIDE硬盘,然后由内部转换成大于1024柱面的真实柱面/磁头/扇区。现今504MB、850MB或1GB以上的IDE硬盘都支持LBA方式,您的硬盘如果不是用UNIX系统,就一定要选用这个方式,才能完全使用到100%的容量,同时发挥硬盘应有的传输率。LBA模式可支持的最大硬盘容量为8.4G。

论坛徽章:
0
4 [报告]
发表于 2011-05-30 21:17 |只看该作者
一、fdisk 的介绍

  fdisk - Partition table manipulator for Linux ,译成中文的意思是磁盘分区表操作工具;本人译的不太好,也没有看中文文档;其实就是分区工具

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

  二、合理规划您的硬盘分区

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

  《合理规划您的硬盘分区》

  三、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

  注:换算单位以硬盘厂家提供的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左右未划分空间,并且只能划分为链逻辑分区;

四、fdisk 对硬盘及分区的操作,进入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保存退出!!!

论坛徽章:
0
5 [报告]
发表于 2011-05-30 21:18 |只看该作者
 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保存退出
五、对分区进行格式化,以及加载

  先提示一下;用 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目录,然后存取文件了

  具体的权限方法,以及mount 更详细的用法,在以后我会专门写一个帖子;在一帖中放下所有的内容实在有点为难。

论坛徽章:
0
6 [报告]
发表于 2011-05-31 16:19 |只看该作者
通用线程: 高级文件系统实现者指南,第 3 部分

使用虚拟内存(virtual memory,VM)文件系统和绑定安装
Daniel Robbins (drobbins@gentoo.org), 总裁/首席执行官, Gentoo Technologies, Inc.
作者
Daniel Robbins 是 Gentoo Technologies,Inc. 的总裁/首席执行官,住在新墨西哥州的 Albuquerque,他是 Gentoo Linux(一种 PC 机上的高级 Linux)和 Portage系统(Linux 的下一代移植系统)的创建者。他还是 Macmillan 的书籍 Caldera OpenLinux Unleashed、 SuSE Linux Unleashed和 Samba Unleashed的特约作者。Daniel 从他二年级时接触到 Logo 编程语言和 Pac Man 游戏的潜在危险魔力后就被这股热流卷进了计算机中。这或许可以解释他为什么曾经是 SONY 电子出版/游戏公司的首席图形设计师了。Daniel 喜欢花时间和他的妻子 Mary 还有他刚出生的宝贝女儿 Hadassah 在一起。您可以通过 drobbins@gentoo.org联系他。

简介: 伴随着 Linux 2.4 版本的发行,出现了大量的文件系统可能性,其中包括 ReiserFS、XFS、GFS 和其它文件系统。这些文件系统听起来的确都很酷,但是它们真正能做些什么呢,擅长在哪些方面,以及在 Linux 产品环境下如何才能安全地使用它们呢?Daniel Robbins 通过向您展示如何在 Linux 2.4 的环境下建立这些新的高级文件系统来回答以上的问题。在这个部分,Daniel 简单地介绍了 tmpfs,一个基于 VM 的文件系统,还向您介绍了 2.4 版本的“绑定”安装功能带来的新的可能。

标记本文!

发布日期: 2001 年 9 月 01 日
级别: 初级
访问情况 2627 次浏览
建议: 0 (添加评论)
1 star2 stars3 stars4 stars5 stars 平均分 (共 6 个评分 )

在本系列我以前的文章中,我 介绍了创建日志和使用 ReiserFS 的好处,并 展示了如何安装一个稳固的基于 Linux 2.4 的 ReiserFS 系统。在本文中,我们要谈论几个相对次要的主题。首先,我们会简单地介绍一下 tmpfs,也就是我们知道的虚拟内存(virtual memory,VM)文件系统。Tmpfs 可能是现在 Linux 可以使用的最好的类似于 RAM 磁盘的系统,而且是 2.4 内核的一个新功能。然后,我们将简单地介绍另一个 2.4 内核的新功能,叫做“绑定安装”,它在安装(和重新安装)文件系统的时候带来了很大的灵活性。在下一篇文章中,我们会把重点集中在 devfs 上,之后,我们会花点时间来进一步熟悉新的 ext3 文件系统。

介绍 tmpfs

如果我必须一下子说清楚 tmpfs,我会说 tmpfs 就象虚拟磁盘(ramdisk),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。总而言之,这让 tmpfs 成为我有机会遇到的最好的基于 RAM 的文件系统。

tmpfs 和 VM

让我们来看看 tmpfs 更有趣的一些特性吧。正如我前面提到的一样,tmpfs 既可以使用 RAM, 也可以使用交换分区。刚开始这看起来可能有点武断,但请记住 tmpfs 也是我们知道的“虚拟内存文件系统”。而且,您可能也知道,Linux 内核的虚拟内存资源同时来源于您的 RAM 和交换分区。内核中的 VM 子系统将这些资源分配到系统中的其它部分,并负责在后台管理这些资源,通常是透明地将 RAM 页移动到交换分区或从交换分区到 RAM 页。

tmpfs 文件系统需要 VM 子系统的页面来存储文件。tmpfs 自己并不知道这些页面是在交换分区还是在 RAM 中;做这种决定是 VM 子系统的工作。tmpfs 文件系统所知道的就是它正在使用某种形式的虚拟内存。

不是块设备

这里是 tmpfs 文件系统另一个有趣的特性。不同于大多数“标准的”文件系统,如 ext3、ext2、XFS、JFS、ReiserFS 和其它一些系统,tmpfs 并不是存在于一个底层块设备上面。因为 tmpfs 是直接建立在 VM 之上的,您用一个简单的 mount 命令就可以创建 tmpfs 文件系统了。

# mount tmpfs /mnt/tmpfs -t tmpfs


执行这个命令之后,一个新的 tmpfs 文件系统就安装在 /mnt/tmpfs,随时可以使用。注意,不需运行 mkfs.tmpfs ;事实上,那是不可能的,因为没有这样的命令存在。在 mount 命令执行之后,文件系统立即就被安装并且可以使用了,类型是 tmpfs 。这和 Linux 虚拟磁盘如何使用大相径庭;标准的 Linux 虚拟磁盘是 块设备,所以在使用它们之前必须用您选择的文件系统将其格式化。相反,tmpfs 是一个文件系统。所以,您可以简单地安装它就可以使用了。

回页首

Tmpfs 的优势

动态文件系统的大小

您可能想知道我们前面在 /mnt/tmpfs 安装的 tmpfs 文件系统有多大。这个问题的答案有点意外,特别是在和基于磁盘的文件系统比较的时候。/mnt/tmpfs 最初会只有很小的空间,但随着文件的复制和创建,tmpfs 文件系统驱动程序会分配更多的 VM,并按照需求动态地增加文件系统的空间。而且,当 /mnt/tmpfs 中的文件被删除时,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源,这样做可以将 VM 返回到循环当中以供系统中其它部分按需要使用。因为 VM 是宝贵的资源,所以您一定不希望任何东西浪费超出它实际所需的 VM,tmpfs 的好处之一就在于这些都是自动处理的。 请参阅 参考资料。

速度

tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。即使用了一些交换分区,性能仍然是卓越的,当更多空闲的 VM 资源可以使用时,这部分 tmpfs 文件系统会被移动到 RAM 中去。让 VM 子系统自动地移动部分 tmpfs 文件系统到交换分区实际上对性能上是 好的,因为这样做可以让 VM 子系统为需要 RAM 的进程释放空间。这一点连同它动态调整大小的能力,比选择使用传统的 RAM 磁盘可以让操作系统有好得多的整体性能和灵活性。

没有持久性

这看起来可能不象是个积极因素,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。我想您可能猜到了 tmpfs 被称为“tmpfs”的一个原因,不是吗?然而,这实际上可以是一件好事。它让 tmpfs 成为一个保存您不需保留的数据(如临时文件,可以在 /tmp 中找到,还有 /var 文件系统树的某些部分)的卓越的文件系统。

回页首

使用 tmpfs

为了使用 tmpfs,您所需要的就是启用了“Virtual memory file system support(以前是 shm fs)”选项的 2.4 系列内核;这个选项在内核配置选项的“File systems”部分。一旦您有了一个启用了 tmpfs 的内核,您就可以开始安装 tmpfs 文件系统了。其实,在您所有的 2.4 内核中都打开 tmpfs 选项是个好主意,不管您是否计划使用 tmpfs。这是因为您需要内核 tmpfs 支持来使用 POSIX 共享的内存。然而, System V共享的内存不需要内核中有 tmpfs 就 可以工作。注意,您 不需要为了让 POSIX 共享的内存工作而安装 tmpfs 文件系统;您只需要在内核中支持 tmpfs 就可以了。POSIX 共享的内存现在使用得不太多,但这种情况可能会随着时间而改变。

避免低 VM 情况

tmpfs 根据需要动态增大或减小的事实让人疑惑:如果您的 tmpfs 文件系统增大到它耗尽了 所有虚拟内存的程度,而您没有剩余的 RAM 或交换分区,这时会发生什么?一般来说,这种情况是有点讨厌。如果是 2.4.4 内核,内核会立即锁定。如果是 2.4.6 内核,VM 子系统已经以很多种方式得到了修正,虽然耗尽 VM 并不是一个美好的经历,事情也不会完全地失败。如果 2.4.6 内核到了无法分配更多 VM 的程度,您显然不愿意不能向 tmpfs 文件系统写任何新数据。另外,可能会发生其他一些事情。首先,系统的其他一些进程会无法分配更多的内存;通常,这意味着系统多半会变得 极度缓慢而且几乎没有响应。这样,超级用户要采取必要的步骤来缓解这种低 VM 的情况就会很困难,或异常地耗时。

另外,内核有一个内建的最终防线系统,用来在没有可用内存的时候释放内存,它会找到占用 VM 资源的进程并终止该进程。不幸的是,这种“终止进程”的解决方案在 tmpfs 的使用增加引起 VM 耗尽的情况下通常会导致不良后果。以下是原因。tmpfs 本身不能(也不应该)被终止,因为它是内核的一部分而非一个用户进程,而且也没有容易的方法可以让内核找出是那个进程占满了 tmpfs 文件系统。所以,内核会错误地攻击它能找到的最大的占用 VM 的进程,通常会是 X 服务器(X server),如果您碰巧在使用它。所以,您的 X 服务器会被终止,而引起低 VM 情况的根本原因(tmpfs)却没有被解决。Ick.

低 VM:解决方案

幸运的是,tmpfs 允许您在安装或重新安装文件系统的时候指定文件系统容量的最大值上限。实际上,从 2.4.6 内核到 2.11g 内核,这些参数只能在 安装时设置,而不是重新安装时,但我们可以期望在不久的将来可以在重新安装时设置这些参数。tmpfs 容量最大值的最佳设置依赖于资源和您特定的 Linux 主机的使用模式;这个想法是要防止一个完全使用资源的 tmpfs 文件系统耗尽所有虚拟内存结果导致我们前面谈到的糟糕的低 VM 情况。寻找好的 tmpfs 上限值的一个好方法是使用 top 来监控您系统的交换分区在高峰使用阶段的使用情况。然后,确保指定的 tmpfs 上限稍小于所有这些高峰使用时间内空闲交换分区和空闲 RAM 的总和。

创建有最大容量的 tmpfs 文件系统很容易。要创建一个新的最大 32 MB 的 tmpfs 文件系统,请键入:

# mount tmpfs /dev/shm -t tmpfs -o size=32m


这次,我们没有把 tmpfs 文件系统安装在 /mnt/tmpfs,而是创建在 /dev/shm,这正好是 tmpfs 文件系统的“正式”安装点。如果您正好在使用 devfs,您会发现这个目录已经为您创建好了。

还有,如果我们想将文件系统的容量限制在 512 KB 或 1 GB 以内,我们可以分别指定 size=512k 和 size=1g 。除了限制容量,我们还可以通过指定 nr_inodes=x 参数限制索引节点(文件系统对象)。在使用 nr_inodes 时, x 可以是一个简单的整数,后面还可以跟一个 k 、 m 或 g 指定千、百万或十亿(!)个索引节点。

而且,如果您想把上面的 mount tmpfs 命令的等价功能添加到 /etc/fstab,应该是这样:

tmpfs        /dev/shm        tmpfs        size=32m        0        0


回页首

在现存的安装点上安装

在以前使用 2.2 的时候,试图在 已经安装了东西的安装点再次安装任何东西都会引发错误。然而,重写后的内核安装代码使多次使用安装点不再成为问题。这里是一个示例的情况:假设我们有一个现存的文件系统安装在 /tmp。然而,我们决定要开始使用 tmpfs 进行 /tmp 的存储。过去,您唯一的选择就是卸载 /tmp 并在其位置重新安装您新的 tmpfs/tmp 文件系统,如下所示:

#  umount /tmp
#  mount tmpfs /tmp -t tmpfs -o size=64m


可是,这种解决方案也许对您不管用。可能有很多正在运行的进程在 /tmp 中有打开的文件;如果是这样,在试图卸载 /tmp 时,您就会遇到如下的错误:

umount: /tmp: device is busy


然而,使用最近的 2.4 内核,您可以安装您新的 /tmp 文件系统,而不会遇到“device is busy”错误:

# mount tmpfs /tmp -t tmpfs -o size=64m


用一条命令,您新的 tmpfs /tmp 文件系统就被安装在 /tmp,并安装在已经安装的不能再被直接访问的分区 之上。然而,虽然您不能访问原来的 /tmp,任何在原文件系统上还有打开文件的进程都可以继续访问它们。而且,如果您 unmount 基于 tmpfs 的 /tmp,原来安装的 /tmp 文件系统会重新出现。实际上,您在相同的安装点上可以安装任意数目的文件系统,安装点就象一个堆栈;卸载当前的文件系统,上一个最近安装的文件系统就会重新出现。

回页首

绑定安装

使用绑定安装,我们可以将所有甚至 部分已经安装的文件系统安装到另一个位置,而在两个安装点可以同时访问该文件系统。例如,您可以使用绑定安装来安装您现存的根文件系统到 /home/drobbins/nifty,如下所示:

#  mount --bind / /home/drobbins/nifty


现在,如果您观察 /home/drobbins/nifty 的内部,您就会看到您的根文件系统(/home/drobbins/nifty/etc、/home/drobbins/nifty/opt 等)。而且,如果您在根文件系统修改文件,您在 /home/drobbins/nifty 中也可以看到所作的改动。这是因为它们是同一个文件系统;内核只是简单地为我们将该文件系统映射到两个不同的安装点。注意,当您在另一处安装文件系统时,任何安装在绑定安装文件系统 内部的安装点的文件系统都不会随之移动。换句话说,如果您在单独的文件系统上有 /usr,我们前面执行的绑定安装就会让 /home/drobbins/nifty/usr 为空。您会需要附加的绑定安装命令来使您能够浏览位于 /home/drobbins/nifty/usr 的 /usr 的内容:

#  mount --bind /usr /home/drobbins/nifty/usr


绑定安装部分文件系统

绑定安装让更妙的事情成为可能。假设您有一个 tmpfs 文件系统安装在它的传统位置 /dev/shm,您决定要开始在当前位于根文件系统的 /tmp 使用 tmpfs。虽然可以在 /tmp(这是可能的)安装一个新的 tmpfs 文件系统,您也可以决定让新的 /tmp 共享当前安装的 /dev/shm 文件系统。然而,虽然您可以在 /tmp 绑定安装 /dev/shm 就完成了,但您的 /dev/shm 还包含一些您不想在 /tmp 出现的目录。所以,您怎么做呢?这样如何:

# mkdir /dev/shm/tmp
# chmod 1777 /dev/shm/tmp
# mount --bind /dev/shm/tmp /tmp


在这个示例中,我们首先创建了一个 /dev/shm/tmp 目录,然后给它 1777 权限,对 /tmp 适当的许可。既然我们的目录已经准备好了,我们可以安装,也只能安装 /dev/shm/tmp 到 /tmp。所以,虽然 /tmp/foo 会映射到 /dev/shm/tmp/foo,但您没有办法从 /tmp 访问 /dev/shm/bar 文件。

正如您所见,绑定安装非常强大,让您可以轻易地修改文件系统设计,丝毫不必忙乱。下一篇文章,我们会谈到 devfs,至于现在,您也许会想看看下面的参考资料。

参考资料

    * 您可以参阅本文在 developerWorks 全球站点上的 英文原文.

    * 阅读 Daniel 本系列以前的文章,他在那里 介绍了创建日志和使用 ReiserFS 的好处,并 展示了如何安装一个稳固的基于 Linux 2.4 的 ReiserFS 系统。

    * Linux Weekly News是与最新的内核开发保持同步的很好的参考资料。

    * util-linux(最新链接)收集了各种重要的 Linux 应用程序,包括 mount 和 unmount 。您也许希望升级到最新的可用版本,这样您就可以使用 mount --bind 语法(而不是使用 mount -o bind )。

    * 因为 tmpfs 和绑定安装相对来说比较新,大部分都是没有文档说明的内核新特性,学习它们的最好方法就是学习 Linux 内核源代码的相关部分。

    * Namesys 页面 就是学习更多关于 ReiserFS 的地方。

    * ReiserFS 邮件清单是更深入了解当前ReiserFS 信息的很好的资源。一定还要看看 ReiserFS 邮件清单归档。

    * 在 Juan I. Santos Florido 的 Linux Gazette Journal File Systems回顾中,您可以找到 UFS、ext2 和 ReiserFS 之间元数据差异的很深入的讲解和其它一些内容。

    * 阅读 developerWorks上 Steve Best 的 JFS 概观。

    * 参加 developerWorks上 Daniel 的免费的 JFS 基础教程。

    * 浏览 developerWorks上 更多 Linux 参考资料。

    * 浏览 developerWorks上 更多开放源代码资源。

关于作者
作者

Daniel Robbins 是 Gentoo Technologies,Inc. 的总裁/首席执行官,住在新墨西哥州的 Albuquerque,他是 Gentoo Linux(一种 PC 机上的高级 Linux)和 Portage系统(Linux 的下一代移植系统)的创建者。他还是 Macmillan 的书籍 Caldera OpenLinux Unleashed、 SuSE Linux Unleashed和 Samba Unleashed的特约作者。Daniel 从他二年级时接触到 Logo 编程语言和 Pac Man 游戏的潜在危险魔力后就被这股热流卷进了计算机中。这或许可以解释他为什么曾经是 SONY 电子出版/游戏公司的首席图形设计师了。Daniel 喜欢花时间和他的妻子 Mary 还有他刚出生的宝贝女儿 Hadassah 在一起。您可以通过 drobbins@gentoo.org联系他。

论坛徽章:
0
7 [报告]
发表于 2011-05-31 16:23 |只看该作者
http://www.linux520.net/disk/2010091444.html

Linux格式化命令是什么?下面我们通过图文章教程来详细讲解一下fdisk命令。

查看当前Linux分区情况,可输入这条Linux命令:fdisk -l 我当前的分区情况如下:


从上面的linux命令截图中我们可以看出我有一个硬盘没有分区,现在我就来通过linux命令来对这个/dev/hdb划分分区。
在光标闪动的地方输入:fdisk /dev/hdb
1600115002_1.jpg

在linux命令内再输入m,可以查看fdisk命令的主菜单:
16001155R_2.jpg

我们主要掌握的是fdisk命令以下几个参数: 详细说参照
D删除一个分区
N创建一个分区
Q 不保存退出
T改变分区ID
W保存退出

我现在是要将新添加的硬盘做个一个分区来添加,输入linux命令:
160011M32_3.jpg

我选择主分区:输入p,再输入起始柱面,因为是块新盘,所以我输入1,再输入结束柱面,我是想把所有空间作为一个分区,所我我输入结束的柱面17753。这些数值你在操作的时候是不一样的。根据自己需要来增加,也可以通过+size,+sizeM,+sizeK来设定分区的容量大小。我操作的linux玲结果如下:
160011A91_4.jpg

再通过p命令查看一下刚才添加的新分区:
16001110C_5.jpg

可以看出新添加的分区ID是83,代表Linux分区,我们没必要去改了,如果想要其它分区,可以先输入l,查看一下每种分区格式的ID,可以输入t,对照下表中输入ID就可以了.
160011K17_6.jpg

这里我不改变分区的ID了,按w保存分区。表明新的分区已经建立好。160011J27_7.jpg








注意:The new table will be used at the next reboot没?意思就是这个分区在下次启动的时候才能使用,我们可以使用一个命令,让这个分区马上生效,输入#partprobe,自己使用命令补全。
再用linux命令fdisk –l来查看一下分区详细信息:

linux分区是建立那了,但只有格式化了才可以用。接下来要格式化这个分区。(Msfs命令怎么使用的,您可以参考一下本站其它文章)


通过以上的linux命令,我们就可以使用Linux挂载命令来挂载这个分区了。

论坛徽章:
0
8 [报告]
发表于 2011-05-31 16:44 |只看该作者
、确定使用哪一种启动管理器
  我总对一些底层的第三方工具心存畏惧,属于那种宁愿用软盘,也不敢用第三方系统引导软件的小胆用户。搞到一块30G硬盘后,就为如何安装多个操作系统头痛不已。理论上说,一个硬盘支持四个扩展分区,就是说应当能够支持四个操作系统。所以理想状态下,我可以同时安装Windows 2000(打死我也不会不用NTFS的啦),Windows 98,Linux,FreeBSD这样四种操作系统,如果愿意把Windows 98装在FAT上,那么它还可以和一个DOS操作系统共存,这样就有五种操作系统啦!

   可是用哪一种启动管理工具呢?目前简要分析如下:
   DOS没有多重启动功能。
   Windows 98支持多重启动,但只支持同一分区下的DOS。
   Windows 2000支持多重启动,好像对操作系统无限制,但需要会修改boot.ini文件。
   Linux支持多重启动,但如果LILO不自动识别的话,我就不知道如何做了。
   FreeBSD的Boot Manager对多重启动的支持也很好,好像是针对扩展分区的,与操作系统无关。
   咋一看,Windows 2000与FreeBSD都适合用来做多启动管理,可惜我试了N次,发现Windows 2000与Windows NT不同,它好像非得占有硬盘最头上的区域不可,否则死活启动不了。接下来只好试试Windows 2000了。

二、如何使用Windows 2000的多重引导管理工具

   我的四个扩展分区依序是DOS分区,Linux分区,FreeBSD分区,Windows 2000分区,想要让Windows 2000识别Linux与FreeBSD分区并自动支持多启动显然是想也别想了,肯定得自己动手了。由于Windows 2000允许通过将其他扩展分区的头512个字节存储在文件中作为引导选择,所以不论它是否“认识”其他操作系统,都可以支持多重引导(除非那种操作系统和Windows 2000一样霸道,非要整个硬盘的头扇区不可 )。

   注意,DOS的fdisk在这里颇不顺手,Linux和FreeBSD的分区工具似乎好用得多。如果没有把握的话,Linux分区划在前8G比较保险。

   安装的顺序可以参考如下:先装DOS,再装Windows 98,再装Linux,LILO安装在他自己的分区上(由于还要分Wrap分区,通常hda2被割成多个分区,LILO会被安装在hda5上),再装 FreeBSD,选择不装Boot Manager,最后安装Windows 2000。

   也许有的网友会发现,将安装LILO安装到hda5而不是hda上将不能完成Linux的安装,其实没有关系,由于事先安装了DOS,可以从DOS命令行上运行Loadlin进入Linux,通常这些工具安装光盘上都有,并附有说明的。

   现在四个操作系统都装好了,Windows 2000会支持Windows 98,进了Windows 98就能选择进入DOS,那么如何获取另两个扩展分区的头扇区来做支持Linux与FreeBSD的多启动呢?

   建议使用Linux或FreeBSD的DD命令。设Linux的根目录在hda5,FreeBSD安装在hda3上,在Linux下运行

   dd bs=512 count=1 if=/dev/hda5 of=bootsect.lnx

   dd bs=512 count=1 if=/dev/hda3 of=bootsect.bsd

   然后再mount到DOS分区,将bootsect.lnx与bootsect.bsd拷贝到C盘根目录下,就基本上大功告成了

   最后进入Windows 2000,编辑C盘根目录下的boot.ini文件,加入以下两行:

   C:BOOTSECT.LNX="Linux"

   C:BOOTSECT.BSD="FreeBSD"

   然后就可以重新启动乐。

   三、升级到Windows Me

   Windows Me是Windows 9x系列的升级版本。当从Windows 98升级到Windows Me后,如果它在C盘下找到boot.ini文件,会自动修改为支持Microsoft Windows Millennium Edition的多启动。但是这时候,许多用户会沮丧地发现,他们再也不能进入DOS环境了。

   其实Windows Me的引导过程与Windows 9x并没有任何区别。有许多方法可以支持,我建议大家去http://www.winimage.com/bootpart.htm下载免费的BootPart啦。它的用途很多,针对目前讨论的情况只需运行如下命令行:

   BOOTPART DOS622 C:BOOTSECT.622 "MS-Dos 6.22"
   BOOTPART WIN95 C:BOOTSECT.ME "Windows Me"
   BOOTPART REWR99vEROOT:C:
   就会自动生成新的boot.ini,下面就重启动看效果吧,在Windows 2000的启动选单同时出现了5种操作系统。
Linux学习网收集整理 ,(如果您觉得本站不错,请告诉身边的朋友,或转载到论坛、百度知道、贴吧等,记得带网址哟,不胜感激!理论支持:

硬盘有3种分区类型:主分区(Primary Partition)、扩展分区(Extended Partition)和
逻辑分区。一块硬盘最多只能分成4个主分区(Primary分区),或者是3个主分区和一个扩
展分区,而在扩展分区内可以划分任意多的逻辑分区。有些操作系统是一定要安装在主分区
上的,比如win98,Sco Unix等,好在Win2000和Linux可以安装在逻辑分区上,所以在一块
硬盘上安装4个以上的操作系统就完全成为可能。

下面简单谈谈一般的硬盘引导过程。

在PC机接通电源后,最初的启动由BIOS完成。当自检结束后,BIOS尝试读入硬盘的第一个扇
区,把它看作引导扇区(在这里假设硬盘是第一个引导设备(First Boot Device))。由
于引导扇区比较小,通常它主要任务是读入第二个引导程序,第二个引导程序再读入第三个,
直到整个操作系统被完全读入。硬盘的引导扇区的结构相对比较简单。它的长度总是512字
节。上面说到,硬盘可以被分成很多个分区,但是BIOS根本不管分区信息,仍读入第一个分
区(主引导记录Master Boot Record(MBR)),主引导记录(MBR)包含了主引导程序和描述
该硬盘分区的所有分区表。硬盘可以有4个主分区,假如它们不够用,可以设置所谓的扩展
分区。扩展分区包含至少一个逻辑分区。扩展分区的第一个扇区结构类似MBR,它的分区表的
第一表项对应第一个逻辑分区。如果存在第二个逻辑分区,那么分区表的第二个表项就包含
了一个指针。这个指针指向第一个逻辑分区后面的一个地址;这个地址包含一个分区表。该
分区表的第一表项对应第二个逻辑分区。这样就组成一个链表,从而扩展分区可以有任意多
的逻辑分区。每一个主分区和扩展区都包含一个引导扇区。系统只能从这几个地方之一启
动。MBR的代码要作以下的操作:
   1:确定活动分区。
  2:使用BIOS,将活动分区的启动扇区读入。
   3:跳到启动扇区的0位置。

MBR的空间足够完成这些工作。如上所述,每个分区理论上包含一个引导扇区,而且存在的
第二个硬盘也包含和第一个类似的结构。MBR完全可以容纳一个复杂的引导管理程序(Boot
Manager),完全可以动态的决定活动分区。本文中采用的PowerQuest 公司的BootMagic就是
一种功能比较强大的引导管理程序,可以帮助我们在一台 PC 上运行多个操作系统,能够在
进入操作系统之前进行自由的切换。

硬件平台:

AMD 毒龙750,精英K7SEM 730s主板,HY 128M Pc133,西部数据40G硬盘(5400转)

软件准备:

PartitionMagic 6.0简体中文版(也就是硬盘分区魔术师PQMagic)和它的孪生兄弟
BootMagic,虚拟光驱DAEMON Tools V2.80(可以到华军下载),Windows98,Windows
2000 Advance Server,Sco Unix Open Server 5.05,RedHat Linux 7.1

硬盘规划:

硬盘开始的2G用来装Sco Unix Open Server 5.05,因为这个系统比较老了,可能会有1024
柱面限制(通常是前面2 GB),所以放在前面比较保险。后面的硬盘空间可以随意划分,我
把紧跟着Unix的4G空间给Windows 2000,接着4G是Windows98,而Linux则要装在逻辑分区
了。

安装步骤:

一、创建分区。

如果你的机子已经安装了win98,把PQMagic6.0装上就可以划分硬盘了,不过我还是强烈建
议你把PQMagic6.0目录下的dos目录拷贝到一个逻辑分区下,这样如果你要重装win98的话就
不愁找不到Dos下比较好的分区工具了。当然你也可以把dos版本的PQMagic6.0放在软盘上,
不过要3张软盘,点击“开始”菜单中的PowerQuest PartitionMagic Pro 6.0的“创建应急
磁盘”链接,按提示做即可。
划分好后的分区如图1所示,安装Sco Unix的2G空间不用分区(理由见下面Unix的安装过程
),别的分区可以预先创建好,也可以在安装的时候再创建,不过我觉得还是事先在
PQMagic6.0下做要好一点,毕竟是图形界面,操作起来比较直观一些,不太容易出错。注意
划分完后把想要安装window98的那个分区给激活,我们来做第二步。

二、安装Windows 98

□□□□□□□□□□□□(此处略去安装过程3000字)。第一个安装Win98操作系统
不是没有道理的,因为Win98的兼容性好,适应性广,几乎没有什么硬件的驱动程序是不支
持Win98的,而且在Win98下查找硬件的型号,驱动比较方便。记住装好win98后把
PQMagic6.0和BootMagic装上,他们都是在同一个安装包里面的。安装BootMagic时会自动检
测可以引导的操作系统,如果你的硬盘里只有一个win98,界面如图2所示:
不要忘了要选中“启用BootMagic”选项。这样以后每次计算机启动时都会先用BootMagic引
导你的操作系统了。

三、安装Sco Unix Open Server 5.05

在BIOS里把第一个启动设备(First Boot Device)设置为CD-ROM,插入Unix安装光盘后启
动机器,出现Boot:提示符时,按回车键,系统显示完硬件配置信息后,开始进入安装过
程。

屏幕提示ress <Enter> to begin installation.按回车。
Media device to used:IDE CD ROM
IDE Controllerrimary Or Secondary
Master or Slave:Master Or Slave
用空格键选择相应的设置,敲回车确认
Keyboard:US English
Licence number:输入序列号
Licence Code:输入序列代码
Licence Data:输入序列数据
选择"Upgrade"(升级)或"Fresh"(更新),选择"Fresh"继续安装.
System name:机器名
Domain name:域名(可以不要)
Security profile:Traditoual(安全级别:传统)
Time Zone:China Stand Time (中国标准时间)
Languag:Standard C(English)
Stand Enterprise System Configuration:Yes
Lightweigh Character terminal Configuration:No
If you run large database produets Choose the following:No(数据库支持)回车

到了“Hard disk setup”,该项定义了如何划分硬盘,它的默认值为“Preserv e
layout: Bad Tracking On”,按空格键修改默认的配置,说明于下:

Preserve existing layout:保留硬盘中已有的分区和文件系统
Use whole disk for Unix: 把整个硬盘都用于Unix系统
Customize: 自定义硬盘的使用方法
Interactive fdisk/divvy: 使用系统工具fdisk和divvy交互式配置硬盘

我们选择Interactive fdisk/divvy方式,如果你对Unix的文件系统大小的分配不清楚的话
,可以选Customize方式进去模拟一下,比如可以看看占用2G硬盘的情况下,系统分配给
Swap的大小,只要不保存配置退出重新配置即可。

NetWork Cardeferred (不检测,其实选AutoDetcct十有八九也是检测不到的)
NetWork address: No networking card configurad
Viedeo and graphics:缺省
Mouse: Low Resolution Keyboard Mouse
Email: MMDF
root Password:超级用户口令(回车)

到了System V Hard disk Initialization(硬盘初始化)
选1.Continue with Hard disk initialization回车
Hard disk driver0 configuration按q退出

下面到了划分Unix分区了:

选3.Use Rest of Disk for Unix(用剩余的(没有使用的)磁盘空间装Unix)

这也就是我为什么用Pqmagic划分硬盘时把开头的2G空间空出来不予分配的原因,这样由
Unix安装程序把2G硬盘直接拿来用,省了我们很多事情。(注意:千万不要选择2.Use
Entire disk for UNIX,否则整块硬盘都给Unix用了,那么你原来的数据也就……L!!!)


对UNIX系统分区进行确认后,选q退出

接着是:

This device contains a valid division table.additional (non-root)filesystems
can be preserved across this reinstallation .if you wish to be able to preserve
these filesystems later,you must not change the currentlimit of the bad track
table,which is 15 bad tracks.do you wish to leave it unchanged?(y/n)
选y,回车

1.Print Current Bad Track Table
2.Scan Disk(You may choose Read-Only or Destructive later)
3.Add entries to Current Bad Track Table by Cylinder/Head Number
4.Add entries to Current Bad Track Table by Sector Number
5.Delete Entries Individually from Current Bad Track Table
6.Delete All Entries from Current Bad Track Table
Enter your choice or q to quit: 2
输入q,退出对硬盘的扫描。(在Pqmagic里扫描不是更好么,浪费时间)

Enter the number of bad tracks to allocate for Cor press <Return> to usr the
recommanded value of 15 回车
Do you what to preserve your additional filesystem/divisions(Y/N)?Y回车
Please enter the Swap-space alloation or press <Return> to get the default
alloation of ....1K blocks.回车
Please enter the boot-space allocation, or press <Return> to get the default
allocation of 15000K block:回车
Do you want a separate /u filesystem(Y/N)?N回车
Do you which to make any manual adjrestents to the size or names of the
filesystems or swap area before they are created on the hard disk(Y/N)?N回车(不
用了,您老人家就看着办吧)
mount the swap [/swap]?Yes回车

机器开始自动安装,我的机器安装大约要30分钟。安装完毕后重新启动,咦,怎么只有
Windows98选项啊,Sco Unix呢?别急,进入win98后,运行BootMagic配置,添加Os,
BootMagic会检测到Unix分区为Unix SysV/386,如图3所示。选中启用BootMagic,按“保存
/退出”按钮退出BootMagic。再次重启,呵呵,启动时BootMagic里多了一个Unix SysV/386
选项,选中后回车,就进入Sco Unix了,运行程序一切正常,Unix安装完毕!!!

四、安装Windows2000 Advanced Server

1、先用Pqmagic把装有Win98的分区给隐藏起来,同时激活要安装win2000的分区。这样实际
上是想告诉Win2000:我的机子上没有装Win98!!!好处是:①解决了进入Win98和Win2000
时候逻辑盘的盘符不统一的问题。②Win98和Win2000相互独立,各自为政,Win2000不会把
Osloader文件放在win98的盘上,所以如果重装Win98的话对Win2000的启动一点影响都没有
,当然重装Win2000对Win98也是没任何影响的。

2、用Win98启动盘启动机器后,强烈建议先运行Dos下的硬盘加速软件Smartdrv.exe后再安
装Win2000,否则开始拷贝文件时后奇慢无比,本人的机子用了Smartdrv后在Dos下的安装只
要2分钟,不要Smartdrv则要花45分钟。Smartdrv在win98的Windows目录下可以找到,win98
的安装光盘里也有,把Smartdrv.exe复制到win98启动盘里,软盘启动后直接运行就可以
了。然后进入安装盘的I386目录输入Winnt回车,就开始进入Dos下的安装了。□□□□□□
□□□□□(此处略去安装过程2000字)

3、Win2000在Dos下复制完安装文件后会重新启动并进入Windows下的安装过程,不过和前面
Unix的重新启动类似,BootMagic里还没有加入Win2000的选项,我们进入win98运行
BootMagic把这项给加上,重起就可以继续win2000的安装了。□□□□□□□□□□□(此
处略去安装过程3000字)在选择分区格式时,如果你想要Win2000的所有功能,那你应
该选NTFS文件格式,如果你只是图Win2000的稳定性并且希望获得和win98下的软件最大兼容
性,那么就应该选FAT32格式,因为有些软件是不支持NTFS格式的。

4、Win2000安装好后,在桌面“我的电脑”图标上点右键——属性——高级——启动和故障
恢复,把“显示操作系统列表”的复选框的小勾去掉,这样每次win2000启动时就不会出现
让你选择进入Previous Operating System或者是Microsoft Windows Advanced Server的画
面,直接就进入Win2000了。

五、安装Redhat Linux 7.1

我安装方法有点特殊,我是直接从硬盘安装的(连买光盘的钱都省了)。

1、先把Linux第一张光盘镜像文件(我用的文件名是:seawolf-i386-disc1.iso)用
DAEMON Tools给挂上(Mount),把虚拟光盘的dosutils目录复制到和光盘镜像文件同一个
分区的根目录下,最好是光盘镜像文件也在根目录下。(安装Linux 7.1至少需要两个光盘
镜像文件seawolf-i386-disc1.iso和seawolf-i386-disc2.iso。)

2、开始菜单——关闭系统——重新启动计算机并切换到MS-DOS方式,进入纯Dos环境。

3、跑到刚才拷贝的dosutils目录下运行autoboot.bat,就进入和用光盘启动一样的安装界面
了。

4、语言(Language):English,键盘(Keyboard):us,安装方法(Install Method)选
Hard drive(硬盘安装)。接着是选有光盘镜像文件的分区和路径,要是拿不准,可以一个一
个的试嘛。如果是放在根目录下的,在Directory holding imagies后面输入一个“/
“就行了,注意哦,和Dos下的斜杠是相反的哦。

5、What type of system would you like to install?(想要安装什么类型的系统)

Workstation(工作站),不过它会把Lilo安装到MBR,覆盖了BootMagic,所以不能采用。
   Server System(服务器系统),我没有试过,害怕所有的数据都没有了
   Custom System(定制系统),本文采用的就是它。
   Update Existing Installation(升级已有的系统)

选Custom System到了下一步。

6、Disk Setup

选择Disk Druid,可以看到当前硬盘分区的所有信息。

hda1     2000M    2000M    GNU HURD(给Sco Unix用的)

hda3     4000M    4000M    Hidden Win95 FA(给Win2000用的)

hda4     4000M    4000M    Win95 FAT32(给Win98用的)

hda5     2596M    2596M    Linux Native(给linux用的)

hda6     407M    407M    Linux Swap(给linux用的交换区)

hda7……hda9(逻辑FAT32分区的信息)

为什么没有hda2分区,我现在也没有搞明白,不过总共加起来的容量是正确的。移动
光标键选中hda5,注意下面的Add,Edit,Delete,Ok,Back没被选中(不反显),回车,
弹出一个标题为:Edit Partition:/dev/hda5的对话框,MountPoint:输入“/“即可,TAB
键选OK,接着1024柱面警告,Yes,分区格式化选择(choose partition to Format),默
认是/dev/hda5。

7、到了Lilo配置(Lilo Configuration),选OK,然后有两个选项:

/dev/had        Master Boot Record(MBR)    (主引导扇区)

/dev/hda5       First Sector of boot Partition   ( 分区的第一个扇区)

选/dev/hda5,否则LiLo就会把BootMagic给覆盖掉了。LILO可以识别出硬盘上装有Win98,
但识别不出Win2000。

8、制作启动盘(BootDisk)。

9、Monitor Probe(显示器检测)自动找到了我这台显示器(LG563N)的性能参数,水平扫
描频率和垂直扫描频率还有显存的大小,用TAB键把分辨率设为16Bit 800×600,按照提示
一步一步做下去即可。

论坛徽章:
0
9 [报告]
发表于 2011-06-04 20:22 |只看该作者
本帖最后由 liyihongcug 于 2011-06-04 20:41 编辑

linux分区格式化命令使用方法

很简单,首先使用root权限登陆进入linux操作界面

使用fdisk -l 参数查看设备名跟设备状态

类似如下 :
[root@ecofe2 /]# fdisk -l

Disk /dev/hdd: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/hdd1              1      30401  244196001  83  Linux

Disk /dev/sda: 203.9 GB, 203928109056 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sda1  *          1          16      128488+  83  Linux
/dev/sda2              17        277    2096482+  82  Linux swap / Solaris
/dev/sda3            278        1599    10618965  83  Linux

可以看出来 现在我做测试的这台机器的硬盘设备有两个,分别是/dev/hdd1 跟/dev/sda1 两块
而且可以判断出来/dev/hdd1 是并口的  因为linux下 并口设备跟串口设备的设备名前缀是不同的 h 代表pata ,s代表  sata
而且可以看出来一块是250g的 。另外一块串口的是200g的


如果想要把并口250g的硬盘分为两个区 (分成多个分区的比分单独一个分区的操作复杂所以着重介绍一下)

可以使用命令 fdisk /dev/hdd      (/dev/hdd 指的是硬盘  /dev/hdd1 指的是这块硬盘的第一个分区,两者概念要弄明白)
fdisk命令动词后面必需跟硬盘设备名 而不能跟分区名,切记

会出现如下界面:
[root@ecofe2 /]# fdisk /dev/hdd

The number of cylinders for this disk is set to 30401.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
  (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):


按m是显示命令帮助

出现如下界面

Command action
  a  toggle a bootable flag                      设置引导扇区
  b  edit bsd disklabel                          编辑卷标(linux下使用的卷标bsd通用)
  c  toggle the dos compatibility flag         
  d  delete a partition                          删除一个分区
  l  list known partition types                  列出已知分区类型
  m  print this menu                            显示该菜单
  n  add a new partition                        添加一个新分区
  o  create a new empty DOS partition table     
  p  print the partition table                  显示分区表
  q  quit without saving changes                保存不退出
  s  create a new empty Sun disklabel      
  t  change a partition's system id              修改分区类型
  u  change display/entry units            
  v  verify the partition table
  w  write table to disk and exit                写入磁盘退出分区程序
  x  extra functionality (experts only)


一般情况首先都是删除原有分区
输入d  因为现在我这快硬盘上只有一个分区,所以你删除分区肯定是删除这一个分区,程序会出现如下信息,选择了分区1

Selected partition 1
这时候如果 再按w键  这个分区等于是就删除了,就这么简单。

删除过了,就要新建了
新建分区  就是按 n键  按过之后会出现

Command action                            命令动作     
  e  extended                          按e是建立扩展分区
  p  primary partition (1-4)            按p是建立主分区

  如果你现在操作的这块硬盘是游戏盘,不牵扯引导或者装系统什么的  怎么分都行 ,但是切忌,主分区最多只能有4个,我说的随意分是只一般情况
  如果你非要分5个主分区那是肯定不成功的

  然后就是选择 起始扇区    (1-65535)  我这里举例说明  这时候如果你想分一个区的话就在这里跟下一步都按回车就行了,程序会自动选择硬盘
  起始扇区跟结束扇区,使用最大的空间给这个分区,

  但是如果你想要分多个分区,起始扇区还是不用改,结束扇区根据你的需要修改,比如说我想划分两个一样大的分区, 65535除以2  就是第一个分区的
  结束扇区, 需要进行的操作就是 在按选择过e 或者p 建立分区的类型之后  起始扇区直接回车,选择从1硬盘头开始 回车,再再分区结束扇区位置输入
  32767 再回车 ,再按一次n  在建立一个主分区 按p  选择第二个分区起始扇区系统会自动接着刚刚分过的分区,从32768开始,直接回车,结束扇区到
  硬盘最后,还是直接回车,直接回车就是应用系统默认的分区。
  这时候按p  显示下现在硬盘的分区表,应该有两个分区了, 下面要进行的操作就是修改分区类型,键入t键  ,选择你要修改的分区的序号,输入83
  83代表的是linux ext3 分区格式,其实默认分区格式就是这个,不过还是修改下好, 两个分区都修改下,这样就ok了

  最后  按下w  保存退出皆可  分区工作结束




  下面就是磁盘格式化了  命令是mkfs.ext3 设备名    这里的设备名要是分区名,而不是硬盘设备名  (切记先记好分区名,别输入错,不然格式化错了就麻烦了)
    拿上面的例子 我要分别格式化并口250g硬盘刚刚分好的两个分区  命令如下
    mkfs.ext3 /dev/hdd1
    mkfs.ext3 /dev/hdd2
    等待之后两个分区就格式化好了,记得复制文件之前要修复一下
    再次提醒下修复命令  fsck.ext3 设备名



    就是如此了,大致上应该能看明白把,不明白的话在联系我  其实很简单 ,要操作一下,看都能看懂,但是到具体问题上要多解决下才能加强记忆


指令:mkfs
使用权限 : 超级使用者
使用方式 :
  mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

说明 : 建立 linux 档案系统在特定的 partition 上
参数 :
device : 预备检查的硬盘 partition,例如:/dev/sda1
-V : 详细显示模式
-t : 给定档案系统的型式,Linux 的预设值为 ext2
-c : 在制做档案系统前,检查该partition 是否有坏轨
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
block : 给定 block 的大小
例子 :
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :
mkfs -V -t msdos -c /dev/hda5

1、 ls -a命令的作用是?
A 显示所有配置文件
B 显示所有文件,包含以.开头的文件
C 显示以.开头的文件
D 以a开头的文件

2、 fdisk -l /dev/hda命令的作用是?
A 显示hda上的文件系统类型
B 显示hda上的分区表信息
C 显示hda上的空余磁盘空间
D 显示hda的磁盘硬件信息

3、 DMA通道信息被保存在哪个文件中?
A /dev/DMA
B /etc/drimen
C /proc/iomem
D /proc/dma

4、 将分区/dev/hdb6格式化的命令是:
A mkfs -t ext2 /dev/hdb6
B format /dev/hdb6
C format -t ext2 /dev/hdb6
D makefile -t ext2 /dev/hdb6

5、 手工使用交换分区的命令是
A swapon
B mkdirswap
C swapspace=on
D mkswap

6、 终止一个前台进程可能用到的命令和操作  。
A poweroff
B <CTRL>+C
C shut down
D halt

7、 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是____。


A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
D route add default 192.168.1.0 netmask 172.168.1.1 metric 1

8、 下列提法中,不属于ifconfig命令作用范围的是____ 。
A 配置本地回环地址
B 配置网卡的IP地址
C 激活网络适配器
D 加载网卡到内核中

9、 下列关于链接描述,错误的是____ 。
A 硬链接就是让链接文件的i节点号指向被链接文件的i节点
B 硬链接和符号连接都是产生一个新的i节点 出这道题的人是傻13,这题所有答案都是对的。soft link也是一个文件,也要占用一个inode。
C 链接分为硬链接和符号链接
D 硬连接不能链接目录文件

10、 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是____。
A 主机IP设置有误
B 没有设置连接局域网的网关
C 局域网的网关或主机的网关设置有误
D 局域网DNS服务器设置有误

11、 下列文件中,包含了主机名到IP地址的映射关系的文件是____。
A /etc/HOSTNAME
B /etc/hosts
C /etc/resolv.conf
D /etc/networks

12、 不需要编译内核的情况是____。
A 删除系统不用的设备驱动程序时
B 升级内核时 其实这道题也无解,出题人,RPM包是干毛用的???
C 添加新硬件时
D 将网卡激活

13、 下列不是Linux系统进程类型的是____ 。
A 交互进程
B 批处理进程 这道题有意义?内核有这么分进程类型的?sb。
C 守护进程
D 就绪进程

14、 下列信息是某系统用ps –ef命令列出的正在运行的进程, ____进程是运行Internet超级服务器,它负责监听Internet sockets上的连接,并调用合适的服务器来处理接收的信息。
A root 1 4.0 0.0 344 204? S 17:09 0:00 init
B root 2 0.0 0.1 2916 1520? S 17:09 0:00 /sbin/getty
C root 3 0.0 0.2 1364 632? S 17:09 0:00 /usr/sbin/syslogd
D root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd inetd老早就不用了,现在用的是xinetd。

15、 在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, ____是能够实现本地与远程主机之间的文件传输工作。
A telnet
B FTP
C SNMP
D NFS

16、 当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是____ 。
A ping
B ifconfig
C traceroute
D netstat

17、 用ls –al 命令列出下面的文件列表, ____文件是符号连接文件。
A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello
B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey
C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang
D lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng

18、 DNS域名系统主要负责主机名和 ____之间的解析。
A IP地址
B MAC地址
C 网络地址
D 主机别名

19、 WWW服务器是在Internet上使用最为广泛,它采用的是____结构。
A 服务器/工作站
B B/S
C 集中式
D 分布式

20、 Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在____目录中。
A /bin
B /etc
C /dev
D /lib

1b
2b
3d
4a
5a
6b
7b
8d
9b
10c
11b
12d
13b
14a
15b
16c
17d
18a
19b
20c

论坛徽章:
0
10 [报告]
发表于 2011-06-04 20:40 |只看该作者
本帖最后由 liyihongcug 于 2011-06-04 20:58 编辑

使用交换分区


¾ 创建和启用交换分区
Red Flag Asianux Server 3系统允许包含多个交换分区,每个最大可达124M。这些swap分区可以
根据需要随时创建并激活,其步骤如下:


1) 用parted或fdisk划分一个分区,并给予恰当的大小。
2) 格式化该分区,并检查坏块;
# mkswap -c /dev/hda4


用实际的分区设备名代替/dev/hda4,这里没有指明分区大小,系统会自动检测。
1) 使用如下命令激活交换分区:
# swapon /dev/hda4


2) 如果要在系统启动时自动激活此交换分区,应该在/etc/fstab中加入如下一行:
/dev/hda4 swap swap defaults 0 0
添加交换分区并启用它后,用cat /proc/swaps或free命令查看交换分区是否被成功启用。


¾ 关闭交换分区
要关闭交换分区,可以执行如下命令:
# swapoff /dev/hda4


¾ 删除交换分区
1) 确认将要删除的交换分区已被关闭;
2) 删除/etc/fstab文件中对应的行;
3) 用parted或fdisk命令删除对应的分区xinetd是一个daemon程序,所有结尾带d的程序都是daemon程序,也就是守护程序
守护程序分为2种处理模式:
第一个是stand alone状态的,表示该程序始终监听,一直处于运行状态,例如httpd
第二个是super daemon,它始终处于sleep状态,直到有人唤醒它,xinetd就是一个super daemon,但它的使命是将一个请求转给其他服务,也就是服务的管理者
大致如此吧,有点记不清了,呵呵一大堆服务的管理程序。
比如:telnet,ftp等。如果每个服务一个守护进程,太占用资源。
所以就用xinetd统一监听端口,有人用了再把服务启起来。

route type destination gw gateway matrix
route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1

上面 14d  12d  19b




ttp://crazyming.blog.51cto.com/1048571/568781

linux下静态路由修改命令

方法一:

添加路由

route add -net 192.168.0.0/24 gw 192.168.0.1

route add -host 192.168.0.1 dev 192.168.0.1

删除路由

route del -net 192.168.0.0/24 gw 192.168.0.1

add 增加路由

del 删除路由

-net 设置到某个网段的路由

-host 设置到某台主机的路由

gw 出口网关 IP地址

dev 出口网关 物理设备名

增 加默认路由

route add default gw 192.168.0.1

默认路由一条就够了

route -n 查看路由表

方法二:

添加路由

ip route add 192.168.0.0/24 via 192.168.0.1

ip route add 192.168.0.1 dev 192.168.0.1

删除路由

ip route del 192.168.0.0/24 via 192.168.0.1

add 增加路由

del 删除路由

via 网关出口 IP地址

dev 网关出口 物理设备名

增加默认路由

ip route add default via 192.168.0.1 dev eth0

via 192.168.0.1 是我的默认路由器

查看路由信息

ip route

保存路由设置,使其在网络重启后任然有效

在/etc/sysconfig/network-script/目录下创建名为route- eth0的文件

vi /etc/sysconfig/network-script/route-eth0

在此文件添加如下格式的内容

192.168.1.0/24 via 192.168.0.1

重启网络验证

/etc/rc.d/init.d/network中有这么几行:

# Add non interface-specific static-routes.

if [ -f /etc/sysconfig/static-routes ]; then

grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do

/sbin/route add -$args

done

fi

也就是说,将静态路由加到/etc/sysconfig/static-routes 文件中就行了。

如加入:

route add -net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1.1

则static-routes的格式为

any net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1.

三:在linux下设置永久路由的方法:

1.在/etc/rc.local里添加

方法:

route add -net 192.168.3.0/24 dev eth0

route add -net 192.168.2.0/24 gw 192.168.2.254

2.在/etc/sysconfig/network里添加到末尾

方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev

3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)

any net 192.168.3.0/24 gw 192.168.3.254

any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129

4.开启 IP 转发:

# echo "1" >/proc/sys/net/ipv4/ip_forward (临时)

# vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)

如果在rc.local中添加路由会造成NFS无法自动挂载问题,所以使用static-routes的方法是最好的。无论重启系统和service network restart 都会

按照linux启动的顺序,rc.local里面的内容是在linux所有服务都启动完毕,最后才被执行的,也就是说,这里面的内容是在netfs之后才被执行的,那也就是说在netfs启动的时候,服务器上的静态路由是没有被添加的,所以netfs挂载不能成功。

static-routes文件又是什么呢,这个是network脚本执行时调用的一个文件,这个文件的放置在/etc/sysconfig目录下,在network脚本中的位置是:

# Add non interface-specific static-routes.

if [ -f /etc/sysconfig/static-routes ]; then

     grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do

         /sbin/route add -$args

      done

   fi

从这段脚本可以看到,这个就是添加静态路由的方法,static-routes的写法是

any net 192.168.0.0/16 gw 网关ip

这样的话,在启动network脚本的时候路由就自动添加上了,又因为network是在netfs前面启动的,自然在挂载nfs的时候就正常了。

这样看来,如果需要添加静态路由,使用static-routes文件要比使用rc.local好,而且当改变了网络配置,需要重启network 脚本的时候,相应的静态路由是可以自动添加上的,但这时如果使用rc.local的话,在重启network服务的时候,原本添加好的静态路由就消失了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP