linux学习篇5--- 文件系统 实体连接与符号链接 磁盘 分割挂载 格式化 swap

本文是《鸟哥的Linux私房菜》读书笔记,详细介绍了Linux文件系统的特性,包括inode与block结构,EXT3/EXT4的存取方式,日志式文件系统的作用,以及硬链接和软链接的区别。此外,还讲解了磁盘的分割、格式化、检验、挂载过程,以及如何设置和使用内存交换空间。
摘要由CSDN通过智能技术生成


linux学习篇5---- 《鸟哥的Linux私房菜基础学习篇(第三版)》读书笔记


1.文件系统特性

Linux 操作系统的档案权限(rwx)与文件属性(拥有者、群组、时间参数等)。 文件系统通常会将这两部分的数据分别存放在不同癿区块,权限与属性放置到inode,至于实际数据则放置到 datablock区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 不 block 的总量、使用量、剩余量等。


superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
 inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的每个 block 号码
block:实际记录档案的内容,若档案太大时,会占用多个 block 。



inode/block 资料存取示意图




如图 第一个为索引式文件系统(linux) 第二个为Fat  没有inode   无法一次读出所有的block号     所以一个文件的block分散太厉害的话  容易出现磁盘碎片


ps.  df指令查看挂载情况



2.与目录树的关系

当我们在 Linux 下的 ext 文件系统建立一个目录时, ext会分配一个 inode 与至少一块 block 给该目录。其中,inode 记录该目录的相关权限与属性,并可记录分配到的那块block 号码; 而block则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据


3.EXT3/EXT4 档案的存取

新增一个档案,此时文件系统的行为是:
1. 先确定用户对于欲新增档案的目彔是否具有 w 与 x 的权限,若有的话才能新增;
2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新档案的权限/属性写入;
3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且更新 inode 的 block 指向数据;
4. 将刚刚写入的 inode 与 block 数据同步更新 inode bitmap 与 block bitmap,并更新 superblock 的内容。



4.日志式文件系统 (Journaling filesystem)

为了避免意外中断导致inode block中数据未同步到中介数据中去(上边的第四步)我们的前辈们想到一个方式, 如果在我们的 filesystem 当中规划出一个区块,该区块专门在记录写入或修订档案时的步骤, 那不就可以简化一致性检查的步骤了?也就是说:
1. 预备:当系统要写入一个档案时,会先在日志记录区块中记录某个档案准备要写入的信息;
2. 实际写入:开始写入档案的权限与数据;开始更新 metadata 的数据;
3. 结束:完成数据与 metadata 的更新后,在日志记录区块当中完成该档案的记录。


在这样的程序当中,万一数据的记录过程当中发生了问题,那么我们的系统只要去检查日志记录区块, 就可以知道那个档案发生了问题,针对该问题来做一致性的检查即可,而不必针对整块 filesystem 去检查, 这样就可以达到快速修复 filesystem 的能力了!这就是日志式档案最基础的功能。


5.Linux 文件系统的运作:

异步处理:

当系统加载一个档案到内存后,如果该档案没有被更改过,则在内存区段的档案数据会被设定为干净
(clean)的。 但如果内存中的档案数据被更改过了(例如你用 vi 去编辑过这个档案),此时该内存中的
数据会被设定为脏的 (Dirty)。此时所有的动作都还在内存中执行,并没有写入到磁盘中! 系统会不定
时的将内存中设定为『Dirty』的数据写回磁盘,以保持磁盘与内存数据的一致性。 你也可以利用 sync 指令来强迫写入磁盘。


Linux 文件系统与内存的关系:
系统会将常用的档案数据放置到主存储器的缓冲区,以加速文件系统的读/写;
承上,因此 Linux 的物理内存最后都会被用!加速系统效能;
你可以手动使用 sync 来强迫内存中设定为 Dirty 的档案回写到磁盘中;
若正常关机时,关机指令会主动呼叫 sync 来将内存的数据回写入磁盘内;
但若不正常关机(如跳电、当机或其他不明原因),由于数据尚未回写到磁盘内, 因此重新启动后
可能会花很多时间在进行磁盘检验,甚至可能寻致文件系统的损毁(非磁盘损毁)。


