7.8 本章习题 - 第一题一定要做

  • 情境仿真题一:复原本章的各例题练习,本章新增非常多 partition ,请将这些 partition 删除,恢复到原本刚安装好时的状态。
    • 目标:了解到删除分区需要注意的各项信息;
    • 前提:本章的各项范例练习你都必须要做过,才会拥有 /dev/vda4 ~ /dev/vda7 出现;
    • 需求:熟悉 gdisk, parated, umount, swapoff 等指令。由于本章处理完毕后,将会有许多新增的 partition ,所以请删除掉这两个 partition 。删除的过程需要注意的是:
    • 需先以 free / swapon -s / mount 等指令查阅,要被处理的文件系统不可以被使用! 如果有被使用,则你必须要使用 umount 卸载文件系统。如果是内存交换空间,则需使用 swapon -s 找出被使用的分区, 再以 swapoff 去卸载他!
      [root@study ~]# umount /data/ext4 /data/xfs /data/file /data/win
      [root@study ~]# swapoff /dev/vda6 /tmp/swap
      
  • 观察 /etc/fstab ,该文件新增的行全部删除或注解!
    [root[@study](https://github.com/study "@study") ~]# nano /etc/fstab
    …..(前面省略)…..
    /dev/mapper/centos-swap swap swap defaults 0 0 # 从这行之后全删除
    UUID="e0fa7252-b374-4a06-987a-3cb14f415488" /data/xfs xfs defaults 0 0
    /srv/loopdev /data/file xfs defaults,loop 0 0
    UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" swap swap defaults 0 0
    /tmp/swap swap swap defaults 0 0
    UUID="6032-BF38" /data/win vfat defaults 0 0
    
  • 使用“ gdisk /dev/vda ”删除,也可以使用“ parted /dev/vda rm 号码”删除喔!
    [root[@study](https://github.com/study "@study") ~]# parted /dev/vda rm 7
    [root[@study](https://github.com/study "@study") ~]# parted /dev/vda rm 6
    [root[@study](https://github.com/study "@study") ~]# parted /dev/vda rm 5
    [root[@study](https://github.com/study "@study") ~]# parted /dev/vda rm 4
    [root[@study](https://github.com/study "@study") ~]# partprobe
    [root[@study](https://github.com/study "@study") ~]# rm /tmp/swap /srv/loopdev
    
  • 情境仿真题二:由于我的系统原本分区的不够好,我的用户希望能够独立一个 filesystem 附挂在 /srv/myproject 目录下。 那你该如何创建新的 filesystem ,并且让这个 filesystem 每次开机都能够自动的挂载到 /srv/myproject , 且该目录是给 project 这个群组共享的,其他人不可具有任何权限。且该 filesystem 具有 1GB 的容量。
    • 目标:理解文件系统的创建、自动挂载文件系统与专案开发必须要的权限;
    • 前提:你需要进行过第六章的情境仿真才可以继续本章;
    • 需求:本章的所有概念必须要清楚!那就让我们开始来处理这个流程吧!
    • 首先,我们必须要使用 gdisk /dev/vda 来创建新的 partition。 然后按下“ n ”,按下“Enter”选择默认的分区号码,再按“Enter”选择默认的启始柱面, 按下“+1G”创建 1GB 的磁盘分区,再按下“Enter”选择默认的文件系统 ID。 可以多按一次“p ”看看是否正确,若无问题则按下“w”写入分区表;
    • 避免重新开机,因此使用“ partprobe ”强制核心更新分区表;
    • 创建完毕后,开始进行格式化的动作如下:“mkfs.xfs -f /dev/vda4”,这样就 OK 了!
    • 开始创建挂载点,利用:“ mkdir /srv/myproject ”来创建即可;
    • 编写自动挂载的配置文件:“ nano /etc/fstab ”,这个文件最下面新增一行,内容如下:/dev/vda4 /srv/myproject xfs defaults 0 0
    • 测试自动挂载:“ mount -a ”,然后使用“ df /srv/myproject ”观察看看有无挂载即可!
    • 设置最后的权限,使用:“ chgrp project /srv/myproject ”以及“ chmod 2770 /srv/myproject ”即可。

简答题部分:

  • 我们常常说,开机的时候,“发现磁盘有问题”,请问,这个问题的产生是“filesystem 的损毁”,还是“磁盘的损毁”?特别需要注意的是,如果您某个 filesystem 里面,由于操作不当,可能会造成 Superblock 数据的损毁, 或者是 inode 的架构损毁,或者是 block area 的记录遗失等等,这些问题当中,其实您的“磁盘”还是好好的, 不过,在磁盘上面的“文件系统”则已经无法再利用!一般来说,我们的 Linux 很少会造成 filesystem 的损毁, 所以,发生问题时,很可能整个磁盘都损毁了。但是,如果您的主机常常不正常断电,那么, 很可能磁盘是没问题的,但是,文件系统则有损毁之虞。此时,重建文件系统 (reinstall) 即可! 不需要换掉磁盘啦! ^_^
  • 当我有两个文件,分别是 file1 与 file2 ,这两个文件互为 hard link 的文件,请问, 若我将 file1 删除,然后再以类似 vi 的方式重新创建一个名为 file1 的文件, 则 file2 的内容是否会被更动?这是来自网友的疑问。当我删除 file1 之后, file2 则为一个正规文件,并不会与他人共同分享同一个 inode 与 block ,因此,当我重新创建一个文件名为 file1 时,他所利用的 inode 与 block 都是由我们的 filesystem 主动去搜寻 meta data ,找到空的 inode 与 block 来创建的, 与原本的 file1 并没有任何关连性喔!所以,新建的 file1 并不会影响 file2 呢!