andylanzhiyong 2014-09-03
文件系统重点:inode(索引节点),block(逻辑区块),superblock(每个档案系统开始的位置的那个block,用于存储像是档案系统的大小,空的或填满的区块,以及它各自的总数等等信息)
磁盘的物理组成:
圆形的磁盘盘
机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据)
主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据
磁盘盘的物理组成:
扇区(sector)为最小的物理储存单位,每个扇区为512bytes
将扇区组成一个圆,那就是磁柱,磁柱是分区的最小单位
第一个扇区最重要,里面有mbr(主要开机区)及分割表,其中mbr占有446bytes,而分区表则占有64bytes
磁盘分区:指定分区的起始与结束磁柱
分区的磁柱范围记录在第一个扇区的分割表中
Inode:存放权限与属性,有:
• 该档案的拥有者与群组(owner/group);
• 该档案的存取模式(read/write/excute);
• 该档案的类型(type);
• 该档案建立或状态改变的时间(ctime)、近一次的读取时间(atime)、近修改的时间(mtime);
• 该档案的容量;
• 定义档案特性的旗标(flag),如 SetUID...;
• 该档案真正内容的指向 (pointer);
Data block:存放实际数据
Superblock:记录整个文件系统的整体信息,包括inode与block的总量,使用量,剩余量等
由于ext2是索引式文件系统,通常情况下不需要常常进行碎片整理
如果硬盘文件系统高达数百gb,将所有的inode与block通通放置在一起将是很不智的决定,因为inode与block的数量太庞大,不容易管理;因此ext2文件系统在格式化的时候基本上是区分为多个区块群组(block group)的,每个区块群组都有独立的inode/block/superblock系统
一个文件系统仅有一个superblock;除了第一个block group内会含有superblock之外,后续的block group不一定含有superblock,而若含有superblock则该superblock主要是作为第一个block group内superblock的备份,可以进行superblock的救援
Dumpe2fs /dev/hda2:查看hda2分区与superblock的信息
目录并不只会占用一个block而已,就是说:在目录底下的档案数如果太多而导致一个block无法容纳下所有的档名与inode对照表时,linux会给予该目录多一个block来继续记录先关的数据
如果档案太过离散,可以将文件系统内的数据全部复制出来,然后将文件系统重新格式化,再讲数据复制回去就可以解决问题
日志式文件系统:ext3:
预备:当系统要写入一个档案是,会现在日志记录区块中记录某个档案准备要写入的信息
实际写入:开始写入当时的权限与数据;开始更新metadata的数据
结束:完成数据域metadata的更新后,在日志记录区块当中完成该档案的记录
当文件系统出现不一致的情况后,系统只需要去检查日志记录区块,就可以找到异常的档案,然后针对该档案进行一致性检查即可,而不必针对整块filesystem去检查,达到快速修复filesystem的能力
常见的支持文件系统有:
传统文件系统:ext2,mimix,ms-dos,fat(用vfat模块),iso9660(光盘)等等
日志式文件系统:ext3,reiserfs,windows’sntfs,ibm’s jfs,sgi’s xfs
网络文件系统:nfs,smbfs
Linux的标准文件系统是ext2
查看linux支持的文件系统:ll /lib/modules/$(uname -r)/kernel/fs
查看系统目前已加载到内存中支持的文件系统:cat /proc/filesystems
硬连结(不能跨filesystem,不能link目录):通过文件系统的inode连结来产生新档名,而不是产生新档案
软连结:相当于windows下的快捷方式
建立连结文件:Ln [-sf] 源文件目标文件
Linux重新分区后,可能需要重新启动来更新核心的分割表;在不重启的情况下,也可以通过下面的命令来执行:partprobe;partprobe的作用是高职核心必须要读取新的分割表而已
硬盘分区时,最好在单人维护模式下比较安全一些;在进行fdisk的时候,如果该硬盘的某个partition还在用当中,那么很有可能使系统核心无法重载硬盘的partition table,解决的方法是敬爱那个该使用中的partition给卸除,然后再重新进入fdisk一遍,重新写入partition table,就可以成功了