ps。 .df:列出文件系统的整体磁盘使用量;

 du:评估文件系统的磁盘使用量(常用在评估目录所占容量)



6.实体链接不符号链接: ln

Hard Link (实体链接, 硬式连结或实际连结)

每个档案都会占用一个 inode ,档案内容由 inode 的记录指向
想要
读取该档案,必须要经过目录记录的文件名来指向正确 inode 号码才能读取




如图。 目标1 和目标2的block都记录了 同一个inode 这个inode指向一个档案数据内容

好处:

在于如果你将任何一个『档名』删除,其实 inode 与 block 都还是存在的! 此时你可以透过另一个『档名』来读取到正确的档案数据!此外,不管你使用哪个『档名』来编辑, 最终的结果都会写入到相同癿 inode 与 block 中,因此均能进行据的修改! 

一般来说,使用 hard link 指定链接文件时,磁盘的空间与 inode 的数目都不会改发! 我们还是由图来看,由图中可以知道, hard link 只是在某个目录下的 block 多写入一个关连数据而已,既不会增加 inode 也不会耗用 block 数量!(就像是指针一样)

局限

不能跨 Filesystem;

不能 link 目录。



Symbolic Link (符号链接,亦即是快捷方式)

Symbolic link 就是在建立一个独立的档案,而这个档案会让数据的读取指向他 link 的那个档案的档名!由亍只是利用档案来做为指向的动作, 所以,当来源档被删除后,symbolic link 癿档案会无法打开



如图。   目标1指向的是目标2的inode  如果目标2被删除   这目标1也无法找到数据

这个 Symbolic Link 与 Windows 的快捷方式可以给他划上等号,由 Symbolic link 所建立的档案为一个独立的新档案,所以会占用掉 inode 与 block

修改连接档的数据  源档案也会改变   



ln [-sf] 来源文件 目标文件

-s :如果不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link

 -f :如果 目标文件 存在时,就主动的将目标文件直接移除后再建立!


ps.

新建目录的连接档数目为2    分别为当前目录以及上一级目录   新建后上一级目录的连接档数目会加1



7.磁盘的分割、格式化、检验与挂载:

磁盘分区: fdisk

fdisk [-l] 装置名称

-l :输出后面接装置所有partition 内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜索装置 partition 均列出来。

分区后:

partprobe 这个指令。这个指令的执行很简单, 他仅是告知核心必须要读取新的分割表而已,因此并不会在屏幕上出现任何信息!


磁盘格式化:mkfs

mkfs [-t 文件系统格式] 装置文件名


磁盘检验: fsck, badblocks

fsck [-t 文件系统] [-ACay] 装置名称

通常使用这个指令的场合都是在系统出现极大问题,导致你在 Linux 开机时候得进入单人单机模式下进入维护行为时,必项使用此指令

执行 fsck 时, 被检查癿 partition 务必可挂载到系统上!亦即是需要在卸除的状态

磁盘挂载卸除: mount umount

mount 文件系统 目录

umount 目录或者文件系统


8. 开机挂载:/etc/fstab 及 /etc/mtab

p286


9.特殊装置 loop 挂载 (映象档不刻录就挂载使用)

mount -o loop /root/centos5.2_x86_64.iso


10.建立大档案以制作 loop 装置档案

假设我要建立一个空档案在 /home/loopdev ,那可以这样做: [root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512

格式化  mkfs -t ext3 /home/loopdev

挂载  mount -o loop /home/loopdev /media/cdrom/


11.内存置换空间(swap)的建置

使用实体分割槽建置swap

建立 swap 分割槽方式也是非常的简单!透过底下几个步骤:
1. 分割:先使用 fdisk 在你
磁盘中分割中一个分割槽给系统作为 swap 。由亍 Linux 癿 fdiskyu预设会将分割槽 ID设定为 Linux 文件系统,所以你可能还得要设定一下 sy stem ID 就是了。
2. 格式化:利用建立 swap 格式
mkswap装置文件名』就能够格式化该分割槽成为 swap 格式啰
3. 使用:最后将该 swap 装置
启动,方法为:『swapon装置文件名』。
4. 观察:最终透过 free 这个
指令来观察一下内存用量吧!


ps.fdisk无法支持2T以上的分割槽  这个时候就需要用到parted



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值