存储系统是linux系统非常重要,也是非常基础的知识点。整个存储系统涉及到知识点也非常的多。
本文主要通过磁盘简介->分区管理->文件系统管理->文件存储结构->软连接和硬链接->挂载原理->常见存储相关操作命令,这一条主线来让大家对linux的整个存储系统有个初步,清晰的了解.
1.磁盘简介
众所周知,磁盘是数据存储的基础物理元件。现在我们来对这个基础原来进行解剖,看看其的内部结构以及工作原理。
图1.1
如图1.1所示,硬盘的内部就是由盘片,磁头,转轴等物理元件组成的。那么我们在来看看一些在其工作原理之上的一些虚拟概念以便我们能够更好的去了解它其更细微的工作原理。
首先是从盘片开始,对单个盘片来说,我们要掌握的两个非常重要的概念就是磁道和扇区,盘片转一圈画出来的圆就是磁道。而磁道再往下细分就有个扇区的概念,记住扇区是硬盘的最小存储物理量,通常一个扇区的存储大小约为512字节。对多了盘片来说,我要掌握另一个非常重要的概念就是柱面,多个盘片的同一个磁道,所抽象出来的概念就叫柱面。记住柱面是分区时的最小单位。
接着就是磁头,磁头的主要工作就是在盘片上里外来回往返的读取和写入数据。
2.分区管理
从分区开始往后的概念,已经和磁盘的物理组件没有什么直接关系了。概念也会越来越抽象,也容易混淆。先说说磁头的运作是很机械的,只能是在一个方向上来回的运动而已。怎么才能让磁头高效的准确的定位到所需要的数据上呢?于是有了分区,分了区后,磁头就会知道哪些数据靠盘片外一点,哪些数据靠盘片的里面一点。前面已经提醒过,分区的最小单位是柱面,分区的时候也就是按第1到第1000个柱面设定为一个分区。
大家有没有想过,在分区时候的这些约定信息存放在哪里呢?其实这些信息存在的主引导区(MBR)上,也就是硬盘的第0个柱面上。MBR只提供四个分区信息的记忆能力,所以一般情况下就有个3个主分区+1个扩展分区。
3. 文件系统管理
就想一个机器人,没有给它注入系统,它也就是一堆破铁。硬盘也是一样,要想让磁盘能够工作也同样需要注入一个系统。为分区格式化就是给分区注入一个让操作系统能够识别的文件系统。因为每个操作系统能够识别的文件系统都不相同。每个分区都应该对应一个文件操作系统。
每个大的概念下,都会存在一些小的单位概念。所以在文件系统上也就有了“块”的概念。块是文件系统下的最小存储单位。一个块的存储大小为扇区的2^n倍数。
4.文件存储结构
有个文件系统,那接下来,可以来了解一下文件系统的结构组成。以一个正统的linux文件系统ext2为例。
图4.1
如图4.1所示,文件系统分成了若干个组块,而每个组块大体上分为了两个区域,数据区以及源数据区。数据区存放的是数据的内容本身,而源数据区存放的是一些与数据的内容本身无关的一些为了达到某种管理机制的数据。
在源数据区中,inode表,记录的是文件的属性和文件所在数据块的地址。由于inode表中的数据量大,为了提高检索效率,所以建立了inode位图索引,同理,也为数据块建立了块位图索引。于是乎我们就可以很好的理清楚整个流程是这样的:
操作系统向à文件系统发来数据读写指令à文件系统根据inode位图索引à找到对应的inodeà从对应的inode中找到文件存放的数据块地址à块位图索引à根据地址找到对应的数据块。
同样的问题,那么文件系统本身的信息和数据结构信息存放在哪里呢?这些信息存放在“超级块”中。
5. 软连接和硬链接
有个inode的概念后,我们再来探讨软连接和硬链接就容易理解多了。
硬连接:就是把一个文件指向同一个inode,也就是让这个文件共享同一个inode以及inode所指向的数据块。
软连接:也叫符号连接,他只是对源文件在新的位置建立一个“快捷方式”。
复制跟硬链接是不同的机制:
复制,会使用新的inode,而且会启用新的磁盘块;复制时会发现使用空间变大了。硬链接,不使用新的inode,也不会启用新的数据块,所以硬链接不会让使用空间变大。
6.文件挂载原理
操作系统有了,文件系统也有了,那么接下来要启用文件系统,操作系统怎么找到文件系统呢?是不是应该给一个入口才是呢?所以我们要使用“挂载”来建立这个访问入口。
挂载:将额外的文件系统与根文件系统某现存的目录建立关联关系,并使得此目录作为其他文件访问入口的行为。
7.常见存储相关操作命令
以上已经把整个存储相关的概念和流程都梳理了一下,下面回到实际操作中来,如何在centos6中通过相关命令来完成这些流程。
有了磁盘设备后,先通过fdisk来对磁盘进行分区àkpartx加载分区表àmkfs或mke2fs来为分区创建文件系统àmount将创建好的文件系统挂载到linux系统中àblkid查看块设备属性信息àtune2fs查看指定文件系统信息àdumpe2fs 查看超级块信息和组块信息
原创文章,作者:liang555856,如若转载,请注明出处:http://www.178linux.com/9960