系统篇: ext4 文件系统
一、ext4文件系统
ext4:第四代扩展文件系统,是目前Linux发行版比较常用的文件系统。
特点:
上图简单介绍了ext4文件系统的布局:磁盘划分为分区,每个分区又划分为N个块组,在每个块组中,又根据块组的编号有不同的内部结构,Ext4文件系统主要使用块组0中的超级块和块组描述符表,在其他一些特定的块组中有超级块和块组描述符表的冗余备份。如果块组中不含冗余备份,那么块组就以数据块位图开始。当格式化磁盘成为ext4 文件系统的时候,mkfs 将在块组描述符表后面分配预留GDT表数据块(“Reverse GDT blocks”)以用来将来扩展文件系统。紧接在预留GDT表数据块后的是数据块位图与inode表位图,这两个位图分别表示本块组内的数据块与inode表的使用,inode表数据块之后就是存储文件的数据块了。
- 大容量文件系统
与ext3相比,ext4文件系统可支持最高1EB的分区与最大16TB的文件
拓展了子目录的数量,理论上可以无限个
与ext3相比,引入了块组的概念,提高了存取的效率
预留空间、延迟获取空间,减少了文件的分散
更详细的inodes,提高了系统的性能
可以实现快速的文件系统检查
提供日志校验和,提高了可靠性
参考链接:https://blog.csdn.net/a912952381/article/details/81050672
二、分割与格式化硬盘
1、添加分区
fdisk dev:
#对sda分区
fdisk /dev/sda
- p、打印分区表
- n、新建一个新分区
- d、删除一个分区
- q、退出不保存
- w、把分区写进分区表,保存并退出
2、格式化分区
mkfs [-opt] -fstype dev:
- -t:制定文件系统的类型 mkfs -t ext4 /dev/sda1 等价于 mkfs.ext4 /dev/sda
- -F:强制格式化
3、挂载分区
mount [-opt] dev mountdir:
- -t:指定档案系统的类型,通常不必指定。mount 会自动选择正确的类型
#将/dev/sda1以ext4类型挂载到/mnt/disk/disk1
mount -t ext4 /dev/sda1 /mnt/disk/disk1**
参考链接:
https://www.cnblogs.com/rosepotato/p/8177988.html
https://blog.csdn.net/tsz0000/article/details/85719204
https://www.runoob.com/linux/linux-comm-mount.html
三、查看硬盘或目录的容量
df:查看已挂载磁盘的总容量、使用容量与 inode 等等
du:查看档案使用掉的容量有多少
df [-opt]:
- -i: 使用 i-nodes 显示结果
- -k: 使用 KBytes 显示结果
- -m: 使用 MBytes 显示结果
du [-opt] [dirname]:
- -a :全部的档案与目录都列出来!默认值是只列出当前目录的值!
- -b :列出的值以 bytes 输出
- -c :最后加总 total
- -k :列出的值以 KB 输出
- -m :列出的值以 MB 输出
- -s :只列出最后加总的值
四、检查与修复文件系统
fsck [-opt] dev:
- -t : 给定档案系统的类型
- -a : 如果检查有错则自动修复
- -r : 如果检查有错则由使用者回答是否修复
- -A : 对/etc/fstab 中所有列出来的 partition 做检查
参考链接:https://www.runoob.com/linux/linux-comm-fsck.html
五、自动挂载文件系统
当系统启动的时候,系统会自动地从/etc/fstab这个文件读取文件系统配置信息,并且会自动将此文件中指定的文件系统挂载到指定的目录:
: 要挂载的分区或存储设备(设备名称、UUID、label)
: 的挂载位置
: 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto,设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的
:挂载时使用的参数,注意有些mount 参数是特定文件系统才有的
:dump 会检查分区内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 ,0 表示忽略, 1 则进行备份
: fsck 读取 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1,其它所有需要被检查的设备从2开始向后顺序排列,可以同时并列,则同时检查
参考链接:https://blog.csdn.net/richerg85/article/details/17917129
六、同步内存和磁盘的文件
sync:强制将内存中的数据回写到硬盘中
七、坏块检测与修复
badblocks [-svw] [-b <区块大小>] [-o <输出文件>] [磁盘装置] [磁盘区块数] [结束区块数] [开始区块数]
#将坏块检测结果写入badblocks.txt文件中
badblocks -s -v /dev/sda1 > badblocks.txt
参数说明:
- -b<区块大小> 指定磁盘的区块大小,单位为字节
- -o<输出文件> 将检查的结果写入指定的输出文件
- -s 在检查时显示进度
- -v 执行时显示详细的信息
- -w 在检查时,执行写入测试
- [磁盘装置] 指定要检查的磁盘装置
- [磁盘区块数] 指定磁盘装置的区块总数
- [启始区块] 指定要从哪个区块开始检查
坏块的修复:
硬盘在使用时不能修复,否则可能存在写并发的问题,所以修复前需要umount对应分区(若为系统所在分区就没办法在线修复了,因为无法umount):
经过上面的扫描,我們得到了一个文件badblocks.txt:
16435904
sda1有1个坏块16435904,先用dd备份坏块:
dd if=/dev/sda1 bs=4096 skip=16435904 of=/tmp/15435904.dat count=1
用badblocks的写测试功能,对这些坏块进行重写(注意:-w写测试会覆盖数据,所以一定要备份):
badblocks -s -w /dev/sda1 16435904 16435904
对修复后的坏块重新检查:
badblocks -s -v /dev/sda1 16435904 16435904
如果前面的操作有成功的备份/tmp/15435904.dat,就把它写回(可选):
dd if=/tmp/15435904.dat of=/dev/sda1 seek=15435904 bs=4096 count=1
对分区重新检查:
badblocks -s -v /dev/sda1 > badblock.txt
若没有坏道说明修复已完成,若有坏道可以尝试重复以上方法
完成后重新mount分区:
mount -t ext4 /dev/sda1 xxx
参考链接:https://www.runoob.com/linux/linux-comm-badblocks.html
八、磁盘检测与分析(smartctl)
SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及,每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来。这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。硬盘运行了几千小时后,很多内在的物理参数都会发生变化,某一参数超过报警阈值,则说明硬盘接近损坏,此时硬盘依然在工作,如果用户不理睬这个报警继续使用,那么硬盘将变得非常不可靠,随时可能故障。
smartctl [option] device:
- -i 指定设备
- -d 指定设备类型,例如:ata, scsi, marvell, sat, 3ware,N
- -a 或A 显示所有信息
- -l 指定日志的类型,例如:TYPE: error, selftest, selective, directory,background, scttemp[sts,hist]
- -H 查看硬盘健康状态
- -t short 后台检测硬盘,消耗时间短
- -t long 后台检测硬盘,消耗时间长
- -C -t short 前台检测硬盘,消耗时间短
- -C -t long 前台检测硬盘,消耗时间长
- -X 中断后台检测硬盘
- -l selftest 显示硬盘检测日志
参考链接:https://blog.csdn.net/u011065164/article/details/77099225
系统篇: ext4 文件系统相关推荐
- Linux系统篇-文件系统虚拟文件系统
看了之前的关于Linux内存管理和进程调度的文章,相比读者们应该对Linux有了大致的了解,本文的主题是Linux虚拟文件系统.闲话少说,开始! 1.软链接和硬链接的区别 我们知道文件都有文件名与数据 ...
- Linux开发篇 | Linux下制作EXT4文件系统镜像
一.创建文件系统镜像挂载目录 $ sudo mkdir fs 二.创建初始大小的镜像文件 此处以创建4G大小为例,其中4G=bs×count: $ sudo dd if=/dev/zero of=fs ...
- Linux内核学习:EXT4 文件系统在 Linux 内核系统中的读写过程
目录 1 概述 2 虚拟文件系统 与 Ext4 文件系统 2.1 sys_write( ) 代码跟踪 2.2 sys_write( ) 过程分析 2.3 sys_write( ) 的核心部分 vfs_ ...
- linux系统fsck.ext4,linux – 如何在fsck之后恢复损坏的ext4文件系统?
我在软件raid5上有一个ext4文件系统.当我开始耗尽空间时,文件系统运行"好了"好几年了.我在6x2T硬盘上有9T的音量.我开始通过执行mdadm失败,删除,添加,重建,重复过 ...
- Ext4文件系统架构分析(一)
本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外.整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等 ...
- ext4文件系统的delalloc选项造成单次写延迟增加的分析
最近我们的服务进程遇到kill -15后处于Z的状态,变为了僵尸进程,经过/proc/{thread_id}/stack查看其上线程的栈,发现是卡在了fwrite的过程中,而我们的系统中所有文件系统挂 ...
- 【linux】循序渐进学运维-基础篇-修复文件系统实战
文章目录 前言: 实验环境 解决方案 1) 系统出现只读的情况的解决方案 2) 系统文件受损,可以使用fsck命令 a. 创建一个1G的分区 b. 对分区进行格式化 c. 破坏文件系统并重新挂载 d. ...
- 系统性学习Ext4文件系统(图例解析)
Ext4文件系统布局综述 一个的Ext4文件系统被分成一系列块组.为减少磁盘碎片产生的性能瓶颈,块分配器尽量保持每个文件的数据块都在同一个块组中,从而减少寻道时间.以4KB的数据块为例,一个块组可以包 ...
- EXT4文件系统学习(二)dumpe2fs查看ext4文件系统超级块信息数据
编译dumpe2fs工具 Linux系统有此工具软件可直接使用, 如果没有可选择自己手动编译,下面介绍编译ARM开发板的dumpe2fs工具: 下载 git clone git://git.kerne ...
- I.MX6ULL_Linux_系统篇(20) kernel分析-menuconfig
linux内核的功能非常丰富,大多功能可以通过menuconfig图形界面来选择配置,但是我们面对众多的功能,往往不能快速确定配置项位置或无法理解配置项功能,本篇将对配置项做一下简要解析!(作者不建议 ...
最新文章
- 使用C++基于Socket编程实现文件下载(改进-封装成类)
- 第二课.进一步熟悉Linux
- 【算法】双指针算法 ( 有效回文串 II )
- android 从相册或相机获取图片并且裁剪 支持android 7.0
- 如何在SAP Spartacus里捕捉感兴趣的事件
- 硬盘序列号示例_序列化代理模式示例
- ln函数怎么看奇偶性_Python中函数的参数应该怎么理解?看完这篇文章情不自禁的想收藏...
- WebHelper类
- PHPStrom 使用技巧以及基本设置教程【更新完结】
- python绘图库seaborn_python绘图库——Matplotlib及Seaborn使用(入门篇2)
- [抄]外部奖励对内在动机的侵蚀
- Sqlserver 以前我在学校T-sql建ATM取款机的sql语句
- Scala学习(一、环境配置和基础)
- paip.提升用户体验-----c++ 宏的使用...替换从在的地张儿复制过来的代码.
- Centos7环境启动mongod报polkit服务启动失败
- 面试被问到平衡二叉树如何平衡?
- 计算机的数字音乐,论数字音乐作曲
- 2022年lazada跨境店 新,马,泰,菲等4个国家正式开放食品类目招商
- 机器人操作系统入门(一)ROS简介
- python实现炫酷字母雨