《MacTalk•人生元编程》一一1.1 Linux的文件系统王国

简介:

本节书摘来自异步社区出版社《MacTalk•人生元编程》一书中的第1章,第1.1节,作者:池建强,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 Linux的文件系统王国

MacTalk•人生元编程
在这个系列中和大家聊聊Linux的文件、索引节点、文件类型、软硬链接等内容,其中很多细节也是我使用了很长时间Linux后才真正掌握,希望大家不用那么久。

为什么是Linux?我觉得写技术的东西还是相对严谨一些好,虽然Unix、Linux、OS X一脉相承,但在具体命令上还是会有些差异,这个系列文章里所有的命令和显示结果都是在Linux上进行的,大家可以对照在Mac上试试,大部分一致,少部分不同。

在开始讲Linux王国的臣民之前,先介绍一下王国中最牛的主:root,它不翻译为“根”,也不叫“管理员”,而是被尊称为“超级用户”,是不是觉得高端霸气?超级二字绝不是恭维之词,从Linux王国诞生之初,root就存在了,他会一直霸占着超级用户的角色并世世代代存在下去,没有禅让,没有民选,没有换位,所有的用户都自他而起。如果你以为root会像上帝创造亚当和夏娃那样,让这二位开开心心生娃去了,那你就太Naive了。Linux系统中的所有用户要么由root创建,要么借用root的权限创建,等级极为森严,总之没有root的允许,想搞出一位新用户绝无可能。看到这儿你们是不是都开始觉得计划生育政策好啦?

image

root不仅能够管理用户,还能管理文件系统、进程、设备、网络、通信、协议等,总之他就像站在神山上的神祗,俯视着芸芸众生,看着数据信息在软件和硬件之间川流不息,时不时地做一些计划性干预,如果有人想超越系统的规则,他就能让你消失得像从来没有存在过。

所以那些成天叫嚣被蹂躏被代表的民众,看看root,大家心理就会舒服一些。

以root开篇,下面我们聊聊Linux的文件系统和索引节点。

Linux的文件系统本身是比较复杂的,仅ext2、ext3和ext4就得解释好几天,本文的重点不在于此,所以简单介绍一下。文件系统主要是用来保存文件和相关结构的,让文件存储更安全、更快、更容易检索、能支持更大的物理介质等。在Linux系统中,每个磁盘分区都可以看做一个文件系统,每个系统都有自己的目录结构,Linux会把这些分区按照一定的方式组织成统一的目录结构,方便用户访问。但是每个分区上的文件系统都是独立的,可以采用不容的文件格式,就像一国两制一样,虽然统一了,但是是自治的。

那么如何查看文件系统的格式呢?可以使用df -T -h命令,T表示打印文件格式,h表示用G或M来显示文件大小,示例如下:

→/home/chjq >df -T -h
文件系统      类型      容量  已用  可用 已用% 挂载点
/dev/mapper/VolGroup-lv_root     
                ext4      31G        3.1G   26G     11% /
tmpfs          tmpfs     1011M      88K    1011M   1% /dev/shm
/dev/sda1       ext4      485M       29M    431M    7% /boot

我们可以看到文件系统格式是ext4。目前高版本的Linux基本都开始采用ext4文件格式了,具体来说就是Linux kernel自2.6.28开始正式支持新的文件系统ext4!(使用cat /etc/fstab可以查看文件系统的详细信息)。

有了文件系统,如何管理文件呢?这就引出了索引节点的概念——inode。每个文件都有一个inode,就像我们每个人都有身份证号一样,为什么要有身份证号?说白了就是为了管理咱们的。但身份证号对人来说不是必需的,没身份证一样活,对吧?只要不那么彪悍,别遇到城管。但inode是每个文件与生俱来的,一创建就有了,它记录了文件的元信息,比如文件大小、创建者、时间戳、权限、连接数等内容。

所以在Linux/Unix中,文件名称只是文件的一个属性,叫别名也好,叫绰号也罢,仅为了方便用户记忆和使用,但系统内部并不需要用文件名来定为文件位置,这样处理最直观的好处就是,你可以对正在使用的文件改名,换目录,甚至放到废纸篓,都不会影响当前文件的使用,这在Windows里是无法想象的。比如你打开个Word文件,然后对其进行重命名操作,Windows会告诉你门儿都没有,关闭文件先!但在Mac里就毫无压力,因为Mac的操作系统同样采用了inode的设计。

总之,Linux/Unix的文件系统可以非常灵活地基于inode来管理文件王国里的臣民,如何查看inode或操作inode呢,且听下回分解!

对世界的认知,很多人通过各种方式和模式进行探求,比如科学、宗教、神学,当然还包括一些实践、入世、旅行、禅修等,这些都是认知世界的方式。作为一个写了很多年程序的码农,我更愿意探求计算机世界的奥秘,虽然和年轻人相比,学习能力、速度和效率都大不如前了,但是只要我们一直在往前走就好,世界本无尽头,走不动了,才是终点!

相关文章
|
1月前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
37 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
【Shell 命令集合 磁盘维护 】Linux 创建DOS文件系统 mkdosfs命令使用指南
31 2
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 文件系统维护工具 ext2ed命令使用教程
【Shell 命令集合 磁盘维护 】Linux 文件系统维护工具 ext2ed命令使用教程
26 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建Minix文件系统 mkfs.minix 命令使用教程
33 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘维护 】Linux 建立ext2文件系统 mke2fs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 建立ext2文件系统 mke2fs命令使用教程
30 2
|
1月前
|
安全 Shell Linux
【Shell 命令集合 磁盘维护】Linux 检查和修复Minix文件系统 fsck.minix命令使用教程
【Shell 命令集合 磁盘维护】Linux 检查和修复Minix文件系统 fsck.minix命令使用教程
13 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 磁盘维护 】Linux 查和修复ext2文件系统 fsck.ext2命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查和修复ext2文件系统 fsck.ext2命令使用教程
30 0
|
1月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
【Shell 命令集合 磁盘维护 】Linux 创建MS-DOS文件系统 mkfs.msdos命令使用教程
29 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 启用指定文件系统上的磁盘配额功能 quotaon 命令使用教程
【Shell 命令集合 磁盘管理 】Linux 启用指定文件系统上的磁盘配额功能 quotaon 命令使用教程
31 1
|
1月前
|
存储 安全 Linux
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
【Shell 命令集合 磁盘维护 】Linux 在特定的分区上建立 linux 文件系统 mkfs命令使用教程
27 0