《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理

文章目录

  • 一、认识 Linux 文件系统
    • 1.磁盘组成与分区的复习
    • 2.文件系统特性
      • (4)inode,block,superblock介绍如下
      • (6)碎片整理的原因是:block太过于分散
    • 3. Linux 的 EXT2 文件系统(inode)
      • (2)Ext2 格式化后,ext2文件系统示意图:
        • (b) data block (资料区块)
        • (c)inode table (inode 表格)
        • (d)Superblock (超级区块)
        • (e)Filesystem Description (文件系统描述说明)
        • (f)block bitmap (区块对照表)
        • (g)inode bitmap (inode 对照表)
        • (h)dumpe2fs: 查询 Ext 家族 superblock 信息的指令
    • 4.与目录树的关系(目录与文件在文件系统中如何记录数据??)
      • (5)目录树是如何用inode读取block的内容的??
    • 5. EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能—— block bitmap 及 inode bitmap
      • (3)日志式文件系统 (Journaling filesystem)——解决数据的不一致状态
    • 6.Linux 文件系统的运作
    • 7.挂载点的意义 (mount point)
      • (2)按照前面的centos7.0的安装方法,那么应该会有三个挂载点才是,分别是 /, /boot, /home 三个 (对应的装置文件名为 LVM, LVM, /dev/vda2)。
    • 8.其他 Linux 支持的文件系统与 VFS文件系统
    • 9.XFS 文件系统简介-CentOS 7 开始,预设的文件系统已经由原本的 EXT4 变成了 XFS 文件系统了!
      • (2)XFS文件系统的配置:数据区、登陆区、实时运作区
      • (c)XFS 文件系统的描述数据观察:xfs_info
      • 找出系统 /boot 这个挂载点底下的文件系统的 superblock 纪录: df -T /boot
  • 二、文件系统的简单操作
    • 1.磁盘与目录的容量
      • (3)df ;查文件系统容量
        • (c)df -h ;容量结果输出为易读
        • (e)df -h /etc ;/etc 底下的可用的磁盘容量
        • (f)df -ih ;各个 partition 当中可用的 inode 数量列出
      • (4)du:查文件系统个数
        • (b)du;仅仅显示部分目录的个数
        • (c)du -a;文件和目录的个数都有了
        • (d)du -sm /*;检查根目录下每个目录所占个数
      • (5)df与du的区别
    • 2.实体链接与符号链接: ln
      • (2)Hard Link (实体链接, 硬式连结或实际连结)
        • (ii)硬链接的文件读取示意图
        • (iii)硬链接的缺点:不能跨文件系统和不能link目录
      • (3)Symbolic Link (符号链接,亦即是快捷方式)
        • (ii)符号链接的文件读取示意图
      • (4)链接指令ln的说明,硬链接和符号链接的eg
        • (c)篡改符号链接的内容会影响到源文件
          • 一个『空目录』里面至少会存在些什么?呵呵!就是存在 . 与 .. 这两个目录啊!
  • 三、磁盘的分区、格式化、检验与挂载
    • 1.观察磁盘分区状态
      • (2)lsblk 列出系统上的所有磁盘列表
      • (3)blkid 列出装置的 UUID 等参数
      • (4)parted 列出磁盘的分区表类型与分区信息
    • 2.磁盘分区:gdisk/fdisk
      • (1)GPT用gdisk
      • (2)MBR用fdisk
    • 3.磁盘格式化:make filesystem,mkfs
      • (1)XFS 文件系统格式化 mkfs.xfs
      • (2)格式化EXT4 文件系统 mkfs.ext4
        • (c)dumpe2fs
      • (3)其他文件系统 ,mkfs单独使用
    • 4.文件系统检验,检测分区一定是卸载状态
      • (2)xfs_repair 处理 XFS 文件系统:最好别用到
      • (3)fsck.ext4 处理 EXT4 文件系统:妥当
    • 5.文件系统挂载与卸除
      • mount的查询使用:mount -av
      • (2)mount [-t 文件系统] UUID='' 挂载点 # 鸟哥近期建议用这种方式喔!
      • (6)挂载 xfs/ext4/vfat 等文件系统
        • (c)挂载 CD 或 DVD 光盘
        • (d)挂载USB 磁盘:不能是NTFS文件(因为用的是Centos7)
      • (8)mount -o remount ,xx 指令
      • (9)利用 mount --bind 源目录 目标目录 #将某个目录挂载到另外一个目录去喔!
      • (10)umount (将装置文件卸除)
        • (i)卸除之后,可以使用 df 或 mount 看看是否还存在目录树中? 卸除的方式,可以下达装置文件名或挂载点,均可接受啦!
    • 6.磁盘/文件系统参数修定
      • (2)mknod:手动处理设备文件
        • (a)文件如何代表linux下的每个设备呢?
        • (d)xfs_admin 修改 XFS 文件系统的 UUID 与 Label name
        • (e)tune2fs 修改 ext4 的 label name 与 UUID
  • 四、设定开机挂载(别轻易乱动,易进入单人维护模式)
    • 1.开机挂载 /etc/fstab 及 /etc/mtab
      • (ii)在/etc/fstab输入的数据错误而导致进入单人维护模式,咋办??
    • 2.特殊装置 loop 挂载 (ios文件不用刻录就直接挂载使用)
      • (1)挂载光盘/DVD 映象文件
      • (2)将大文件用loop制作成一个分区
        • (a)建立大型文件:dd建立空的文件,ls -l -h指令好用
        • (c)挂载:mount -o loop
  • 五、内存置换空间(swap)之建置
    • 1.使用实体分区槽建置 swap——使用gdisk
        • (b)开始建置 swap 格式:mkswap 装置名
        • (c)free和swapon -s查看内存;swap启动:swapon 装置文件名
    • 2.使用文件建置 swap
  • 六、文件系统的特殊观察与操作
    • 1.ll -sh观察该目录下的所有数据所耗用的实际 block 数量 * block 大小的值。
    • 2.利用 GNU 的 parted 进行分区行为——了解看看即可
      • (1)parted 可以直接在一行指令列就完成分区
  • 七、重点回顾
  • 八、本章习题 -第一题一定要做

一、认识 Linux 文件系统

(1)这些文件权限与属性分别记录在文件系统的哪个区块内?
这就得要谈到 filesystem 中的 inode 与 block 了

(2)为了虚拟化与大容量磁盘, 现在的 CentOS 7 默认使用大容量效能较佳的 xfs 当预设文件系统了!

(3)Linux 最传统的磁盘文件系统 (filesystem) 使用的是 EXT2 这个啦!

1.磁盘组成与分区的复习

(1)首先说明一下磁盘的物理组成,整颗磁盘的组成主要有:
在这里插入图片描述

(2)磁盘盘上的物理组成:重点
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第1张图片
(3)这里主要介绍的以实体磁盘虚拟磁盘为主喔!
在这里插入图片描述

(4)CentOS 7 的分区软件, 已经将最小单位改成扇区了,所以容量大小的分区可以切的更细~此外,由于新的大容量磁盘大多得要使用 GPT 分区表才能够使用全部的容量, 因此过去那个 MBR 的传统磁盘分区表限制就不会存在了

2.文件系统特性

(1) 在默认的情况下, windows 操作系统是不会认识 Linux 的 Ext2 的。
windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16);
windows 2000 以后的版本有所谓的 NTFS文件系统;
至于 Linux 的正统文件系统则为 Ext2 (Linux second extended file system, ext2fs)

(2)磁盘与文件系统之间的关系如下:
LVM 与软件磁盘阵列(software raid), 这些技术可以将一个分区槽格式化为多个文件系统(例如 LVM),也能够将多个分区槽合成一个文件系统(LVM, RAID)!
所以,一个可被挂载的数据为一个文件系统而不是一个分区槽

(3)文件系统是如何运作的呢?
例如 Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。
文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。

(4)inode,block,superblock介绍如下

在这里插入图片描述
inode与block之间的关系是:
在这里插入图片描述

(5)用索引式文件系统来说明inode与block之间的关系
假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记
录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个 block 内容读出来!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第2张图片

补充说明:FAT格式的文件系统
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第3张图片

(6)碎片整理的原因是:block太过于分散

(a)碎片整理的概念
需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起,这样数据的读取会比较容易啊!

(b)linux的EXT2相较于windows的FAT,是不需要磁盘整理的
在这里插入图片描述

3. Linux 的 EXT2 文件系统(inode)

(1)EXT2文件系统中区块群组block group
文件系统一开始就将 inode 与 block 规划好了,除非重新格式化(或者利用resize2fs 等指令变更文件系统大小),所有的 inode 与 block 通通放置在一起将是很不智的决定,因为 inode 与 block 的数量太庞大。

为此之故,因此 Ext2 文件系统在格式化的时候基本上是区分为多个区块群组 (block group) 的,每个区块群组都有独立的 inode/block/superblock 系统。

(2)Ext2 格式化后,ext2文件系统示意图:

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第4张图片

说明:
(a)启动扇区boot sector的作用
在这里插入图片描述

(b) data block (资料区块)

(i)data block 是用来放置文件内容数据地方, 在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及4K 三种而已。
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第5张图片
(ii)EXT2文件系统的block的基本限制如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第6张图片
eg:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第7张图片

(iii)如果block太小?
因为如果 block 较小的话,那么大型文件将会占用数量更多的 block ,而 inode 也要记录更多的 block 号码,此时将可能导致文件系统不良的读写效能。

补充:事实上,现在的磁盘容量都太大了!所以,大概大家都只会选择 4K 的 block 大小吧!

(c)inode table (inode 表格)

(i) inode 的内容在记录文件的属性以及该文件实际数据是放置在哪几号 block 内!
(ii) inode 的数量和大小在格式化的时候就已经固定了,特点如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第8张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第9张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第10张图片
(iii)EXT2 的 inode / block 与文件大小的关系如下:
inode 记录一个 block 号码要花掉 4byte ;
假设我一个文件有400MB 且每个 block 为 4K 时, 那么至少也要十万笔 block 号码的记录呢!

但是呢?只有1K的block能这么计算。。。所以上面的计算,肯定是鸟哥的经验!
(4K/4=1024笔记录,如果是直接指向+间接指向的话是:12✖4K+1024✖4K)

(iiii)inode结构示意图
为此,我们的系统很聪明的将 inode 记录 block 号码的区域定义为 12 个直接,一个间接,一个双间接与一个三间接记录区。
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第11张图片
说明:
直接:
上图最左边为 inode 本身 (128 bytes),里面有 12 个直接指向 block 号码的对照,这 12 笔记录就能够直接取得 block 号码啦! ;
间接:
再拿一个 block 来当作记录 block 号码的记录区,如果文件太大时, 就会使用间接的 block 来记录编号。
双间接:第一个 block 仅再指出下一个记录编号的 block 在哪里, 实际记录的在第二个 block 当中。
三间接:利用第三层 block 来记录编号。

(iiii)inode 能够指定多少个 block 呢?我们以较小的 1K block 来说明好了
(从block的方向去考虑)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第12张图片
注意:但这个方法不能用在 2K 及 4K block 大小的计算中, 因为大于 2K 的 block 将会受到 Ext2 文件系统本身的限制,所以计算的结果会不太符合之故。

(如果从inode本身去考虑的话)
eg:CentOS 6.x系统,那么默认还是使用 Ext4 的文件系统喔! Ext4 文件系统的 inode 容量已经可以扩大到 256bytes 了。
按照间接的方式的话:256/4=64笔记录,如果是指向1k的block,那么64*1k=64k,也就是说,指向的block的内容也就这么大点。。。

(d)Superblock (超级区块)

(i)Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。
记录的信息主要有:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第13张图片
(ii)一般来说, superblock 的大小为 1024bytes。
相关的 superblock 讯息我们等一下会以 dumpe2fs 指令来呼叫出来观察喔!

(iii)此外,每个 block group 都可能含有 superblock 喔!
而若含有 superblock 则该 superblock 主要是做为第一个 block group 内 superblock 的备份咯,这样可以进行 superblock 的救援呢!

(e)Filesystem Description (文件系统描述说明)

在这里插入图片描述

(f)block bitmap (区块对照表)

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第14张图片

(g)inode bitmap (inode 对照表)

在这里插入图片描述

(h)dumpe2fs: 查询 Ext 家族 superblock 信息的指令

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第15张图片
现在是superblock的信息
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第16张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第17张图片
现在是block group的信息
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第18张图片
说明:
dumpe2fs查询的结果说明:
不过依内容主要可以区分为上半部是superblock 内容, 下半部则是每个 block group 的信息了;
从上面的表格中我们可以观察到鸟哥这个 /dev/vda5 规划的 block 为 4K, 第一个 block 号码为 0 号,且 block group 内的所有信息都以block 的号码来表示的。

至于 block group 的内容我们单纯看 Group0 信息好了: 主要如下
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第19张图片
注意:4096*512代表的是:多少个bytes的block
数量的话,已经说清楚是512个block了。

4.与目录树的关系(目录与文件在文件系统中如何记录数据??)

(1) block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第20张图片

(2)查看目录内的文件所占用的 inode 号码,用ls -i
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第21张图片
(3)当你使用『ll / 』时,出现的目录几乎都是 1024的倍数,为什么呢?因为每个 block 的数量都是 1K, 2K, 4K 嘛!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第22张图片
注意:目录并不只会占用一个 block 而已
在目录底下的文件数如果太多而导致一个 block 无法容纳的下所有的档名与 inode 对照表时, Linux 会给予该目录多一个 block来继续记录相关的数据;

(4)新建一个文件,block的分配情况如下:
在这里插入图片描述

(5)目录树是如何用inode读取block的内容的??

(i)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第23张图片

(2)eg:举例来说,如果我想要读取 /etc/passwd 这个文件时,系统是如何读取的呢?
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第24张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第25张图片
(6)filesystem 大小与磁盘读取效能:

(i)如果文件写入的 block 真的分的很散,会咋样?
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第26张图片
(ii)如果 filesystem 真的太大了,会咋样?
在这里插入图片描述

5. EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能—— block bitmap 及 inode bitmap

(1)假设我们想要新增一个文件,此时文件系统的行为是:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第27张图片
(2)数据的不一致 (Inconsistent) 状态及早期的解决办法
出现日至式文件系统的原因:数据的不一致状态
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第28张图片

(3)日志式文件系统 (Journaling filesystem)——解决数据的不一致状态

(i)早filesystem 当中规划出一个区块,该区块专门在记录写入或修订文件时的步骤,
日志式文件的工作过程:
在这里插入图片描述
(ii)日志式文件最基础的功能
在这里插入图片描述
(iii)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第29张图片

6.Linux 文件系统的运作

(1)如果你常常编辑一个好大的文件, 在编辑的过程中又频繁的要系统来写入到磁盘中,由于磁盘写入的速度要比内存慢很多, 因此你会常常耗在等待磁盘的写入/读取上。
为了解决这个效率的问题,因此我们的 Linux 使用的方式是透过一个称为异步处理 (asynchronously)的方式。

异步处理的主要过程如下:
在这里插入图片描述
在这里插入图片描述

(2)我们知道内存的速度要比磁盘快的多,因此如果能够将常用的文件放置到内存当中, 这不就会增加系统性能吗?
因此我们 Linux 系统上面文件系统与内存有非常大的关系喔:

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第30张图片

7.挂载点的意义 (mount point)

(1)每个 filesystem 都有独立的 inode / block / superblock 等信息,这个文件系统要能够链接到目录树才能被我们使用。
将文件系统与目录树结合的动作我们称为『挂载』
重点是: 挂载点一定是目录,该目录为进入该文件系统的入口。

so:因此并不是你有任何文件系统都能使用,必须要『挂载』到目录树的某个目录后,才能够使用该文件系统的。

(2)按照前面的centos7.0的安装方法,那么应该会有三个挂载点才是,分别是 /, /boot, /home 三个 (对应的装置文件名为 LVM, LVM, /dev/vda2)。

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第31张图片
说明:
(i)观察这三个目录的inode发现:
由于 XFS filesystem 最顶层的目录之 inode 一般为 128 号,因此可以发现 /, /boot, /home为三个不同的 filesystem 啰! (因为每一行的文件属性并不相同,且三个目录的挂载点也均不相同之故。 )

(ii)同一个 filesystem 的某个 inode 只会对应到一个文件内容而已(因为一个文件占用一个 inode 之故),
因此我们可以透过判断 inode 号码来确认不同文件名是否为相同的文件喔!

(iii)eg:曾经提到根目录下的 . 与 … 是相同的东西
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第32张图片
说明:
上面的信息中由于挂载点均为 / ,因此三个文件 (/, /., /…) 均在同一个 filesystem 内(判断方法:看inde号码以及目录属性);
而这三个文件的 inode 号码均为 128 号,因此这三个档名都指向同一个 inode 号码,当然这三个文件的内容也就完全一模一样了!

8.其他 Linux 支持的文件系统与 VFS文件系统

(1)常见的支持的文件系统有:
在这里插入图片描述

(2)想要知道你的 Linux 支持的文件系统有哪些,可以察看底下这个目录:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第33张图片

(3)Linux VFS (Virtual Filesystem Switch):VFS文件系统
(i)整个 Linux 的系统都是透过一个名为 Virtual Filesystem Switch 的核心功能去读
取 filesystem 的。

也就是说,整个 Linux 认识的 filesystem 其实都是 VFS 在进行管理!!

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第34张图片

(ii)eg:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第35张图片

9.XFS 文件系统简介-CentOS 7 开始,预设的文件系统已经由原本的 EXT4 变成了 XFS 文件系统了!

(1)为啥用法XFS来代替EXT文件系统呢?
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第36张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第37张图片

(2)XFS文件系统的配置:数据区、登陆区、实时运作区

(a)基本上 xfs 就是一个日志式文件系统,这个 xfs 就是被开发来用于高容量磁盘以及高性能文件系统之用。

(b)xfs 文件系统在资料的分布上,主要规划为三个部份,一个资料区 (data section)、一个文件系统活动登录区 (log section)以及一个实时运作区 (realtime section)。 这三个区域的数据内容如下:
(i)数据区 (data section)
xfs 的这个数据区的储存区群组 (allocation groups, AG),你就将它想成是 ext家族的 block 群组 (block groups) 就对了!
该数据区也是分为多个储存区群组(allocation groups) 来分别放置文件系统所需要的数据。
每个储存区群组都包含了

  • 整个文件系统的 superblock、
  • 剩余空间的管理机制、
  • inode 的分配与追踪。
    此外, inode 与 block 都是系统需要用到时, 这才动态配置产生,所以格式化动作超级快!
    《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第38张图片

(ii)文件系统活动登录区 (log section)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第39张图片

(iii)实时运作区 (realtime section)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第40张图片

(c)XFS 文件系统的描述数据观察:xfs_info

找出系统 /boot 这个挂载点底下的文件系统的 superblock 纪录: df -T /boot

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第41张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第42张图片

二、文件系统的简单操作

1.磁盘与目录的容量

(1)磁盘的整体数据是在 superblock 区块中;每个各别文件的容量则在 inode 当中记载的;

(2)
在这里插入图片描述

(3)df ;查文件系统容量

(a)df的解释
由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在Superblock 内的信息, 所以这个指令显示结果的速度非常的快速!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第43张图片
(b)df相关信息说明
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第44张图片
说明:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第45张图片

(c)df -h ;容量结果输出为易读

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第46张图片
(d)df -aT
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第47张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第48张图片
注:/proc 的东西都是 Linux 系统所需要加载的系统数据,而且是挂载在『内存当中』
的, 所以当然没有占任何的磁盘空间啰!

那个 /dev/shm/ 目录, 其实是利用内存虚拟出来的磁盘空间,通常是总物理内存的一半! 由于是透过内存仿真出来的磁盘,因此你在这个目录底下建立任何数据文件时,访问速度是非常快速的!但是,建立的东西在下次开机时就消失了! 因为是在内存中嘛!

(e)df -h /etc ;/etc 底下的可用的磁盘容量

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第49张图片

(f)df -ih ;各个 partition 当中可用的 inode 数量列出

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第50张图片

(4)du:查文件系统个数

(a)du的解释
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第51张图片

(b)du;仅仅显示部分目录的个数

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第52张图片

(c)du -a;文件和目录的个数都有了

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第53张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第54张图片

(d)du -sm /*;检查根目录下每个目录所占个数

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第55张图片

(5)df与du的区别

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第56张图片

2.实体链接与符号链接: ln

(1)在 Linux 底下的连结档有两种,
一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录); 另一种则是透过文件系统的 inode 连结来产生新档名,而不是产生新文件!这种称为实体链接 (hard link)。

(2)Hard Link (实体链接, 硬式连结或实际连结)

(a)其实文件名只与目录有关,但是文件内容则与 inode 有关。
在这里插入图片描述
(b)有没有可能有多个档名对应到同一个 inode 号码呢?
有的!那就是 hard link 的由来

eg:假设我系统有个 /root/crontab 他是 /etc/crontab 的实体链接,也就是说这两个档名连
结到同一个 inode , 自然这两个文件名的所有相关信息都会一模一样(除了文件名之外)。
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第57张图片
解释:
(i)
在这里插入图片描述

(ii)硬链接的文件读取示意图

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第58张图片
在这里插入图片描述

(iii)硬链接的缺点:不能跨文件系统和不能link目录

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第59张图片

(3)Symbolic Link (符号链接,亦即是快捷方式)

(a)符号链接的含义
Symbolic link 就是在建立一个独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的档名!由于只是利用文件来做为指向的动作。
所以, 当源文件被删除之后,symbolic link 的文件会『开不了』

(b)eg:我们先建立一个符号链接文件链接到 /etc/crontab 去看看,
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第60张图片
解释:
(i)
在这里插入图片描述

(ii)符号链接的文件读取示意图

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第61张图片

(iii)
举上面的例子来说,我的/etc/crontab 与 /root/crontab 指向同一个文件,如果我删除了 /root/crontab 这个文件,该删除的动作其实只是将 /root 目录下关于 crontab 的关连数据拿掉而已, crontab 所在的 inode 与 block 其实都没有被变动喔!

(4)链接指令ln的说明,硬链接和符号链接的eg

(a)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第62张图片
硬链接
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第63张图片
符号链接
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第64张图片

删除原文件后的情况
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第65张图片
说明:
在这里插入图片描述

(b)/tmp目录的作用:
您会发现,过去我们在进行测试时,都会将数据移动到 /tmp 底下去练习

(c)篡改符号链接的内容会影响到源文件

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第66张图片

(d)关于目录的 link 数量:
如果建立目录时,他默认的 link 数量会是多少?

一个『空目录』里面至少会存在些什么?呵呵!就是存在 . 与 … 这两个目录啊!

eg:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第67张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第68张图片
在这里插入图片描述

三、磁盘的分区、格式化、检验与挂载

(1)如果我们想要在系统里面新增一颗磁盘时,应该有哪些动作需要做的呢:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第69张图片

1.观察磁盘分区状态

(1)磁盘分区是GPT格式的,用gdisk来处理分区;
磁盘分区是MBR格式的,用fdisk来处理分区;

(2)lsblk 列出系统上的所有磁盘列表

(a)lsblk 可以看成『list block device 』的缩写,就是列出所有储存装置
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第70张图片
(b)eg1
在这里插入图片描述
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第71张图片
说明:
目前的系统主要有个 sr0 以及一个 vda 的装置,而 vda 的装置底下又有三个分区, 其中 vda3 甚至还有因为 LVM 产生的文件系统!

默认的输出信息如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第72张图片
eg2:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第73张图片

(3)blkid 列出装置的 UUID 等参数

(a)UUID 是全局单一标识符 (universally unique identifier), Linux 会将系统内所有的装置都给予一个独一无二的标识符, 这个标识符就可以拿来作为挂载或者是使用这个装置/文件系统之用了。

(b)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第74张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第75张图片

(4)parted 列出磁盘的分区表类型与分区信息

(a) blkid 也知道了所有的文件系统, parted 来输出磁盘的分区类型
(b)
在这里插入图片描述
(c)eg:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第76张图片

2.磁盘分区:gdisk/fdisk

(1)GPT用gdisk

(a)初步了解各个分区的信息:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第77张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第78张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第79张图片
说明:
(i)
在这里插入图片描述
(ii)老实说,使用 gdisk 这支程序是完全不需要背指令的!
只要离开 gdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效的意思。所以,你可以随便玩 gdisk ,只要离开时按下的是『q』即可。

(iii)以鸟哥这颗磁盘为例,这个磁盘共有 40GB 左右的容量,共有 83886080 个扇区,每个扇区的容量为512bytes。
要注意的是,现在的分区主要是以扇区为最小的单位喔!

下半部的分区表信息主要在列出每个分区槽的个别信息项目。每个项目的意义为:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第80张图片
在这里插入图片描述
(iiii)使用的『装置文件名』请不要加上数字,因为 partition是针对『整个磁盘装置』 而不是某个 partition 呢!

(b)用 gdisk 新增分区槽:
(i)而经过上面的观察,我们也确认系统还有剩下的容量可以来操作练习分区! 假设我需要有如下的分区需求:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第81张图片
(ii)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第82张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第83张图片
说明:
重点在『Last sector 』那一行,那行绝对不要使用默认值!因为默认值会将所有的容量用光!
每次新增完毕后,请立即『p 』查看一下结果喔!

(iii)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第84张图片
(iiii)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第85张图片
(iiiii)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第86张图片
(c)partprobe 更新 Linux 核心的分区表信息
因为 Linux 此时还在使用这颗磁盘,为了担心系统出问题,所以分区表并没有被更新喔!这个时候我们有两个方式可以来处理:

  • 其中一个是重新启动,不过很讨厌!
  • 另外一个则是透过 partprobe 这个指令来处理即可!
    在这里插入图片描述
    《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第87张图片
    《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第88张图片

(d)用 gdisk 删除一个分区槽
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第89张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第90张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第91张图片
注意:万分注意!不要去处理一个正在使用中的分区槽!

(2)MBR用fdisk

(a)fdisk与gdisk的区别如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第92张图片
(b)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第93张图片

3.磁盘格式化:make filesystem,mkfs

(1)XFS 文件系统格式化 mkfs.xfs

(a)mkfs.xfs的用法如下
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第94张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第95张图片
(b)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第96张图片
说明:
因为 xfs 可以使用多个数据流来读写系统,以增加速度,因此那个 agcount 可以跟 CPU 的核心数来做搭配!举例来说,如果我的服务器仅有一颗 4 核心,但是有启动 Intel 超线程功能,则系统会仿真出 8 颗 CPU 时,那个 agcount 就可以设定为 8 喔!

(c)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第97张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第98张图片
说明:
(i)XFS 文件系统 for RAID 效能优化 (Optional):针对于格式化后的文件系统设置
RAID磁盘阵列的含义:
磁盘阵列是多颗磁盘组成一颗大磁盘的意思, 利用同步写入到这些磁盘的技术,不但可以加快读写速度,还可以让某一颗磁盘坏掉时,整个文件系统还是可以持续运作的状态!
那就是所谓的容错。
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第99张图片
(ii)stripe有啥用?
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第100张图片
(iii)文件系统的读写要能够有优化,最好能够搭配磁盘阵列的参数来设计,这样效能才能够起来!

也就是说,你可以先在文件系统就将 stripe 规划好, 那交给 RAID 去存取时,它就无须重复进行文件的stripe 过程,效能当然会更好!

那格式化时,优化效能与什么咚咚有关呢?
我们来假设个环境好了:
在这里插入图片描述
结果如下:
在这里插入图片描述
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第101张图片
说明:
从输出的结果来看, agcount 没啥问题, sunit 结果是 64 个 block,因为每个 block 为 4K,所以算出来容量就是 256K 也没错! 那个 swidth 也相同!使用 448 * 4K 得到 1792K!那个 extsz 则是算成 bytes 的单位,换算结果也没错啦!

(d)上面是个方式,那如果使用 sunit 与 swidth 直接套用在mkfs.xfs 当中呢?那你得小心了!因为指令中的这两个参数用的是『几个 512bytes 的 sector 数量』的意思! 是『数量』单位而不是『容量』单位!
因此先计算为:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第102张图片

(2)格式化EXT4 文件系统 mkfs.ext4

(a)指令介绍
因为 ext4 的默认值已经相当适合我们系统使用,大部分的默认值写入于我们系统的 /etc/mke2fs.conf 这个文件中。
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第103张图片
(b)
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第104张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第105张图片

(c)dumpe2fs

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第106张图片

(3)其他文件系统 ,mkfs单独使用

(a)指令介绍
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第107张图片
(b)如果要将刚刚的 /dev/vda5 重新格式化为 VFAT 文件系统呢?
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第108张图片

4.文件系统检验,检测分区一定是卸载状态

(1) 现在我们知道文件系统运作时会有磁盘与内存数据异步的状况发生,因此莫名其
妙的当机非常可能导致文件系统的错乱。

(2)xfs_repair 处理 XFS 文件系统:最好别用到

(a)指令介绍
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第109张图片
在这里插入图片描述
(b)eg
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第110张图片
说明:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第111张图片

(3)fsck.ext4 处理 EXT4 文件系统:妥当

(a)指令介绍
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第112张图片
在这里插入图片描述
(b)eg1:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第113张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第114张图片
(c)eg2
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第115张图片
说明:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第116张图片

5.文件系统挂载与卸除

mount的查询使用:mount -av

(1)挂载点是目录,不过要进行挂载前,你最好先确定几件事:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第117张图片
尤其是上述的后两点!如果你要用来挂载的目录里面并不是空的, 那么挂载了文件系统之后,原目录下的东西就会暂时的消失。并不是被覆盖掉, 而是暂时的隐藏了起来,等
到新分区槽被卸除之后,则 原本的内容就会再次的跑出来啦!

(2)mount [-t 文件系统] UUID=’’ 挂载点 # 鸟哥近期建议用这种方式喔!

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第118张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第119张图片
在这里插入图片描述
(3)CentOS是怎么找出文件系统类型的呢?
由于文件系统几乎都有 superblock ,我们的 Linux 可以透过分析superblock 搭配 Linux 自己的驱动程序去测试挂载, 如果成功的套和了,就立刻自动的使用该类型的文件系统挂载起来啊!

(4)那么系统有没有指定哪些类型的 filesystem 才需要进行上述的挂载测试呢?
主要是参考底下这两个文件:
在这里插入图片描述
(5)那我怎么知道我的 Linux 有没有相关文件系统类型的驱动程序呢?
Linux 支持的文件系统之驱动程序都写在如下的目录中:
在这里插入图片描述

(6)挂载 xfs/ext4/vfat 等文件系统

(a)eg1
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第120张图片
(b)eg2
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第121张图片
在这里插入图片描述

(c)挂载 CD 或 DVD 光盘

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第122张图片
说明:
在这里插入图片描述

(d)挂载USB 磁盘:不能是NTFS文件(因为用的是Centos7)

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第123张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第124张图片
说明:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第125张图片

(7)整个目录树最重要的地方就是根目录了,所以根目录根本就不能够被卸除的!

(8)mount -o remount ,xx 指令

根目录出现『只读』状态时,如何重新挂载呢?
最可能的处理方式就是重新启动 (reboot)!
不过你也可以这样做:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第126张图片

(9)利用 mount --bind 源目录 目标目录 #将某个目录挂载到另外一个目录去喔!

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第127张图片
在这里插入图片描述

说明:
(a)这并不是挂载文件系统,而是额外挂载某个目录的方法!
虽然上面的方法也可以使用 symbolic link 来连结,不过在某些不支持符号链接的程序运作中,还是得要透过这样的方法才行

(b)透过这个 mount --bind 的功能, 您可以将某个目录挂载到其他目录去喔!而并不是整块 filesystem 的啦!所以从此进入 /data/var 就是进入/var 的意思喔!

(10)umount (将装置文件卸除)

(a)含义
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第128张图片
(b)eg
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第129张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第130张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第131张图片
说明:

(i)卸除之后,可以使用 df 或 mount 看看是否还存在目录树中? 卸除的方式,可以下达装置文件名或挂载点,均可接受啦!

(ii)由于通通卸除了,此时你才可以退出光盘片、软盘片、 USB 随身碟等设备喔!

(iii)由于你目前正在 /data/cdrom/ 的目录内,也就是说其实『你正在使用该文件系统』的意思!所以自然无法卸除这个装置!那该如何是好?
就『离开该文件系统的挂载点』即可。
以上述的案例来说, 你可以使用『cd / 』回到根目录,就能够卸除 /data/cdrom 啰!简单吧!

6.磁盘/文件系统参数修定

(1)修改一下目前文件系统的一些相关信息;
举例来说,你可能要修改 Labelname , 或者是 journal 的参数,或者是其他磁盘/文件系统运作时的相关参数 (例如 DMA 启动与否~)。

(2)mknod:手动处理设备文件

(a)文件如何代表linux下的每个设备呢?

就是透过文件的 major 与 minor 数值来替代的。
那个 major 与 minor 数值是有特殊意义的,不是随意设定的喔!我们在 lsblk 指令的用法里面也谈过这两个数值呢!

eg:在鸟哥的这个测试机当中, 那个用到的磁盘 /dev/vda 的相关装置代码如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第132张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第133张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第134张图片
(b)指令含义
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第135张图片

(c)eg

在这里插入图片描述

(d)xfs_admin 修改 XFS 文件系统的 UUID 与 Label name

(i)指令含义
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第136张图片
在这里插入图片描述
(ii)eg
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第137张图片
说明:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第138张图片

(e)tune2fs 修改 ext4 的 label name 与 UUID

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第139张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第140张图片

四、设定开机挂载(别轻易乱动,易进入单人维护模式)

1.开机挂载 /etc/fstab 及 /etc/mtab

(1)开机挂载,必须要修改/etc/fstab

(2)系统挂载的限制如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第141张图片
(3) /etc/fstab 的内容如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第142张图片
说明:
这个文件的内容共有六个字段,这六个字段非常的重要!
在这里插入图片描述
(a)第一栏:磁盘装置文件名/UUID/LABEL name:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第143张图片
(b)挂载点 (mount point):
挂载点是什么?一定是目录啊

(c)第三栏:磁盘分区槽的文件系统:
在手动挂载时可以让系统自动测试挂载,但在这个文件当中我们必须要手动写入文件系统才行!包括 xfs, ext4, vfat, reiserfs, nfs 等等。

(d)文件系统参数:
记不记得我们在 mount 这个指令中谈到很多特殊的文件系统参数?
还有我们使用过的『-o codepage=950』?这些特殊的参数就是写入在这个字段啦!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第144张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第145张图片
在这里插入图片描述
(e)能否被 dump 备份指令作用:
dump 是一个用来做为备份的指令,所以这个项目可以不要理会啦!

(f)是否以 fsck 检验扇区:
我们现在用的 xfs 文件系统就没有办法适用,因为 xfs会自己进行检验,不需要额外进行这个动作!所以直接填 0 就好了。

eg:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第146张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第147张图片
说明:
(i)/etc/fstab 是开机时的配置文件,不过, 实际 filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts 这两个文件当中的。

(ii)在/etc/fstab输入的数据错误而导致进入单人维护模式,咋办??

那时候的/ 可是 read only 的状态,当然你就无法修改 /etc/fstab ,也无法更新 /etc/mtab 啰
在这里插入图片描述

2.特殊装置 loop 挂载 (ios文件不用刻录就直接挂载使用)

(1)挂载光盘/DVD 映象文件

操作如下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第148张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第149张图片

(2)将大文件用loop制作成一个分区

底下我们在 /srv 下建立一个 512MB 左右的大文件,然后将这个大文件格式化并且实际挂载来玩一玩!

(a)建立大型文件:dd建立空的文件,ls -l -h指令好用

假设我要建立一个空的文件在 /srv/loopdev ,那可以这样做:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第150张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第151张图片
(b)大型文件的格式化
预设 xfs 不能够格式化文件的,所以要格式化文件得要加入特别的参数才行喔!
在这里插入图片描述
注意UUID的参数。

(c)挂载:mount -o loop

那要如何挂载啊?利用 mount 的特殊参数,那个 -o loop 的参数来处理!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第152张图片

五、内存置换空间(swap)之建置

(1)从第零章的计算器概论当中,我们知道 CPU 所读取的数据都来自于内存, 那当内存不足的时候,为了让后续的程序可以顺利的运作,因此在内存中暂不使用的程序与数据就会被挪到 swap 中了。 此时内存就会空出来给需要执行的程序加载。
由于swap 是用磁盘来暂时放置内存中的信息, 所以用到 swap 时,你的主机磁盘灯就会开始闪个不停啊!

(2)下面的情况是:
你已经将系统建立起来了,此时却才发现你没有建置 swap ~那该如何是好呢?

可以使用如下的方法来建立swap:
在这里插入图片描述

1.使用实体分区槽建置 swap——使用gdisk

(1)主要步骤如下(大致看下):
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第153张图片

(2)让我们继续分区出 512MB 的磁盘分区槽吧! 然后将这个磁盘分区槽做成 swap 吧!

(a)先进行分区
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第154张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第155张图片

(b)开始建置 swap 格式:mkswap 装置名

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第156张图片

(c)free和swapon -s查看内存;swap启动:swapon 装置文件名

在这里插入图片描述
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第157张图片

2.使用文件建置 swap

如果是在实体分区槽无法支持的环境下,此时前一小节提到的 loop 装置建置方法就派的上用场啦!
(1)使用 dd 这个指令来新增一个 128MB 的文件在 /tmp 底下:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第158张图片

(2)使用 mkswap 将 /tmp/swap 这个文件格式化为 swap 的文件格式:
在这里插入图片描述
在这里插入图片描述

(3)使用 swapon 来将 /tmp/swap 启动啰!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第159张图片

(4)使用 swapoff 关掉 swap file,并设定自动启用
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第160张图片
说明:
我们的 Linux 系统大概都用不到 swap这个玩意儿的。
不过, 如果是针对服务器或者是工作站这些常年上线的系统来说的话,那么,无论如何, swap 还是需要建立的。

另外,有某些程序在运作时,本来就会利用 swap 的特性来存放一些数据段, 所以, swap 来是需要建立的!只是不需要太大!

六、文件系统的特殊观察与操作

1.ll -sh观察该目录下的所有数据所耗用的实际 block 数量 * block 大小的值。

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第161张图片
举例来说,那个 crontab 虽然仅有 451bytes , 不过他却占用了整个 block (每个 block 为 4K),所以将所有的文件的所有的 block加总就得到 12Kbytes 那个数值了。

2.利用 GNU 的 parted 进行分区行为——了解看看即可

(1)parted 可以直接在一行指令列就完成分区

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第162张图片
(2)以 parted 列出目前本机的分区表资料
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第163张图片
我们将上述的分区表示意拆成六部分来说明:
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第164张图片
如果你想要固定单位,例如都用 MB 显示的话,可以这样做:
在这里插入图片描述

(3)
说明:如果你想要将原本的 MBR 改成 GPT 分区表,或原本的 GPT 分区表改成 MBR 分区表,也能使用 parted ! 但是请不要使用 vda 来测试!因为分区表格式不能转换!因此进行底下的测试后,在该磁盘的系统应该是会损毁的!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第165张图片
(4)接下来我们尝试来建立一个全新的分区槽吧!再次的建立一个 512MB 的分区来格式化为 vfat,且挂载于 /data/win 喔!
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第166张图片
在这里插入图片描述
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第167张图片

七、重点回顾

(1) 一个可以被挂载的数据通常称为『文件系统, filesystem』而不是分区槽 (partition) 喔!
(2)基本上 Linux 的传统文件系统为 Ext2 ,该文件系统内的信息主要有:

  • superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
  • inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block 号码;
  • block:实际记录文件的内容,若文件太大时,会占用多个 block 。
    (3) Ext2 文件系统的数据存取为索引式文件系统(indexed allocation)
    (4) 需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起。
    (5)Ext2 文件系统主要有:boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分。
    (6)data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K 三种而已
    (7)inode 记录文件的属性/权限等数据,其他重要项目为: 每个 inode 大小均为固定,有 128/256bytes 两种基本容量。每个文件都仅会占用一个 inode 而已; 因此文件系统能够建立的文件数量与 inode 的数量有关;
    (8)文件的 block 在记录文件的实际数据,目录的 block 则在记录该目录底下文件名与其 inode 号码的对照表;
    (9)日志式文件系统 (journal) 会多出一块记录区,随时记载文件系统的主要活动,可加快系统复原时间;
    (10)Linux 文件系统为增加效能,会让主存储器作为大量的磁盘高速缓存;
    (11) 实体链接只是多了一个文件名对该 inode 号码的链接而已;
    (12)符号链接就类似 Windows 的快捷方式功能。
    (13) 磁盘的使用必需要经过: 分区、格式化与挂载,分别惯用的指令为: gdisk, mkfs, mount 三个指令
    (14)分区时,应使用 parted 检查分区表格式,再判断使用 fdisk/gdisk 来分区,或直接使用 parted 分区
    (15)为了考虑效能, XFS 文件系统格式化时,可以考虑加上 agcount/su/sw/extsize 等参数较佳
    (16) 如果磁盘已无未分区的容量,可以考虑使用大型文件取代磁盘装置的处理方式,透过 dd 与格式化功能。
    (17) 开机自动挂载可参考/etc/fstab 之设定,设定完毕务必使用 mount -a 测试语法正确否;

八、本章习题 -第一题一定要做

《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第168张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第169张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第170张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第171张图片
《鸟哥的私房菜基础篇》第四版学习笔记——第7章LInux磁盘与文件系统管理_第172张图片

你可能感兴趣的:(鸟哥Linux私房菜)