8 Linux 磁盘与文件系统管理

第8章、 Linux 磁盘与文件系统管理 8.1. 认识 EXT2 文件系统 8.1.1. 硬盘组成与分割的复习 整颗磁盘的组成主要有: - 圆形的磁盘; - 机械手臂; - 主轴马达; 数据储存与读取的重点在于磁盘,而磁盘上的物理组成则为: - 扇区(Sector)为最小的物理储存单位,每个扇区为 512 bytes; - 将扇区组成一个圆,那就是磁柱(Cylinder),磁柱是分割槽(partition)的最小单 阅读详情

文件数据:

superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;

block:实际记录文件的内容,若文件太大时,会占用多个 block 。


索引式文件系统:


FAT 这种格式的文件系统并没有 inode 存在,每个 block 号码都记录在前一个 block 当中

 


ext2文件系统示意图:


Data Block (数据区块)

在 Ext2文件系统中所支持的 block大小有 1K, 2K及 4K。

Ext2 文件系统的 block 的基本限制如下:

  • 原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
  • 每个 block 内最多只能够放置一个文件的数据;
  • 承上,如果文件大于 block 的大小,则一个文件会占用多个 block 数量;
  • 承上,若文件小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。

Inode Table(inode表格)

inode 的数量与大小也是在格式化时就已经固定了, inode 特色:
  • 每个 inode 大小均固定为 128 bytes;
  • 每个文件都仅会占用一个 inode 而已;
  • 承上,因此文件系统能够创建的文件数量与 inode 的数量有关;
  • 系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容。
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 。
superblock 的大小为 1024bytes。相关的 superblock 信息以 dumpe2fs 命令来查看!
每个 block group 都可能含有 superblock !但是我们也说一个文件系统应该仅有一个 superblock 而已,那是怎么回事啊? 事实上除了第一个 block group 内会含有 superblock 之外,后续的 block group 不一定含有 superblock , 而若含有 superblock 则该 superblock 主要是做为第一个 block group 内 superblock 的备份,这样可以进行 superblock 的救援!

block bitmap (区块对照表)
如果你想要新增文件时总会用到 block 吧!那你要使用哪个 block 来记录呢?当然是选择『空的 block 』来记录新文件的数据。 那你怎么知道哪个 block 是空的?这就得要透过 block bitmap 的辅助了。从 block bitmap 当中可以知道哪些 block 是空的,因此我们的系统就能够很快速的找到可使用的空间来处置文件。
同样的,如果你删除某些文件时,那么那些文件原本占用的 block 号码就得要释放出来, 此时在 block bitmap 当中相对应到该 block 号码的标志就得要修改成为『未使用中』啰!这就是 bitmap 的功能。

inode bitmap (inode 对照表)
这个其实与 block bitmap 是类似的功能,只是 block bitmap 记录的是使用与未使用的 block 号码, 至于 inode bitmap 则是记录使用与未使用的 inode 号码!

dumpe2fs[-bh] 装置文件名  e.g.dumpe2fs /dev/hdc2
df  查看目前挂载的设备

每个文件(不管是一般文件还是目录文件)都会占用一个 inode , 且可依据文件内容的大小来分配多个 block 给该文件使用。
当我们在 Linux 下的 ext2 文件系统创建一个目录时, ext2 会分配一个 inode 与至少一块 block 给该目录。其中,inode 记录该目录的相关权限与属性,并可记录分配到的那块 block 号码; 而 block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据。
inode 本身并不记录文件名,文件名的记录是在目录的 block 当中。 因此在第六章文件与目录的权限说明中, 我们才会提到『新增/删除/更名文件名与目录的 w 权限有关』的特色!那么因为文件名是记录在目录的 block 当中, 因此当我们要读取某个文件时,就务必会经过目录的 inode 与 block ,然后才能够找到那个待读取文件的 inode 号码, 最终才会读到正确的文件的 block 内的数据。
由于目录树是由根目录开始读起,因此系统通过挂载的信息可以找到挂载点的 inode 号码(通常一个 filesystem 的最顶层 inode 号码会由 2 号开始!),此时就能够得到根目录的 inode 内容,并依据该 inode 读取根目录的 block 内的文件名数据,再一层一层的往下读到正确的文件名。

