分类: LINUX
2013-06-20 09:46:20
原文地址:分区体系与文件系统——文件系统(上) 作者:落雪风之殇
1、什么是文件?什么又是文件系统?
文件
文件是具有标识符的一组相关信息的集合。标识符是用来识别文件的。 不同的文件系统对标识符的规定有所不同。
文件系统
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。它具体是操作系统用于明确磁盘或分区上的文件的方法和数据结构。
文件系统是对文件进行存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统,具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
文件属性
它的属性包括:
文件名;
文件长度;
文件位置;
文件存取时间;
建立时间;
.........
我们首先要了解两个文件系统中的名词—— block 和 inode 。
block
文件存储在磁盘上,硬盘的最小存储单位叫做扇区,磁盘中每个扇区存储 512 字节也即是0.5KB。操作系统读取磁盘的时候,不会一个个扇区的读取,因为效率太低。所以它是一次性连续读取多个扇区,我们就把一次性读取的内容成为 block。block是文件存取的最小单位。block的大小一般为 4KB,也就是 8个扇区。(文件系统为了便于对文件的管理,将其以组(group)的形式进行组织存储的)。group 下面有图,block 是组成 group 的一部分。
inode(下一篇讲文件索引的时候会感受更深刻的)
inode包含文件的元信息。包含信息如下:
文件的字节数;
文件的 inode号;
文件拥有者的 User ID;
文件的读、写、执行权限;
......
查看文件的一些属相的命令是 stat。具体用法是: stat 文件名
我的元信息是:
inode 唯一标识一个文件,即一个文件对应唯一的 inode。我们可以用 touch 命令创建两个文件,然后用 ls -il 查看文件的inode号。(-i 参数查看文件 inode )
touch test1.txt test2.txt
ls -il
其实 inode通俗的讲就是一个编号,文件系统用它来唯一识别一个文件。
inode 和 block一样都有自己的大小,inode 的大小一般是 128 B或者是 256 B ,还有 block的大小,我们可以用下面的命令来分别查看他们的大小(root 权限下):
查当前文件系统 inode 的大小命令: dumpe2fs -h /dev/sda10 | grep "Inode size"
查当前文件系统 block 的大小命令: dumpe2fs -h /dev/sda10 | grep "Block size"
(这里 /dev/sda10是我的 / 目录的位置,这个位置填你自己 / 的位置)。
下面给大家展示一个图是关于硬盘(分区体系)和文件系统的关系。
2、格式化干了什么?
在说格式化之前,我们必须了解 inode, inode 也占字节,所以它也消耗空间的,刚才说过了,文件系统为了便于管理, 将文件分成很多的 group ,那么这个过程在什么时候进行呢?没错,就是格式化。
首先,我们在格式化的时候,给所要格式化的空间(U盘、硬盘......)指定文件系统,然后根据指定的文件系统来对所要格式化的空间进行组织形式上的划分。
其实格式化主要就是将要格式的空间分成两个区域:
inode table 存放 inode 信息
block data 存放文件数据(我们真正的数据)
(并且,格式化的同时就将之前的索引消除了,所以我们没有办法访问之前的信息。)