linux的文件系统

文件系统

操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,人类肯定不能直接看懂这些二进制数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储,由于使用场合、使用环境的不同,Linux 有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U 盘、SD 卡、NAND FLASH、NOR FLASH、网络存储设备等。不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理 NAND FLASH 的话使用 YAFFS 文件系统,管理硬盘、SD 卡的话就是 ext 文件系统等等。

文件系统类型

Linux 下的文件系统主要有 ext2、ext3、ext4 等文件系统。Linux 还支持其他的 UNIX 文件系统,比如 XFS、JFS、UFS 等,也支持 Windows 的 FAT 文件系统和网络文件系统 NFS 等。主要讲一下 Linux 自带的 ext2、ext3 和 ext4 文件系统。

Linux 系统能够支持的文件系统非常多,除 Linux 默认文件系统 Ext2、Ext3 和 Ext4 之外,还能支持 fat16、fat32、NTFS(需要重新编译内核)等 Windows 文件系统。也就是说,Linux 可以通过挂载的方式使用 Windows 文件系统中的数据。Linux 所能够支持的文件系统在 “/usr/src/kemels/当前系统版本/fs” 目录中(需要在安装时选择),该目录中的每个子目录都是一个可以识别的文件系统。我们介绍较为常见的 Linux 支持的文件系统,如表所示。

