第八章 Linux磁盘与文件系统管理

硬盘:柱面、磁道、扇区

柱面:分区时的最小单位

逻辑块:(block)文件系统读写的最小单位

块大小=2n次方 * 扇区大小

块不能划分的太大,否则浪费磁盘空间

扇区:硬盘上最小的存储物理单位量

一般扇区大小为:512字节(bytes

硬盘容量的基本计算公式:磁盘容量=柱面数 * 磁头数 * 扇区数 * 512btyes

Ext2 文件系统中,文件分为两部分来存储:1.文件属性(inode存储) 2.文件内容(块存储)

格式化ext2分区时,需要指定inode 和块大小

Inode记录的信息:

owner/groupread/write/executetypectime/atime/mtimesizeflagpointer还包括文件内容放置在哪个块

1. 目录:一个inode + 至少一个块

2. 文件:一个inode + 文件大小的块

Inode不记录文件名,而文件名则记录目录所属的块区域

/etc/crontab读取为例:


注:1.ext2或者ext3在格式化时就已经建立inode与块的数目了(mke2fs

    2.一个分区所能容许的最大文件数与inode的数量有关(因一个文件至少要一个inode

    3.一般inode占用128字节或者256字节

    4.一般来说,每4KB的磁盘空间分配一个inode

超级快记录的信息:

1.块与inode的总量

2. 未使用/已使用的inode/块总量

3. 一个块与一个inode的大小

4. 文件系统的载入时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间

5. 有效位数值,若此文件系统载入,则有效位为0,否则,有效位为1

组描述符(group description):记录此块由何处开始记录

块位图(block bitmap):记录此块是否被占用

Inode位图(inode bitmap):记录此inode是否被使用

Inode 表(inode table):为每个inode的数据存放区

数据块(data block):为每个块的数据存放区


一般将inode表与块区域成为数据存放区,其他如超级快、块位图与inode位图等成为元数据

E2fsck:数据一致性检查

Linux 通常采用异步处理方式

载入点:目录与文件系统能产生对应的入口点,即载入文件系统的入口,载入点一定是目录而不是文件

文件系统:1.传统 ext2minixms-dosfatiso9660

日志文件系统:ext3reiserfsntfsibmjfssgixfs

网络文件系统:nfssmbfs

系统支持的文件系统:/lib/modules/`uname -r`/kernel/fs

目前启用的文件系统:Cat /proc/filesystems

VFS 虚拟文件系统交换 ,管理所有的文件系统

命令:df【分区容量】 主要参数:-a 列出所有的文件系统 包括/proc等特殊的文件系统 –hGB/MB/KB显示 –H 1M=1000Kb取代 1M=1024kb –T该分区文件系统名称 –i 不用磁盘容量,以inode的数量来显示

特殊文件系统不占用磁盘空间,而占用内存

命令:du【目录大小】主要参数:

-a 列出所有的文件及目录的容量

-s 列出总容量

du –sm 查看当前目录下的每个目录的容量 ,而du 显示默认单位为kb

命令:ln 【链接】

1.硬链接 2.符号链接

硬链接:只是在某个目录下新增一个该文件的关联数据而已,上层目录的关联数据都指向同一个inode

硬链接设置链接文件时,磁盘空间与inode的数目一般都不会变

硬链接:1.不能跨域文件系统 2.不能链接目录

符号链接 = windows下的快捷方式 建立会占用inode与块,为一个新文件

ln –s 建立符号链接

ln  建立硬链接 参数:-f 若目标文件存在时,主动将目标文件直接删除后再建立

   命令:mke2fs 【格式化分区】 主要参数:

-b 设置块大小

-i 给一个inode多少容量

-C检查磁盘错误 其中

-c 以只读方式检查 

-c-c 以读写方式检查

-L 接卷标

-j ext2 加入日志而成为ext3

块大小默认:4096KB

格式化为其他文件系统:mkfs.<其他文件系统>

命令:fdisk 【分区】

分区以root在单用户模式下比较安全。主要参数:

-A按照/etc/fstab,将所有设备都扫描一遍,启用默认执行

-a 自动修复

-r 确认修复

-ya参数

-C显示进度

-f 强制检查

fsck 【磁盘检查】命令:检查有无坏道

Linux 下的fsck = windows 下的scandisk 系统正常使用fsck系统可能出问题

注意:执行fsck检查的分区务必不可载入到系统,也就是在卸载状态。

-s 列出进度

-v 在屏幕上显示进度

-w 写入方式测试(最好不要用此参数)

Sync 将缓存数据同步写入硬盘

mount 【分区&设备&磁盘载入】命令:主要参数:

-a /etc/fstab的所有分区都挂载

-h将载入当前分区与文件系统还有对应的载入点都记录进/etc/mtab

-L 跟系统分区卷标

-t 支持的文件系统格式

-o[ro/rwasync/sync是否同步,默认异步、auto/noauto是否自动载入、dev/nodev是否建立设备文件、suid/nosuid 是否允许suidexec/noexec 是否可执行、user/nouser 是否允许一般用户载入、default 默认为:rw/suid/dev/exec/auto/nouser/async]

 -remount 重新载入

umount【分区&磁盘&设备卸载】 卸载 –f强制卸载

命令:mknod 【设置磁盘号】主要参数:

-b设置设备名称为存储外部设备文件

-p 设备为一个FIFO文件

-c 设置设备名称为一个外部设备文件

命令:e2label 【更改卷标】

tune2fs 【分区格式转换】 主要参数:

-j ext2文件系统格式转换为ext3文件系统格式

-l将超级快的内容读出来 tune2fs –l = dumpe2fs –h   

-L修改文件系统的卷标

DMA模式(direct memary access)是一种不经过cpu而直接从内存取得数据的交换模式

hdparm 【启动磁盘DMA模式】 主要参数:

-i 可以讲系统核心开机测试硬盘信息测试读出来

-d 设置是否启用DMA模式(-d1 启动 –d0取消)

-m 设置同步读取多个扇区的模式

-T测试暂存区cacha的访问性能

-t 测试硬盘的实际访问性能

dump 【系统备份命令】dump 0 表示不备份 1表示备份 2表示备份但比重小于1

fsck 检验分区 0 表示不检验 1 表示要检验 2 表示检验

虚拟内存建立

1.设置一个swap分区

2.建立一个虚拟内存文件

设置swap分区:

1.fdisk建立分区

2.mkswap格式化建立的分区

3.启用swapon

4.添加到/etc/fstab中开机挂载

设置虚拟内存文件:

1.dd命令建立swap文件 例如:dd if=/dev/zero of=/swapfile bs=1M count=1000

2.格式化虚拟内存文件 mkswap

3.启用虚拟内存文件 swapon

4.添加/etc/fstab挂载虚拟内润文件以便开机挂载启动

 

课后习题&答案

……