新建一个文件或目录时, Ext2 处理方法:
这个时候就得要 block bitmap 及 inode bitmap 的帮忙了!假设我们想要新增一个文件,此时文件系统的行为是:
  1. 先确定用户对于欲新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增;
  2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入;
  3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且升级 inode 的 block 指向数据;
  4. 将刚刚写入的 inode 与 block 数据同步升级 inode bitmap 与 block bitmap,并升级 superblock 的内容。
将文件系统与目录树结合的动作我们称为『挂载』

同一个 filesystem 的某个 inode 只会对应到一个文件内容而已(因为一个文件占用一个 inode 之故), 因此我们可以透过判断 inode 号码来确认不同文件名是否为相同的文件


df:列出文件系统的整体磁盘使用量;
df [-ahikHTm] [目录或文件名]
-h  :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-i  :不用硬盘容量,而以 inode 的数量来显示

du:评估文件系统的磁盘使用量(常用在估计目录所占容量)
du [-ahskm] 文件或目录名称
-s  :列出总量而已,而不列出每个各别的目录占用容量;
-k  :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;

hard link 限制的:

  • 不能跨 Filesystem;
  • 不能 link 目录。
ln[-sf] 来源文件 目标文件
选项与参数:
-s  :如果不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link

fdisk [-l] 装置名称
选项与参数:
-l  :输出后面接的装置所有的 partition 内容。若仅有 fdisk -l 时,则系统将会把整个系统内能够搜寻到的装置的 partition 均列出来。
fdisk 只有 root 才能运行,此外,请注意, 使用的『设备文件名』请不要加上数字,因为 partition 是针对『整个硬盘设备』而不是某个 partition 。

磁盘格式化
mkfs [-t 文件系统格式] 装置文件名
mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置
选项与参数:
-b  :可以配置每个 block 的大小,目前支持 1024, 2048, 4096 bytes 三种;
-i  :多少容量给予一个 inode 呢?
-c  :检查磁盘错误,仅下达一次 -c 时,会进行快速读取测试; 如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~
-L  :后面可以接标头名称 (Label),这个 label 是有用的喔!e2label命令介绍会谈到~
-j  :本来 mke2fs 是 EXT2 ,加上 -j 后,会主动加入 journal 而成为 EXT3。
如果没有特殊需求的话,使用『 mkfs -t ext3....』不但容易记忆,而且就非常好用。

磁盘检验: fsck, badblocks
fsck [-t 文件系统] [-ACay] 装置名称
选项与参数:
-t  :如同 mkfs 一样,fsck 也是个综合软件而已!因此我们同样需要指定文件系统。不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨文件系统, 因此通常可以不需要这个选项!
-A  :依据 /etc/fstab 的内容,将需要的装置扫瞄一次。。
-a  :自动修复检查到的有问题的扇区,所以你不用一直按 y !
-y  :与 -a 类似,但是某些 filesystem 仅支持 -y 这个参数!
-C  :可以在检验的过程当中,使用一个直方图来显示目前的进度!

EXT2/EXT3 的额外选项功能:(e2fsck 这支命令所提供)
-f  :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标!
-D  :针对文件系统下的目录进行优化配置。

mount [-t 文件系统] [-L Label名] [-o 额外选项][-n]  装置文件名  挂载点
mount 设备文件名 挂载点

dd这个命令来新增一个大文件 

e.g.添加一个128MB 的文件    dd if=/dev/zero of=/tmp/swap bs=1M count=128

第8章 Linux磁盘管理与文件系统深度解析 本文深入解析Linux磁盘管理与文件系统架构,包含存储设备物理结构剖析、分区机制、文件系统核心概念以及EXT文件系统inode机制。通过实际脚本示例演示如何检测存储设备信息、分析分区表、监控磁盘健康状态,并提供了C语言代码获取文件系统详细信息的方法。文章还详细讲解了inode工作机制及其分析工具,帮助读者全面理解Linux存储系统的底层原理和运维技术。 阅读详情

