Linux文件系统详解:常见文件系统概述与常见命令操作

代表Linux的企鹅图标

概述

本文接着上一篇文章,ext2文件系统的分析,概述了其他类别文件系统,以及描述了文件系统常见的命令。

其他文件系统

传统文件系统:ext2、minix、FAT等

日志类文件系统:ext3/4、NTFS(windows)、JFS(IBM)、 XFS(SGI)、ZFS

网络文件系统:NFS、SMBFS

查看Linux 支持的文件系统

Linux 支持的文件系统

ls -l /lib/modules/$(uname -r)/kernel/fs/

Linux 加载到内存的文件系统

cat /proc/filesystems

Linux VFS

Linux 中使用VFS来管理所有的文件系统

vfs 文件系统结构图

文件系统的操作

列出磁盘使用率

df 

这是 df 命令的帮助信息,它描述了 df 命令的用法和选项。根据这些选项,它提供有关文件系统的信息。

df 命令用于显示每个文件所在文件系统的磁盘空间使用情况,或默认情况下显示所有文件系统的空间信息。

df 命令的选项包括:

-a, --all: 包括虚拟文件系统

-B, --block-size=SIZE: 按 SIZE 缩放大小后显示。例如,-BM 以 1,048,576 字节为单位显示大小。

-h, --human-readable: 以人类可读的格式显示大小(如 1K、234M、2G)

-H, --si: 同样显示大小,但使用 1000 的幂而不是 1024

-i, --inodes: 列出 inode 信息而不是块使用情况

-k: 等同于 --block-size=1K

-l, --local: 限制列表到本地文件系统

--no-sync: 获取使用信息之前不调用同步(默认)

--output[=FIELD_LIST]: 使用由 FIELD_LIST 定义的输出格式,如果省略 FIELD_LIST,则打印所有字段

-P, --portability: 使用 POSIX 输出格式

--sync: 获取使用信息之前调用同步

--total: 省略对可用空间无关的所有条目,并生成总计

-t, --type=TYPE: 限制列表到指定类型的文件系统

-T, --print-type: 打印文件系统类型

-x, --exclude-type=TYPE: 限制列表到非指定类型的文件系统

--help: 显示帮助信息并退出

--version: 输出版本信息并退出

显示的值采用 --block-sizeDF_BLOCK_SIZEBLOCK_SIZEBLOCKSIZE 环境变量中首先可用的 SIZE 为单位。如果这些环境变量都没有设置,则默认单位为 1024 字节(如果设置了 POSIXLY_CORRECT,则为 512 字节)。

SIZE 是一个整数,可选的单位(例如:10M 表示 1010241024)。单位包括 K、M、G、T、P、E、Z、Y(1024 的幂)或 KB、MB 等(1000 的幂)。

FIELD_LIST 是一个逗号分隔的列列表,用于包含在输出中。有效的字段名包括:'source'、'fstype'、'itotal'、'iused'、'iavail'、'ipcent'、'size'、'used'、'avail'、'pcent' 和 'target'。

如果需要更多详细信息,可以运行命令 info coreutils 'df invocation' 查看完整文档。报告 df 的错误可以发送至 bug-coreutils@gnu.org,或访问 GNU coreutils 主页获取更多帮助:http://www.gnu.org/software/coreutils/

常见用法

df -ah 

列出文件所占空间

du

du 命令用于递归地统计文件(或目录)的磁盘空间使用情况。

使用方式

du [OPTION]... [FILE]...: 统计每个文件的磁盘空间使用情况,对目录进行递归处理。

选项

-0, --null: 每行末尾以 0 字节而不是换行符结束。

-a, --all: 显示所有文件的计数,而不仅仅是目录。

--apparent-size: 打印表面大小而不是磁盘使用情况;虽然表面大小通常更小,但可能由于文件中的空洞、内部碎片、间接块等而更大。

-B, --block-size=SIZE: 在打印之前按 SIZE 缩放大小。例如,-BM 以 1,048,576 字节为单位显示大小。

-b, --bytes: 等同于 --apparent-size --block-size=1

-c, --total: 显示总计。

-D, --dereference-args: 仅解引用列出在命令行上的符号链接。

-d, --max-depth=N: 仅在目录的 N 级或更少级别下显示总计;--max-depth=0--summarize 相同。

--files0-from=F: 对文件 F 中指定的以 NUL 结尾的文件名进行磁盘使用情况汇总。

-H: 等同于 --dereference-args (-D)

-h, --human-readable: 以人类可读的格式显示大小(例如,1K、234M、2G)。

-k: 等同于 --block-size=1K

-L, --dereference: 解引用所有符号链接。

-l, --count-links: 如果硬链接,则多次计算大小。

-m: 等同于 --block-size=1M

-P, --no-dereference: 不跟随任何符号链接(默认)。

-S, --separate-dirs: 不包括子目录的大小。

--si: 类似于 -h,但使用 1000 的幂而不是 1024。

-s, --summarize: 仅显示每个参数的总计。

-t, --threshold=SIZE: 排除小于正数 SIZE 的条目,或大于负数 SIZE 的条目。

--time: 显示目录中任何文件的最后修改时间,或其子目录中任何文件的最后修改时间。

--time=WORD: 以 WORD 而不是修改时间显示时间:atime、access、use、ctime 或 status。

