Linux磁盘系统——磁盘系统简介,


Linux磁盘系统——磁盘系统简介

摘要:本文主要学习了Linux系统中有关磁盘的一些知识。

文件系统

说明

硬盘是用来存储数据的,可以将其想象成柜子,只不过柜子是用来存储衣物的。新买来的硬盘,通常要对其进行分区并格式化。分区就如同把一个大柜按照要求分割成几个小柜子。格式化就好比在每个小柜子中打入隔断,决定每个隔断的大小和位置,然后在柜门上贴上标签,标签中写清楚每件衣服保存的隔断的位置和这件衣服的一些特性。

在格式化的过程中会向硬盘中写入文件系统。因为不同的操作系统,管理文件的方式也不尽相同(给文件设定的属性和权限也不完全一样),因此,为了使硬盘有效存放当前系统中的文件数据,就需要将硬盘进行格式化,令其使用和操作系统一样(或接近)的文件系统格式。

不同的文件系统,其运作模式和操作系统的文件数据有关。拿Linux操作系统中的文件为例,文件数据不仅包括文件中的内容,还包含非常多的文件属性,例如文件的rwx权限以及文件所有者、所属组、创建时间等。

通常情况下,文件系统会将文件的实际内容和属性分开存放:

1)文件的属性保存在inode中,每个inode都有自己的编号。每个文件各占用一个inode。不仅如此,inode中还记录着文件数据所在block块的编号。

2)文件的实际内容保存在block中,类似衣柜的隔断,用来真正保存衣物。每个block都有属于自己的编号。当文件太大时,可能会占用多个block块。

3)另外,还有一个super block用于记录整个文件系统的整体信息,包括inode和block的总量、已经使用量和剩余量,以及文件系统的格式和相关信息等。

由此我们可以推断出,只要能找到文件inode所在的位置,自然就能知道这个文件存放数据的block号,从而找到文件的实际数据。

这种管理文件的系统称为索引式文件系统,Linux文件系统(Ext系列)就属于索引式文件系统。

注意,inode节点并不存储文件的文件名,因为文件名是文件所在目录的数据,所以会保存在上一级目录的block块中。

分类

Ext:Linux中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用。

Ext2:是Ext文件系统的升级版本,Red Hat Linux 7.2版本以前的系统默认都是Ext2文件系统。于1993年发布,支持最大16TB的分区和最大2TB的文件。

Ext3:是Ext2文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件。

Ext4:是Ext3文件系统的升级版。Ext4在性能、伸缩性和可靠性方面进行了大量改进。Ext4的变化可以说是翻天覆地的,比如向下兼容Ext3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块的概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。它是CentOS 6.3的默认文件系统。

swap:swap是Linux中用于交换分区的文件系统(类似于Windows中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的2倍,但是不要超过2GB。它是Linux的必需分区。

NFS:NFS是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源。

iso9660:光盘的标准文件系统。Linux要想使用光盘,必须支持iso9660文件系统。

fat:就是Windows下的fatl6文件系统,在Linux中识别为fat。

vfat:就是Windows下的fat32文件系统,在Linux中识别为vfat。支持最大32GB的分区和最大4GB的文件。

NTFS:就是Windows下的NTFS文件系统,不过Linux默认是不能识别NTFS文件系统的,如果需要识别,则需要重新编译内核才能支持。它比fat32文件系统更加安全,速度更快,支持最大2TB的分区和最大64GB的文件。

ufs:Sun公司的操作系统Solaris和SunOS所采用的文件系统。

proc:Linux中基于内存的虚拟文件系统,用来管理内存存储目录/proc。

sysfs:和proc一样,也是基于内存的虚拟文件系统,用来管理内存存储目录/sysfs。

tmpfs:也是一种基于内存的虚拟文件系统,不过也可以使用swap交换分区。

硬盘分区

含义

Linux系统初始化时,会根据MBR来识别硬盘设备。

MBR,全称Master Boot Record,可译为硬盘主引导记录,占据硬盘0磁道的第一个扇区。MBR中,包括用来载入操作系统的可执行代码,实际上,此可执行代码就是MBR中前446个字节的boot loader程序(引导加载程序),而在boot loader程序之后的64个(16×4)字节的空间,就是存储的分区表(Partition table)相关信息。

在分区表(Partition table)中,主要存储的值息包括分区号(Partition id)、分区的起始磁柱和分区的磁柱数量。所以Linux操作系统在初始化时就可以根据分区表中以上3种信息来识别硬盘设备。其中,常见的分区号如下:

1)0x5(或0xf):可扩展分区(Extended partition)。

2)0x82:Linux交换区(Swap partition)。

3)0x83:普通Linux分区(Linux partition)。

4)0x8e:Linux逻辑卷管理分区(Linux LVM partition)。

5)0xfd:Linux的RAID分区(Linux RAID auto partition)。

由于MBR留给分区表的磁盘空间只有64个字节,而每个分区表的大小为16个字节,所以在一个硬盘上最多可以划分出4个主分区。如果想要在一个硬盘上划分出4个以上的分区时,可以通过在硬盘上先划分出一个可扩展分区的方法来增加额外的分区。

不过,在Linux的Kernel中所支持的分区数量有如下限制:

1)一个IDE的硬盘最多可以使用63个分区。

2)一个SCSI的硬盘最多可以使用15个分区。

硬盘分区的好处

1)方便管理和控制

首先,可以将系统中的数据(也包括程序)按不同的应用分成几类,之后将这些不同类型的数据分别存放在不同的磁盘分区中。由于在每个分区上存放的都是类似的数据或程序,这样管理和维护就简单多了。

2)提高系统的效率

给硬盘分区,可以直接缩短系统读写磁盘时磁头移动的距离,也就是说,缩小了磁头搜寻的范围;反之,如果不使用分区,每次在硬盘上搜寻信息时可能要搜寻整个硬盘,所以速度会很慢。另外,硬盘分区也可以减轻碎片(文件不连续存放)所造成的系统效率下降的问题。

3)使用磁盘配额的功能限制用户使用的磁盘量

由于限制用户使用磁盘配额的功能,只能在分区一级上使用,所以,为了限制用户使用磁盘的总量,防止用户浪费磁盘空间(甚至将磁盘空间耗光),最好将磁盘先分区,然后在分配给一般用户。

4)便于备份和恢复

硬盘分区后,就可以只对所需的分区进行备份和恢复操作,这样的话,备份和恢复的数据量会大大地下降,而且也更简单和方便。

挂载硬件设备

为什么要挂载

Linux系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在Linux看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。

因此产生的问题是,当在Linux系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

什么是挂载

挂载,指的就是将设备文件中的顶级目录连接到Linux根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。Linux系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

根目录下的/dev/目录文件负责所有的硬件设备文件,事实上,当U盘插入Linux后,系统也确实会给U盘分配一个目录文件,就位于/dev/目录下,但无法通过目录文件直接访问U盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。

相关内容

    暂无相关文章