相关推荐

山东大学FPGA课程实验一 加法器设计

电子设计自动化与FPGA设计,实验一 加法器设计

2503_91283667的博客 869

linux虚拟机磁盘空间,linux虚拟机磁盘空间扩容

1.挂载物理存储,将新磁盘添加到扩展空间而后重启机器,进入webbios设置该新增存储的raid(不要动旧的存储的raid,不然会数据丢失)。注意设置完以后启动机器,用fdisk进行新存储的分区。]# fdisk -lfdisk /dev/sdb #对第二块硬盘进行操做Command (m for help): n #新增长一个分区Command actione extendedp primary...

weixin_42462007的博客 371

奇异值分解(SVD)C++实现

奇异值分解SVD(紧奇异值分解,截断奇异值分解)C++实现

weixin_45804601的博客 4172

FAT和NTFS文件系统的区别

何为文件系统? 文件系统是数据在磁盘上面的逻辑组织形式,也就是说,文件系统时管理数据如何在磁盘上存储和访问的。所以说,文件系统是整个操作系统的基础。 常见的文件系统: FAT(FAT12\FAT16和FAT32)、NTFS、CDFS、exFAT、RAW、Ext、Btrfs、ZFS、HFS、 HFS+、ReiserFS、JFS、VMFS、XFS、UFS、VXFS、ReFS、WBFS、PF...

PengDQ12的博客 5672

零基础实战:YOLO检测头自定义替换全攻略

本文为零基础用户提供了YOLO检测头自定义替换的完整实战指南。通过将检测头比作汽车的“方向盘”,文章详细阐述了为何需要替换、如何寻找和集成新检测头模块、修改配置文件以及最终训练验证的全过程,旨在帮助用户针对特定任务(如小目标检测)提升模型性能。

perl8的博客 255

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 152

FAT文件系统原理

 FAT文件系统原理                          ——http://www.sjhf.net 文本结构索引:   图片表格

xqd2006的专栏 2336

100天精通Python(基础篇)——第1天:Python从起源到应用的全面解析(附上Python、PyCharm、VSCode下载安装详细教程)

100天精通Python(基础篇)——第1天:Python从起源到应用的全面解析(附上Python、PyCharm、VSCode下载安装详细教程)

努力让自己发光,对的人才能迎着光而来 101万+

文件系统与数据库系统比较

1数据库基础 1.1数据库定义 1)数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。 2)数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较...

weixin_30932215的博客 4161

嵌入式工程师成长之路(7)——算法学习

算法大全1、风仲达——算法笔记2、坐在马桶上学算法3、啊哈算法4、深度强化学习实验室。

云轩阁 4万+

智能手表 BOM 表与版本管理记录

试产与量产阶段 智能手表 BOM 表与版本管理记录

hoony123的博客 1053

8.Linux磁盘与文件系统管理

Linux磁盘与文件系统管理 认识EXT2文件系统 Linux最传统的磁盘文件系统使用的是EXT2,而文件系统是创建在硬盘上面的,因此先了解一下硬盘的物理组成。 硬盘组成与分区 整块磁盘的组成有: 圆形的盘片(主要记录数据部分) 机械手臂与机械手臂上的磁头(可读写盘片上的数据) 主轴马达,可以转动盘片,让机械手臂的磁头在磁盘上读写数据 扇区,最小的物理存储单位,每个扇区512b...

神不烦 442

提示工程ROI计算模板:架构师私藏Excel表(含自动计算)

花3个人力优化提示词,到底能带来多少实际收益?“这个提示工程项目值得做吗?投入10万成本,多久能回本?“不同LLM应用的提示词优化优先级怎么排?全凭经验拍脑袋?当前90%的企业在提示工程投入上缺乏标准化的量化评估方法,导致资源浪费(盲目投入无回报项目)或错失机会(低估高价值优化点)。ROI = (总收益 - 总成本) / 总成本 × 100%对于提示工程,总成本=显性成本+隐性成本,总收益=直接收益+间接收益(后文会详细拆解)。提示工程的价值不是“玄学”,而是可以用数据量化的投资行为。本文分享的。

