Linux文件系统概述

更新时间:2023-11-19 15:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Linux文件系统概述

什么是文件系统

文件系统是对一个存储设备上的数据和元数据进行组织的机制。尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。文件系统的作用就是在应用概念的文件和存储设备之间提供一个中间层,以使多个文件驻留在一个存储设备上,由文件系统来管理所有文件的存储。术语“文件系统”可以在 Linux 文件编制中互换使用,用于指代几个不同但相关的概念。除磁盘分区的具体实例外,文件系统还指代数据结构以及分区中文件的管理方法。

Linux 和 UNIX 中的基本文件存储单元都是磁盘分区,即将一个或多个硬盘的逻辑划分,操作系统将每个逻辑分区视为独立的磁盘。文件和文件管理系统处于在磁盘分区中。Linux将这些磁盘分区作为设备处理,进而通过/dev目录中的特殊文件使用文件I/O机制。文件系统将每个存储设备化为一系列目录,每个目录含有若干文件。在 Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂装(mount)。使用 mount 命令将一个文件系统附着到当前文件系统层次结构中(/)。在执行挂装时,要提供文件系统类型、文件系统和一个挂装点。

# df -a

Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 39984500 2594352 37390148 7% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys

debugfs 0 0 0 - /sys/kernel/debug udev 648284 96 648188 1% /dev devpts 0 0 0 - /dev/pts

securityfs 0 0 0 - /sys/kernel/security /dev/hdc 2627822 2627822 0 100% /media/SLES10SP_001

注:以上“/dev/sda2”、“proc”、“sysfs”、“debugfs”、“udev”、“devpts”、“securityfs”、“/dev/hdc”都是文件系统。

文件系统的另一个解释是:文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区组织文件的方法,如ext3、reiserfs或iso9660;另一种看待文件系统的方式是把它看作一个协议。网络协议(比如 IP)规定了互联网上传输的数据流的意义,同样,文件系统会给出特定存储媒体上数据的意义。比如NFS(网络文件系统)、CIFS(通用网际文件系统)。

Linux文件系统层次结构

“文件系统层次结构”用于系统中文件的整体组织形式:目录树。Linux文件系统的结构是树形结构,并且遵循自己的文件系统层次标准(Filesystem Hierarchy Standard)。Linux和UNIX的文件系统是一个以“/ “为根的阶层式的树状文件结构,/ 因此被称为根目录。所有的文件和目录都置于根目录/ 之下。根目录/下面有/usr,/etc,/var等子目录。结构如下图:

几个主要常用的文件目录的用途如下::

目录 / 根目录 内容和用途 /bin 一般用户使用的命令 /boot 放置内核及LILO、GRUB等导引程序(bootloader)的文件,用于启动。 /dev 硬盘,分区,键盘,鼠标,tty等所有的设备文件都放在这个目录。 /etc 系统的所有配置文件都存放在此目录中。 /home 用户空间,所有的用户都是用此空间。 /lib 共享连接库,如C库和C编译器等等。 /media 挂接CD-ROM等设备的目录 /mnt 移动设备文件系统的挂点 /opt 存放后来追加的用户应用程序 /root Root用户的家目录 /sbin 存放系统管理所需要的命令 /tmp 临时文件目录,重新启动时被清除 存放只能读的命令和其他文件。 /usr/X11R6 X Window系统 /usr/bin 用户和管理员的标准命令 /usr/include c/c++等各种开发语言环境的标准include文件 /usr /usr/lib 应用程序及程序包的连接库 /usr/local/ 系统管理员安装的应用程序目录 /usr/local/share 系统管理员安装的共享文件 /usr/sbin 用户和管理员的标准命令 /usr/share 存放使用手册等共享文件的目录 /usr/share/man 系统使用手册 /var/cache 应用程序缓存目录 /var/games 游戏数据 /var/lib 各种状态数据 /var/lock 文件锁定纪录 /var /var/log 日志记录 /var/mail 电子邮件 /var/opt /opt目录的变量数据 /var/run 进程的标示数据 /var/spool 存放电子邮件,打印任务等的队列目录。 /var/tmp 临时文件目录 Linux文件系统类型

文件系统是文件的数据结构或组织方法,每一种数据结构或组织方法称为一种文件系统类型。要使分区后的磁盘可用,必须在其上构建文件系统。这种情况下,通常还将文件系统称作“分区类型”、“基于磁盘的文件系统”和“文件系统类型”。

