- 磁盘的组成包括 圆形的磁盘盘用于记录数据,机械手臂与磁盘读取头,用于擦写磁盘数据,主轴马达,用于机械手臂读写磁盘数据
- 磁盘盘中,扇区为最小物理存储单位,目前主要有512bytes与4k两种格式,扇区组成一个圆叫磁柱,早期的分区以磁柱为最小分区单位,目前使用扇区为最小分区单位,每个扇区有编号
- 磁盘分区表有2种格式,MBR和GPT。MBR分区表中,第一个扇区记录了主要开机区和分区表,MBR占用446bytes,分区表占64bytes。GPT分区白哦除了分区数量扩充较多之外,支持的磁盘容量可以超过2TB
- 所有实体磁盘的文件名:/dev/sd[a-p][1-128]; 所有虚拟磁盘文件名/dev/vd[a-p][1-128]
Linux文件系统为Ext2文件系统,文件系统通常会将文件权限和属性、数据分别存档在不同的区块,权限与属性放置到inode中,实际数据放置在data block区块中,还有一个superblock记录整个文件系统的整体信息,包括inode 与block的总量、使用量、剩余量等,inode/block 数据存取方法成为索引式文件系统
- inode:记录文件属性,一个文件占用一个inode,同时记录此文件的数据所在的block编号
- block:实际记录文件的内容,若文件太大会占用多个block
- superblock:记录文件系统的整体信息,包括inode 与block的总量、使用量、剩余量以及文件系统的格式与相关信息等
Ext2 文件系统在格式化的时候基本上是区分为多个区块分组,每个区块分组都有独立的inode/block/superblock系统,文件系统最前面有一个启动扇区boot sector,可以安装开机管理程序
- data block 资料区块: 用于放置文件内容数据,在ext2文件系统中支持的block大小有1K,2K,4K,格式化时大小已固定,每个block内最多只能放置一个文件的数据,如果文件大于block大小会占用多个block,如果文件小于block会造磁盘空间浪费
- inode: 记录了该文件的存取模式,拥有者与群组,容量,建立或状态改变的时间,最后一次读取时间,最近修改时间,文件忒选哪个的表示,真正文件内容的指向。每个inode大小均固定为128bytes,新的ext4和xfs可设定到256bytes,每个文件仅占用一个inode,系统读取文件时需要先找到inode,并分析inode记录的权限是否与用户相符,若符合再读取block内容
- 系统将inode记录block号码的区域定义为12个直接,一个间接,一个双间接和一个三简介记录区
- 12 个直接指向: 12*1K间接:256*1K双间接: 256*256*1K三间接 :256*256*256*1K
- superblock:记录block与inode总量,未使用的和已使用的inode/block数量,文件系统的挂载时间,最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统的县官信息,一个valid bit 数值,若此文件系统已被挂载,则为0。一般superblock大小为1024bytes.每个block group 都可能含有superblock,作为第一个blockgroup 的备份救援
- 文件系统说明: 描述每个block group 的开始与结束的block号码,以及说明每个区段分别属于哪一个block之间
- 区块对照表:查看block使用信息
- inode 对照表:查看inode使用信息
- dumpe2fs: 查询ext家族superblock信息的指令
上半部分时superblock信息,下半部分是每个blockgroup信息,例如Group0:
新建一个目录或文件时,需要使用block bitmap inode bitmap ,此时文件系统的行为是
- 确定用户对欲新增文件的目录是否具有wx权限,有的话才能新增
- 根据inode bitmap 找到没有使用的inode号码,并将新文件的权限或属性写入
- 根据block bitmap找到没有使用的block,将实际数据写入,且更新inode的block指向数据
- 将写入的block和inode同步更新到inode bitmap 和block bitmap,并更新superblock的内容
一般的superblock inode bitmap 和block bitmap 数据经常变动,每次新增、移除、编辑时都会影响数据变更,被称为中介数据metadata,inode和block成为数据存放区域。
日志文件系统:为防止文件系统不一致,在文件系统中规划处一个区块用于专门记录写入或修订文件时的步骤,进行一致性检查
- 预备:当系统写入一个文件时,会现在日志记录区块中记录某个文件准备要写入的信息
- 实际写入:开始写入文件的权限与数据,开始更新metadata
- 结束:完成数据与metadata更新,在日志记录区块中完成该文件的记录
Linux文件系统的运作采用异步处理方式。系统会将常用文件数据放置到主存储器的缓存区,以加速文件系统的读写。可以手动使用sync来强迫内存中设定为dirty的文件回写到磁盘中,若正常关机时,关机指令会自动护甲sync,若不正常关机重新启动时可能会花很多时间进行磁盘检验,甚至导致文件系统的损坏
挂载指将文件系统与目录树结合,挂载点一定是目录,该目录时进入该文件系统的入口。
常见的支持文件系统有
- 传统文件系统:ext2/minix/MS-DOS/FAT/iso1996等
- 日志式文件系统:ext3/ext4/ReiserFS/ Windows' NTFS/ IBM's JFS/ SGI's XFS/ ZFS
- 网络文件系统:NFS/SMBFS
二、磁盘与目录的容量
- df [-ahikHTm] [目录或文件名]-a:列出所有的文件系统,包括/proc等系统特有的文件系统-k:以KByte容量显示-m:以MByte容量显示-h:以GB,MB,KB显示-H:以M=1000K换算-T:连同该分区的文件系统名称列出-i:不用磁盘容量,以inode数量显示
- du [-ahskm] 文件或目录名-a:列出所有的文件与目录容量,系统默认只统计该目录下的文件量-h:G/M表示容量-s:列出总量,不列出每个个别目录所占容量-S:不包括子目录下的总计-k:KB-m:B
- 实体链接 :每个文件都会占用一个inode,文件内容由inode的记录来指向,想要读取该文件,必须要经过目录记录的文件名来指向正确的inode才能读取hard link只是在某个目录下新增一笔档名链接到inode编号的关联记录磁盘空间和inode数量均不会改变,除非新增的数据刚好将目录的block填满了不能跨文件系统不能链接目录
- 符号链接: 建立一个独立文件,让数据的读取指向他链接的文件档名,利用文件作为指向 当来源被删除之后,符号链接的文件无法打开相当于快捷方式
- ln [-sf] 来源文件 目标文件-s:如果不加任何参数表示式实体链接, s是符号链接-f:如果目标文件存在就移除在重新建立
- 当建立一个新的目录时,目录的link数为2 ,上层目录的link数 1
- lsblk [-dfimpt] [device]-d:仅列出磁盘本身,不会显示磁盘的分区数据-f:列出磁盘的文件系统名称-i:使用ASCII输出-m:同时输出该装置在/dev下的权限-p:列出该装置完整的文件名-t:列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等
- blkid列出装置的UUID等参数
- parted列出磁盘的分区表类型与分区信息:parted device_name print
磁盘分区:MBR 分区表使用fdisk分区,GPT使用gdisk分区
- gdisk 装置名称 ?:看到所有操作指令q: 推出w:动作生效p: 输出目前磁盘的状态
- partprobe更新Linux核心的分区表信息-s:加上屏幕讯息
- mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] [-r parms] 装置名称-b : block容量,可由512 到 64k,最大容量限制为Linux的4k-d:后面接data section 的相关参数,主要的值有:agcount=数值:设定需要几个储存群组,与CPU有关agsize=数值:每个AG设定为多少容量,通常agcount/agsize 只选一个设定即可file:格式化的装置是个文件size=数值:data section 的容量su=数值:当有RAID时,stripe数值sw=数值:当有RAID时,用于储存数据的磁盘数量,需扣除备份碟和备用蝶sunit=数值:与SU相当,单位是sector个数swidth=数值:是su*sw -f:如果该装置内已经有文件系统,需要使用-f强制格式化-i: 与inode有关size=数值:最小是256bytes,最大是2k,一般保留256internal=【011】:log装置是否为内建?预设为1内奸,如果使用外部装置,使用下面的设定值logdev=device:log装置为外部装置,设定internal=0size=数值:指定这块登陆去的容量,最小为512block,大约为2M以上才行-L:后面接这个文件系统的标头名称-r:指定realtime section的相关设定值extsize=数值 :一般不需设定,担忧RAID最好设定与swidth的数值相同较佳
四、设置开机挂载
系统挂载限制:根目录\必须先于其他挂载点先挂载,其他挂载点必须为已建立的目录,在同一时间内只能挂载一次,所有分区在同一时间内只能挂在一次;如果进行移除,必须先将工作目录移到挂载点之外
,