AI开发架构师 1074

第8章 Linux磁盘与文件系统管理

认识EXT2文件系统 文件的系统特性 Linux的正规文件系统为Ext2 文件数据除了文件实际内容外,还包括其他属性(文件权限、文件属性)。 文件系统将这两部分数据分别存放在不同的块,权限和属性放在inode内,实际数据放在data block块中。此外还有一个super block,记录整个文件系统的信息。 super block:记录文件系统的整体信息,包括inode/block

wuchao0508的博客 293

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

linux -8 Linux磁盘与文件系统的管理

linux -8 Linux磁盘与文件系统的管理 Linux最传统的磁盘文件系统file system EXT2, 1. 磁盘的组成与分区     整块磁盘的组成:     圆形的盘片,主要记录数据的部分     机械手臂与机械手臂上的磁头(可读写盘片上的数据)     主轴马达,可以转动盘片,让机械手臂的磁头可以盘片上读取数据。     扇区(sector),最小的物理存储单

Terry - 专注外贸B2C 583

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【鸟哥 linux 基础篇】 第8章 Linux 磁盘与文件系统管理

EXT文件系统

po_csdn的专栏 542

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

U8Linux磁盘与文件系统管理

1.扇区为最小的物理存储单位,每个扇区为512bytes;将扇区组成一个圆,那就是柱面,柱面是分区的最小单位.Linux系统的EX2文件系统:inode的内容用于记录文件的权限与相关属性.  至于block块则是记录文件的实际内容. 2.在Linux系统下,每个文件都会占用一个inode,且可依据文件内容的大小开来分配多个block给该文件使用.每个文件系统都有独立的inode,block,s

wjy320的专栏 426

别人的Linux私房菜(8)Linux磁盘与文件系统管理

虚拟机的磁盘通常为:/dev/vd[a-p] LVM和软件磁盘阵列 software RAID可以将一个分区格式化为多个文件系统或者多个分区格式化为一个文件系统。 索引式文件系统中:如ext2、ext3等 文件系统初始已经将inode和数据区块规划好,不再变动。 在磁盘的整体规划分区过程中,文件系统最前有启动扇区。之后为一个个块(block group)。在block gr...

嘘、小点声。 117

Linux学习笔记8—Linux磁盘与文件系统管理

一个可以被挂载的数据通常称为『文件系统, filesystem』而不是硬盘分区 基本上 Linux 的传统文件系统为 Ext2 ,该文件系统内的信息主要有: 超级区块superblock:记录此文件系统filesystem 的整体信息,包括inode/区块block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等; inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 区块block 号码; 数据区块:实际记录文件的内容,若文件太大时,会占用多个数据区块bl

yanyuan_No6的博客 189

鸟哥私房菜第8章——Linux磁盘与文件系统管理

1,主分区与扩展分区最多可以有4个(硬盘的限制,因为分区表只有64位); 扩展分区最多只能有一个(操作系统的限制); 逻辑分区是由扩展分区持续分出来的分区; 能够被格式化后作为数据访问的分区为主要分区与逻辑分区,扩展分区无法格式化; 逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11逻辑分区(5号到15号) 2,通常文件系统会将这两部分的数据分别存放在不同的块,权限与属性放置在inode中,实际数据会放置到data block中。另外,还

一个小孩 233

鸟哥LINUX操作练习(8):Linux 磁盘与文件系统管理

一、dumpe2fs查看每个区段与 superblock 的信息 [root@www ~]# dumpe2fs [-bh] 装置文件名 选项与参数: -b :列出保留为坏轨的部分(一般用不到吧!?) -h :仅列出 superblock 的数据,不会列出其他的区段内容! 范例:找出我的根目录磁盘文件名,并观察文件系统的相关信息 [root@www ~]# df <==这个命令...

yyxteacher的专栏 415
上一篇: 7 Linux 文件与目录管理
下一篇: 9 文件与文件系统的压缩与打包
otuhacker
博客等级 码龄18年 21粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值