本帖最后由 地瓜patch 于 2013-12-30 18:25 编辑
作者:王老师 今天我们一起来看一下文件系统这块内容;不管在任何一个操作系统中,文件系统都是非常重要的一个组件; 那什么是文件系统呢? 文件系统用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。 举个例子,计算机是用磁盘存储数据的,当用户需要访问磁盘上的数据的时候,我们不是直接对硬盘进行操作的,而是通过一个叫做文件系统的东西间接的访问磁盘上的数据; 说白了,文件系统就是一个特殊的程序,这个程序的作用就是用来操作硬盘的; 文件系统类型 Linux是一个兼容性比较强的操作系统,它支持很多种的文件系统,比如说:磁盘文件系统(ext2/ext3…),网络文件系统(NFS),虚拟文件系统(TMPFS); Windows下也有文件系统; 目前来说,linux中最常用的是EXT3这种类型的文件系统,它是在ext2基础上发展起来的;这种文件系统最大的优点就是,有个日志文件系统,也就是说你操作磁盘的时候,它会把你的操作完整的记录下来,必要的时候可以利用它来恢复磁盘; 文件系统的逻辑结构 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。 Linux的文件结构是单个的树状结构.可以用tree进行展示。 在Ubuntu下安装tree(sudo apt-get install tree),并可通过命令来查看。 每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下: – 任何一个分区都必须挂载到某个目录上。 – 目录是逻辑上的区分。分区是物理上的区分。 – 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。 – 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。 以下是我们可能存在的一种目录和分区关系: Linux正统的文件系统(如ext2、ext3)一个文件由目录项、inode和数据块组成。 目录项: 包括文件名和inode节点号。 Inode: 又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。 数据块: 文件的具体内容存放地。 Linux正统的文件系统(如ext2、3等)将硬盘分区时会划分出目录块、inode Table区块和data block数据区域。一个文件由一个目录项、inode和数据区域块组成。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。 站在2w英尺视图,文件存储结构大概如下: 其中目录项的结构如下(每个文件的目录项存储在改文件所属目录的文件内容里): 其中文件的inode结构如下(inode里所包含的文件信息可以通过stat filename查看得到): 以上只反映大体的结构,linux文件系统本身在不断发展。但是以上概念基本是不变的。且如ext2、ext3、ext4文件系统也存在很大差别,如果要了解可以查看专门的文件系统介绍。 软连接、硬链接 软连接、硬链接 软链接和硬链接是我们常见的两种概念: 硬连接:是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中任意一个其余的文件将不受影响。 软连接:也叫符号连接,他只是对源文件在新的位置建立一个“快捷(借用一下wondows常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。 具体关系可以看下图: 从图上可以看出硬链接和软链接的区别: 1:硬链接原文件和新文件的inode编号一致。而软链接不一样。 2:对原文件删除,会导致软链接不可用,而硬链接不受影响。 3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。 |