文件系统组成:
superblock:记录次filesystem的整体信息,包括inode/block的总量,使用量,剩余量等
inode:记录文件的属性,一个文件占用一个inode,同时记录次文件的数据所在的block号码
block:实际记录文件的内容,若文件太大,会占用多个block
磁盘重组:文件写入的block太过于离散,此时文件读取的性能会下降
MBR:磁盘最前面的512个字节的特殊分区,不属于磁盘上的任何分区,因此分区空间内的格式化命令不能清除主引导分区
只能通过重新格式化磁盘或者特殊的工具
Linux的Ext2文件系统:
在格式化的时候区分为多个区块群组(block group)的,每个区块群组都有独立的inode/block/superblock
文件系统最前面有一个开机扇区(boot sector),可以安装开机管理程序,而不用覆盖整颗磁盘唯一的MBR
data block(数据块)
在ext2文件系统中支持的block大小有1k,2k及4k
block大小 1KB 2KB 4KB
最大单一文件 16GB 256GB 2TB
最大文件系统总容量 2T 8T 16T
inode table
记录的数据:
该文件的存取模式(read/write/excute)
该文件的拥有者与群组(owner/group)
该文件的容量
该文件创建或状态改变的时间(ctime)
最近一次访问时间(atime)
最近修改时间(mtime)
定义文件特性的旗标(SUID,,,,)
该文件真正内容的指向
12个直接指向: 12*1K=12K
间接指向: 256*1K=256K
每笔block号码的记录花去4Bytes,因此1K的大小能记录256笔记录
双间接:256*256*1K
三间接:256*256*256*1K
总额:12+256_256*256+256*256*256(K) = 16GB
(算法不适合2K及4K的block大小,会收到Ext2文件系统本身的限制)
superblock:
记录信息
block与inode的总量
未使用与已使用的inode/block数量
block与inode的大小
filesystem的挂载时间,最近一次写入数据时间,最后一次磁盘检查时间等
一个valid bit数值,已被挂载为0,未被挂载为1
文件系统常用操作:
df:列出文件系统的整体磁盘使用量 -h:以容易读的方式展示 -i:不用磁盘容量,以inode的数量来显示
du:文件或者目录名称 -s:列出总量 -h:以容易读的方式展示
ln:符号链接 -s: 如果不加任何参数表示-s,为软连接 -P: 硬连接 -f: 如果存在,询问是否覆盖
ln -s /etc/passwd /tmp/a 前面实体,后面新链接
磁盘的分区,格式化,检验与挂载
lsblk:列出所有存储设备 -i:使用ASCII的线路输出,不要使用复杂的编码 -p:列出该设备的完整文件名!
blkid:列出设备的UUID等参数
parted:列出磁盘的分区表类型与分区信息
parted /dev/sda print
fdisk:查看分区
mkfs:格式化分区
fsck:磁盘检验
mount:磁盘挂载 -a:依照配置文件把所有未挂载的磁盘都挂载上来 -l:仅输出目前挂载信息 -t:文件系统种类 -o:在挂载时额外增加参数 remote: 重新挂载 .....
umount: -f:强制卸载 -l:立刻卸载 -n:不更新/etc/mtab情况下卸载
开机挂载:
/etc/fstab
/etc/mtab
交换分区:swap
mkswap /dev/sda8 创建swap格式 swapon /dev/sda8 加入swap分区 使用文件创建swap: dd if=/dev/zero of=/tmp/swap bs=1M count=128 mkswap /tmp/swap swapon /tmp/swap swapoff /tmp/swap 关闭该swap文件 设置开机挂载的方式加入swap /tmp/swap swap swap defaults 0 0