理解 UNIX/Linux 文件系统
对文件系统的概念性理解,尤其是数据结构和相关术语,将帮助您成为一名成功的系统管理员。我见过许多新的 Linux 系统管理员对文件系统一无所知。概念性知识可用于在紧急情况下恢复文件系统。
Linux 或 Unix 中的文件是什么?
文件是存储在磁盘上的数据项的集合。或者,它是可以存储信息、数据、音乐(mp3 文件)、图片、电影、声音、PDF 书籍等的设备。所有数据都必须以文件的形式存储在计算机上。文件始终与硬盘、软盘、USB 笔式驱动器等设备相关联。文件是文件系统树中的最后一个对象。请参阅Linux/UNIX – 命名文件和目录名称的规则。
如何列出目录内容
使用 ls 命令:
ls
ls -l
ls -Fl
ls -l /etc/
使用 ls 命令列出 Linux 和类 Unix 系统上的文件信息
drwxr-xr-x 3 root root 4096 Apr 4 2018 acpi -rw-r--r-- 1 root root 3028 Apr 4 2018 adduser.conf
上述输出中每个文件都会显示以下信息:
场地 | 描述 |
---|---|
drwxr-xr-x | 文件模式 |
3 | 文件链接数 |
root | 文件所有者名称 |
root | 文件组名 |
4096 | 文件中的字节数 |
Apr 4 2018 | 缩写月份、文件上次修改日期、文件上次修改小时和文件上次修改分钟 |
acpi | 路径名/文件名 |
acpi 是第一个字符 表示的目录d,drwxr-xr-x而 adduser.conf 是第一个字符 表示的文件-。-rw-r--r--让我们尝试理解drwxr-xr-xls 命令输出中 的含义。
有关文件模式的更多信息
为了理解drwxr-xr-x文件模式,让我们分为三组:
- 第 1 组:d
- 第 2 组:rwx
- 第 3 组: rx
- 第 4 组: rx
打印的文件模式(组 1)由文件类型和权限组成。条目类型字符(组 1)描述文件的类型,如下所示:
特点 | 文件类型 |
---|---|
- | 常规文件。 |
b | 阻止特殊文件。 |
c | 字符特殊文件。 |
d | 目录。 |
l | 符号链接。 |
p | 先进先出。 |
s | 插座。 |
w | 白茫茫的。 |
接下来的三组分别是所有者权限(组 2)、组权限(组 3)和其他权限(组 4)。因此每个字段有三个字符位置:
- r :只读文件权限
- w :只写文件权限
- x :仅执行文件权限
- – :无权限
因此组 2 具有rwx权限,这意味着您对该文件具有读、写和可执行权限。
什么是目录?
目录是一组文件。目录分为两种类型:
- 根目录 – 严格来说,Linux 和类 Unix 系统中只有一个根目录,用 /(正斜杠)表示。它是整个文件系统的根目录,不能重命名或删除。
- 子目录 – 根(/)目录下的目录是用户可以创建、重命名的子目录。
目录用于更有效地组织您的数据文件和程序。
如何创建目录
使用mkdir 命令:
mkdir dir1
接下来在 ls 命令的帮助下列出新创建的目录:
ls -ld dir1
要更改工作目录,请使用 cd 命令:
cd dir1
要打印当前工作目录,请运行pwd 命令:
pwd
让我们创建两个子目录和一个文件,运行:
接下来在 bash shell 提示符下在 Linux/Unix 中创建一个名为 demo.txt 的文件,运行:
列出所有内容:
mkdir foo
mkdir -v bar
echo "This is a test" > demo.txt
ls -l
在 Linux 上创建新目录、子目录和文件
Linux 支持多种文件系统类型
- Ext2:这类似于 UNIX 文件系统。它具有块、inode 和目录的概念。
- Ext3:它是具有日志功能的增强型 ext2 文件系统。日志功能允许快速恢复文件系统。支持 POSIX ACL(访问控制列表)。
- Isofs(iso9660):CDROM 文件系统使用。
- Sysfs:最初基于 ramfs 的基于 ram 的文件系统。它用于导出内核对象,以便最终用户可以轻松使用它。
- Procfs:proc 文件系统充当内核内部数据结构的接口。它可用于获取有关系统的信息,并在运行时使用 sysctl 命令更改某些内核参数。例如,您可以使用以下cat 命令查找 Linux 上的 CPU 信息:
$ cat /proc/cpuinfo
- 或者您可以使用以下命令启用或禁用接口之间的 IP 数据包路由/转发:
# cat /proc/sys/net/ipv4/ip_forward
# echo "1" > /proc/sys/net/ipv4/ip_forward
# echo "0" > /proc/sys/net/ipv4/ip_forward
- NFS:网络文件系统允许多个用户或系统使用客户端/服务器方法共享相同的文件。NFS 允许共享上述所有文件系统。
- Linux 还支持 Microsoft NTFS、vfat 和许多其他文件系统。请参阅 Linux 内核源代码树文档/文件系统目录以获取所有受支持的文件系统的列表。
您可以使用 mount 命令找出当前安装的文件系统类型。
$ mount
或者
$ cat /proc/mounts
在 OpenBSD Unix 机器上运行 mount 并在 Linux 上显示 /proc/mounts
什么是 UNIX/Linux 文件系统?
UNIX 文件系统是存储在磁盘上的文件和目录的集合。每个文件系统都存储在单独的整个磁盘分区中。以下是一些文件系统:
- /– 特殊文件系统,包含多个目录下的文件,包括 /dev、/sbin、/tmp 等
- /usr– 存储应用程序
- /var – 存储日志文件、邮件和其他数据
- /tmp– 存储临时文件
有关详细信息,请参阅Linux 分区的重要性。
但是文件系统里有什么?
文件系统又分为两类:
- 用户数据 – 存储文件中包含的实际数据
- 元数据——存储文件系统结构信息,如超级块、inode、目录
下次我将更多地介绍元数据对象 - 超级块、inodes、目录以及实际的 Linux 命令,以便您能够理解和掌握这些概念????
继续阅读理解 Linux 文件系统系列的其余部分: