Linux读书笔记(四)—— 磁盘管理

尽管在过去的几十年里,计算机硬件技术得到了飞速的发展,但磁盘这一古老的存储介质仍然是几乎所有电脑的必备。本章介绍 Linux 下的磁盘管理,包括 Linux 文件系统的概念及使用、硬盘分区及格式化、使用外部设备、文件归档及备份等。

References:

从存储原理上讲,硬盘和磁带是一样的。硬盘内部是几个叠在一起的磁性盘片,读取数据的时候,盘片以恒定的速度旋转,边上有一个小磁头进行读取和写入。磁头通过改变盘片上磁性物质的排列来写入数据。值得注意的是,磁头在读写数据的时候并不接触盘面,而是悬浮在距离盘片表面非常近的地方。如果因为某些原因,磁头接触到了盘片,那么就会产生破坏性的后果,这也是为什么不能在运行时搬动主机的一个原因。
现如今有多种不同的硬盘接口。从市场占有率和获支持程度来说,SCSIIDE曾经占据了统治地位。然而这些年,随着SATA接口硬盘价格的不断下降,越来越多的人选择了SATA硬盘。现在新配的电脑全部是 SATA 硬盘,也就是所说的串口硬盘。

  • Linux文件系统
    操作系统必须用一种特定的方式对磁盘进行操作。例如,存储一个文件,表示一个目录,知道某个特定的文件存储在硬盘的哪个位置,这些问题都可以通过文件系统来解决。简单来说,文件系统是一种对物理空间的组织方式,通常在格式化硬盘时创建。在Windows下,有NTFSFAT两种文件系统。同样地,Linux也有自己的文件系统并一直在快速演变,下面将会介绍在CentOS中最常用的几种。

CentOS系列系统下,常见的文件系统主要是EXT。目前,CentOS 6系列版本中的文件系统已经发展到第4版,不过在最新的7版本中默认不再使用EXT,而是XFS(这种文件系统被认为适合用于大数据环境)。

  • Ext2

第二扩展文件系统(EXT2)是为弥补EXT的缺陷而设计的一个高性能文件系统。该文件系统在弥补EXT缺陷的同时也增加了系统的可扩展性。当然,EXT2也存在缺点,比如在写入文件内容的同时并没有同步到meta-data,而是在空闲时才写入文件。如果在未写入时操作系统发生意外,就会导致文件系统处于不一致状态。

  • Ext3

第三扩展文件系统(EXT3)是从EXT2升级而来,它在EXT2的基础上加入了记录元数据的日志功能从兼容性,因此用户很容易将数据从EXT2迁移到EXT3。另外,在该版本的文件系统中增加了一个非常重要的功能——系统日志功能,因此EXT3也称日志式的文件系统,它的最大特点就是可以在短时间内恢复数据。

由于在文件系统中有快取层参与运作,因此在正常关机时就需要将快取层的数据写回磁盘中(前提是必须将所有的文件系统全部卸下)。如果出现断电、宕机等,导致文件系统未卸下就关机,就会造成数据不一致,因此需要对系统数据进行同步。这时日志文件系统就体现出了它的优越,只要通过日志的记录就可以对数据进行恢复,从而在很大程度上保证了系统整体数据的完整性。

  • Ext4

第四扩展文件系统(EXT4)是一种针对EXT3修改部分重要数据结构的扩展日志式文件系统。在EXT4上,允许创建无限数量的子目录且这些子目录具有可伸缩性,并引入了extents概念和多块分配器,使得一次调用就可以分配很多块。这样不仅减少系统的开销,还为数据保存提供了多个连续的数据块。

EXT4具有更高的兼容性,并消除了储存限制,使得从EXT3升级至EXT4时不需要格式化分区。在inode节点的大小上,EXT4支持扩大到 256B,并实现在文件系统层面持久预分配磁盘空间。在提供相应API的同时也启用了barrier,使数据的读写顺序得到调整,并优化了数据写入性能。

  • XFS

XFS包含了许多优秀的功能,例如确定速率I/O,在线调整大小,内置配额执行,并且理论上它可以支持最大支持8exbibytes减1字节的单个文件系统字节的文件系统。自从2001年左右以来,它一直在Linux上使用,并且在许多流行的Linux发行版中作为安装选项提供。通过可变块大小,可以像滑动缩放比例一样调整系统来调整磁盘利用率或读取性能。

  • 最适合非常大的文件系统,大文件和大量文件
  • 日志式(一个非对称并行集群文件系统也可用)
  • POSIX扩展访问控制

XFS文件系统是开源的,并且包含在主要的Linux发行版中。它起源于SGI(Irix),专为大文件和大容量可扩展性而设计。视频和多媒体文件最好由该文件系统处理。它是支持数据迁移的Linux上少数几个文件系统之一(SGI早在几年前就将分层存储管理接口贡献给Linux内核)。

其他的文件系统如ReiserFS,BtrFS等等请自行查阅

  • 文件系统的目录层次结构
    操作系统下的一切文件都是数据的集合,在文件中不仅包含有数据,也包含有各类文件间的层次关系,而这种层次间关系的权限是被严格分开的。在这种严格的等级关系中,位于最高层次的称为根(/)目录,其他的则是它的子目录。

Snipaste_2018-04-25_09-06-57.png

各个常用目录的简单介绍如下:

* 根(/)目录:是整个 Linux文件系统的最顶层目录,也是文件系统的入口。
* /bin目录:主要存放一些可执行文件,这些文件就是一个命令。
* /dev目录:用于存放一些设备文件。
* /home 目录:是普通用户主目录所在的目录。
* /lib目录:用于存放各种函数和库文件。
* /media目录:用于挂载如 USB、CD等设备。
* /var目录:用于保存系统运行时所需要改变的数据,数据的大小不定。
* /etc目录:含有系统各种配置文件,如网络、安全、进程等。
* /lost+found 目录:存放系统在不正常关机时产生的数据碎片,这些数据的碎片可用于系统的恢复。
* /usr目录:用于存放一些本地帮助文档及其他相关的信息。
* /etc/rc.d/init.d目录:存放系统启动时自动执行的一些可执行脚本。
  • 文件系统的基本组成
    Linux系统提供一种通用的文件处理方式,将所有的软件、硬件都视为文件来管理,并将映射成文件的不同物理设备放在层次相同或不同的目录下,然后通过文件的方式来管理所有的设备,从而简化对物理设备的管理和访问,所以在Linux下,一切皆文件。

    • 普通文件

    普通文件(ordinary file)是一种出现在路径末端且不能再继续往下延伸的文件。这种文件主要由文本文件和二进制文件组成,是 Linux 系统下最为常见、数量最多的文件。系统大多数的配置文件、代码文件都是以普通文件的形式存在的。

普通文件以“-”作为标识,标识符后是相关用户对该文件所具有的权限,而后是其他相关的信息,最后是该文件的名称,其组成如下所示。

Snipaste_2018-04-26_09-08-44.png

对于多数的普通文件而言,它们的内容都是可读的,即使文件的扩展名不同。因此,单从文件名本身区别普通文件所属的类型并不容易(如以“.sh”为扩展名的通常是 shell 脚本文件,但去掉扩展名后也不会造成影响),不过可以借助系统提供的相关命令(file)来识别。

Snipaste_2018-04-26_09-53-15.png



* 目录文件
* 链接文件
* 特殊文件

----未完待续----

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……