--time-style=STYLE: 使用 STYLE 显示时间:full-iso、long-iso、iso、+FORMAT(FORMAT 解释类似于 'date')。

-X, --exclude-from=FILE: 排除与 FILE 中的任何模式匹配的文件。

--exclude=PATTERN: 排除与模式 PATTERN 匹配的文件。

-x, --one-file-system: 跳过位于不同文件系统上的目录。

--help: 显示帮助信息并退出。

--version: 输出版本信息并退出。

单位显示

显示的值采用 --block-sizeDU_BLOCK_SIZEBLOCK_SIZEBLOCKSIZE 环境变量中首先可用的 SIZE 为单位。如果这些环境变量都没有设置,则默认单位为 1024 字节(如果设置了 POSIXLY_CORRECT,则为 512 字节)。

SIZE 是一个整数,可选的单位(例如:10M 表示 1010241024)。单位包括 K、M、G、T、P、E、Z、Y(1024 的幂)或 KB、MB 等(1000 的幂)。

报告问题

报告 du 的问题至 bug-coreutils@gnu.org,或访问 GNU coreutils 主页获取帮助:http://www.gnu.org/software/coreutils/。若需完整文档,运行命令 info coreutils 'du invocation'

du -ah|sort -rh |head -n N # 按照文件大小展示N行
du -sh # 展示当前文件的总和

链接

ln

硬链接:硬链接的本质是在目录下添加一个文件名,链接到已有的inode号码。因此:不能链接目录

软链接: 建立新文件,文件内容指向已有的文件名(注意不是iNode)

ln 命令用于创建链接到文件或目录的连接。以下是 ln 命令的用法和选项:

使用方式

ln [OPTION]... [-T] TARGET LINK_NAME: 创建名为 LINK_NAME 的链接到 TARGET。

ln [OPTION]... TARGET: 在当前目录创建名为 TARGET 的链接。

ln [OPTION]... TARGET... DIRECTORY: 在 DIRECTORY 中为每个 TARGET 创建链接。

ln [OPTION]... -t DIRECTORY TARGET...: 在 DIRECTORY 中为每个 TARGET 创建链接。

选项

--backup[=CONTROL]: 对每个现有目标文件创建备份。

-b: 类似于 --backup,但不接受参数。

-d, -F, --directory: 允许超级用户尝试硬链接目录。

-f, --force: 移除现有目标文件。

-i, --interactive: 提示是否移除目标。

-L, --logical: 解引用作为符号链接的 TARGET。

-n, --no-dereference: 如果 LINK_NAME 是指向目录的符号链接,则将其视为普通文件。

-P, --physical: 直接创建指向符号链接的硬链接。

-r, --relative: 相对于链接位置创建符号链接。

-s, --symbolic: 创建符号链接而不是硬链接。

-S, --suffix=SUFFIX: 覆盖通常的备份后缀。

-t DIRECTORY, --target-directory=DIRECTORY: 指定创建链接的目录。

-T, --no-target-directory: 将 LINK_NAME 视为始终是一个普通文件。

-v, --verbose: 打印每个链接文件的名称。

--help: 显示帮助信息并退出。

--version: 输出版本信息并退出。

备份后缀

备份后缀默认为 ~,除非使用 --suffixSIMPLE_BACKUP_SUFFIX 进行设置。可以通过 --backup 选项或 VERSION_CONTROL 环境变量来选择版本控制方法。

none, off: 从不进行备份(即使给出了 --backup)。

numbered, t: 进行编号备份。

existing, nil: 如果存在编号备份,则进行编号备份,否则进行简单备份。

simple, never: 总是进行简单备份。

使用 -s 会忽略 -L-P。否则,指定的最后一个选项控制了当 TARGET 是符号链接时的行为,默认为 -P

报告问题

报告 ln 的问题至 bug-coreutils@gnu.org,或访问 GNU coreutils 主页获取帮助:http://www.gnu.org/software/coreutils/。若需完整文档,运行命令 info coreutils 'ln invocation'

常见用法

ln -sf [target] [目标文件] # 创建软连接,硬连接直接没有的s 即可,f表示force 连接如果存在则删除,重新创建

列出所有磁盘列表

lsblk -a #输出基本信息
lsblk -o NAME,UUID,LABEL# 更具定制输出多行信息

列出UUID等参数

blkid

UUID 全局唯一的标识符

列出分区表类型和分区信息

parted -l # 打印分区表信息

通知内核分区表被更改

partprobe

当我们更改分区表后,都需要重启,但是使用此命令会通知内核,重新加载分区表。

查看内核分区表信息

cat /etc/partitions

其他命令工具

创建分区和创建文件系统工具

MBR:fdisk 来创建文件系统

GPT:gfisk来创建分区

或者使用parted进行分区

使用的mkfs系列命令来创建文件系统

系统的挂载和卸载:mount /umount启动挂载

自动挂载方式

我们使用的mount挂载命令,实际上修改的mtab/proc/mounts这两个文件中,但是当文件重启以后,我们会发现文件系统没有被自动挂载

修改fstab 配置启动配置文件,使得文件系统被自动挂载

这里也很简单,我们修改对饮的fstab 表 即可!

cat /etc/fstab

具体的命令使用,请用用户参考实践用法。

发表评论

0 评论