Linux磁盘和文件系统简介
Linux磁盘和文件系统简介
1、文件系统:存储设备上存储数据的方式方法
磁盘主要由盘片、机械手臂、磁头和主轴马达组成,而数据的写入实际是写在盘片上,磁盘的最小存储单位为扇区,每
个扇区为512字节,扇区组成一个圆就叫做磁道,而多个盘片的硬盘同一位置的磁道组成柱面
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节(512字节)
Linux当中,硬盘是以挂载形式存在的,挂载就是利用一个目录当成进入点,将磁盘分区的数据放在该目录下,进入该目
录即进入该分区的意思。
文件系统有:NTFS(New Technology File System)新技术文件系统、Windows专用;FAT、ext系列、xfs等
RHEL5当中默认文件系统为ext3、RHEL6当中默认文件系统为ext4、RHEL7当中默认文件系统为xfs。
每一个磁盘都有MBR,位于0,0,1的位置,存放了引导微代码以及磁盘分区表和校验值,所
以我们来看流程,当我们安装一块硬盘的时候,首先先应该要做的就是分区,分区表大小只有64字节,所以主分区+扩
展分区最多能创建4个,而且扩展分区能且只能创建一个,我们知道了硬盘的物理结构,应该对硬盘有一个认识了。
而分区其实就是告诉操作系统在此硬盘中可以访问的区域是由A柱面到B柱面之间的块,也就是说,磁盘分区就是指定分
区的起始与结束柱面。
2、磁盘分区的目的:方便管理磁盘文件
磁盘在分完区后需要进行格式化,格式化就是为了遵循该系统的存储数据的方式,按照该方式进行写入数据,其实格式
化就是为了将文件系统写入到磁盘当中,让磁盘变成能被操作系统所识别使用的系统格式
文件系统的运行是与操作系统的文件数据有直接关系的,比如RHEL6.5所用的文件系统为ext4,该文件系统中的文件数据
除了文件实际内容外还包含了很多属性,例如Linux操作系统的文件权限rwx和文件属性属主属组时间参数等,文件系统
通常将这两部分数据分别存放在不同的块,权限和属性放置到inode中,至于实际数据则放到data block块中,而且还
有一个超级块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量以及文件
系统的格式等很多参数信息。
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在block号
block:实际记录文件的内容,如果文件太大,会占用多个block
superblock:记录此文件系统的整体信息
每个inode和block都有唯一编号,而且每个文件都会占用一个inode,inode中有文件真实数据所在的block号,所以
说,当我们找到一个文件的inode时,同时也就可以通过inode查找到该文件真实数据所在的block位置,即能够读取到
该文件的真实数据,这样一来我们硬盘上的数据在短时间内就都能够被读取出来,读取的性能就比较好
包括磁盘碎片的整理,都是通过将数据真实存放在的block进行整理
当我们的硬盘非常大,到达TB级别的时候,分区后inode和block的数量是非常巨大的,而且除非在修改文件系统的情况
下,inode和block是不会再发生变动的,所以庞大的数据量会导致很难管理,所以其实在我们进行格式化的时候,都是
分为多个块组的,每一个块组都有独立的inode、block和superblock,而且在每一个分区当中,我们在将开机启动流程
的时候有提到过我们每一个系统需要指定的文件系统且在不同分区,而每一个分区的文件系统中最前面有一个启动分
区,就是我们说过的boot loader,这个boot loader可以安装我们的操作系统引导装载程序,所以才有了我们的多引导
环境。
那么我们来详细了解一下上面的各个参数:
block是存放数据的地方,在我们进行格式化的时候,会设定一个“分配单元大小”,这个值决定了我们block的大
小,而这个值也就决定了我们能够存放的单一文件大小以及我们最大文件系统总的容量,”分配单元大小“越小越节省
空间,“分配单元大小”越大越浪费空间。也就是说block的大小和数量在格式化之后就不能够再改变了(除非重新格式
化);每一个block当中只能存放一个文件的数据;如果文件大小大于block的大小,则一个文件占用多个block数量;如
果文件大小小于block的大小,则该block的剩余空间就不能再使用了
inode是存放文件属性及block块位置等信息的,所以肯定是以表的形式存在的,在inode当中至少记录了:文件的
权限rwx;文件的属主属组;文件的大小;文件的atime、ctime、mtime;文件特性标志,如Set位等;文件实际数据的
位置等信息。
inode的大小固定为128字节;每一个文件只会占用一个inode;所以,我们能创建的文件数量与inode的数量有关;系统
读取文件的时候先找inode,并查询inode中记录的权限与用户是否符合,符合才继续读取文件的真实内容。
inode和block的关系:
inode当中记录了非常多的信息,而inode固定大小为128字节,单记录一个block位
置需要占用4字节,当inode记录的文件A大小为1GB时且block块大小为4k时,A文件就会占用十多万个block,而inode
当中也需要记录十多万的block位置,就会出现冲突,为了解决这一冲突,系统将inode记录block号码的区域定义为12
个直接、1个间接、一个双间接、和一个三间接记录。
这种情况下,我们通过inode能指定的block的数量(block大小以1k为例)如下:
12个直接指向:12*1K=12K \\由于是直接指向,所以可以有12条记录
间接:256*1K=256K \\每个block记录占4字节,因此1K能指定256个记录
双间接:256*256*1K=256^2K \\第一层的指向有256个记录指向二层,二层每个记录能指定256个
三间接:256*256*256*1K=256^3K \\同上
总额为 12+256+256*256+256*256*256(K)=16GB
所以当文件系统将block大小定义为1k时,单个文件大小最大为16G
这个计算方法不能用在2k和4k等更大上,大于2k的block会受到文件系统自身的限制,所以计算结果会有偏差。
superblock是记录整个文件系统相关信息的地方,没有超级块,就没有文件系统了,它主要记录了:block与inode
的总量;未使用和已使用了的block和inode数量;block和inode的大小;文件系统挂载的时间、最近一次写入数据的时
间等相关信息;以及一个文件系统是否被挂载的数值validbit,已挂载为0,未挂载为1。
当我将一个分区进行格式化之后,文件系统为ext4,(200G),假设分成了10个块组block group,即有10个
superblock,但是ext机制让系统在读取该分区的时候首先读取第一个块组当中的超级块(后面的块组没有超级块),来
确定该分区的文件系统
Linux磁盘和文件系统简介的更多相关文章
- Linux 磁盘与文件系统(EXT2)简介
Linux 中,一切(或几乎一切)都是文件. 一.Linux 磁盘分区与文件系统 1.1 磁盘分区 磁盘的分区主要分为主分区和扩展分区 1)主分区:总共最多只能有四个主分区: 2)扩展分区:只能有一个 ...
- linux磁盘与文件系统的管理
本文涉及命令:dumpe2fs.df.du.fdisk.mkfs.mke2fs.fsck.badblocks.mount.umount.e2label.tune2fs.hdparm.parted 概念 ...
- Linux磁盘及文件系统(三)Linux文件系统
一.文件系统的组成 Linux常见的文件系统类型有ReiserFS,ext2,ext3,ext4,vfat,XFS等,文件系统是对一个存储设备上数据和元数据进行组织的机制.他的最终目的是把大量数据有组 ...
- Linux磁盘与文件系统概念理解
磁盘级别概念 这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起.如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每 ...
- linux磁盘以及文件系统
df 查看磁盘总容量 -i 显示inodes号 -h 使用合适的单位显示磁盘大小 -m 以M为单位显示 -k 以K为单位显示 默认K显示 du 用来查看某个目录或者文件所占空间大小 参数:-abckm ...
- 三.linux磁盘与文件系统
第一层 机械硬盘 和 固态硬盘 结构 接口 机械硬盘stat.sas 固态pci-e .nvme也叫m2 硬盘的选择 磁盘内部组成 计算硬盘的大小 命令 fdisk -l 显示下面信息 大小=扇区大 ...
- 鸟哥的私房菜:Linux磁盘与文件系统原理
1 硬盘物理组成 //原理 磁头负责读写 磁道(硬盘同半径的一圈) 磁柱(所有盘磁道叠加起来的柱) 扇区(2条半径将磁道分开的一个扇形区域,是磁盘的最小存储单位) ------ ...
- Linux磁盘及文件系统(二)Linux下磁盘命名和分区
在为主机添加硬盘之前,首先需要了解Linux系统下对硬盘和分区的命令方法 一.磁盘命名 Linux下对SCSI和SATA设备是以sd命名的,第一个SCSI设备是sda,第二个是sdb....以此类推. ...
- Linux磁盘及文件系统(一)
一.磁盘 1.IO接口类型 (1)传输类型分类 并口:同一个线缆可以接多块设备 IDE口:两个,一个主设备,一个从设备 SCSI:宽带:16-1:窄带:8-1 串口:同一个线缆只可以接一个设备 (2) ...
随机推荐
- 在平衡树的海洋中畅游(三)——Splay
Preface 由于我怕学习了Splay之后不直接写blog第二天就忘了,所以强行加了一波优先级. 论谁是天下最秀平衡树,我Splay第一个不服.维护平衡只靠旋转. 一言不合转死你 由于平衡树我也介绍 ...
- 51nod 抽卡大赛
抽卡大赛 链接 分析: $O(n^4)$的做法比较好想,枚举第i个人选第j个,然后背包一下,求出有k个比他大的概率. 优化: 第i个人,选择一张卡片,第j个人选的卡片大于第i个人的概率是$p_j$,那 ...
- Bash : IO 重定向
标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端(输出结果的地方)已经报告问题的地方,它们分别被称为标准输入(stand ...
- JMeter:响应结果乱码解决方法
JMeter:响应结果乱码解决方法 我们经常使用jmeter做接口测试或者正则匹配 看到的响应结果存在乱码,这是小白经常会问的问题,这是因为jmeter会按照jmeter.properties文件中, ...
- nginx反向代理中proxy_set_header 运维笔记
Nginx proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头.该值可以包含文本.变量和它们的组合.在没有定义proxy_set_header时会继承之前定义的值.默认 ...
- B. Views Matter
链接 [http://codeforces.com/contest/1061/problem/B] 题意 问你最多去掉多少块使得从上和右看,投影图不变 分析 注意细节,尤其第一列 代码 #includ ...
- M2阶段团队个人贡献分
团队个人贡献分: 徐钧鸿:53 张艺:48 黄可嵩:51 徐方宇:47 刘浩然:52 钟毅恒:49 杨伊:50
- 第二个spring,第一天
陈志棚:成绩的统筹 李天麟:界面音乐 徐侃:代码算法 由于队友们都回家了,只有我在努力的写代码...
- PAT 1057 数零壹
https://pintia.cn/problem-sets/994805260223102976/problems/994805270914383872 给定一串长度不超过 105 的字符串, ...
- PAT (Basic Level) Practice 1001 害死人不偿命的(3n+1)猜想
https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528 卡拉兹(Callatz)猜想: 对任何一个自 ...