鸟哥学习之Linux文件系统
最近学习鸟哥linux私房菜之文件系统,觉得写的很好,所以将重要的知识点做一下总结,以备不时之需。
一、ext系列文件系统
磁盘分区表主要是有两种格式:
1、MBR:限制较多
2、GPT:较新且限制较少
linux文件系统ext2通常会有三个部分:
l 超级区块:记录此文件系统的整体信息,包括inode和数据区块的总量、使用量、剩余量以及文件系统的格式和相关信息等。
l Inode:一个文件占用一个inode,记录文件的属性和权限;同时记录文件的数据所在的区块号码。
l 数据区块:实际记录文件的内容,当文件过大的时候,会占用多个区块。
每个文件都仅会占用一个inode,系统读取文件时,需要先找到inode,分析inode所记录的权限和用户是否符合,若符合才能读取数据区块的内容;
目录树:
读取某个文件时,会经过目录的inode的区块,然后才能够找到读取文件的inode号码,最终找到文件的区块数据。如果有多级目录也会一级一级的查找。
文件系统新增文件的步骤:
第一步:先确定用户对新增文件的目录是否具有权限wx
第二步:根据inode对照表,找出没有使用的inode号码,并将新文件的权限、属性写入
第三步:根据区块对照表,中找到没有使用的区块号码,将实际的数据写入其中,并更新inode的区块指向数据;
第四步:将刚刚使用了的inode和区块更新到inode对照表和区块对照表中,并更新超级区块的内容。
日志式文件系统:
为了解决数据不一致需要恢复的问题,ext2由于需要将超级区块中的状态和实际数据存储状态进行对比,系统文件容量较大时,会造成主机恢复时间过长,所以产生日志式文件系统的功能。Ext3、ext4具有这种功能。
系统文件损坏的原因:
系统将数据加载到内存中,此时数据为clean状态,如果内存中的文件数据被修改,此时数据是dirty状态,系统会进行不定时的sync进入磁盘,以保持数据得一致性。由于异常掉电,数据未写入磁盘中,导致文件系统损失。
挂载:
文件系统需要链接到目录树才能被我们使用,文件系统和目录树的结合,称为挂载。目录是挂载点的入口。
查看当前linux支持的文件系统有哪些:
ls –l /lib/modules/$(uname –r )/kernel/fs
其实这里都是驱动。
centos7默认的文件系统已经由原来的ext4变成xfs文件系统,原因是:ext系统当前虽然支持度最广,但是格式化最慢。慢的原因是:预先规划处所有的inode、区块、元数据(超级区块、inode对照表、区块对照表)等数据。
二、xfs文件系统
Xfs文件系统主要划分为三个部分
l 数据区
数据区和ext系列差不多,也是包括inode、数据区块、超级区块
l 文件系统活动登录区
相当于日志区,文件变化会在这里记录,任务完成后,该记录结束。异常掉电后,会根据记录做恢复。
l 实时运行区
当有文件被建立时,xfs会在这个区域找一个或者数个extent区块,将文件放到这个区块,等分配完毕后,再写入data section的inode和区块中。
显示文件格式:
[root@ldx ~]# df -T /home
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/vda1 xfs 41931756 8733072 33198684 21% /
查看每个目录所占的容量
du -sm /*
三、软连接和硬链接
软连接:类似windows的快捷方式功能的文件
硬链接:通过文件系统的inode链接产生新文件名
名称 |
链接目录 |
跨文件系统 |
链接不存在的文件 |
硬链接 |
不可以 |
不可以 |
不可以 |
软连接 |
可以 |
可以 |
可以 |
四、磁盘操作
系统里新增一块磁盘,需要做到:
l 磁盘分区
l 格式化
l 文件系统检测
l 挂载
4.1 磁盘分区
l MBR分区表使用fdisk
GPT分区表使用gdisk
可以用parted命令对两种进行分区,且不需输入交互命令
l 分区完成后,使用partprobe更新分区表信息
删除分区后也需要执行partprobe更新分区表信息,删除分区之前需要将该分区进行卸载。
4.2格式化
对于xfs来说,使用mkfs.xfs来进行格式化
对于ext4来说,使用mkfs.ext4来进行格式化
其他文件系统mkfs[tab]可以进行联想
4.3文件系统检测
对于xfs来说,使用xfs_repair来进行检测
对于ext4来说,使用fsck.ext4来进行检测
4.4 挂载
Blkid
Mkdir –p /data/xfs
Mount UUID=”**” /data/xfsq
取消挂载umount
卸载后面接设备或者挂载点都可以,但是由于a on b,a可能是文件目录,它里面可能被他其他挂在了,所以一般建议umount b
注意:在进行卸载的时候,工作目录不能是卸载的目录,否则会报设备繁忙
产生uuid:
Uuidgen
自动挂载配置文件/etc/fstab
实际挂载的文件的记录是在/etc/mtab和/proc/mounts
当由于异常操作,导致/只读了,无法修改、etc/fstab,也无法更新/etc/mtab,可以利用:
Mount –n –o remount,rw /
4.4 loop挂载
镜像文件不用刻录就挂架使用
方法一:
挂载镜像文件
Mount –o loop **.iso /dir
方法二:
建立大文件用来制作loop设备文件
dd if=/dev/zero of=文件名 bs=1M count=512
然后将文件进行格式化
最后进行挂载mount 文件名 挂载目录
需要配置在/etc/fstab中,否则重启之后就没有了
文件名 挂载点 文件类型 默认参数 dump备份命令 是否以fsck检测扇区
fsck -cvf /dev/**进行修复
不显示信息什么的,可以直接:fsck -cvf /dev/**