一、一些基本定义
1. superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
2. inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的block 号码;
3. block:实际记录档案的内容,若档案太大时,会占用多个 block 。
二、Linux支持的文件系统
1. 查看Linux 支持的文件系统有哪些:
ls -l /lib/modules/$(uname -r)/kernel/fs
2. 查看系统目前已加载到内存中支持的文件系统:
cat /proc/filesystems
Linux VFS (Virtual Filesystem Switch)来帮我们管理怎么去访问不同的文件系统
三、Ext2文件系统介绍
1. block的特点
1) block 的大小与数量在格式化完就不能够再改动了(除非重新格式化),一般为1K,2K或4K,其大小决定了最大单一档案的大小和最大文件系统总容量;
Block 大小 1KB 2KB 4KB
最大单一档案限制 16GB 256GB 2TB
最大文件系统总容量 2TB 8TB 16TB
2) 每个 block 内最多只能够放置一个档案的数据;
3) 如果档案大于 block 的大小,则一个档案会占用多个 block 数量;
4) 若档案小于block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
2. inode的特点
1) 每个 inode 大小均固定为 128 bytes;
2) 每个档案都仅会占用一个 inode 而已;
3) 文件系统能够建立的档案数量与 inode 的数量有关;
4) 系统读档案时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符合才能够开始实际读 block 的内容。
5) inode 记录 block 号码的区域定义为12个直接,一个间接, 一个双间接与一个三间接记录区。
四、文件系统的相关操作
1. df:列出文件系统的整体磁盘使用量
df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的/proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
2. du:评估文件系统的磁盘使用量
du [-ahskm] 档案或目录名称
选项与参数:
-a :列出所有的档案与目录容量,因为默认仅统计目录底下的档案量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计。du 默认会将所有档案的大小均列出,因此假设你在 /etc 底下使用 du 时, 所有的档案大小,包括 /etc 底下的次目录容量也会被计算一次。然后最终的容量 (/etc) 也会加总一次, 所以,如果想要列出某目录下的全部数据, 也可以加上 -S 的选顷,减少次目录的加总喔!
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
3. ln建立档案链接
ln [-sf] 来源文件 目标文件
选项与参数:
-s :如果不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link
-f :如果 目标文件 存在时,就主动的将目标文件直接移除后再建立!
新建目录时link数量一般为2,而上层目录的 link 数则会增加 1,比如/tmp/test有/tmp/test与/tmp/test/.两个link,而对上层目录来说,增加了link/tmp/test/..
4. fdisk 磁盘分区(分区2TB以上用parted)
fdisk -l查看当前磁盘分区信息
fdisk 磁盘: 进入磁盘分区管理系统
5. mkfs 磁盘格式化
mkfs [-t 文件系统格式] 装置文件名
选项与参数:
-t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
6. mke2fs 更细化的磁盘格式化
选项与参数:
-b :可以设定每个 block 的大小,目前支持 1024, 2048, 4096 bytes 三种;
-i : inode的大小
-c :检查磁盘错误,仅下达一次 -c 时,会进行快速读写测试; 如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~
-L :后面可以接标头名称 (Label)
-j :本来 mke2fs 是 EXT2 ,加上 -j 后,会加入 journal 而成为 EXT3。
7. fsck 来检验文件系统是否出错
8. badblocks 检查硬盘或软盘扇区有没有坏轨
9. mount,unmount磁盘挂载与卸除
注意:
1) 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
2) 单一目录不应该重复挂载多个文件系统;
3) 要作为挂载点的目录,理论上应该都是空目录。如果非空,则挂载后原有的文件将被隐藏起来。
10. mknod 修改文件系统的信息,如主要装置代码,次要装置代码等
11. e2label 修改文件系统标头
12. tune2fs 修改文件系统为ext2,ext3,ext4等
13. hdparm 硬盘为IDE接口时设置一些参数
14. 可以用mkswap来将大文件建立为swap文件,并用swapon, swapoff 开启或关闭swap file来实现虚拟内存。
小技巧,可以用dd if=/dev/zero of=/tmp/swap bs=1M count=128来建立大文件。