您好,欢迎访问三七文档
主要内容Linux文件系统的概念Linux文件类型Linux文件系统结构常见文件和目录的操作Linux文件系统概念文件是用户与操作系统交互所采用的主要工具;Linux中,所有包括网络接口卡、磁盘驱动器、键盘、打印机、普通文件(文本文件、可执行程序等)或目录都被看作是一个文件文件系统指文件存在的物理空间,linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。一个操作系统的运行离不开对文件的操作,因此必然要拥有并维护自己的文件系统。文件系统的构成操作系统资源管理的基础是文件系统。什么是文件系统呢?文件系统是指完成文件管理的软件和被管理的文件(包括目录和子目录等)的总和。从系统角度来看,文件系统对文件存储空间进行组织、分配,并对文件的存储进行保护和检查。具体来说,就是为用户建立文件;对文件的读写删除操作提供存取权限和控制。一、文件系统结构二、i节点(inode)三、链接(Links)四、超级块文件系统遵循倒挂树状的层次模型,倒挂树以根目录为顶,目录和文为树杈。用户通过绝对路径和相对路径名对文件进行操作。要实现在Linux系统下的文件系统管理,系统管理人员应考虑以下面几个方面:·了解一个磁盘的物理结构·磁盘分区的目的及方法·检查及改变磁盘分区的大小·文件的类型·系统文件的组成·使用newfs建立一个新文件系统·使用fsck检查一个文件系统·加载和卸掉一个文件系统·增删磁盘交换区Linux文件系统的创建需要两个系统分区。一个是Linux主分区,用于安装Linux文件系统;一个是交换分区(swap),是文件系统和磁盘操作时的交换空间,又称缓存。也可以将其看作是内存的扩展空间。文件系统是Linux操作系统的核心部分,它提供了分层结构的目录和文件。文件系统将磁盘空间划分为以块(block)为单位的存储空间。通常,磁盘块的大小根据系统的版本不同而不同,在slackware10.0的版本下,磁盘块的默认大小是4096。块的编号从0到整个磁盘容量所允许的最大块数。磁盘分区的空间由四个部分组成,块0,块1,块2和空闲存储块。块0称为引导块,在操作系统引导时使用。文件系统不使用引导块;块1称为专用块,专用块包含有许多信息,其中有磁盘大小和磁盘块的后两部分的大小。从块2开始是i节点表,i节点(inode)表中包含i节点表的块数是可变的。i节点表之后的空闲存储块(数据存储块)用于存放文件内容。索引节点iNodeLlinux文件系统使用索引节点来记录文件信息。对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。文件的逻辑结构是用户使用编辑命令(vi或ed等)或显示命令(cat或more等)所看到的文件,是用户可得到表示文件内容的字符流。而文件的物理结构是文件实际存放在磁盘分区上的存储格式。在用户看来自己的文件是连续的字符流,但实际上文件并不一定以连续的方式存放在磁盘上。事实上,大于1个磁盘块的文件将分散地存放在磁盘上。然而当用户存取某文件时,文件系统会以正确的顺序读取此文件全部磁盘块,并提供给用户文件的逻辑结构。文件的逻辑结构和物理结构是不同层面上的结构,前者是面向用户的,后者是文件在磁盘分区内部的存放格式。因此,在Linux系统中必须有一种方法来解释文件系统是如何将物理结构转换为逻辑结构的。这就是i节点表。i节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件大小,文件所有者,文件存取访问权限,以及文件的类型(普通文件,目录文件或特别文件等),文件所属用户组,文件创建时间,文件名和磁盘中存储文件地址表。inode节点是系统的基本单元。文件系统中的每个文件或目录都由一个inode节点来标识。所有inode节点都被记录在inode节点表(inode数据结构)中。文件系统将文件名转换为i节点的方法实际上相当简单。我们来看目录的结构,目录实际上是一个含有目录表的文件:对于目录中的每个文件,在目录表中有一个入口项,入口项中含有文件名和与文件相应的i节点号。当用户键入catxxx时,文件系统就在当前目录表中查找名为xxx的项,由此得到与文件xxx相应的i节点号,然后开始读取含有文件xxx内容的数据块。与Unix操作系统相同,文件系统中每个文件都是用i节点来标识的。实际上目录也是一个简单文件,只不过它是包含着一组记录项或设备的文件名。i节点是Linux文件系统的重要组成部分。i节点描述了文件和目录的相关控制信息,及其与物理存储的关系,从而实现了文件逻辑结构与文件物理存储的转换。当用户请求对一个文件进行操作的时候,Linux的内核通过i节点完成必要的转换工作,得到指向该文件数据块地址的指针,然后利用这个指针对该文件的物理块进行读写操作。在Linux文件系统中,目录被组织成一个层次结构的树状结构。每个目录可以包含若干文件和子目录。目录是一种特殊类型的文件,实际上,一个目录是包含了一系列记录项的文件。其中,每条记录项包含有一个i节点号和相应的文件名。当某个进程需要使用某个路径名或文件名时,Linux的内核将在目录中进行查找,找到相应的i节点号后,把该i节点对应的文件装载进内存。由此,通过对该i节点的操作来实现对该文件的操作。Linux文件系统保留了链接(Links)的概念。一个i节点可以与多个文件名相关联,可能你会疑问,前面提到一个i节点与一个文件名相对应,如何实现一个i节点同多个文件名相对应呢?链接可以实现此目的。在创建了连接文件的i节点中用一个域来记录总共有多少个文件与自己相关连。链接分为硬链接(hardlink)和符号链接。硬连接是一个正常的目录项,它指向存在的唯一一个文件。在显示目录列表时,硬连接会产生有两个相同文件的假象。系统把硬连接看成另外一个文件并且在系统备份时,一个文件有几个硬连接就备份几次。由于硬连接共享inode,所以不能跨文件系统存在。创建一个硬链接文件非常简单,只需把链接文件的i节点号指向该i节点,同时,该i节点的链接计数器的值被加1。另一方面,删除一个链接文件的时候(用rm命令),系统不仅将该链接文件删除,而且把该i节点的链接计数器的值减1。如果其值最终等于0的话,该i-node将被释放,此时该i节点不再代表任何文件实体。注意:硬链接有一些严格的限制。其一,不能跨不同的文件系统来创建硬链接;其二,硬连接只能创建文件间的链接,而不能创建对目录的链接,即,硬链接中的i节点不能指向目录。如果将一个硬链接指向一个目录将会导致整个文件系统的瘫痪。符号链(Symboliclinks)是只有文件名的一个链接文件。符号链接并不指向一个真正i节点,因此,可以创建跨不同的文件系统的链接。符号链接可以是任何类型的文件,甚至是不存在的文件。符号链接非常有用,因为它可以跨文件系统而存在。当系统对一个符号链接进行操作时,先做名字转换,找到真正的i节点,然后对i节点进行操作。超级块记录了i节点表、空闲块表等重要的文件系统信息在磁盘中存放的位置。由于i节点表决定了文件能否读取成功,一旦超级块出现错误,系统将全面崩溃。因此,系统将超级块冗余保存,以保证对超级块的成功修复。系统在修复处于严重瘫痪状态的文件系统时,实际上是对超级块进行操作。Linux文件类型普通文件目录文件设备文件链接文件管道文件普通文件用来在辅助存储设备(如磁盘)上存储信息和数据;以字节为单位的数据信息流集合,包括:文本文件、源码文件、数据文件、可执行文件;注意:linux在对待以上文件时,把每个文件都当作一个字节序列而不会对文件内容附加任何结构或赋予任何含义。而只有使用或处理文件的应用程序才会根据文件的内容赋予相应的含义。普通文件例:通过创建一个简单文件了解文件属性.$vitestnowisthetimeforallgoodpeople$ls-ltest-rw-r--r--1zhang36sep2706:11test目录文件目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。一个目录文件由一组目录项组成,Linux中,目录项的结构为:Inode号文件名目录文件例:通过创建一个目录文件,了解其属性$mkdirsoftware$ls-lsoftwaredrw-r--r--1rootroot36sep2706:11software设备文件设备文件用来访问硬件设备,包括:键盘、硬盘、光驱、DVD、打印机等。设备文件位于/dev目录下包括两种:块设备文件和字符设备文件块设备文件对应于面向块的设备,如磁盘。对应有/dev/hda1,/dev/sda0,/dev/fd0例:$ls–l/dev|grepsdbrw-r-----1rootdisk8k,02-0823:32sda1字符设备文件对应于面向字符的设备,如打印机和终端,可接收字符流。链接文件链接是一种在共享文件和访问它的用户的若干目录项间建立联系的一种方法;链接提供不同的访问路径来实现文件的共享,共享级别则通过设定文件的访问权限来决定。Linux支持两类链接:硬链接(hardlink)和软(符号)链接(soft/symboliclink)。文件的硬链接相当于一个文件的两个副本,指向同一数据存储区特点:两个文件,长度相等,总长度不变删除其中一个文件,另一个仍然存在修改其中一个文件,另一个也修改硬链接(HardLink)[root@localhostlink]#ls-ltotal1-rw-r--r--1rootroot667Oct1513:39a[root@localhostlink]#lnab[root@localhostlink]#ls-ltotal2-rw-r--r--2rootroot667Oct1513:39a-rw-r--r--2rootroot667Oct1513:39b[root@localhostlink]#rmarm:remove`a'?y[root@localhostlink]#ls-ltotal1-rw-r--r--1rootroot667Oct1513:39binode/root/linkab文件的符号链接相当于一个文件的快捷方式特点:仅保存一个指针,长度小于原文件删除符号链接,不影响原文件删除原文件,符号链接即没有意义符号链接(Symboliclink)[root@localhostsymlink]#ls-ltotal1-rw-r--r--1rootroot667Oct1513:39a[root@localhostsymlink]#ln-sab[root@localhostsymlink]#ls-ltotal1-rw-r--r--1rootroot667Oct1513:39alrwxrwxrwx1rootroot1Oct1514:20b-a[root@localhostyy]#rmarm:remove`a'?y[root@localhostsymlink]#ls-ltotal0lrwxrwxrwx1rootroot1Oct1514:20b-a[root@localhostsymlink]#catbcat:b:Nosuchfileordirectoryinode/root/linkabln命令–link功能:产生链接文件用法:ln–s来源文件目标文件加-s参数:symboliclink不加-s参数:hardlink范例:ln–s/bin/less/usr/bin/less
本文标题:Linux文件系统
链接地址:https://www.777doc.com/doc-4650431 .html