2.1、磁盘与目录的容量
现在我们知道磁盘的整体数据是在superblock区块中,但是每个个别文件的容量则在 inode 当中记录的。那如何在文字接口底下显示出这些数据呢?
- df:列出文件系统的整体磁盘使用量;
- du:评估文件系统的磁盘使用量(常用于推估目录所占容量)。
2.1.1、df
2.1.2、du
2.2、实体链接与符号链接:ln
2.2.1、Hard link(硬链接)
从前面的知识我们知道:
- 每个文件都会占用一个inode,文件内容由inode的记录来指向;
- 想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读取。
也就是说,其实文件名只与目录有关,但是文件内容与inode有关。那有没有可能多个文件名对应到同一个inode呢?有的,那就是hard link了。简单的说:hard link只是在某个目录下新增一笔文件名链接到某inode号码的关联记录而已。
可以发现,两个文件名都链接到 17336313 这个 inode 号码。有一个字段也由 1 变成了 2 ,那个字段就是“链接”的意思。
在这种情况下,无论将任何一个文件名删除,其实 inode 和 block 都存在!此时,你可以通过另一个文件名去读取正确的内容!此外,不论你使用哪个文件名编辑,最终的结果都会写入到同一个 block 中。因此,两个文件名均能进行修改。同时,硬链接只是在某个目录下多写入一个关联数据而已,既不会增加 inode 也不会消耗 block数量。
但是,硬链接也是有限制的:1、不能跨文件系统;2、不能链接目录。
2.2.2、Symbolic link(符号链接,也称为快捷方式)
符号链接就是在建立一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名!由于是利用文件来作为指向的动作,所以,当被指向的文件被删除后,symbolic link 的文件就打不开了!
可以发现两个文件名对应的是不同的 inode 号码,当然是两个不同的文件了。
符号链接会新建一个文件,当然会占用 inode 和 block 了。
2.2.3、建立连接的指令
如果想要在系统里边新增一块磁盘,应该有哪些动作:
- 对磁盘进行分区;
- 对该分区进行格式化,以建立可用的文件系统;
- 若再仔细点,对刚建立的文件系统检验;
- 需要建立挂载点,把文件系统挂载上来。
3.1、观察磁盘分区状态
3.1.1、lsblk:列出系统上的所有磁盘列表
3.1.2、blkid:列出设备的UUID等参数
UUID是全局单一标识符,设备独一无二的标识符。
3.1.3、parted:列出磁盘的分区表类型与分区信息
3.2、磁盘分区
注:以下的主机名更改了,内容并不影响。
MBR分区表采用的是fdisk分区,GPT分区表请使用gdisk分区!
3.2.1、gdisk
分区表信息的每个项目的意义:
- Number:分区的编号;
- Start (sector):每一个分区的开始扇区号;
- End (sector):每一个分区的结束扇区号;
- Size:扇区大小;
- Code:在分区内的可能的文件系统类型。Linux 为 8300,swap 为 8200;
- Name:文件系统的名称等等。
3.2.1.1、用gdisk新增分区
新加了一块 2.5G 的磁盘,假设需要有如下的分区要求:
- 1GB 的 xfs 文件系统
- 1GB 的 ext4 文件系统
- 0.5GB 的 swap(这个分区等一会被删除)
3.2.1.2、partprobe 更新 Linux 核心的分区表信息
3.2.1.3、用 gdisk 删除一个分区
注意:千万不要处理正在使用的文件系统!必须先卸载!
3.2.2、fdisk
fdisk的使用方法几乎和gdisk的方法一样,只不过一个是使用?作为提示数据,一个使用m作为提示数据。
3.3、磁盘格式化(新建文件系统)
3.3.1、XFS 文件系统 mkfs.xfs
可以发现,agcount变成了2。
3.3.2、其他文件系统 mkfs
3.4、文件系统的检测
3.4.1、xfs_repair 处理 XFS 文件系统
当 xfs 文件系统错乱时才会使用这个指令。
同样,修复是时文件系统最好不要正在挂载,可以先卸载了,再修复。
3.4.2、fsck.ext4 修复 EXT4 文件系统
3.5、文件系统的挂载
在挂载之前,最好确定几件事:
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
- 单一目录不应该重复挂载多个文件系统;
- 要作为挂载点的目录,理论上都是空目录才是。
如果目录非空,那么挂载了文件系统后,原目录底下的东西就会暂时消失。等分区卸载后,就会再次显示出来。
3.5.1、挂载文件系统
3.5.2、umount:将设备文件卸载
4.1、开机挂载 /etc/fstab
先要说明一下系统挂载的限制:
- 根目录 / 是必须挂载的,而且一定要先于其他 mount point 被挂载出来;
- 其他 mount point 必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则(FHS);
- 所有 mount point 在同一时间之内,只能挂载一次;
- 所有mount point 在同一时间之内,只能挂载一次;
- 如若进行卸载,您必须先将工作目录移到 mount point(及其子目录)之外。
六个字段很重要:
-
第一栏:磁盘设备文件名/UUID/Label Name
-
第二栏:挂载点
-
第三栏:文件系统
-
第四栏:文件系统参数
文件系统参数 说明 async/sync 设定磁盘是否以异步方式运作!预设为async(效能较佳) auto/noauto 当下达 mount -a 时,此文件系统是否会被主动测试挂载。预设为 auto rw/ro 如果你想要分享数据而不给用户随便更改,可以设定为只读!则不论在此文件系统上的文件是否设定为w,都无法写入! exec/noexec 同上 user/nouser 是否允许用户使用 mount 指令挂载。一般不允许一般用户使用 mount,所以设定为 nouser suid/nosuid 该文件系统是否允许 SUID 的存在 defaults 同时具有 rw,suid,exec,auto,nouser,async等 -
第五栏:是否被 dump 备份指令作用
-
第六栏:是否以 fsck 检验扇区