系统介绍
(一)文件系统概念引入
生活类比
想象图书馆管理书籍的方式。图书馆通过分类、编目等,把不同书籍放在特定书架区域,方便读者查找借阅。计算机中的文件系统,就类似图书馆的这套管理体系。它将数据以文件和目录的形式,有序地存放在存储设备(如硬盘)中,让用户能方便地找到和使用所需数据。
计算机系统中的作用
文件系统在计算机里,承担着存储数据到存储设备,并在用户需要时准确快速读取数据的重任。它为操作系统和各类应用程序,提供了统一的数据管理接口。比如,我们在电脑上保存一份文档,文件系统负责决定文档存放在硬盘的哪个位置;当我们再次打开该文档时,文件系统又能迅速找到它并呈现给我们。以 Ubuntu 系统为例,用户在 Ubuntu 中创建的文档,会依据其文件系统规则,被合理存储在磁盘对应的分区与目录下,当用户后续访问时,系统能精准定位并打开。
(二)不同操作系统文件系统特点对比
Windows
Windows 常用的文件系统有 FAT32 和 NTFS。FAT32 在移动存储设备(如 U 盘、SD 卡)中广泛使用,它兼容性强,几乎所有操作系统都能识别读写。但它有局限性,比如文件大小不能超过 4GB,分区容量也有限。NTFS 则功能更强大,支持文件权限设置,能决定哪些用户可以读取、修改或执行文件;还支持文件加密,保护数据安全。它适用于 Windows 系统的本地磁盘,能更好地管理大容量数据和复杂的用户权限。
macOS
macOS 主要使用 APFS(Apple File System)文件系统。APFS 性能出色,在空间管理上表现优秀,能高效利用磁盘空间。它还支持快照功能,就像给文件系统拍照片,能在不占太多额外空间的情况下,保存某个时间点文件系统的状态,方便用户恢复数据。并且,APFS 针对固态硬盘(SSD)进行了优化,能提升 SSD 的读写速度和使用寿命。
Linux
Linux 拥有丰富多样的文件系统。它最大的特点之一是开源,源代码公开,全球开发者都能参与开发和改进。这使得 Linux 文件系统能快速更新,不断优化,用户可根据自身需求定制,比如企业可添加特定功能来提高数据处理效率。Ubuntu 作为一款广受欢迎的 Linux 发行版,其文件系统就受益于开源特性。众多开发者为 Ubuntu 的文件系统贡献代码,修复漏洞、优化性能,并且用户可根据自身需求,如科研工作中对特定数据存储格式的需求,对文件系统进行定制。同时,Linux 文件系统非常稳定可靠,经过长期发展和大量实际应用检验,在长时间运行中能保证数据完整、可靠,减少系统崩溃和数据丢失风险,这也是它在服务器领域广泛应用的重要原因。Ubuntu 服务器版在全球众多企业和机构中被大量部署,长时间稳定运行,为业务提供坚实支撑。另外,Linux 文件系统对硬件兼容性好,无论是高端服务器、普通个人电脑,还是各种嵌入式设备(如路由器、智能电视),都能很好地支持,充分发挥硬件性能。Ubuntu 能在多种硬件平台上安装使用,从普通的 x86 架构电脑,到树莓派等嵌入式设备,都能轻松适配,展现出良好的硬件兼容性。
(三)Ubuntu 24.04 目录结构详解
根目录(/)
根目录是 Ubuntu 文件系统的顶级目录,所有其他目录都是它的子目录。就像大树的树干,所有分支都从这里生长出来。它是整个文件系统的起点,系统在启动时首先挂载根目录。
/bin 目录
该目录存放着供所有用户使用的基本命令,如 ls(用于列出文件和目录)、cd(用于切换目录)、mkdir(用于创建目录)等。这些命令是用户在终端进行日常操作的基础,在 Ubuntu 24.04 的终端中输入 “ls /bin”,可以看到众多可执行命令文件,它们是系统正常运行和用户交互的必备工具。
/sbin 目录
主要存放系统管理命令,例如 shutdown(用于关闭系统)、reboot(用于重启系统)等。与 /bin 目录不同,/sbin 目录中的命令通常只有 root 用户或具有相应权限的用户才能执行,因为这些命令涉及系统的关键管理操作,普通用户执行可能会对系统造成损害。
/etc 目录
这是一个非常重要的目录,存放着系统和各种应用程序的配置文件。像 /etc/passwd 文件记录着系统用户的基本信息,包括用户名、用户 ID、组 ID 等;/etc/apt/sources.list 文件则用于配置软件源,决定系统从何处获取软件包进行安装和更新。通过修改这些配置文件,可以调整系统和应用的运行参数,满足不同用户的需求。
/home 目录
/home 目录下为每个普通用户创建了一个独立的子目录,例如用户 “user1” 的主目录就是 /home/user1。用户在系统中创建的个人文件、文档、下载的软件等通常都存放在自己的主目录下,保证了用户数据的独立性和安全性。在 Ubuntu 24.04 中创建一个新用户后,会自动在 /home 目录下生成对应的用户目录。
/var 目录
/var 目录用于存放经常变化的数据,其中 /var/log 目录尤为重要,它存储着系统和应用程序的日志文件。比如 /var/log/syslog 记录着系统的一般信息和事件,/var/log/apt/history.log 记录着软件包安装、升级、卸载的历史记录。通过查看这些日志文件,管理员可以了解系统的运行状况,排查故障和安全问题。
/tmp 目录
此目录用于存放临时文件,系统和应用程序在运行过程中产生的临时数据会存储在这里。例如,用户在使用软件进行文件编辑时,软件可能会在 /tmp 目录下创建临时文件来保存未保存的内容。/tmp 目录中的文件在系统重启后通常会被清除,以释放磁盘空间。
/dev 目录
/dev 目录包含设备文件,这些文件代表着系统中的硬件设备,如硬盘、光驱、串口等。例如,/dev/sda 通常代表系统中的第一块硬盘,/dev/ttyS0 代表第一个串口设备。应用程序通过访问这些设备文件来与硬件设备进行交互,实现数据的输入输出等操作。
(四)Ubuntu 24.04 文件类型介绍
普通文件
文本文件:在 Ubuntu 24.04 中,文本文件是最常见的普通文件类型之一,通常以.txt 等扩展名标识(但扩展名并非绝对判断依据)。使用文本编辑器(如 nano、vim 等)创建和编辑的文件大多是文本文件,它们以 ASCII 或 Unicode 编码存储字符数据。例如,用户创建的一份记录日常工作的笔记文件就是文本文件,通过 “cat” 命令可以在终端查看其内容。
二进制文件:二进制文件包含计算机可直接执行的机器指令或其他非文本数据,如系统中的可执行程序(如 /bin 目录下的命令文件)、图像文件(如.jpg、.png 格式)、音频文件(如.mp3 格式)等。这些文件不能直接用文本编辑器查看其内容,因为它们的编码格式不是人类可读的字符形式,而是特定的二进制格式,用于计算机硬件和软件的特定操作。
目录文件
目录文件在 Ubuntu 文件系统中用于组织和管理其他文件和目录,类似于 Windows 系统中的文件夹。目录文件本身也有自己的属性和权限,通过 “ls -l” 命令查看目录时,会看到其权限信息,例如 “drwxr - xr - x”,其中 “d” 表示这是一个目录文件。目录的执行权限(x)允许用户进入该目录,读权限(r)允许用户列出目录中的内容,写权限(w)允许用户在目录中创建、删除或重命名文件和子目录。
链接文件
硬链接:硬链接是文件的另一个名称,它与原文件共享相同的 inode 号(inode 是文件系统中用于标识文件的唯一编号)。在 Ubuntu 24.04 中,可以使用 “ln” 命令创建硬链接。例如,有一个文件 “file1.txt”,执行 “ln file1.txt file2.txt” 后,file2.txt 就是 file1.txt 的硬链接,它们指向磁盘上的同一个物理数据块,修改其中一个文件的内容,另一个文件也会相应改变,且删除其中一个硬链接,并不会影响另一个以及原文件的数据。
软链接(符号链接):软链接类似 Windows 的快捷方式,它有自己独立的 inode 号,指向的是原文件的路径。使用 “ln -s” 命令创建软链接,比如 “ln -s /home/user1/file1.txt/tmp/file1_link.txt”,此时 /tmp/file1_link.txt 就是指向 /home/user1/file1.txt 的软链接。如果原文件被移动或删除,软链接将失效,无法访问到正确的数据。
设备文件
字符设备文件:字符设备文件用于表示以字节为单位进行数据传输的设备,如键盘、串口设备等。这些设备的数据传输是连续的、按字符流进行的。在 /dev 目录下,像 /dev/tty(代表终端设备)、/dev/ttyS0(串口设备)等都是字符设备文件。应用程序通过对这些设备文件进行读写操作,实现与相应设备的交互。
块设备文件:块设备文件用于表示以块为单位进行数据传输的设备,典型的如硬盘、光驱等。块设备文件的数据传输效率较高,通常一次传输多个字节的数据块。例如,/dev/sda 代表系统中的第一块硬盘,/dev/sr0 代表第一个光驱设备。系统通过块设备文件来管理和访问存储设备上的数据。
(五)常见 Linux 文件系统类型介绍
ext 系列
ext2:早期常用的 Linux 文件系统,设计简单,但不支持日志功能。如果系统突然崩溃,可能导致文件系统不一致,数据恢复较麻烦。它适用于对数据安全性要求不高,追求简单高效存储的场景。在一些早期的 Ubuntu 版本中,部分用户会根据自身需求,如临时存储一些不重要的测试数据,选择使用 ext2 文件系统来格式化分区。
ext3:在 ext2 基础上加入日志功能。它会记录文件系统的操作日志,当系统崩溃后,能通过日志快速恢复数据,大大提高了数据安全性。很多对数据完整性有一定要求的服务器,会选择 ext3 文件系统。一些 Ubuntu 服务器部署场景中,为确保数据安全,会将系统分区格式化为 ext3,在面对意外断电等情况时,可通过日志快速恢复文件系统的一致性。
ext4:ext3 的升级版,支持更大的文件系统和文件大小。在性能和存储效率上有优化,比如更快的文件读写速度,更合理的磁盘空间分配。目前,ext4 是 Linux 系统中广泛使用的文件系统,适用于大多数日常使用和企业级应用场景。默认情况下,Ubuntu 桌面版和服务器版在安装时,通常会将主要分区格式化为 ext4,以满足用户日常使用和企业级数据存储与处理的需求。
XFS
XFS 是高性能的日志文件系统,特别适合大文件和高并发读写场景。比如视频编辑工作中,处理动辄几十 GB 的视频文件,或者大数据存储时,大量数据同时读写。XFS 具有出色的扩展性,能支持非常大的文件系统和文件。它的日志机制让文件系统在出现故障时能快速恢复,减少停机时间。其优化的 I/O 操作和存储结构,能充分发挥现代硬件(如高速硬盘、多核处理器)的性能优势。在一些 Ubuntu 系统搭建的视频编辑工作站中,为应对大视频文件的频繁读写,会将存储视频素材的分区格式化为 XFS 文件系统,提升工作效率。
Btrfs
Btrfs 是新型 Linux 文件系统,有多项先进特性。它支持快照功能,用户可以在不占用额外存储空间的情况下,为文件系统创建多个时间点的副本,方便数据备份和恢复。例如,开发人员在进行软件版本迭代时,可通过快照轻松回滚到之前的版本。Btrfs 还支持数据压缩,能减少存储空间占用,提高存储效率。此外,它具备磁盘阵列管理功能,可将多个磁盘组合成一个逻辑存储单元,提供更好的数据冗余和性能提升,为用户提供更强大、灵活的数据管理方式。一些 Ubuntu 系统的开发者在进行软件开发时,利用 Btrfs 的快照功能,方便地对不同开发阶段的文件系统状态进行保存和回溯,提高开发效率。
与 Windows 兼容的文件系统(FAT32 与 NTFS)
Linux 虽然主要使用自身的文件系统,但也能兼容常见的 Windows 文件系统。FAT32 常用于移动存储设备,因其广泛兼容性,几乎所有操作系统都能读写。在 Linux 系统中,可通过简单挂载操作访问 FAT32 格式的 U 盘或 SD 卡。NTFS 是 Windows 主流文件系统,在 Linux 中通过特定驱动可实现读写操作,但部分高级功能(如 Windows 的文件权限和加密)可能受限。在需要与 Windows 系统共享数据的场景中,了解和使用这两种文件系统很重要,比如在双系统电脑中,不同系统间共享数据。在 Ubuntu 与 Windows 组成的双系统环境下,用户可通过挂载操作,访问 Windows 分区中的 NTFS 格式数据,实现数据共享。例如,在 Ubuntu 中安装 ntfs - 3g 驱动后,就能方便地读取和写入 NTFS 格式分区中的文件。