文件系统概述
操作系统中与管理文件有关的软件和数据
Linux 文件系统采用的是树形结构
Linux 支持多种文件系统
Linux 文件系统提供丰富的文件和目录操作命令
Linux 文件系统的特点
1.Linux 文件系统采用树形结构,从根目录 root(/)开始。
2.Linux 的虚拟文件系统允许众多不同类型的文件系统共存,并支持跨文件系统的操作。
3.Linux 的文件是无结构字符流式文件,不考虑文件内部的逻辑结构,只把文件简单地看作是一系列字符的序列。
4.Linux 的文件可由文件拥有者或超级用户设置相应的访问权限而受到保护。
5.Linux 把所有的外部设备都看作文件,可以使用与文件系统相同的系统调用和函数来读写外部设备。
Linux 文件系统的组成
-
/home
:用户主目录的基点目录,默认情况每个用户主目录都设在该目录下,如默认情况下用户 user01 的主目录是 /home/user01; -
/lib
:存放标准程序设计库目录,又叫动态链接共享库目录,目录中文件类似 windows 里的.dll 文件; -
/etc
:存放系统管理和配置文件目录; -
/dev
:存放设备特殊文件目录,如声卡文件、磁盘文件等; -
/usr
:最庞大的目录,存放应用程序和文件目录; -
/proc
:虚拟目录,是系统内存的映射,可直接访问这个目录来获取系统信息; -
/root
:系统管理员的主目录; -
/tmp
:存放公用临时文件目录。 -
/sbin
,/usr/sbin
:系统级的命令与工具目录; -
/bin
,/usr/bin
:用户级的命令与工具目录; -
/usr/include
:C 语言,内核编译所需要的头文件存放目录; -
/lib
,/usr/lib
:库文件存放目录,其中有表态库和动态库; -
/usr/src
:Linux 源代码目录,编译内核时使用; -
/var
:通常用来存放一些经常变化的内容,比如各种网络服务的工作目录都在这里;
Linux 文件系统类型
EXT 文件系统
- Linux 的第一个版本是基于 Minix 文件系统的。当 Linux 成熟时,引入了扩展文件系统(ext 文件系统),ext 是第一个专门为 Linux 设计的文件系统。但由于 ext 文件系统在稳定性,速度和兼容性方面存在不少缺陷,已经很少使用。
- Linux 在 1994 年引入了二级扩展文件系统(second extended file system,ext2),相当高效和稳定,是 Linux 系统默认使用的文件系统。ext2 文件系统是非日志文件系统,这在关键行业的应用是一个致命的弱点。
- ext2 文件系统经过逐步改进形成了 ext3 文件系统,这个新的文件系统在设计时牢记了两点,一是成为一个日志文件系统,二是尽可能与原来的 ext2 文件系统兼容。
目前 ext3 文件系统非常稳定可靠,该文件系统具有如下特点:
- 高可用性
Linux 系统使用 ext3 文件系统后,即使非正常关机,系统也不需要检查文件系统。 - 数据的完整性
ext3 文件系统能够极大地提高文件系统的完整性,避免了意外关机对文件系统的破坏。 - 文件系统的速度
ext3 文件系统的日志功能对磁盘的驱动器读写头进行了优化。 - 数据转换
由 ext2 文件系统转换成 ext3 文件系统非常容易。另外,ext3 文件系统可以不经任何更改,直接加载成为 ext2 文件系统。 - 多种日志模式
ext3 文件系统有三种日志模式 EXT3 三种日志模式:
- Journal 模式: 将所有数据和元数据的改变都记入日志,这种模式减少丢失每个文件所作修改的机会,但需要很多额外磁盘访问,是最安全和最慢的 ext3 日志模式;
- Ordered 模式: 只有对文件系统元数据的改变才记入日志,但保证数据在元数据之前被写入磁盘,是缺省的 ext3 日志模式;
- 写回(Writeback)模式: 只有对文件系统元数据的改变才记入日志,数据和元数据被写入磁盘的顺序不保证,是在这三种日志模式中最快的模式。
其他文件系统
- MS-DOS
MS-DOS 文件系统,DOS、Windows 和 OS/ 2 操作系统上使用的文件系统。 - UMSDOS
扩展的 MS-DOS 文件系统。 - VFAT
Microsoft 扩展的 FAT 文件系统,被 Windows9x /2000 /XP 使用。 - Proc
一种基于内存的伪文件系统,不占用磁盘空间,只是以文件的方式为访问 Linux 内核数据提供接口。 - ISO9660
一种针对 ISO9660 标准的 CD-ROM 文件系统。 - SYSV
System V/Coherent 在 Linux 平台上的文件系统。 - NFS
Sun 公司推出的网络文件系统。 - SMB
支持 SMB 协议的网络文件系统,可用于实现 Linux 与 Windows 的文件共享。 - FAT
它不是一个单独的文件系统,而是 MS-DOS, umsdos 和 vfat 文件系统的常用部分。 - swap
swap 文件系统用于 Linux 的交换分区。 - Reiserfs
是 Linux 内核 2.4.1 以后支持的一种全新的日志文件系统。 - NTFS
Windows NT 文件系统。 - HPFS
是 Microsoft 的 LAN Manager 中的文件系统,同时也是 IBM 的 LAN Server 和 OS/ 2 的文件系统,称为高性能文件系统。
不同版本的 Linux 系统所支持的文件系统类型和种类都会有所不同。Linux 允许众多不同类型的文件系统共存,并支持跨文件系统的操作,这是由于虚拟文件系统(Virtual File System,简称 VFS)的存在。
虚拟文件系统是 Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;它也提供了内核中的一个抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。
文件和目录的基本概念
文件
文件是指由创建者定义的,具有文件名的一组相关元素的集合,文件可以是文本文档、图片、程序等。
Linux 系统下的文件名长度根据不同类型的文件系统有所不同,最多可到 255 个字符。Linux 下为文件取名必须遵守以下规则:
- 除了“/”外,所有的字符都可以使用;
- 转义字符最好不用,这些字符在 Linux 系统下有特定的含义,如“?”(问号),“*”(星号),“”(空格),“$”(货币符),“&”等;
- 避免使用“+”、“-”或“.”作为普通文件名的第一个字符(在 Linux 下以“.”开头的文件是隐藏文件);
- Linux 系统的文件名大小写敏感,文件 Memo 和文件 memo 是两个不同的文件。
Linux 操作系统支持多种文件类型,下面介绍常见的几种。
- 普通文件
普通文件也称为常规文件,是 Linux 中最一般格式的文件,包括系统文件、用户文件和库函数。 - 目录文件
目录文件是由文件目录信息构成的特殊文件,目录文件的内容不是应用程序和数据,而是用来检索普通文件的目录信息。 - 设备文件
在 Linux 中输入输出设备被看做特殊文件,称为设备文件。设备文件分两类,字符设备文件和块设备文件。设备文件存放在 Linux 的 /dev
目录
• 其中/dev/tty
是表示终端设备的文件
• 字符串“crw-rw-rw-”的第一个字符“c”表示是字符设备文件
• /dev/sda1
表示 USB 移动存储设备的文件
• 字符串“brw-rw—-”的第一个字符是“b”,表示是块设备文件,
- 符号链接文件
符号链接文件是一种特殊类型的文件,它的内容只是一个字符串,该字符串可能指向一个存在的文件也可能什么都不指向。
目录
目录是 Linux 文件系统中的一种特殊文件,文件系统利用目录完成按名存取及对文件信息的共享和保护。
工作目录与用户主目录
- 工作目录
工作目录是用户在登录到 Linux 系统后所处于的目录,也称为当前目录。 - 用户主目录
是系统管理员增加用户时创建的(以后也可以改变),每个用户都有自己的主目录。普通用户的主目录在/home
下,root 用户作为系统管理员,因为身份特殊所以有自己的主目录,在/root
下。
用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同。如用户的登录名为 user,其主目录通常为/home/user
。
路径
路径定义
路径是指从树型目录中的某个目录层次到某个文件的一条道路。
路径的构成要素
路径是由目录或目录和文件名构成的,中间用“/
”分开。
路径分为绝对路径和相对路径两类:
- 绝对路径
Linux 系统中,绝对路径是从“/
”(根目录)开始的,也称为完全路径,如/home/user01
、/usr/bin
。 - 相对路径
Linux 系统中,相对路径是从用户工作目录或用户主目录开始的路径,如./test
、../user1
、~/test
。其中.
表示用户工作目录,..
表示工作目录的上级目录,~
表示用户主目录。