磁盘及文件系统管理详解之三
System call
系统调用接口interface
进程通过内核System call来与硬件交互
内核提供的功能都以系统调用的方式提供
系统调用:函数(功能的接口)
用户模式(ring 3)
进程一般运行在用户模式,没有特权;其运行的空间叫用户空间
内核模式(ring 0)
要与硬件打交道,必须转入内核模式
内核运行的空间叫内核空间
文件系统
VFS:Virtual filesystem :属于内核功能,弥补了不同文件系统调用方式不同的问题,将不同文件系统底层调用打包以统一接口向外提供调用。
目录完成文件路径映射
一个磁盘块只能属于一个文件,可以有多个路径
blocksize(块大小):2^n个字节(1K:1024byte;2K:2048byte;4K:4096byte)不同文件系统不一样
一般占用磁盘空间的文件只有普通文件和目录文件,设备文件不占用磁盘空间。
每个块组都有:
inode table:inode表
inode bitmap:inode 位图
block bitmap:块位图
super block:超级块
保存全局信息如(有多个备份,如果超级块坏了,就挂了):
标识块组的数目
每个块组中的块数
块大小
空闲磁盘块
引用磁盘块
空闲inode
引用inode
块组描述符表GDT
标识块组的数目、块组的起始和结束位置等信息
区别:
Boot Block:装操作系统的boot loader
MBR为第一个扇区,不属于任何分区
多系统互存时会使用到Boot Block
GDT:块组描述符表
journal file system日志文件系统
ext3是一种journal file system日志文件系统
fdisk 交互式命令
m 帮助
p 当前分区信息
n 新分区
d 删除分区
w 保存退出
q 不保存退出
l 分区类型信息
t 调整分区类型
cat /pro/partitions #看看内核读取分区信息情况
partprob [/dev/sda] 或者partx 通知内核读取新的分区信息
格式化分区:重新创建文件系统
重新创建文件系统,会损坏原有文件,所以不允许对已有文件的系统重新创建文件系统(格式化)。
linux创建文件系统mkfs
mkfs:make file system
文件系统:ext2 ext3
mkfs -t FSTYPE /dev/sda#
mkfs -t ext3 /dev/sda5
mkfs -t ext3命令等同于mkfs.ext3
mkfs -t ext2命令等同于mkfs.ext2
mkfs.vfat 创建ffat32文件系统
编译内核时可选支持哪些文件系统
cat /proc/filesystems #查看支持哪些文件系统
mke2fs命令专门管理ext系列文件系统
-j 选项直接创建为ext3文件系统
mke2fs -j /dev/sda5
-b BLOCK_SIZE 指定块大小,默认4096,可取1024.2048.4096
mke2fs -b 2048 /dev/sda5
-L LABEL 指定分区卷标;之后使用该卷标引用该磁盘
-m # 指定预留给超级用户的块数百分比(#),直接给一个数字
mke2fs -m 3 /dev/sda5
-i 指定为多少字节的空间创建一个inode,默认8192;此处给出的数字应为块大小的2^n倍
mke2fs -i 4096 /dev/sda5
-N 指定inode的个数
-f 强制创建文件系统;
-E 指定额外的文件系统属性
blkid命令
查看磁盘设备的相关属性,UUID和文件类型TYPE
blkid /dev/sda5
e2label命令
用于查看或者定义卷标
e2label /dev/sda5
用于设定卷标
e2label 设备文件 卷标
e2label /dev/sda5 DATA
调整文件系统的相关属性tune2fs
原本该分区/dev/sda5文件系统为ext2,使用tune2fs无损调整为ext3,怎么搞?
-j 无损将ext2调整为etx3
tune2fs -j /dev/sda5
-L LABEL 设定或修改卷标
tune2fs -L DATA /dev/sda5
-m # 调整预留给超级用户的百分比
-r # 指定预留块数
-o # 设定默认挂载选项
如 acl 选项
-c # 指定挂载次数达到#次后进行自检,0或-1表示关闭自检
-i # 每挂载多少次后自检,0或-1表示关闭自检
-l 显示超级块中的信息,就是超级块的内容
dumpe2fs显示文件系统相关详细信息
dumpe2fs -h 只显示超级块中内容
fsck命令检查并修复文件系统
filesystem check检查并修复linux文件系统
-t TYPE 给出文件系统,不能指定错误的文件系统
-a 不询问,自动修复
e2fsck命令专门用于修复ext2,ext3文件系统
专门用于修复ext2,ext3文件系统
-f 强制修复
-p 自动修复