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

版权声明:问:是谁的心呐???答:我的~~ https://blog.csdn.net/u011436427/article/details/88676242

文章目录

一、认识 Linux 文件系统

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

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

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

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

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

(2)磁盘盘上的物理组成:重点
在这里插入图片描述
(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 内容读出来!
在这里插入图片描述

补充说明:FAT格式的文件系统
在这里插入图片描述

(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文件系统示意图:

在这里插入图片描述

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

(b) data block (资料区块)

(i)data block 是用来放置文件内容数据地方, 在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及4K 三种而已。
在这里插入图片描述
(ii)EXT2文件系统的block的基本限制如下:
在这里插入图片描述
eg:
在这里插入图片描述

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

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

(c)inode table (inode 表格)

(i) inode 的内容在记录文件的属性以及该文件实际数据是放置在哪几号 block 内!
(ii) inode 的数量和大小在格式化的时候就已经固定了,特点如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(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 个直接,一个间接,一个双间接与一个三间接记录区。
在这里插入图片描述
说明:
直接:
上图最左边为 inode 本身 (128 bytes),里面有 12 个直接指向 block 号码的对照,这 12 笔记录就能够直接取得 block 号码啦! ;
间接:
再拿一个 block 来当作记录 block 号码的记录区,如果文件太大时, 就会使用间接的 block 来记录编号。
双间接:第一个 block 仅再指出下一个记录编号的 block 在哪里, 实际记录的在第二个 block 当中。
三间接:利用第三层 block 来记录编号。

(iiii)inode 能够指定多少个 block 呢?我们以较小的 1K block 来说明好了
(从block的方向去考虑)
在这里插入图片描述
注意:但这个方法不能用在 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 了。
记录的信息主要有:
在这里插入图片描述
(ii)一般来说, superblock 的大小为 1024bytes。
相关的 superblock 讯息我们等一下会以 dumpe2fs 指令来呼叫出来观察喔!

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

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

在这里插入图片描述

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

在这里插入图片描述

(g)inode bitmap (inode 对照表)

在这里插入图片描述

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

在这里插入图片描述
现在是superblock的信息
在这里插入图片描述
在这里插入图片描述
现在是block group的信息
在这里插入图片描述
说明:
dumpe2fs查询的结果说明:
不过依内容主要可以区分为上半部是superblock 内容, 下半部则是每个 block group 的信息了;
从上面的表格中我们可以观察到鸟哥这个 /dev/vda5 规划的 block 为 4K, 第一个 block 号码为 0 号,且 block group 内的所有信息都以block 的号码来表示的。

至于 block group 的内容我们单纯看 Group0 信息好了: 主要如下
在这里插入图片描述
注意:4096*512代表的是:多少个bytes的block
数量的话,已经说清楚是512个block了。

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

(1) block 则是记录在这个目录下的文件名与该文件名占用的 inode 号码数据:
在这里插入图片描述

(2)查看目录内的文件所占用的 inode 号码,用ls -i
在这里插入图片描述
(3)当你使用『ll / 』时,出现的目录几乎都是 1024的倍数,为什么呢?因为每个 block 的数量都是 1K, 2K, 4K 嘛!
在这里插入图片描述
注意:目录并不只会占用一个 block 而已
在目录底下的文件数如果太多而导致一个 block 无法容纳的下所有的档名与 inode 对照表时, Linux 会给予该目录多一个 block来继续记录相关的数据;

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

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

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

(2)eg:举例来说,如果我想要读取 /etc/passwd 这个文件时,系统是如何读取的呢?
在这里插入图片描述
在这里插入图片描述
(6)filesystem 大小与磁盘读取效能:

(i)如果文件写入的 block 真的分的很散,会咋样?
在这里插入图片描述
(ii)如果 filesystem 真的太大了,会咋样?
在这里插入图片描述

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

(1)假设我们想要新增一个文件,此时文件系统的行为是:
在这里插入图片描述
(2)数据的不一致 (Inconsistent) 状态及早期的解决办法
出现日至式文件系统的原因:数据的不一致状态
在这里插入图片描述

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

(i)早filesystem 当中规划出一个区块,该区块专门在记录写入或修订文件时的步骤,
日志式文件的工作过程:
在这里插入图片描述
(ii)日志式文件最基础的功能
在这里插入图片描述
(iii)
在这里插入图片描述

6.Linux 文件系统的运作

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

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

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

在这里插入图片描述

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

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

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

(2)按照前面的centos7.0的安装方法,
那么应该会有三个挂载点才是,分别是 /, /boot, /home 三个 (对应的装置文件名为 LVM, LVM, /dev/vda2)。
在这里插入图片描述
说明:
(i)观察这三个目录的inode发现:
由于 XFS filesystem 最顶层的目录之 inode 一般为 128 号,因此可以发现 /, /boot, /home为三个不同的 filesystem 啰! (因为每一行的文件属性并不相同,且三个目录的挂载点也均不相同之故。 )

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

(iii)eg:曾经提到根目录下的 . 与 … 是相同的东西
在这里插入图片描述
说明:
上面的信息中由于挂载点均为 / ,因此三个文件 (/, /., /…) 均在同一个 filesystem 内(判断方法:看inde号码以及目录属性);
而这三个文件的 inode 号码均为 128 号,因此这三个档名都指向同一个 inode 号码,当然这三个文件的内容也就完全一模一样了!

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

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

(2)想要知道你的 Linux 支持的文件系统有哪些,可以察看底下这个目录:
在这里插入图片描述

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

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

在这里插入图片描述

(ii)eg:
在这里插入图片描述

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

(1)为啥用法XFS来代替EXT文件系统呢?
在这里插入图片描述
在这里插入图片描述

(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 都是系统需要用到时, 这才动态配置产生,所以格式化动作超级快!
    在这里插入图片描述

(ii)文件系统活动登录区 (log section)
在这里插入图片描述

(iii)实时运作区 (realtime section)
在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述

二、文件系统的简单操作

1.磁盘与目录的容量

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

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

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

(a)df的解释
由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在Superblock 内的信息, 所以这个指令显示结果的速度非常的快速!
在这里插入图片描述
(b)df相关信息说明
在这里插入图片描述
说明:
在这里插入图片描述

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

在这里插入图片描述
(d)df -aT
在这里插入图片描述
在这里插入图片描述
注:/proc 的东西都是 Linux 系统所需要加载的系统数据,而且是挂载在『内存当中』
的, 所以当然没有占任何的磁盘空间啰!

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

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

在这里插入图片描述

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

在这里插入图片描述

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

(a)du的解释
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

(5)df与du的区别

在这里插入图片描述

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

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

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

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

eg:假设我系统有个 /root/crontab 他是 /etc/crontab 的实体链接,也就是说这两个档名连
结到同一个 inode , 自然这两个文件名的所有相关信息都会一模一样(除了文件名之外)。
在这里插入图片描述
解释:
(i)
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

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

(b)eg:我们先建立一个符号链接文件链接到 /etc/crontab 去看看,
在这里插入图片描述
解释:
(i)
在这里插入图片描述

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

在这里插入图片描述

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

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

(a)
在这里插入图片描述
硬链接
在这里插入图片描述
符号链接
在这里插入图片描述

删除原文件后的情况
在这里插入图片描述
说明:
在这里插入图片描述

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

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

在这里插入图片描述

(d)关于目录的 link 数量:
如果建立目录时,他默认的 link 数量会是多少?
一个『空目录』里面至少会存在些什么?呵呵!就是存在 . 与 … 这两个目录啊!
eg:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

(1)如果我们想要在系统里面新增一颗磁盘时,应该有哪些动作需要做的呢:
在这里插入图片描述

1.观察磁盘分区状态

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

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

(a)lsblk 可以看成『list block device 』的缩写,就是列出所有储存装置
在这里插入图片描述
(b)eg1
在这里插入图片描述
在这里插入图片描述
说明:
目前的系统主要有个 sr0 以及一个 vda 的装置,而 vda 的装置底下又有三个分区, 其中 vda3 甚至还有因为 LVM 产生的文件系统!

默认的输出信息如下:
在这里插入图片描述
eg2:
在这里插入图片描述

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

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

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

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

(a) blkid 也知道了所有的文件系统, parted 来输出磁盘的分区类型
(b)
在这里插入图片描述
(c)eg:
在这里插入图片描述

2.磁盘分区:gdisk/fdisk

(1)GPT用gdisk

(a)初步了解各个分区的信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明:
(i)
在这里插入图片描述
(ii)老实说,使用 gdisk 这支程序是完全不需要背指令的!
只要离开 gdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效的意思。所以,你可以随便玩 gdisk ,只要离开时按下的是『q』即可。

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

下半部的分区表信息主要在列出每个分区槽的个别信息项目。每个项目的意义为:
在这里插入图片描述
在这里插入图片描述
(iiii)使用的『装置文件名』请不要加上数字,因为 partition是针对『整个磁盘装置』 而不是某个 partition 呢!

(b)用 gdisk 新增分区槽:
(i)而经过上面的观察,我们也确认系统还有剩下的容量可以来操作练习分区! 假设我需要有如下的分区需求:
在这里插入图片描述
(ii)
在这里插入图片描述
在这里插入图片描述
说明:
重点在『Last sector 』那一行,那行绝对不要使用默认值!因为默认值会将所有的容量用光!
每次新增完毕后,请立即『p 』查看一下结果喔!

(iii)
在这里插入图片描述
(iiii)
在这里插入图片描述
(iiiii)
在这里插入图片描述
(c)partprobe 更新 Linux 核心的分区表信息
因为 Linux 此时还在使用这颗磁盘,为了担心系统出问题,所以分区表并没有被更新喔!这个时候我们有两个方式可以来处理:

  • 其中一个是重新启动,不过很讨厌!
  • 另外一个则是透过 partprobe 这个指令来处理即可!
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(d)用 gdisk 删除一个分区槽
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:万分注意!不要去处理一个正在使用中的分区槽!

(2)MBR用fdisk

(a)fdisk与gdisk的区别如下:
在这里插入图片描述
(b)
在这里插入图片描述

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

(1)XFS 文件系统 mkfs.xfs

(a)mkfs.xfs的用法如下
在这里插入图片描述
在这里插入图片描述
(b)
在这里插入图片描述
说明:
因为 xfs 可以使用多个数据流来读写系统,以增加速度,因此那个 agcount 可以跟 CPU 的核心数来做搭配!举例来说,如果我的服务器仅有一颗 4 核心,但是有启动 Intel 超线程功能,则系统会仿真出 8 颗 CPU 时,那个 agcount 就可以设定为 8 喔!

(c)
在这里插入图片描述
在这里插入图片描述
说明:
(i)XFS 文件系统 for RAID 效能优化 (Optional):针对于格式化后的文件系统设置
RAID磁盘阵列的含义:
磁盘阵列是多颗磁盘组成一颗大磁盘的意思, 利用同步写入到这些磁盘的技术,不但可以加快读写速度,还可以让某一颗磁盘坏掉时,整个文件系统还是可以持续运作的状态!
那就是所谓的容错。
在这里插入图片描述
(ii)stripe有啥用?
在这里插入图片描述
(iii)文件系统的读写要能够有优化,最好能够搭配磁盘阵列的参数来设计,这样效能才能够起来!

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

那格式化时,优化效能与什么咚咚有关呢?
我们来假设个环境好了:
在这里插入图片描述
结果如下:
在这里插入图片描述
在这里插入图片描述
说明:
从输出的结果来看, agcount 没啥问题, sunit 结果是 64 个 block,因为每个 block 为 4K,所以算出来容量就是 256K 也没错! 那个 swidth 也相同!使用 448 * 4K 得到 1792K!那个 extsz 则是算成 bytes 的单位,换算结果也没错啦!

(d)上面是个方式,那如果使用 sunit 与 swidth 直接套用在mkfs.xfs 当中呢?那你得小心了!因为指令中的这两个参数用的是『几个 512bytes 的 sector 数量』的意思! 是『数量』单位而不是『容量』单位!
因此先计算为:
在这里插入图片描述

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

(a)指令介绍
因为 ext4 的默认值已经相当适合我们系统使用,大部分的默认值写入于我们系统的 /etc/mke2fs.conf 这个文件中。
在这里插入图片描述
(b)
在这里插入图片描述
在这里插入图片描述

(c)dumpe2fs

在这里插入图片描述

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

(a)指令介绍
在这里插入图片描述
(b)如果要将刚刚的 /dev/vda5 重新格式化为 VFAT 文件系统呢?
在这里插入图片描述

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

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

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

(a)指令介绍
在这里插入图片描述
在这里插入图片描述
(b)eg
在这里插入图片描述
说明:
在这里插入图片描述

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

(a)指令介绍
在这里插入图片描述
在这里插入图片描述
(b)eg1:
在这里插入图片描述
在这里插入图片描述
(c)eg2
在这里插入图片描述
说明:
在这里插入图片描述

5.文件系统挂载与卸除

(1)挂载点是目录,不过要进行挂载前,你最好先确定几件事:
在这里插入图片描述
尤其是上述的后两点!如果你要用来挂载的目录里面并不是空的, 那么挂载了文件系统之后,原目录下的东西就会暂时的消失。并不是被覆盖掉, 而是暂时的隐藏了起来,等
到新分区槽被卸除之后,则 原本的内容就会再次的跑出来啦!

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)CentOS是怎么找出文件系统类型的呢?
由于文件系统几乎都有 superblock ,我们的 Linux 可以透过分析superblock 搭配 Linux 自己的驱动程序去测试挂载, 如果成功的套和了,就立刻自动的使用该类型的文件系统挂载起来啊!

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

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

(a)eg1
在这里插入图片描述
(b)eg2
在这里插入图片描述
在这里插入图片描述

(c)挂载 CD 或 DVD 光盘

在这里插入图片描述
说明:
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
说明:
在这里插入图片描述

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

(8)『-o remount,xx 』指令

根目录出现『只读』状态时,如何重新挂载呢?
最可能的处理方式就是重新启动 (reboot)!
不过你也可以这样做:
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

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

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

(a)含义
在这里插入图片描述
(b)eg
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明:
(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 的相关装置代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(b)指令含义
在这里插入图片描述

(c)eg

在这里插入图片描述

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

(i)指令含义
在这里插入图片描述
在这里插入图片描述
(ii)eg
在这里插入图片描述
说明:
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/88676242