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

1.1 Linux的文件系统王国

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

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

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

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呢,且听下回分解!

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

时间: 2024-08-29 11:29:09

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

《MacTalk•人生元编程》一一2.1 设计巨匠——乔纳森·艾维

2.1 设计巨匠--乔纳森·艾维 MacTalk•人生元编程今天看到一篇新闻,说苹果的CEO库克参加<华尔街日报>主办的D11科技大会时,谈了一些大家关心的热点问题,包括对Google Glass的看法,苹果的可穿戴技术策略(iWatch?),iOS平台为第三方开放更多的API,乔纳森·艾维(Jonathan Ive)主导iOS人机界面的设计等. Google的眼镜和Apple的手表离我这样的土老冒比较远,即使今秋发布iWatch,估计我也就是擦擦口水看一眼的份儿.第三方API呢,有新的用就是

《MacTalk•人生元编程》导读

前言 MacTalk•人生元编程在这本书付印的前一天,本书的责任编辑杨海玲老师找到了我说:书要出版了,你要不要写个前言和读者说两句?我说:来得及吗?杨老师郑重地看着我点了点头.好吧,那就说两句,于是就有了这一篇前言. 我小学四年级之前一直在农村居住,那时候没见过汽车,只见过马车和小推车.搬到城市之后才发现,这世上居然有汽车这种交通工具,那时我的理想是当一名212吉普车的司机.后来见的车多了,觉得司机不够神气,我希望拥有一辆自己的汽车.这个理想在长大后也实现了.但是我从没有想过自己会出版一本书!今

《MacTalk•人生元编程》一一1.2 inode元信息

1.2 inode元信息 上一篇文章中我们讲到了索引节点inode,每个文件都有一个唯一的inode对象,描述了文件的元信息.inode与文件是生死相依.一损俱损的关系,生命周期一致.很多痛恨身份证的人都说:"老子一生下来就有身份了,干嘛还又给个身份证?"Mac君对这种态度是赞同的.肯定的.欣赏的,但inode不一样,它就像你的指纹,属于文件的一部分并定义文件,这就像人生元编程一样,有了"元"的意味.inode由一个数据结构组成,主要包含这样一些字段: i_hash

《MacTalk•人生元编程》一一1.6 二逼文件

1.6 二逼文件 好,目录文件就介绍到这里,后续介绍的文件类型平时操作很少用到,我把它们统称为二逼文件类型,光荣入选的有以下几个. 块设备文件和字符设备文件,这些文件一般隐藏在/dev目录下,昼伏夜出,平时你感觉不到它们的存在,但是你想进行设备读取和外设交互时,就是它们大显身手的时候.比如磁盘光驱就是块设备文件,串口设备则属于字符设备文件.系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外.FIFO,江湖人称命名管道,主要用于进程间通讯.比如使用mkfifo命令可以创建一个FIFO文

《MacTalk•人生元编程》一一2.2 独自在家续篇兼答读者问

2.2 独自在家续篇兼答读者问 很多人没事就抱怨北京的空气,但是懂得变化的人会知道,何时赞美,何时吐槽. 总结一下,北京的空气变化大概是这个样子: 在月黑霾浓的深夜,伸手只见五指,这时一个叫做"大风"的环保工作者出现了,经过一夜激情,第二天阳光明媚,天蓝云白,PM2.5指数50,朋友圈多了很多蓝白之物.你极目远眺,蓝天和大地的交界处有一层透明的薄雾.第二天,深蓝变浅蓝,天地间的白雾变为灰色,PM2.5指数70.第三天,浅蓝变灰白,天地间夹了一层薄薄的雾霭,PM2.5升到120左右.第四

《MacTalk•人生元编程》一一1.7 硬链接

1.7 硬链接 基于inode技术,Linux允许多个文件名同时指向一个inode.好处就是,我们可以用不同的文件名去访问同一个文件,每次操作对文件内容的影响会波及所有"副本",删除掉一个"副本",不会影响其他文件.增加一个硬链接文件,仅仅是inode里的"Links"属性值加1,删除一个硬链接文件,属性值减1.只有"Links"的值为0时,文件才会被彻底删除,回收其占用的空间. 如何创建一个硬链接文件?非常简单: ln so

《MacTalk•人生元编程》一一1.3 inode的存储

1.3 inode的存储 文件会占用硬盘空间这事大家都清楚(注意,是空间,不是重量,无论您是复制100 GB进来,还是清除100 GB出去,硬盘都在那里,份量既不增一分,也不减一克),那么inode存放在哪里呢?当然也是在硬盘上,Linux是很聪明的,在分区和格式化硬盘的时候,就把硬盘分为了数据区和索引节点区.数据区存放普通文件,索引节点区存放inode对象.每个inode对象的大小一般是128字节或256字节,这个数值可以在格式化的时候设定. 如何查看inode的使用情况呢?可以执行如下命令:

《MacTalk•人生元编程》一一1.5 文艺文件

1.5 文艺文件 写到这儿你就知道,无论是Unix还是Linux,都是相当文艺范儿的.普通的说完了,就该是文艺的了,它就是大名鼎鼎的目录文件(directory file).这个概念对于用惯Windows的用户来说不太容易理解,文件是文件,目录是目录,岂可混为一谈?好吧,它文艺就文艺在这里了. 目录文件同样是Linux文件中的一种,它们包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,你就可以随意访问这些目录下的文件,但是只有内核的进程能够修改它们.

《MacTalk•人生元编程》一一1.8 软链接

1.8 软链接 软链接理解起来比较容易,类似Windows系统中的快捷方式. 软链接会创建新的inode,inode里主要记录了源文件的路径.当访问软链接文件时,系统会帮你自动指向源文件,无论你操作的是源文件,还是软链接文件,其实你最终操作的都是源文件,源文件删除了,软链接文件就成了无本之木,也就毫无意义,强制访问的后果就是No such file or directory. 创建软链接的命令如下: ln -s sourcefile destfile 大家可以尝试用stat命令查看这两个文件的i