【8.1】认识EXT2文件系统
【补充】硬盘与存储设备 https://blog.csdn.net/pacosonswjtu/article/details/79811762
(1)
实际的数据都是写在具有磁性物质的磁碟盘上头,而读写主要是透过在机械手臂上的读取头(head)来达成。 实际运作时, 主轴马达让磁碟盘转动,然后机械手臂可伸展让读取头在磁碟盘上头进行读写的动作。
(2)
1)扇区:整个磁碟盘上头好像有多个同心圆绘制出的圆形图,而由圆心以放射状的方式分割出磁碟的最小储存单位,那就是扇区(Sector); 在物理组成分面,每个扇区大小为512Bytes,这个值是不会改变的。
2)磁道:扇区组成一个圆就成为磁道(track);
3)磁柱: 如果是在多碟(多盘片)的硬盘上面,在所有磁碟盘上面的同一个磁道可以组成一个磁柱(Cylinder), 磁柱也是一般我们分割硬盘时的最小单位!
总结) 扇区组成一个圆就是磁道;所有盘片上的同一个磁道组成一个磁柱;
【补充结束】
【8.1.1】硬盘组成与分区复习
1)整颗磁盘的组成主要有:
● 圆形的磁盘盘(主要记录数据的部分);
● 机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据);
● 主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据。
2)磁盘盘上的物理组成则为:
● 区(Sector)为最小的物理储存单位,每个扇区为 512 bytes;
● 将扇区组成一个圆,那就是磁柱(Cylinder),磁柱是分割槽(partition)的最小单位;
● 第一个扇区最重要,里面有:(1)主要启动区(Master boot record, MBR)及分割表(partition table), 其中 MBR 占有 446 bytes,而 partition table 则占有 64 bytes。
3)各种接口的磁盘在Linux中的文件名分别为:
● /dev/sd[a-p][1-15]:为SCSI, SATA, U盘, Flash闪盘等接口的磁盘文件名;
● /dev/hd[a-d][1-63]:为 IDE 接口的磁盘文件名;
4)那么指定分割槽的磁柱范围是记录在哪里?
就是第一个扇区的分割表中啦!但是因为分割表仅有64bytes而已, 因此最多只能记录四笔分割槽的记录,这四笔记录我们称为主要 (primary) 或延伸 (extended) 分割槽,其中扩展分配槽还可以再分割出逻辑分割槽 (logical) , 而能被格式化的则仅有主要分割与逻辑分割而已。
5)最后,我们再将第三章关于分割的定义拿出来说明一下啰:
● 主要分割与扩展分配最多可以有四笔(硬盘的限制);
● 扩展分配最多只能有一个(操作系统的限制);
● 逻辑分割是由扩展分配持续切割出来的分割槽;
● 能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。扩展分配无法格式化;
● 逻辑分割的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分割(5号到63号), SATA硬盘则有11个逻辑分割(5号到15号)。
●
【8.1.2】文件系统特性
1)传统文件系统中,一个分区就是只能够被格式化成为一个文件系统,所以一个文件系统传统上被称为一个分区;
1.1)由于LVM 和 软磁盘阵列的技术存在,一个分区可以格式为多多个文件系统;所以通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分割槽(分区)喔!
2)文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。
每个 inode 与 block 都有编号,至于这三个数据的意义可以简略说明如下:
● superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
● inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;
● block:实际记录文件的内容,若文件太大时,会占用多个 block 。
3)文件系统荔枝:
3.1)索引式文件系统:
我们将 inode 与 block 区块用图解来说明一下,如下图所示,文件系统先格式化出 inode 与 block 的区块,假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个 block 内容读出来! 那么数据的读取就如同下图中的箭头所指定的模样了。
(3)
3.2)FAT文件系统:
FAT 这种格式的文件系统并没有 inode 存在,所以 FAT 没有办法将这个文件的所有 block 在一开始就读取出来。每个 block 号码都记录在前一个 block 当中, 他的读取方式有点像底下这样:
(4)
上图中我们假设文件的数据依序写入1->7->4->15号这四个 block 号码中, 但这个文件系统没有办法一口气就知道四个 block 的号码,他得要一个一个的将 block 读出后,才会知道下一个 block 在何处。 如果同一个文件数据写入的 block 分散的太过厉害时,则我们的磁盘读取头将无法在磁盘转一圈就读到所有的数据, 因此磁盘就会多转好几圈才能完整的读取到这个文件的内容!
4)碎片整理
需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起,这样数据的读取会比较容易啊!
【8.1.3】Linux的Ext2文件系统(inode)
1)因为标准的 Linux 文件系统 Ext2 就是使用这种 inode 为基础的文件系统啦!
1.1)inode 的内容在记录文件的权限与相关属性,至于 block 区块则是在记录文件的实际内容。 而且文件系统一开始就将 inode 与 block 规划好了,除非重新格式化(或者利用 resize2fs 等命令变更文件系统大小),否则 inode 与 block 固定后就不再变动。
1.2)Ext2 文件系统在格式化的时候基本上是区分为多个区块群组 (block group) 的,每个区块群组都有独立的 inode/block/superblock 系统。整个来说,Ext2 格式化后有点像底下这样:
(5)
1.3)在整体的规划当中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装引导装载程序。这是个非常重要的设计,因为如此一来我们就能够将不同的启动管理程序安装到个别的文件系统最前端,而不用覆盖整颗硬盘唯一的 MBR, 这样也才能够制作出多重引导的环境啊!
2)每一个区块群组(block group)的六个主要内容说明如下:
2.1)data block 数据块
2.1.1)data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K 三种而已。在格式化时 block 的大小就固定了,且每个 block 都有编号,以方便 inode 的记录啦。
2.1.2)block 大小而产生的 Ext2 文件系统限制如下:
(6)
除此之外 Ext2 文件系统的 block 还有什么限制呢?有的!基本限制如下:
● 原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
● 每个 block 内最多只能够放置一个文件的数据;
● 承上,如果文件大于 block 的大小,则一个文件会占用多个 block 数量;
● 承上,若文件小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
2.2)inodetable inode表格
2.2.1)如前所述 inode 的内容在记录文件的属性以及该文件实际数据是放置在哪几号 block 内! 基本上,inode 记录的文件数据至少有底下这些:
● 该文件的存取模式(read/write/excute);
● 该文件的拥有者与群组(owner/group);
● 该文件的容量;
● 该文件创建或状态改变的时间(ctime);
● 最近一次的读取时间(atime);
● 最近修改的时间(mtime);
● 定义文件特性的旗标(flag),如 SetUID...;
● 该文件真正内容的指向 (pointer);
2.2.2)inode 的数量与大小也是在格式化时就已经固定了,除此之外 inode 还有些什么特色呢?
● 每个 inode 大小均固定为 128 bytes;
● 每个文件都仅会占用一个 inode 而已;
● 承上,因此文件系统能够创建的文件数量与 inode 的数量有关;
● 系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容。
【荔枝】我们约略来分析一下 inode / block 与文件大小的关系好了。inode 要记录的数据非常多,但偏偏又只有 128bytes 而已, 而 inode 记录一个 block 号码要花掉 4byte ,假设我一个文件有 400MB 且每个 block 为 4K 时, 那么至少也要十万笔 block 号码的记录呢!inode 哪有这么多可记录的信息?为此我们的系统很聪明的将 inode 记录 block 号码的区域定义为12个直接,一个间接, 一个双间接与一个三间接记录区。这是啥?我们将 inode 的结构画一下好了。
(7)
2.2.3)上图最左边为 inode 本身 (128 bytes),里面有 12 个直接指向 block 号码的对照,这 12 笔记录就能够直接取得 block 号码啦! 至于所谓的间接就是再拿一个 block 来当作记录 block 号码的记录区,如果文件太大时, 就会使用间接的 block 来记录编号。
2.2.4)这样子 inode 能够指定多少个 block 呢?我们以较小的 1K block 来说明好了,可以指定的情况如下:
● 12 个直接指向: 12*1K=12K
由于是直接指向,所以总共可记录 12 笔记录,因此总额大小为如上所示;
● 间接: 256*1K=256K
每笔 block 号码的记录会花去 4bytes,因此 1K 的大小能够记录 256 笔记录,因此一个间接可以记录的文件大小如上;
● 双间接: 256*256*1K=2562K
第一层 block 会指定 256 个第二层,每个第二层可以指定 256 个号码,因此总额大小如上;
● 三间接: 256*256*256*1K=2563K
第一层 block 会指定 256 个第二层,每个第二层可以指定 256 个第三层,每个第三层可以指定 256 个号码,因此总额大小如上;
● 总额:将直接、间接、双间接、三间接加总,得到 12 + 256 + 256*256 + 256*256*256 (K) = 16GB
2.3)superblock 超级块
Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的信息主要有:
● block 与 inode 的总量;
● 未使用与已使用的 inode / block 数量;
● block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128 bytes);
● filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等文件系统的相关信息;
● 一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
2.4)File system description 文件系统描述
这个区段可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段 (superblock, bitmap, inodemap, data block) 分别介于哪一个 block 号码之间。这部份也能够用 dumpe2fs 来观察的。
2.5)block bitmap 块对照表
从 block bitmap 当中可以知道哪些 block 是空的,因此我们的系统就能够很快速的找到可使用的空间来处置文件啰。
2.6)inode bitmap inode对照表
inode bitmap 则是记录使用与未使用的 inode 号码啰!
【荔枝】每个区段与 superblock 的信息都可以使用 dumpe2fs 这个命令来查询的!
(8)
(9)
【8.1.4】与目录树的关系
1)那么目录与文件在 Ext2 文件系统当中是如何记录数据的呢? 基本上可以这样说:
1.1)目录
当我们在 Linux 下的 ext2 文件系统创建一个目录时, ext2 会分配一个 inode 与至少一块 block 给该目录。其中,inode 记录该目录的相关权限与属性,并可记录分配到的那块 block 号码; 而 block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据(理解下文的硬链接需要参考此内容)。也就是说目录所占用的 block 内容在记录如下的信息:
(10)
【荔枝】如果想要实际观察 root 家目录内的文件所占用的 inode 号码时,可以使用 ls -i 这个选项来处理:
(11)
【荔枝】如果我想要读取 /etc/passwd 这个文件时,系统是如何读取的呢?
(12)
【8.1.5】EXT2/EXT3 文件的存取与日志式文件系统的功能
1)假设我们想要新增一个文件,此时文件系统的行为是:
1. 先确定用户对于欲新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增;
2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入;
3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且升级 inode 的 block 指向数据;
4. 将刚刚写入的 inode 与 block 数据同步升级 inode bitmap 与 block bitmap,并升级 superblock 的内容。
2)一般来说,我们将 inode table 与 data block 称为数据存放区域,至于其他例如 superblock、 block bitmap 与 inode bitmap 等区段就被称为 metadata (中介数据) 啰。
因为 superblock, inode bitmap 及 block bitmap 的数据是经常变动的,每次新增、移除、编辑时都可能会影响到这三个部分的数据,因此才被称为中间数据的啦。
3)superblock, inode bitmap 及 block bitmap 可能存在数据不一致的情况,所以出现了日志文件系统,如下:
1. 预备:当系统要写入一个文件时,会先在日志记录区块中纪录某个文件准备要写入的信息;
2. 实际写入:开始写入文件的权限与数据;开始升级 metadata 的数据;
3. 结束:完成数据与 metadata 的升级后,在日志记录区块当中完成该文件的纪录。
【8.1.6】linux文件系统的操作
1)同步内存数据到磁盘:当系统加载一个文件到内存后,如果该文件没有被更动过,则在内存区段的文件数据会被配置为干净(clean)的。 但如果内存中的文件数据被更改过了(例如你用 nano 去编辑过这个文件),此时该内存中的数据会被配置为脏的 (Dirty)。此时所有的动作都还在内存中运行,并没有写入到磁盘中! 系统会不定时的将内存中配置为『Dirty』的数据写回磁盘,以保持磁盘与内存数据的一致性。
2)Linux 系统上面文件系统与内存有非常大的关系喔:
● 系统会将常用的文件数据放置到主存储器的缓冲区,以加速文件系统的读/写;
● 承上,因此 Linux 的物理内存最后都会被用光!这是正常的情况!可加速系统效能;
● 你可以手动使用 sync 来强迫内存中配置为 Dirty 的文件回写到磁盘中;
● 若正常关机时,关机命令会主动呼叫 sync 来将内存的数据回写入磁盘内;
● 但若不正常关机(如跳电、死机或其他不明原因),由于数据尚未回写到磁盘内, 因此重新启动后可能会花很多时间在进行磁盘检验,甚至可能导致文件系统的损毁(非磁盘损毁)。
【8.1.7】挂载点的的意义
1)每个 filesystem 都有独立的 inode / block / superblock 等信息,这个文件系统要能够链接到目录树才能被我们使用。 重点是:挂载点一定是目录,该目录为进入该文件系统的入口。
(13)
2)同一个 filesystem 的某个 inode 只会对应到一个文件内容而已(因为一个文件占用一个 inode 之故), 因此我们可以透过判断 inode 号码来确认不同文件名是否为相同的文件喔! 下图中的25表示有25个软链接文件链接到该目录;
(14)
【8.1.8】其他linux支持的文件系统与VFS
1)常见的支持文件系统有:
● 传统文件系统:ext2 / minix / MS-DOS / FAT (用 vfat 模块) / iso9660 (光盘)等等;
● 日志式文件系统: ext3 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS
● 网络文件系统: NFS / SMBFS
【荔枝】linux支持的文件系统有哪些:
(15)
【荔枝】系统目前已加载到内存中支持的文件系统则有:
(16)
【8.2】文件系统的简单操作
【8.2.1】磁盘与目录的容量:df, du
【荔枝】df:列出文件系统的整体磁盘使用量;
【荔枝】du:评估文件系统的磁盘使用量(常用在推估目录所占容量),主要用于统计目录和文件所占磁盘大小
(干货——区别df 和 du 的不同)
由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在 Superblock 内的信息, 所以这个命令显示结果的速度非常的快速!
(17)
(18)
补充:易读的容量格式,如K, M, G;
(19)
(20)
(21)
(22)
【注意】
注意1)如果使用 -a 这个参数时,系统会出现 /proc 这个挂载点,但是里面的东西都是 0 ,不要紧张! /proc 的东西都是 Linux 系统所需要加载的系统数据,而且是挂载在『内存当中』的, 所以当然没有占任何的硬盘空间啰!
注意2)至于那个 /dev/shm/ 目录,其实是利用内存虚拟出来的磁盘空间!
【荔枝】du:评估文件系统的磁盘使用量(常用在推估目录所占容量)
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据, 所以上述第三个范例命令的运行会运行一小段时间!
(23)
(上图仅统计目录所占磁盘大小)
(24)
(上图统计了目录和文件所占磁盘大小)
(25)
补充:容量单位都是K;
(26)
【8.2.2】创建链接文件命令:ln, 这里应该是硬链接文件,也可以用 copy -l 进行创建;
1)在 Linux 底下的连结档有两种:
1.1)软链接:一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);
1.2)硬链接:另一种则是透过文件系统的 inode 连结来产生新档名,而不是产生新文件!这种称为实体链接 (hard link)。
【干货】下面将讲解硬链接和软链接。
2)hard link(硬连接)
2.1)每个文件都会占用一个 inode,文件内容由inode的记录来指向;其中inode 存储文件属性,包括访问权限,存储文件内容的block块号码等;而data block存储文件的数据内容;每个inode占用128 bytes字节,而每个data block 大小为 1k, 2k 或 4k;每个inode 记录一个 data block号码需要花费4 bytes字节;
2.2)文件名与目录有关,但文件内容与inode有关;
2.3)多个文件名指向同一个inode号码,这就是硬连接的作用;
2.4)简单来说:硬连接只是在某个目录下新建一条文件名链接到某inode号码的关联记录而已;(干货——硬链接的定义)
3)举个例子来说:假设我系统有个 /root/crontab,他是 /etc/crontab 的实体链接,也就是说这两个档名连结到同一个 inode , 自然这两个文件名的所有相关信息都会一模一样(除了文件名之外)。
【荔枝】硬链接:
(27)
补充:将读取到正确数据的方式画成示意图,就类似如下画面:
(28)
分析1)上图的意思是,你可以透过 1 或 2 的目录之 inode 指定的 block 找到两个不同的档名,而不管使用哪个档名均可以指到 real 那个 inode 去读取到最终数据!那这样有什么好处呢?最大的好处就是『安全』!如同上图中, 如果你将任何一个『档名』删除,其实 inode 与 block 都还是存在的!
分析2)由图中可以知道, hard link 只是在某个目录下的 block 多写入一个关连数据而已,既不会添加 inode 也不会耗用 block 数量。(干货——硬链接的物理意义)
分析3)硬链接文件的限制:
不能跨 Filesystem;
不能 link 目录。
【总结干货】硬链接:inode1 和 inode 2 分别是目录 /etc/ 和 目录/root的 inode;目录inode记录对应的数据block号码;该数据块存储了 文件名称和对应的inode编号;而/etc/crontab 和 /root/crontab 这两个文件名称的inode编号都是 real,即391395;通过real 这个inode就可以找到真实的文件数据内容。
4)软链接:Symbolic Link (符号链接,亦即是快捷方式)
4.1)介绍: Symbolic link 就是在创建一个独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的档名!由于只是利用文件来做为指向的动作, 所以,当来源档被删除之后,symbolic link 的文件会『开不了』, 会一直说『无法开启某文件!』。实际上就是找不到原始『档名』而已。
【荔枝-软链接】创建一个软链接
(29)
分析)由上表的结果我们可以知道两个文件指向不同的 inode 号码,当然就是两个独立的文件存在! 而且连结档的重要内容就是他会写上目标文件的『文件名』, 你可以发现为什么上表中连结档的大小为 12 bytes 呢? 因为箭头(-->)右边的档名『/etc/crontab』总共有 12 个英文,每个英文占用 1 个 byes ,所以文件大小就是 12bytes了! 图例解释如下:
(30)
【总结干货】软链接:inode1和inode2 分别是 目录/etc 和 目录 /root 的目录inode,对应的数据块存储着 文件名和对应的inode;软链接文件的文件名对应的inode不是实际文件的inode,而是目录/etc的inode,即inode2;通过传入的文件名 -->/etc/crontab 找到对应的inode real,从而链接到文件实际内容;
【荔枝】ln命令:制作链接文件
(31)
(du -sb 列出文件总大小;df -i 列出文件系统使用量并显示inode)
(32)
(33)
注意:第3列的硬链接数量都是2,从1增加到2了;
【荔枝】创建软链接
(34)
(35)
(36)
补充) 使用 -s 的参数创建一个名为 passwd-so 的文件,则你修改 passwd-so 时,其内容与 passwd 完全相同,并且,当你按下储存之后,被改变的将是 passwd 这个文件!
5)关于目录的链接数量:
当我们创建一个新目录名称为 /tmp/testing 时,基本上会有三个东西,那就是:
/tmp/testing
/tmp/testing/.
/tmp/testing/..
当我们创建一个新的目录时,新的目录的 硬链接数为 2 ,而上一级目录的硬链接数则会添加 1。
可以把 /tmp/testing/.目录当做 /tmp/testing 目录的硬链接;而 /tmp/..目录当做 /tmp 目录的硬链接;
【荔枝】目录硬链接数量
(37)
(38)
【8.3】磁盘的分区,格式化,检验与挂载
1)想在系统里面新增一个硬盘,需要做什么呢?
1.1)对磁盘进行分割,以创建可用的 partition ;
1.2)对该 partition 进行格式化( format ),以创建系统可用的 filesystem;
1.3)若想要仔细一点,则可对刚刚创建好的 filesystem 进行检验;
1.4)在 Linux 系统上,需要创建挂载点 ( 亦即是目录 ),并将他挂载上来;
【8.3.1】磁盘分区:fdisk
(39)
1)fdisk简介:输出设备的所有分区内容;
(40)
(41)
不管你进行了什么动作,只要离开 fdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效的意思。
(42)
(43)
【荔枝】fdisk -l 查看所有分区
补充:其打印效果,同 fdisk /dev/sda;
(44)
2)下面是分区演示内容,仅截图,不进行实际操作;
2.1)删除分区:
(45)
2.2)新增分区:
(46)
2.3)新增扩展分区
(47)
【8.3.2】磁盘格式化
1)mkfs命令:进行磁盘格式化
(48)
(49)
2)mke2fs命令:
(50)
【mke2fs荔枝】mke2fs 是一个很详细但是很麻烦的命令!因为里面的细部配置太多了!现在我们进行如下的假设:
● 这个文件系统的标头配置为:vbird_logical
● 我的 block 指定为 2048 大小;
● 每 8192 bytes 分配一个 inode ;
● 建置为 journal 的 Ext3 文件系统。
格式化操作如下:
(51)
【8.3.3】磁盘检验:fsck, badblocks
(52)
(53)
【8.3.4】磁盘挂载与卸载
1)不过要进行挂载前,你最好先确定几件事:
● 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
● 单一目录不应该重复挂载多个文件系统;
● 要作为挂载点的目录,理论上应该都是空目录才是。
2)挂载命令和卸载: mount 和 umount;
【8.3.5】磁盘参数修改
1)查看设备列表:
(54)
(55)
2)上面的8 表示主设备代码,0~8表示次设备代码;常用硬盘文件名/dev/hda 和 /dev/sda 设备代码如下:
(56)
3)修改磁盘参数: mknod
(57)
4)修改卷标: e2label
(58)
5)tune2fs
(59)
6)hdparm:
【8.4】设置开机挂载
1)系统挂载限制:
● 根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
● 其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则
● 所有 mount point 在同一时间之内﹐只能挂载一次。
● 所有 partition 在同一时间之内﹐只能挂载一次。
● 如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。
2)/etc/fstab 文件:
其实 /etc/fstab (filesystem table) 就是将我们利用 mount 命令进行挂载时, 将所有的选项与参数写入到这个文件中就是了。
(60)
分析)第1列:磁盘设备文件名或该设备的label;
第2列:挂载点或目录;
第3列:磁盘分区的文件系统,如ext4;
第4列:文件系统参数;
(61)
第5列:能否被 dump 备份命令作用;
第6列:是否以 fsck 检验扇区;
【荔枝】开机自动挂载:假设我们要将 /dev/sda7 每次启动都自动挂载到 /mnt/tr-tmp ,该如何进
(62)
【8.4.2】特殊设备 loop 挂载(镜像文件不刻录就可以挂载)
【8.5】内存空间交换 swap的构建
【8.7】重点回顾
● 基本上 Linux 的正统文件系统为 Ext2 ,该文件系统内的信息主要有:
○ superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
○ inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;
○ block:实际记录文件的内容,若文件太大时,会占用多个 block 。
● Ext2 文件系统的数据存取为索引式文件系统(indexed allocation)
● 需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起。
● Ext2文件系统主要有:boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分。
● data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K 三种而已
● inode 记录文件的属性/权限等数据,其他重要项目为: 每个 inode 大小均固定为 128 bytes; 每个文件都仅会占用一个 inode 而已; 因此文件系统能够创建的文件数量与 inode 的数量有关;
● 文件的 block 在记录文件的实际数据,目录的 block 则在记录该目录底下文件名与其 inode 号码的对照表;
● 日志式文件系统 (journal) 会多出一块记录区,随时记载文件系统的主要活动,可加快系统复原时间;
● Linux 文件系统为添加效能,会让主存储器作为大量的磁盘高速缓存;
● 实体链接只是多了一个文件名对该 inode 号码的链接而已;
● 符号链接就类似Windows的快捷方式功能。
● 磁盘的使用必需要经过:分割、格式化与挂载,分别惯用的命令为:fdisk, mkfs, mount三个命令
● 启动自动挂载可参考/etc/fstab之配置,配置完毕务必使用 mount -a 测试语法正确否;