Linux文件系统之一

一、文件系统的定义:

 文件系统是操作系统中负责管理和存放文件信息的软件机构,它向用户提供了一种简便、统一的存取和管理信息的方法。文件系统是操作系统用于明确存储设备(常见的是磁盘、固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
- 文件系统是文件的管理系统,是对软件资源的管理。
- 文件系统有三部分:文件系统的接口、对对象操作和管理的软件集合、对象及属性。
- 文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。

二、一些文件系统类型

  文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
  DOS、Windows、OS/2、UNIX操作系统都有文件系统,在此系统中文件被放置在分等级的(树状)结构中的某一处。文件被放置进目录(Windows中的文件夹)或子目录,在树状结构中你希望的位置中。文件系统指定命名文件的规则。这些规则包括文件名的字符数最大量,哪种字符可以使用,以及某些系统中文件名后缀可以有多长。文件系统还包括通过目录结构找到文件的指定路径的格式。
   这里写图片描述

Windows下常见的文件系统格式

  1、FAT(File Allocation Table):文件配置表,是一种由微软发明并拥有部分专利的文件系统,供MS-DOS使用,也是所有非NT核心的微软窗口使用的文件系统。
  2、NTFS(New Technology File System):它是比FAT32功能更加强大的文件系统。从windows2000 之后的windows系统默认文件系统都是NTFS,而且这些windows系统只能够安装在NTFS格式的磁盘上。即是Microsoft公司开发的专用文件系统,从Windows NT3.1开始成为Windows NT家族的标准文件系统。Mac OS X内核对NTFS进行有限的读操作。Linux和BSD提供自由及开放源代码的软件,可用于读写NTFS文件。
  3、ExtFAT(Extended File Allocation Table)又叫FAT64,看名字就知道它是对FAT文件系统的扩展。它专门为闪存盘设计的文件系统,单个文件突破了4G的限制,而且分区的最大他=容量可达64ZB。ExFAT在windows,Linux以及Mac系统上,都可以读写。作为U盘或者移动硬盘的格式还是比较合适。

Mac OS系统常见的文件系统

  1、HFS/HFS+:(Hierarchical File System)分层文件系统,诞生于1985年,最初被设计用于软盘和硬盘,同时也可以在只读媒体如CD-ROM上见到。HFS+是一个HFS的改进版本,支持更大的文件,并用Unicode来命名文件和文件夹,代替了Mac OS Roman或者其他一些字符集。HFS+的最大文件尺寸可以达到8EB,文件数量可以达到 2321 ,由于这两种文件格式是苹果专用的文件系统,所以在windows下,是看不到HFS分区的。

Linux系统常见的文件系统

  1、EXT2(second extended filesystem)第二代扩展文件系统,是Linux内核所用的文件系统。
  2、EXT3第三代扩展文件系统(英语:Third extended filesystem,缩写为ext3),是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。Stephen Tweedie在1999年2月的内核邮件列表[2]中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中[3]。
  它的性能(速度)不如它的竞争对手,例如JFS2,ReiserFS和XFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2文件系统升级,而无需备份和恢复数据;除此之外,它还具有比ReiserFS和XFS更低的的CPU使用率。
  3、EXT4

三、Linux文件系统的文件结构即文件的组织方式

  从上面可以得知Linux的文件系统采用EXT2、EXT3、EXT4,目前默认的Linux采用的文件系统是EXT3。那么该文件系统的文件结构是怎么样的呢?
不同的操作系统对文件的组织方式各有不同,其所支持的文件系统数量和种类也不一定相同。Linux文件系统的组织方式称做Filesystem Hierarchy Standard(文件系统分层标准,简称FHS),即采用层次式的树状目录结构。在此结构的最上层是根目录”/”(斜杠),然后在此根目录下是其他的目录和子目录,如图6.1所示。
这里写图片描述
 Linux与DOS及Windows一样,采用”路径”来表示文件或目录在文件系统中所处的层次。路径由以”/”为分隔符的多个目录名字符串组成,分为绝对路径和相对路径。所谓绝对路径是指由根目录”/”为起点来表示系统中某个文件或目录的位置的方法。例如如果用绝对路径表示图6.1中第4层目录中的bin目录,应为”/usr/local/bin”。相对路径则是以当前目录为起点,表示系统中某个文件或目录在文件系统中的位置的方法。若当前工作目录是”/usr”,则用相对路径表示图6.1中第4层目录中的bin目录,应为”local/bin”或”./local/bin”,其中”./”表示当前目录,通常可以省略。
  Linux文件系统的组织与Windows操作系统不同。对于在Linux下使用的设备,不需要像Windows那样创建驱动器盘符,Linux会将包括本地磁盘、网络文件系统、CD-ROM和U盘等所有设备识别为设备文件,并嵌入到Linux文件系统中来进行管理。一个设备文件不占用文件系统的任何空间,仅仅是访问某个设备驱动程序的入口。Linux 系统中有两类特殊文件:面向字符的特殊文件和面向块(block)的特殊文件。前者允许I/O操作以字符的形式进行,而后者通过内存缓冲区来使数据的读写操作以数据块的方式实现。当对设备文件进行I/O操作时,该操作会被转给相应的设备驱动程序。一个设备文件是用主设备号(指出设备类型)和从设备号(指出是该类型中的第几个设备)来表示的,可以通过mknod命令进行创建。
 Linux文件名最长可允许256个字符,可以包括数字、字符,以及”.”、”-“、”_”等符号。Linux文件名不像DOS或Windows由主文件名和扩展文件名两部分组成,Linux中没有扩展名的概念。Linux环境下,文件名对大小写敏感(Case Sensitive),例如test.txt与Test.txt会被识别成两个不同的文件,而DOS或Windows平台是不进行大小写区分的。
 这里写图片描述
    
  1、Windows的文件结构是:多个并列的树状结构,最顶部的是不同的磁盘(分区),如C,D,E,F等。即它的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,它们之间的关系是并列的。在Linux中,无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上说,Linux各个磁盘分区上的树型结构不一定是并列的。
  2、Linux磁盘分区与目录:Linux的文件结构是单个的树状结构.可以用tree进行展示。 在Ubuntu下安装tree(sudo apt-get install tree),并可通过命令来查看。
每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:
任何一个分区都必须挂载到某个目录上。
目录是逻辑上的区分。分区是物理上的区分。
磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
以下是我们可能存在的一种目录和分区关系:
 这里写图片描述
 3、Linux下的挂载与挂载点的概念:当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。 将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东西都是文件。Mount命令可以实现挂载:
mount [-fnrsvw] [-t vfstype] [-o options] device dir

四、Linux文件系统中的文件类型

  Linux文件系统中含有各种类型的文件,在Linux系统中,无论是常见的数据文件、可执行文件,还是一个目录,甚至设备都以文件的形式存在。
  

1、文件类型缩写以及别称


这里写图片描述 
  

2、文件类型分类介绍:


  
- 普通文件(regular file)。这是最常用的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据,对于Linux内核而言并无区别。对普通文件内容的解释由处理该文件的应用程序进行。 一个值得注意的例外是二进制可执行文件。为了执行程序,内核必须理解其格式。所有二进制可执行文件都遵循一种标准化的格式,这种格式使内核能够确定程序的文本和数据的加载位置。
- 目录文件(directory file)。这种文件包含了其他文件的名字以及指向与这些文件有关信息的指针。
- 块特殊文件(block special file)。这种类型的文件提供对设备(如磁盘)带缓冲区的访问,每次访问以固定长度为单位进行。
- 字符特殊文件(character special file)。这种类型的文件提供对设备不带缓冲的访问,每次访问长度可变。 系统中的设备要么是字符特殊文件,要么是块特殊文件。
- FIFO。这种类型的文件用于进程间通信,有时也称为命名管道(named pipe)。
- 套接字(socket)。这种类型的文件用于进程间的网络通信。套接字也可用于在一台宿主机上进程之间的非网络通信。
- 符号链接(symbolic link)。这种类型的文件指向另一个文件。

参考文献:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值