Linux文件系统为Ext文件系统,文件系统通常在不同的块中存档文件权限、属性和数据,放置权限和属性inode实际数据放置在中间data block还有一个区块superblock记录整个文件系统的整体信息,包括inode 与block总量、使用量、剩余量等,inode/block 数据存取方法成为索引文件系统
inode:记录文件属性,占用一个文件inode,记录本文件的数据block编号block:如果文件太大,实际记录文件的内容将占用多个blocksuperblock:记录文件系统的整体信息,包括inode 与block文件系统的总量、使用量、剩余量、格式及相关信息等Ext2 文件系统在格式化时基本上分为多个块分组,每个块分组都是独立的inode/block/superblock系统,文件系统前面有一个启动扇区boot sector,可安装启动管理程序
data block 资料区块: 用于放置文件内容数据ext支持文件系统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*1Ksuperblock:记录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/iso日志式文件系统,如1996: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该装置是内部建造的吗?如果使用外部。如果使用外部装置,则使用以下设定值logdev=device:log设置为外部装置internal=0size=数值:指定该登录容量,最小为512block,大约为2M以上才行-L:文件系统的标头名称后面连接-r:指定realtime section相关设定值extsize=数值 :一般不需要设置,担心RAID最好设定与swidth数值相同较好四、设置开机挂载
系统挂载限制:根目录\\必须先在其它挂载点挂载,其他挂载点必须是已建立的目录,同时只能挂一次,所有分区同时只能挂一次;如果删除,必须先将工作目录移除到挂载点以外
电脑知识