磁盘分区与挂载

(整理自《鸟哥的Linux私房菜》基础篇)

 

1.观察磁盘分区的状态

1.1lsblk列出系统上的所有磁盘列表

lsblk可以看成list block device的简称,就是列出所有存储设备的意思。

 我们来谈谈默认输出的信息有哪些:

•        NAME:就是装置的文件名啰!会省略 /dev 等前导目录

•        MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码

•        RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等等

•        SIZE:容量

•        RO:是否为只读装置

•        TYPE:是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出

•        MOUTPOINT:挂载点

1.2 blkid 列出装置的 UUID 等参数

虽然 lsblk 已经可以使用 -f 来列出文件系统与装置的 UUID 数据,不过,直接使用 blkid 也可以来找出装置的 UUID。

1.3 parted 列出磁盘的分区表类型与分区信息(此命令也可以进行分区)

 

2.磁盘分区: gdisk/fdisk

MBR 分区表请使用 fdisk 分区, GPT 分区表请使用 gdisk 分区。

这两个工具软件的操作很类似,执行了该软件后,可以通过该软件内部的说明数据来操作。

下面先以GPT的gdisk为例:

 磁盘分区与挂载

 

 你应该要通过 lsblk 或 blkid 先找到磁盘,再用 parted /dev/xxx print 来找出内部的分区表类型,之后才用 gdisk 或 fdisk 来操作系统。 上表中可以发现 gdisk 会扫描 MBR 与 GPT 分区表,不过这个软件还是单纯使用在 GPT 分区表比较好。

只要离开 gdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效。

 磁盘分区与挂载

 

 使用『 p 』可以列出目前这颗磁盘的分区表信息,这个信息的上半部在显示整体磁盘的状态。 图中磁盘共有 40GB 左右的容量,共有 83886080 个扇区,每个扇区的容量为512bytes。 要注意的是,现在的分区主要是以扇区为最小的单位。下半部的分区表信息主要在列出每个分区槽的个别信息项目。每个项目的意义为:

•        Number:分区槽编号,1 号指的是 /dev/vda1 这样计算。

•        Start (sector):每一个分区槽的开始扇区号码位置

•        End (sector):每一个分区的结束扇区号码位置,与 start 之间可以算出分区槽的总容量

•        Size:分区槽的容量

•        Code:在分区槽内的可能的文件系统类型。Linux 为 8300,swap 为 8200。不过这个项目只是一个提示而已,不见得真的代表此分区槽内的文件系统

• Name:文件系统的名称等等。

 

gdisk 新增分区槽

假设我需要有如下的分区需求:

• 1GB 的 xfs 文件系统 (Linux)

• 1GB 的 vfat 文件系统 (Windows)

• 0.5GB 的 swap (Linux swap)

 磁盘分区与挂载

 

 重点在『 Last sector 』那一行,那行绝对不要使用默认值!因为默认值会将所有的容量用光!因此它默认选择最大的扇区号码! 因为我们仅要 1GB 而已,所以你得要加上 +1G 这样即可!不需要计算 sector 的数量,gdisk 会根据你填写的数值, 直接计算出最接近该容量的扇区数!每次新增完毕后,请立即『 p 』查看一下结果喔!请继续处理后续的两个分区槽! 最终出现的画面会有点像底下这样才对:

 磁盘分区与挂载

 

 那么就直接写入磁盘分区表:

 磁盘分区与挂载

 

 因为 Linux 此时还在使用这颗磁盘,为了担心系统出问题,所以分区表并没有被更新!这个时候我们有两个方式可以来处理,其中一个是重新启动,另外一种则是通过 partprobe 这个指令来处理即可

 磁盘分区与挂载

 

 

3.磁盘格式化(创建文件系统)

3.1XFS文件系统mkfs.xfs

3.2  EXT4 文件系统 mkfs.ext4

3.3 其他文件系统 mkfs

 

4.文件系统检验

4.1 xfs_repair 处理 XFS 文件系统

 xfs_repair 可以检查/修复文件系统,不过,因为修复文件系统是个很庞大的任务!因此,修复时该文件系统不能被挂载! 所以,检查与修复 /dev/vda4 没啥问题,但是修复 /dev/centos/home 这个已经挂载的文件系统时,若可以卸除,卸除后再处理即可。

4.2 fsck.ext4 处理 EXT4 文件系统

