Open jinhucheung opened 8 years ago
ls -l /lib/modules/$(uname -r)/kernel/fs
#查看系统支持的文件系统
#$(uname -r):查看系统的内核版本号
cat /proc/filesystems
#查看目前已加载到内存中的文件系统
虚拟文件系统(Virtual FileSystem Switch,VFS),管理Liunx所支持的各种文件系统,对上提供给系统调用封装好的接口,对下调用各文件系统模块.整个VFS缩略图如下:
块组(block group)
Ext2文件系统格式化时规划好多个块组,每个块组都有独立的superblock/block/inode系统,这样便于管理
超级块(superblock)
超级块与启动扇区(boot sector)
文件系统描述说明
块对应表(block bitmap)与inode对应表(inode bitmap)
数据块(data block)
inode table
数据存放区与中间数据(metadata)
inode怎么记录block号?
inode记录一个block号码用4bytes,为了让一个inode能记录下更多的block号,其记录block的区域分为12个直接连接,1个间接连接,1个双间接连接,1个三间接连接,inode结构图如下:
inode能记录下多少个block,1KB的block最大单一文件容量?
kumho@kumho-Inspiron-3421:~$ ls -dil / /etc /etc/passwd
2 drwxr-xr-x 22 root root 4096 7月 18 16:49 /
784897 drwxr-xr-x 135 root root 12288 7月 24 17:16 /etc
812534 -rw-r--r-- 1 root root 1899 7月 18 21:50 /etc/passwd
日志文件系统保护了数据的完整,避免不当的操作或突发情况造成数据的损坏,可以恢复数据
写入/修改文件时的流程:
Linux为了解决文件频繁写入硬盘中,效率慢,采用异步处理,将数据先加载至内存中,内存中的某块数据被用户修改后,会设置Dirty标志,系统会不定时将带Dirty标志的数据写回硬盘,用户可以用sync
将内存中的数据写回硬盘(关机时,系统会自动调用sync)
一个文件系统的最顶层目录是挂载点,可以知道挂载点一定是目录,其inode编号通常为2.
# mount /dev/sda12 /mnt/usr
# ls -dil /mnt/usr /
2 drwxr-xr-x 22 root root 4096 7月 18 16:49 /
2 drwxr-xr-x 3 root root 1024 7月 24 20:56 /mnt/usr
通常我们判断是否为同一个文件是查看其inode编号
Linux连接文件有两种,一种是硬连接(hard link),一种是类似Windows的快捷方式,称为符号连接(symbolil link),两种都使用命令ln
来实现
ln 源文件名 连接文件名
ln -s 源文件名 连接文件名
dumpe2fs [-bh] 设备文件名
h
仅列出超级块信息(缺省)df [-ahikHTml] [目录或文件名]
或使用mount -l
a
:列出所有文件系统hlh
:以GB/MB/KB等格式显示文件系统容量i
:不用硬盘容量,而以inode数量来显示l
:显示本地的所有文件系统df -hl
du [-ahskm] 目录/文件名
s
:列出总量,不细致列出子文件的各占用容量h
:以GB/MB/KB等格式显示文件容量m
:以MB列出容量显示fdisk -l
列出当前硬盘的所有分区fdisk
也是我们创建/删除分区的命令blkid 设备文件名
使用命令fdisk 文件设备名
比如fdisk /dev/sda
注意/dev/sda
代表整块硬盘,不能使用/dev/sda1
某分区
使用命令后进入fdisk
程序区,相关的子命令:
n
增加分区d
删除分区p
打印分区表q
不执行前面操作后退出w
执行前面的操作后退出当我们新建完分区后,系统提示我们重启,让内核能重新查找分区表
当然我们可以用partprobe
强制让内核查找分区表(我自己试着不行,格式化还是找不到分区),或者使用mount -o remount,rw,auto /
强制让根目录重新挂载
对某分区进行格式化,主要是将文件系统的相关信息写入到分区中(不写入这些信息,系统怎么知道你这块分区是什么类型的文件系统呢)
使用命令mkfs [-t 文件系统格式] 设备文件名
如果想知道mkfs
支持哪些文件系统的格式化,可以mkfs[TAB][TAB]
fsck
: 检验文件系统是否出错
fsck [-t 文件系统] [-Aayc] 设备名称
a
:自动修复检查到的有问题扇区y
:与a
类似,某些文件系统仅支持y
badblocks
: 检验硬盘扇区坏轨命令mount [-t 文件系统] [-L label名] [-o 额外选项] 设备文件名 挂载点
mount /dev/sda6 /mnt/usr
这个格式就行 umount [-fn] 设备文件名/挂载点
f
强制卸载 mount -o remount,rw,auto /
mount --bind /dir1 /dir2
dir1
与dir2
的inode相同mknod
设置不同类型设备文件
mknod 设备文件名 [bcp] [Major] [Minor]
b
设置设备文件为一个外部存储文件,如硬盘等c
设置设备文件为一个外部输入文件,如鼠标/键盘等p
设置设备文件为管道Major
主设备代码Minor
次设备代码e2label
设置设备文件的卷标名
e2label 设备文件名 卷标名
hdparm
测试性能
hdparm -Tt 设备文件
开机挂载需要将挂载条目添加至/etc/fstab
文件中,之后使用mount -a
进行测试(按着/etc/fstab
重新挂载)
mount -o loop 镜像文件名 挂载点
dd if=/dev/zero of=文件名 bs=块大小 count=块数量
dd if=/dev/zero of=/home/loopdev bs=1M count=512
if
输入文件,/dev/zero
一直输出00of
输出文件,将数据00写入of中mount -t ext3 /home/loopdev
mount -o loop /home/loopdev 挂载点
Swap:系统物理内存不足时,将数据移到Swap空间
Swap构建分以下两种方式
构建Swap的步骤:
fdisk
,创建大容量文件使用上节的命令dd if=/dev/zero of=文件名 bs=块大小 count=块数量
mkswap 文件名
swapon 文件名
卸载文件使用swapoff 文件名
free
查看内存使用情况
Index