磁盘的分区、格式化、检验与挂载
磁盘管理是非常重要的,当我们想要再系统里面新增一块磁盘使用时,应执行如下几步:
- 对磁盘进行划分,以建立可用的硬盘分区 (fdisk / gdisk)
- 对硬盘分区进行格式化,以建立系统可用的文件系统 (mkfs)
- 对刚刚建立好的文件系统进行检验 (fsck)
- 在Linux系统上,建立挂载点,将其挂载上来 (mount ; umount )
一、观察磁盘分区状态 lsblk ,blkid
- lsblk (list block device):列出系统上的所有磁盘列表
lsblk [选项] [device]
# 常用选项
# -d, --nodeps 仅列出磁盘本身不打印从属设备(slave)或占位设备(holder)
# -f, --fs 输出文件系统信息
# -i, --ascii 只使用 ascii 字符
# -m, --perms 输出权限信息
# -p, --paths 打印完整设备路径
# -t, --topology 输出拓扑信息
下图是我的虚拟机中默认的磁盘列表:
NAME : 设备的文件名 ,会忽略 /dev 前导目录
MAJ:MIN : 内核识别的设备
RM: 是否为可卸载的设备
SIZE : 容量
RO : 是否为只读设备
TYPE : 是磁盘(disk),还是分区(partition),还是只读存储器(rom)等输出
MOUNTPOINT : 挂载点
- blkid :列出设备的UUID,设备名称,文件系统的类型等参数
UUID 使全局唯一标识符,Linux会将系统内所有的设备都分配一个独一无二的标识符,这个标识符就可以拿来作为挂载或者是使用这个设备或文件系统。
二、磁盘分区 gdisk/fdisk
目前磁盘分区主要有MBR以及GPT两种格式,这两种格式所使用的分区工具不太一样。
MBR分区表使用 fdisk 分区,GPT 分区使用 gdisk分区。
(一)GPT 分区和 MBR 分区的概念
-
MBR 分区
MBR的意思是“主引导记录”。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如何MBR被覆盖,操作系统就无法启动了。
MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘。MBR只支持最多4个主分区——如果你想要更多分区,你需要创建所谓“扩展分区”,并在其中创建逻辑分区。 -
GPT 分区
GPT意为GUID分区表。(GUID意为全局唯一标识符)。
这是一个正逐渐取代MBR的新标准。它和UEFI相辅相成——UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR。之所以叫作“GUID分区表”,是因为你的驱动器上的每个分区都有一个全局唯一的标识符(globally unique identifier,GUID)——这是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。
在MBR磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。
GPT的硬盘大小大得多,几乎没有限制,最大可支持18EB。而主分区的数量也非常多,可以支持多达128个主分区,所以在GPT中没有扩展分区和逻辑分区的概念,都是主分区,当然也是可以创建的,但是没有必要。
GPT也有缺点,就是不太适合x86,也就是32位的系统。
(二)给现有虚拟机添加新的硬盘
这里先挂载一块新的硬盘,找到虚拟机设置,点击添加,然后基本就是默认的下一步即可,完整的流程如下:
添加新硬盘后,启动虚拟机,使用 fdisk 查看一下新加入的 硬盘的信息 (以下所有命令切换为root进行操作)
fdisk -l # 列出已知硬盘分区的文件系统
(三)使用fdisk对新增硬盘进行分区
将新增的/dev/sdb分为3个主分区,分别为2GB,3GB,5GB的磁盘空间
fdisk /dev/sdb # 列出/dev/sdb下的分区表
# 常用命令操作 (其他操作自行使用m选项进行查看)
# d delete a partition 删除一个磁盘分区
# m print this menu 显示可选的选项
# n add a new partition 新建一个磁盘分区
# p print the partition table 显示分区表格信息
# q quit without saving changes 退出并且保存修改
# t change a partition's system id 给分区设置系统号
# w write table to disk and exit 写入保存并退出
tips: 新建分区时,分区的起始地址都使用默认的,扇区大小自行分配
第一个主分区 /dev/sdb1
第二个主分区 /dev/sdb2
第三个主分区 /dev/sdb3 (记得使用w选项进行保存)
创建完三个主分区后,再次进行查看 ( fdisk -l 硬盘名 ),可以看到三个主分区已经创建成功
三、磁盘格式化(创建文件系统)
文件系统格式化命令: mkfs (make filesystem)
格式化为ext4的Linux文件系统
mkfs.ext4 [-b size] [-L lable] 设备名称
# -b :设置区块的大小,1K,2k,4k
# -L :设置设备的标头名称
依次将三个主分区都格式化:mkfs.ext4 /dev/sdb号
逐个格式化完毕后,使用blkid进行查看,可以看到/dev/sdb下的三个主分区已经格式化完毕
四、检验文件系统 (错误时才检验,正常不检验)
这里的话,使用fsck.ext4来检验处理ext4文件系统
fsck.ext4 [-pf] [-b 超级区块] 设备名称
tips : 只有超级用户root可以去使用这个命令,并且是当你的文件系统有问题的时候才会去使用,正常情况下是使用这个命令会对系统造成危害。
另外,被检查的硬盘分区不可挂载到系统上(需要卸载下来才能检查)
五、文件系统挂载与卸载
挂载点是目录,这个目录是进入磁盘分区(文件系统)的入口。
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中
- 单一目录不应该重复挂载在不同的挂载点(目录)中
- 要作为挂载点的目录,理论上应该都是空目录才行
a. 如果你用了挂载的目录不是空的,那么当你挂载了文件系统之后,原目录下的内容就会暂时的消失,挂载点被卸载后原有的东西就会出现
mount 命令进行挂载
mount [-lhV]mount -a [选项]mount [选项] [--source] <源> | [--target] <目录>mount [选项] <源> <目录>mount <操作> <挂载点> [<目标>]
umount 命令进行卸载
umount [-hV]umount -a [选项]umount [选项] <源> | <目录>
将 /home/robin/data 目录作为 /dev/sdb 的第一个主分区 /dev/sdb1 的挂载点
挂载后 /home/robin/data 的挂载信息发生变化,正确挂载
将其卸载,并且再次使用df命令进行查看