Alex_McAvoy

想要成为渔夫的猎手

Linux 磁盘管理

【磁盘分区】

若想要在系统中新增一块硬盘,对磁盘进行分区是第一步

fdisk 命令是一个创建和维护分区表的程序,命令格式为:fdisk [-l] 设备名称

当使用 -l 选项而不加设备名时,会将整个系统内能够找到的设备分区列出

由于每台主机的磁盘数量不同,因此在进行分区时,通常会先使用 df 命令列出可用的磁盘文件名,再用 fdisk 命令进行查阅

在进入 fdisk 工作界面后,可以输入 m 以获取帮助,可以看到如下所示的命令介绍

常用的命令有:

  • d:删除一个分区
  • n:新增一个分区
  • p:在屏幕上显示分区表
  • q:不存储操作,离开 fdisk
  • w:将操作写入分区表

如下图所示,输入 n 后,按照提示即可创建一个新的分区

在输入 p 后,会列出当前磁盘的分区表信息,相当于 fdisk -l

【磁盘格式化】

分区后接着要进行的操作就是进行文件系统的格式化,一般会选用 mkfs 命令来进行该操作,命令格式为:mkfs -t 文件系统格式 设备文件名

该命令事实上是一个综合命令,例如当运行 mkfs -t ext3 ... 时,系统会去调用 mkfs.ext3 这个命令以进行格式化操作

在终端输入 mkfs 后,连续按下两次 Tab 键,会列出 mkfs 所支持的文件系统格式

【磁盘检验】

在系统运行过程中,当出现死机时,文件系统可能会出现硬盘与内存数据的异步的情况,此时可使用 fsck 命令来检验并修复文件系统是否出错,使用 badblocks 命令来检验磁盘或软盘扇区是否出现坏轨

fsck 命令

fsck 命令来检验并修复文件系统是否出错,其与 mkfs 命令一样,也是一个综合命令,但其会通过 Super Block 自动分辨文件系统来调用相应的程序,命令格式为:fsck [-t 文件系统] -[选项] 设备名称

常用的选项有:

  • -t:后跟文件系统,由于 fsck 命令可自动辨别文件系统,因此该选项可省略
  • -A:依据 /etc/fstab 的内容,将需要的设备扫描一次,一般在开机过程中执行该命令
  • -C:在检验过程中,使用一个直方图来显示当前的进度
  • -a:自动修复检查到的有问题的扇区
  • -y:与 -a 作用相同,但某些文件系统仅支持 -y 这个选项

同样,在终端输入 fsck 后,连续按下两次 Tab 键,会列出 fsck 所支持的文件系统格式

需要注意的是,该命令通常只有 root 用户且文件系统有问题时使用,否则可能会对系统造成危害,一般情况下,都是系统出现极大问题,导致在 Linux 开机时不得不进入单用户模式进行维护时,才可使用

此外,在执行该命令时,被检查的分区不可挂载在系统树上,必须处于卸载状态

badblocks 命令

badblocks 命令来检验磁盘或软盘扇区是否出现坏轨,命令格式为:badblocks [选项] 设备名称

常用的选项有:

  • -s:在终端上列出检查进度
  • -w:使用写入的方式来测试,在待检查的设备有文件时不推荐使用

【磁盘挂载与卸载】

挂载

将文件系统与目录树结合的操作被称为挂载,挂载点一定是目录,该目录为进入该文件系统的入口,因此并非所有的文件系统均可使用,必须挂载到目录树的某个目录后方可使用

需要注意的是,单一文件系统不能被重复挂载到不同的挂载点中,单一目录也不能重复挂载到多个文件系统上,同时,作为挂载点的目录应当都是空目录

只有当进行挂载后,方可读取光盘、软盘、U 盘等设备上的文件

mount 命令

mount 命令用于将文件系统挂载到 Linux 系统上,其有三种常用的形式:

  • mount -a:依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上
  • mount [-l]:只运行 mount 会显示目前挂载的信息,加上 -l 可增加列 Label 名称
  • mount [-t 文件系统] [-L Label 名] [-o 额外选项] 设备文件名 挂载点:挂载文件系统

对于第三种形式,其选项说明如下:

  • -t:与 mkfs 的 -t 选项类似,可以加上文件系统的种类来指定要挂载的类型
  • -L:除利用设备文件名外,可利用卷标名称 Label 来进行挂载
  • -o:后跟一些挂载时额外的参数,默认参数为 rw,suid,dev,exec,auto,nouser,async,具体含义见下表
参数 意义
ro/rw 挂载文件系统成为只读/只写
suid/nosuid 是否允许该分区上含有 suid/sgid 的文件格式
dev/nodev 是否允许该分区上可创建设备文件
exec/noexec 是否允许该分区上拥有可执行 binary 文件
auto/noauto 是否允许该分区可被 mount -a 自动挂载
user/nouser 是否运行该分区让任何用户执行 mount 命令(默认情况下,仅允许 root 用户执行)
async/sync 挂载的文件系统是否使用异步写入/同步写入的内存机制,默认为异步方式 async
remount 进行重新挂载

umount 命令

umount 命令用于将设备文件卸载,只有当进行卸载后,方可退出光盘、软盘、U 盘等设备,其命令格式为:umount [选项] 设备文件名或挂载点

常用的选项有:

  • -f:强制卸载,常用于网络文件系统 NFS 无法读取的情况下
  • -n:不更新 /etc/mtab 的情况下卸载

只有当进行卸载后,访客退出光盘、软盘、U 盘等设备

开机挂载

手动处理挂载十分繁琐,为此,可设置让系统自动在开机时进行挂载,这样就不需要每次进入 Linux 系统后进行手动挂载

在 Linux 系统中,/etc/fstab 就是将所有利用 mount 命令进行挂载时的参数文件,也即利用 mount -a 命令进行的挂载数据文件

如图所示,该文件一共含有六个字段:

  • 第一列:磁盘设备文件名或该设备的卷标 Label
  • 第二列:挂载点
  • 第三列:磁盘分区的文件系统
  • 第四列:文件系统参数
  • 第五列:能否被 dump 备份命令使用
  • 第六列:是否用 fsck 命令检查扇区

【磁盘参数修改】

mknod 命令

在 Linux 中,所有的设备都以文件来代表,具体来说,是通过文件的 major 和 minor 数值来替代,其中 major 为主设备代码,minor 为次设备代码

常见的硬盘文件名 /dev/hda/dev/sda 设备代码表如下

磁盘文件名 major minor
/dev/hda 3 0~63
/dev/hdb 3 64~127
/dev/sda 8 0~15
/dev/sdb 8 16~31

mknod 命令可设置设备的 major 与 minor,命令格式为:mknod 设备文件名 [设备种类] [major] [minor]

常见的设备种类有:

  • b:设置设备名称成为一个外部存储设备文件,例如硬盘
  • c:设置设备名称成为一个外部输入设备文件,例如鼠标、键盘
  • p:设置设备名称成为一个 FIFO 文件

e2label 命令

e2label 命令用于修改格式化后的文件系统的卷标 Label,命令格式为:e2label 设备名称 新 Label

感谢您对我的支持,让我继续努力分享有用的技术与知识点!