现在的位置: 首页 > 综合 > 正文

Linux笔记-文件系统

2013年06月04日 ⁄ 综合 ⁄ 共 1883字 ⁄ 字号 评论关闭

1 格式化后才能使用文件系统,格式化以一个分区为基础,经过格式化就把磁盘分为多个 block 了

2 格式化为分为 superblock, inode , data block等,他们的作用为:

  • superblock:记录此 filesystem 的整体资讯,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关资讯等;
  • inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的资料所在的 block 号码;
  • block:实际记录档案的内容,若档案太大时,会占用多个 block 。

超级快就来记录整个文件系统,包括这个文件系统的 inode/block 的总量、剩余量等

inode 即一个文档拥有一个inode,记录文档属性及其拥有的 block

block 记录实际的文档内容,大小可以为 1K 2K 4K

 

3 整个文件系统格式化时,不是把所有的 inode和block 都放在一个大组中,而是分成许多小组,每个小组有其 block 块的开始与结束

如上图所示,其中每个分区的最前面都预留了一个 BootSector,这是用来双启动系统的

每个Group 分为, superblock, inode table, data block, inode bitmap, data block bitmap

虽然有多个 Group 但 superblock 只有一个,或者是第一个 Group的备份。

其中 inode bitmap 记录这个组中还有哪些 inode 没有使用, block bitmap 记录还有哪些 block没有使用。

 

4  目录

目录只占用一个 inode 节点,  且目录的 block 中记录的是“此目录下的文档名及文档名所对应的 inode 号”,目录也是占用硬盘空间的,它占用的空间可以使用

ll -d 目录名来查看,它所占用的空间都是 1024 byte 的倍数,因为 block 是1,2,4中大小的。

 

因为目录的 inode 不记录其目录下的文档名,其目录下的文档名是记录在 block中的,所以如果要修改目录下的文档名,则应该拥有对此目录的“w” 权限。

 

在鸟哥的系统上面与 /etc/passwd 有关的目录与档案资料如上表所示,该档案的读取流程为(假设读取者身份为 vbird 这个一般身份使用者):

  1. / 的 inode:
    透过挂载点的资讯找到 /dev/hdc2 的 inode 号码为 2 的根目录 inode,且 inode 规范的权限让我们可以读取该 block 的内容(有 r 与 x) ;

  2. / 的 block:
    经过上个步骤取得 block 的号码,并找到该内容有 etc/ 目录的 inode 号码 (1912545);

  3. etc/ 的 inode:
    读取 1912545 号 inode 得知 vbird 具有 r 与 x 的权限,因此可以读取 etc/ 的 block 内容;

  4. etc/ 的 block:
    经过上个步骤取得 block 号码,并找到该内容有 passwd 档案的 inode 号码 (1914888);

  5. passwd 的 inode:
    读取 1914888 号 inode 得知 vbird 具有 r 的权限,因此可以读取 passwd 的 block 内容;

  6. passwd 的 block:
    最后将该 block 内容的资料读出来。

5 文件系统的不一致状态

当写入数据到一个文件时,刚刚写好 inode table 和 data blocks 但没有来得及更新 inode bitmap, block bitmap, superblock 那么这些已经更改过的 block 就没有记录在 bitmap中,这时就存在不一致状态了。

为了避免这种不一致就产生了日志文件,ext3就具有这个功能,日志所做的工作是:

1 准备写入前做记录, 2 写入中做记录, 3 写好后做记录,

这样即使写文档时出错,也能通过日志恢复,而不用全区查找,进行比对。

 

 

6 我们知道如果要对硬盘上的数据进行操作,要先读入内存, 为了使对内存的修改写到硬盘中,应该使用 sync命令。

7 如果我们要读一个文件时才从硬盘上加载,这样就会降低速度,为了提高速度 Linux 在启动时把常用的文档调入到内存,这也就是为什么 Linux的内存总是用完的原因。

 

8 用ls -ild / /. /.. 查看一下,会发现 inode 都是2, 同时这三个目录也在一个挂载点内,所以这三个目录指的就是同一个目录,也就是说 / 目录的上一级目录就是它本身。

 

9 linux支持的文件系统

  • 传统档案系统:ext2 / minix / MS-DOS / FAT (用 vfat 模组) / iso9660 (光碟)等等;
  • 日志式档案系统: ext3 / ReiserFS / Windows' NTFS / IBM's JFS / SGI's XFS
  • 网路档案系统: NFS / SMBFS

10 VFS (Vritual filesystem)

Linux上层是通过VFS访问底层的文件系统的。

抱歉!评论已关闭.