1.推荐书籍 《编程珠玑》
2.磁盘碎片整理 : 本质是整理块
3.对目录 :
r : 浏览子文件夹和文件 ls
w : 创建和删除子文件夹和文件 mkdir touch rm rmdir mv
x : 进入该目录 cd
4.磁盘是一种顺序的存储介质
5.磁盘分区格式化成ext2文件系统后的存储布局:
Boot Block (启动块) | Block group0(块组) | Block group n(块组) |
Block group0分布
Super Block(超级块) | Group Descriptor Table(块组描述符表) | Block Bitmap(块位图) | inode Bitmap(位图) | inode Table(表) | Data Blocks(数据块) |
super Block : 描述整个分区的文件系统信息
GDT : 由很多块组描述符组成,整个分区分成多少个块组就对应有多少个块组描述符(块组描述符表在每个块组的开头也都有一份拷贝)
Block Bitmap : (数据块存储所有文件的数据), 块位图就是用来描述整个块组中哪些块已用哪些块空闲的
提示: df :命令统计整个磁盘的已用空间非常快,因为它只需要查看每个块组的块位图即可。du则需要搜索遍整个空间,比较慢。
扩展: mke2fs 格式化命令 -b 参数指定大小
-g 参数可以手动指定一个块组有多少个块
-i 参数可以手动指定每多少字节分配一个inode
inode Bitmap : 本身占一个块,其中每个bit 表示一个inode是否空闲可用
inode 表 : 存储文件信息, 每个文件都有一个inode, 一个块组中的所有的inode组成了inode表
数据块 :存储文件内容
该目录下的所有文件夹名和目录名存储在数据块中。
对于符号链接,如果目标路径名较短则直接保存在inode中以便更快地查找,如果目标路径较长则分配一个数据块来保存。
设备文件.FIFO和socket等特殊文件么有数据块,设备文件的主设备号和次设备号保存在inode中
6.硬链接个数 : 文件最少1个, 目录最少2个
互为硬链接的两个文件占用同一个inode
7.实例 :
1.首先创建一个1MB的文件并清零
dd if=/dev/zero of=fs count=256 bs=4k
2.对文件进行格式化 (把这个文件的数据块合起来看成一个1MB的磁盘分区, 在这个分区上再划分出块组)
mke2fs fs
3.用dumpe2fs工具可以查看这个分区的超级块和块组描述符表中的信息
dumpe2fs fs
4.把常规文件制作而成的文件系统也可以像磁盘分区一样mount到某个目录
sudo mount -o loop fs /mnt
卸载挂载
sudo umount /mnt
扩展 : 光盘 : iso9660 harddisk : ntfs, vfat u盘
8.目录中的文件型编码
0 | Unknown |
1 | Regular file |
2 | Directory |
3 | Character device |
4 | Block device |
5 | Named pipe |
6 | Socket |
7 | Symbolic link |
9.使用man2 查看 stat access ,chmod, chown, utime, mtime, atime, link, unlink, rename, readlink, mkdir, rmdir, opendir, readdir, closedir
10.英语 ; pipe(管) bitmap(位图) table(表)