硬盘及文件系统基础概念

机械硬盘HDDMechanical hard disk

机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。

磁头(Head:

对硬盘上的数据进行读写操作.

磁道(Track

当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。

扇区(Sector

磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。

柱面(Cylinder

硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘单面上的磁道数是相等的。无论是双盘面还是单盘面,由于每个盘面都只有自己独一无二的磁头,因此,盘面数等于总的磁头数。所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容=柱面数*磁头数*扇区数*512B

MBR

通常,我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间,故而将习惯将该扇区称为MBR扇区(简称MBRMain Boot Record)。由于这一扇区承担有不同于磁盘上其他普通存储空间的特殊管理职能,作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。

主引导扇区由三个部分组成(共占用512个字节)

1.主引导程序即主引导记录(MBR)(占446个字节)

可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。

2.磁盘分区表项(DPTDisk Partition Table)

由四个分区表项构成(每个16个字节)。

负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)

3.结束标志(占2个字节)

其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

 

磁盘分区

磁盘分区是使用分区编辑器(partition editor)在磁盘上以柱面为单位划分几个逻辑部分,盘片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。越多分区,也就有更多不同的地方,可以将文件的性质区分得更细,按照更为细分的性质,存储在不同的地方以管理文件;但太多分区就成了麻烦。空间管理、访问许可与目录搜索的方式,依属于安装在分区上的文件系统。当改变大小的能力依属于安装在分区上的文件系统时,需要谨慎地考虑分区的大小。

磁盘分区可做看作是逻辑卷管理前身的一项简单技术。

在一个MBR分区表类型的硬盘中最多只能存在4个主分区。如果一个硬盘上需要超过4个以上的磁盘分块的话,那么就需要使用扩展分区了。如果使用扩展分区,那么一个物理硬盘上最多只能3个主分区和1个扩展分区。扩展分区不能直接使用,它必须经过第二次分割成为一个一个的逻辑分区,然后才可以使用。一个扩展分区中的逻辑分区可以任意多个。

 

为什么要给硬盘分区

分区允许在一个磁盘上有多个文件系统。有许多理由需要这么做:

有利于管理,系统一般单独放一个区,这样由于系统区只放系统,其他区不会受到系统盘出现磁盘碎片的性能影响。

碍于技术限制(例如旧版的微软FAT文件系统不能访问超过一定的磁盘空间;旧的PC BIOS不允许从超过硬盘1024个柱面的位置启动操作系统)

如果一个分区出现逻辑损坏,仅损坏的分区而不是整个硬盘受影响。

在一些操作系统(如Linux)交换文件通常自己就是一个分区。在这种情况下,双重启动配置的系统就可以让几个操作系统使用同一个交换分区以节省磁盘空间。

避免过大的日志或者其他文件占满导致整个计算机故障,将它们放在独立的分区,这样可能只有那一个分区出现空间耗尽。

两个操作系统经常不能存在同一个分区上或者使用不同的“本地”磁盘格式。为了不同的操作系统,将磁盘分成不同的逻辑磁盘。

许多文件系统使用固定大小的簇将文件写到磁盘上,这些簇的大小与所在分区文件系统大小直接成比例。如果一个文件大小不是簇大小的整数倍,文件簇组中的最后一个将会有不能被其它文件使用的空闲空间。这样,使用簇的文件系统使得文件在磁盘上所占空间超出它们在内存中所占空间,并且越大的分区意味着越大的簇大小和越大的浪费空间。所以,使用几个较小的分区而不是大分区可以节省空间。如:FAT16

每个分区可以根据不同的需求定制。例如,如果一个分区很少往里写数据,就可以将它加载为只读。如果想要许多小文件,就需要使用有许多节点的文件系统分区。

在运行Unix的多用户系统上,有可能需要防止用户的硬连结攻击。为了达到这个目的,/home/tmp路径必须与如/var/etc下的系统文件分开。

 

分区格式

磁盘分区后,必须经过格式化才能够正式使用,格式化后常见的文件系统格式有:FAT(FAT16)FAT32NTFSext2ext3等。

FAT16

这是MS-DOS和最早期的Win95操作系统中最常见的磁盘分区格式。它采用16位的文件分配表,能支持最大为2GB的硬盘,是目前应用最为广泛和获得操作系统支持最多的一种磁盘分区格式,几乎所有的操作系统都支持这一种格式,从DOSWin95Win97Win98Windows NTWin2000L inux都支持这种分区格式。但是在FAT16分区格式中,它有一个最大的缺点:磁盘利用效率低。因为在DOSWi ndows系统中,磁盘文件的分配是以簇为单位的,一个簇只分配给一个文件使用,不管这个文件占用整个簇容量的多少。这样,即使一个文件很小的话,它也要占用了一个簇,剩余的空间便全部闲置在那里,形成了磁盘空间的浪费。由于分区表容量的限制,FAT16支持的分区越大,磁盘上每个簇的容量也越大,造成的浪费也越大。所以为了解决这个问题,微软公司在Win97中推出了一种全新的磁盘分区格式FAT32

FAT32

这种格式采用32位的文件分配表,使其对磁盘的管理能力大大增强,突破了FAT16对每一个分区的容量只有2 GB的限制。由于硬盘生产成本下降,其容量越来越大,运用FAT32的分区格式后,我们可以将一个大硬盘定义成一个分区而不必分为几个分区使用,大大方便了对磁盘的管理。而且,FAT32具有一个最大的优点:在一个不超过8GB的分区中,FAT32分区格式的每个簇容量都固定为4KB,与FAT16相比,可以大大地减少磁盘的浪费,提高磁盘利用率。支持这一磁盘分区格式的操作系统有Win97Win98Win2000。但是,这种分区格式也有它的缺点,首先是采用FAT32格式分区的磁盘,由于文件分配表的扩大,运行速度比采用FAT16格式分区的磁盘要慢。另外,由于DOS不支持这种分区格式,所以采用这种分区格式后,就无法再使用DOS系统。

NTFS

它的优点是安全性和稳定性极其出色,在使用中不易产生文件碎片。它能对用户的操作进行记录,通过对用户权限进行非常严格的限制,使每个用户只能按照系统赋予的权限进行操作,充分保护了系统与数据的安全。支持这种分区格式的操作系统已经很多,从 Windows NT Windows 2000 直至 Windows Vista Windows 7Windows 8[

ext2ext3

ext2,ext3linux操作系统适用的磁盘格式,Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。 对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。

Linux缺省情况下使用的文件系统为Ext2ext2文件系统的确高效稳定。但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统。这在关键行业的应用是一个致命的弱点。

Ext3文件系统是直接从Ext2文件系统发展而来,ext3文件系统已经非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是ext3日志文件系统初始设计的初衷。

原创文章,作者:TQT,如若转载,请注明出处:http://www.178linux.com/72939

(1)
TQTTQT
上一篇 2017-04-09
下一篇 2017-04-09

相关推荐

  • openssl、openssh

    openssl 传输层协议:TCP,UDP,SCTPport:进程地址,进程向内核注册使用某端口(独占) 同一主机上的进程间通信:IPC, message queue, shm, semerphor 不同主上的进程间通信:socket cip:port <– –> sip:port cip:55673 <&#8211…

    Linux干货 2017-05-31
  • linux下小练习(2)

    1、编写脚本/bin/per.sh,判断当前用户对指定的参数文件,  是否不可读并且不可写                         2、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充 许…

    Linux干货 2016-08-15
  • shell编程之数组及环境变量

    数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的 集合 索引:编号从0 声明数组: declare -a ARRAY_NAME declare -A ARRAY_NAME:关联数组 1.declare  -a menu  menu[0]=beef  menu[1]=chicken menu…

    Linux干货 2016-08-29
  • Shell脚本使用示例

    目录如下:  1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中 3、编写脚本/root/bin/disk.s…

    Linux干货 2016-08-30
  • 文本处理三剑客之grep

    grep命令基本用法 1、grep正则表达式(对文本行进行搜索过滤) 格式:grep [option] PATTERN [FILE…] option: -i:忽略大小写 -v:取反,显示未被匹配到的pattern -n:显示匹配的行号 -c:统计匹配的行数 -o: 只显示匹配到的pattern -q: 静默,不予显示 -A#:after,匹配到的行再向后…

    Linux干货 2017-07-19
  • 数据库基础知识

    关系模型:结构化数据模型实体-关系模型对象关系模型:基于对象的数据模型半结构化数据模型:XML(扩展标记语言) SQL:Structure Query Language结构化查询语言DML:数据操作语言INSERT DELETE SELECT UPDATEDDL:数据定义语言CREATE DROP ALTERDCL: 数据控制语言GRANT REVOKE R…

    Linux干货 2017-09-25

评论列表(1条)

  • renjin
    renjin 2017-04-12 11:57

    主要介绍了硬盘与文件系统的理论知识 ,内容总结的很详细,继续努力!