文件系统 描 述 Ext Linux 中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用 Ext2 是 Ext 文件系统的升级版本,Red Hat Linux 7.2 版本以前的系统默认都是 Ext2 文件系统。于 1993 年发布,支持最大 16TB 的分区和最大 2TB 的文件(1TB=1024GB=1024x1024KB) Ext3 是 Ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大 16TB 的分区和最大 2TB 的文件 Ext4 是 Ext3 文件系统的升级版。Ext4 在性能、伸缩性和可靠性方面进行了大量改进。Ext4 的变化可以说是翻天覆地的,比如向下兼容 Ext3、最大 1EB 文件系统和 16TB 文件、无限数量子目录、Extents 连续数据块 概念、多块分配、延迟分配、持久预分配、快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等。它是 CentOS 6.3 的默认文件系统 xfs 被业界称为最先进、最具有可升级性的文件系统技术,由 SGI 公司设计,目前最新的 CentOS 7 版本默认使用的就是此文件系统。 swap swap 是 Linux 中用于交换分区的文件系统(类似于 Windows 中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的 2 倍,但是不要超过 2GB。它是 Linux 的必需分区 NFS NFS 是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源 iso9660 光盘的标准文件系统。Linux 要想使用光盘,必须支持 iso9660 文件系统 fat 就是 Windows 下的 fatl6 文件系统,在 Linux 中识别为 fat vfat 就是 Windows 下的 fat32 文件系统,在 Linux 中识别为 vfat。支持最大 32GB 的分区和最大 4GB 的文件 NTFS 就是 Windows 下的 NTFS 文件系统,不过 Linux 默认是不能识别 NTFS 文件系统的,如果需要识别,则需要重新编译内核才能支持。它比 fat32 文件系统更加安全,速度更快,支持最大 2TB 的分区和最大 64GB 的文件 ufs Sun 公司的操作系统 Solaris 和 SunOS 所采用的文件系统 proc Linux 中基于内存的虚拟文件系统,用来管理内存存储目录 /proc sysfs 和 proc —样,也是基于内存的虚拟文件系统,用来管理内存存储目录 /sysfs tmpfs 也是一种基于内存的虚拟文件系统,不过也可以使用 swap 交换分区

硬盘是用来存储数据的,可以被认为是橱柜,但橱柜是用来存储衣服的。新购买的硬盘通常是分区和格式化的。隔断就像把一个大柜子分成几个小柜子(组合衣柜)。格式化就像在每个小柜子里放一个隔板,确定每个隔板的大小和位置,然后在柜门上贴上标签,清楚地标明每件衣服保存的隔板的位置和衣服的一些特征(如它是谁的衣服,衣服的颜色和尺寸等)。

[En]

Hard drives are used to store data, which can be thought of as cabinets, but cabinets are used to store clothes. Newly purchased hard drives are usually partitioned and formatted. Partitioning is like dividing a large cabinet into several small cabinets (combined wardrobe). Formatting is like putting a partition in each small cabinet, determining the size and location of each partition, and then affixing a label on the door of the cabinet, clearly indicating the location of the partition saved by each piece of clothing and some of the characteristics of the clothing (such as whose clothes it is, the color and size of the clothes, etc.).

许多初学者认为,格式化硬盘只是将数据从硬盘中移除,但实际上,文件系统是在格式化过程中写入硬盘的。由于不同的操作系统对系统中的文件有不同的管理方式(为文件设置的属性和权限并不完全相同),因此,为了使硬盘有效地存储当前系统中的文件数据,需要格式化硬盘以使用与操作系统相同(或关闭)的文件系统格式。

[En]

Many beginners believe that formatting the hard disk only removes the data from the hard disk, but in fact, the file system is written to the hard disk during the formatting process. Because different operating systems have different ways of managing files in the system (the attributes and permissions set for the files are not exactly the same), therefore, in order to make the hard disk effectively store the file data in the current system, it is necessary to format the hard disk to use the same (or close) file system format as the operating system.

各操作系统使用的文件系统并不相同,例如,Windows 98 以前的微软操作系统使用 FAT(FAT16)文件系统,Windows 2000 以后的版本使用 NTFS 文件系统,而 Linux 的正统文件系统是 Ext2。

既然格式化的真实目的是为了写入文件系统,那么,Linux 中的文件系统到底是什么,又是如何运作的呢?

早期的 Linux 使用 Ext2 文件系统格式,CentOS 5.x 默认使用 Ext3,本教程中所用的 CentOS 6.x 默认使用 Ext4,而目前最新的 CentOS 7.x 默认使用 xfs 格式。

由于 xfs 文件系统不是这里的重点,因为有关 xfs 文件系统,这里不做深入介绍,感兴趣的读者可自行搜索相关资料。

Ext4 是 Ext3(Ext2) 文件系统的升级版,在性能、伸缩性和可靠性方面进行了大量改进,变化可以说是翻天覆地的,比如:

  • 向下兼容 Ext3;
  • 最大 1EB 文件系统和 16TB 文件;
  • 无限数量子目录;
  • Extents 连续数据块概念;
  • 多块分配、延迟分配、持久预分配
    [En]

    Multi-block allocation, delayed allocation, persistent pre-allocation*

  • 快速 FSCK、日志校验、无日志模式、在线碎片整理、inode 增强、默认启用 barrier 等;

不同的文件系统,其运作模式和操作系统的文件数据有关。拿 Linux 操作系统中的文件为例,文件数据不仅包括文件中的内容,还包含非常多的文件属性,例如文件的 rwx 权限以及文件所有者、所属组、创建时间等。

通常,文件系统分别存储文件的实际内容和属性:

[En]

Typically, the file system stores the actual contents and attributes of the file separately:

  • 文件的属性保存在 inode 中(i 节点)中,每个 inode 都有自己的编号。每个文件各占用一个 inode。不仅如此,inode 中还记录着文件数据所在 block 块的编号;
  • 文件的实际内容保存在 block 中(数据块),类似衣柜的隔断,用来真正保存衣物。每个 block 都有属于自己的编号。当文件太大时,可能会占用多个 block 块。
  • 另外,还有一个 super block(超级块)用于记录整个文件系统的整体信息,包括 inode 和 block 的总量、已经使用量和剩余量,以及文件系统的格式和相关信息等。

由此我们可以推断出,只要能找到文件 inode 所在的位置,自然就能知道这个文件存放数据的 block 号,从而找到文件的实际数据。

linux的文件系统
[root@honey-master ~] df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs   63G     0   63G   0% /dev
tmpfs               tmpfs      63G  176K   63G   1% /dev/shm
tmpfs               tmpfs      63G   66M   63G   1% /run
tmpfs               tmpfs      63G     0   63G   0% /sys/fs/cgroup
/dev/mapper/cl-root xfs       219G   50G  169G  23% /
/dev/sdb1           ext4      976M  155M  754M  18% /boot
/dev/sda            ext4      3.6T  129G  3.3T   4% /data
tmpfs               tmpfs      13G     0   13G   0% /run/user/0
overlay             overlay   219G   50G  169G  23% /var/lib/docker/overlay2/fff1390868eaaa40a4b9a60a208ac29827be7651d4d32bb781a47e0d57e1f09c/merged
overlay             overlay   219G   50G  169G  23% /var/lib/docker/overlay2/201e22c7ff5e538259c75f3d961073cc8a606d429cbe9adfe2cb20d14fe334b1/merged

Original: https://www.cnblogs.com/ivanlee717/p/16338220.html
Author: ivanlee717
Title: linux的文件系统

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523459/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球