目前核专门为Linux设备的文件系统有ext2、ext3、ReiserFS。总体来说,Linux的磁盘文件系统有两大类:

标准文件系统

ext是第一个专门为Linux设计的文件系统类型,称为扩展文件系统,在Linux发展的早期,起过重要的作用。由于稳定性,速度和兼容性方面存在许多缺陷,ext现已很少使用。

ext2是为解决ext文件系统存在的缺陷而设计的可扩展、高性能的文件系统,称为二级扩展文件系统。Ext2: 是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。

日志文件系统(Journaling Filesystems)

日志文件管理系统(如 ext3 和 ReiserFS)记录对文件系统元数据:inode、空闲块分配映射、inode 映射等的更改。当系统崩溃时,可以通过此方式检查日志以获得最近修改的元数据,从而确保快速恢复文件系统。此功能对大型系统尤其重要。如果没有此功能,则在出现硬件故障后,对于 ext2 等文件系统,需要在重新启动时运行 fsck 工具。对于大型文件系统,此过程可能要花费几个小时。

ext3是ext2的升级版本,兼容ext2,在ext2的基础上,增加了文件系统日志记录功能,称为日志式文件系统,是目妆Linux默认采用的文件系统。日志式文件系统在因断电或其他异常事件而停机重启后,操作系统会根据文件系统的日志,快速检测并恢复文件系统到正常的状态,并可提高系统的恢复时间,提高数据的安全性。若对数据有较高安全性要求,建议使用ext3文件系统。日志文件系统是目前Linux文件系统发展的方向,常用的还用reiserfs和jfs等日志文件系统。

可以通过以下命令查看Linux下某个磁盘分区的文件系统类型:

# file -s /dev/sdb*

/dev/sdb: x86 boot sector, extended partition table

/dev/sdb1: Linux rev 1.0 ext3 filesystem data (needs journal recovery) /dev/sdb2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs) /dev/sdb3: x86 boot sector, extended partition table

/dev/sdb5: x86 boot sector, mkdosfs boot message display, code offset 0x3c, OEM-ID \mkdosfs\heads 255, sectors 1012032 (volumes > 32 MB) , serial number 0x4ad1bf77, label: \ \FAT (16 bit)

此外Linux内核还支持十多种不同类型的文件系统。某个Linux系统支持的文件系统可以通过以下命令查看:

# ls /lib/modules/`uname -r`/kernel/fs

9p adfs affs autofs autofs4 befs bfs binfmt_aout.ko binfmt_misc.ko cifs coda configfs cramfs dmapi efs exportfs ext3 fat freevxfs fuse hfs hfsplus hpfs jbd jffs jffs2 jfs lockd msdos ncpfs nfs nfs_common nfsd nls ntfs ocfs2 qnx4 quota_v1.ko quota_v2.ko reiserfs romfs smbfs sysv udf ufs vfat xfs

Linux大文件系统支持

Linux文件系统的大小受硬件、内核、文件系统块大小的限制。 在32位CPU的Linux操作系统上,文件系统上文件大小和文件系统大小的限制在2TB。 在64位CPU的Linux操作系统上,对于基于Linux kernel 2.4.x的Linux发行版本,文件和文件系统的大小限制扩展到了263TB(8EB)。对于基于Linux kernel 2.6.x的Linux发行版本, 文件和文件系统的大小限制扩展有了更大的范围,可以参考下表:

文件系统 ext2/ext3 with 1 KiB blocksize ext2/3 with 2 KiB blocksize ext2/3 with 4 KiB blocksize ext2/3 with 8 KiB blocksize (Systems with 8 KiB pages like Alpha only) ReiserFS 3.5 ReiserFS 3.6 (as in Linux 2.4) XFS JFS with 512 Bytes blocksize JFS with 4KiB blocksize NFSv2 (client side) NFSv3 (client side) 文件大小限制 16448 MiB (~ 16 GiB) 256 GiB 2048 GiB (= 2 TiB) 65568 GiB (~ 64 TiB) 2 GiB 1 EiB 8 EiB 8 EiB 8 EiB 2 GiB 8 EiB 文件系统大小限制 2048 GiB (= 2 TiB) 8192 GiB (= 8 TiB) 8192 GiB (= 8 TiB) 32768 GiB (= 32 TiB) 16384 GiB (= 16 TiB) 16384 GiB (= 16 TiB) 8 EiB 512 TiB 4 PiB 8 EiB 8 EiB

本文来源:https://www.bwwdw.com/article/zzov.html

Top