无论是 xfs_repair 或 fsck.ext4,这都是用来检查与修正文件系统错误的指令。注意:通常只有身为 root 且你的文件系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令, 可能会造成对系统的危害。

执行 xfs_repair/fsck.ext4 时, 被检查的 partition 务必不可挂载到系统上!亦即是需要在卸除的状态。

 

5.文件系统挂载与卸载

要进行挂载前,你最好先确定几件事:

•        单一文件系统不应该被重复挂载在不同的挂载点(目录)中;

•        单一目录不应该重复挂载多个文件系统;

•   要作为挂载点的目录,理论上应该都是空目录才是。

那么挂载了文件系统之后,原目录下的东西就会暂时的消失,这只是暂时的,等卸载了之后又会出来。

挂载——mount命令

卸载——umount命令

 

6 磁盘/文件系统参数修订

你可能要修改 Label name , 或者是 journal 的参数,或者是其他磁盘/文件系统运作时的相关参数,使用mknod命令。

 

7.设置开机挂载

直接到 /etc/fstab 里面去修改。

但是系统挂载的一些限制:

•        根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。

•        其它 mount point 必须为已建立的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则 (FHS)

•  所有 mount point 在同一时间之内﹐只能挂载一次。

•        所有 partition 在同一时间之内﹐只能挂载一次。

•  如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。

 磁盘分区与挂载

 

 这个文件的内容共有六个字段, 各个字段的总结数据与详细数据如下:

[装置/UUID等]  [挂载点]  [文件系统]  [文件系统参数]  [dump]  [fsck]

o   第一栏:磁盘装置文件名/UUID/LABEL name:

这个字段可以填写的数据主要有三个项目:

§  文件系统或磁盘的装置文件名,如 /dev/vda2 等

§  文件系统的 UUID 名称,如 UUID=xxx

§  文件系统的 LABEL 名称,例如 LABEL=xxx

这三个任意一个都可以。

o   第二栏:挂载点 (mount point)::

就是挂载点啊,一定是目录。

o   第三栏:磁盘分区槽的文件系统:

在手动挂载时可以让系统自动测试挂载,但在这个文件当中我们必须要手动写入文件系统才行!包括 xfs, ext4, vfat, reiserfs, nfs 等等。

o   第四栏:文件系统参数:

这里我们利用表格的方式再汇整一下参数:

参数

内容意义

async/sync

异步/同步

设定磁盘是否以异步方式运作!预设为 async(效能较佳)

auto/noauto

自动/非自动

当下达 mount -a 时,此文件系统是否会被主动测试挂载。预设为 auto。

rw/ro

可擦写/只读

让该分区槽以可擦写或者是只读的型态挂载上来,如果你想要分享的数据是不给用户随意变更的, 这里也能够设定为只读。则不论在此文件系统的文件是否设定 w 权限,都无法写入喔!

exec/noexec

可执行/不可执行

限制在此文件系统内是否可以进行『执行』的工作?如果是纯粹用来储存数据的目录, 那么可以设定为 noexec 会比较安全。不过,这个参数也不能随便使用,因为你不知道该目录下是否默认会有执行档。

举例来说,如果你将 noexec 设定在 /var ,当某些软件将一些执行文件放置于 /var 下时,那就会产生很大的问题喔! 因此,建议这个 noexec 最多仅设定于你自定义或分享的一般数据目录。

user/nouser

允许/不允许使用者挂载

是否允许用户使用 mount 指令来挂载呢?一般而言,我们当然不希望一般身份的 user 能使用 mount 啰,因为太不安全了,因此这里应该要设定为 nouser 啰!

suid/nosuid

具有/不具有 suid 权限

该文件系统是否允许 SUID 的存在?如果不是执行文件放置目录,也可以设定为 nosuid 来取消这个功能!

defaults

同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,预设情况使用 defaults 设定即可!

o   第五栏:能否被 dump 备份指令作用:

dump 是一个用来做为备份的指令,不过现在有太多的备份方案了,所以这个项目可以不要理会,可以直接输入 0

o   第六栏:是否以 fsck 检验扇区:

早期开机的流程中,会有一段时间去检验本机的文件系统,看看文件系统是否完整 (clean)。 不过这个方式使用的主要是透过 fsck 去做的,我们现在用的 xfs 文件系统就没有办法适用,因为 xfs 会自己进行检验,不需要额外进行这个动作,所以可以直接填 0 。

上一篇:使用parted对Linux未分区部分进行分区


下一篇:aws centos系统磁盘扩容