Linux 磁盘分区与挂载

对磁盘进行分区是不管装 Windows 还是 Linux 都是很重要的,对于 Linux 桌面版系统,还要可视化工具进行分区和挂载操作,但是服务器增加物理硬盘之后就不一样了,这里记录一下 Linux 里磁盘管理相关的命令。

一、硬盘分区方式

对于经常装系统的人来说(自己就是装个 Linux 前前后后折腾了估计得有几十次了,真是应了《鸟哥Linux私房菜》里说的),对硬盘分区应该是很了解了。目前有两种硬盘分区方式,一种是 MBR 方式,相对较老,而且由于时间的局限性,有许多的不足和缺点,所以就诞生了 GPT 方式的硬盘分区,解决了很多 MBR 下的问题。以下为两种分区的区别:

  • MBR 分区(如今已经算淘汰)
    最多支持 4 个主分区,只能用扩展分区衍生出更多的逻辑分区。
    扩展分区要占一个主分区。
    系统只能转在主分区。
    MBR 最大支持的分区大小为 2 TB(大数据时代显然是不够的)。

显然 MBR 分区有许多的缺点与不足,从上面的信息可知系统要占一个主分区,所以一块硬盘中最多装4个系统,而且都是不能有其他分区的系统。还有就是一个分区只能分2TB对于现在的时代真的是不够了,所以 MBR 在市面上几乎已经绝迹,除了我家里那台00年代的老台式还在用…..

  • GPT 分区
    支持无线多个主分区(OS 可能会做限制,例如:Windows 下最多 128 个分区)。
    最大支持 18EB 的大容量。(1024TB=1PB,1024PB=1EB)。
    Windows 7 后只支持 GPT 方式。

目前市场上的基本上所有产品都是以 GPT 方式生产的,大势所趋,现在的电脑基本都是 UEFI + GPT 格式装系统的,所以装双系统,多系统都是很方便的,比如说自己为了方便就是在笔电里装着 Win 10 + Deepin 15.11

二、Win 分区和 Linux 分区区别

相对于 Win 的按磁盘分区方式,Linux 中的分区方式还是有很大的区别的,区别就在与挂载这个概念,理解好这个概念是十分重要的。Windows 中都是分区都是按照磁盘号来分区的,分完一个区这个区就拥有一个磁盘号,简单易于理解,每一个磁盘分区的根目录都可以说是平级的,没有太大的相关性。

对于 Linux 的挂载而言,首先需要理解清楚 Linux 文件系统中目录树这个概念,可参考这里Linux(三):Linux 的目录结构,在 Linux 中就是把某个目录树中的目录与分区关联起来,这指的就是挂载的意思,换句话说,一个分区必须和目录树上的一个文件目录关联起来,这个目录里的所有文件都会存储与这个分区之中(这个目录中被其他分区挂载的子目录除外)。其与 Windows 最大的区别点就在于:不管怎么分区,Linux 中的根目录始终是 /,而不像 Windows 中每个分区的根目录都是平级存在的。

三、硬盘接口说明

目前市场上的硬盘接口有许多中,比较常见的就有:IDESTATAM2NVME,IDE 一般都是机械硬盘使用的,STATA、M2、MVME 都是固态硬盘使用的接口,速度会比 IDE 快上许多,随着时间的流逝,IDE 肯定会像 MBR 分区格式一样被淘汰的。

使用如下命令查看系统分区信息:

1
lsblk -f    # 查看系统分区情况

本人电脑是19年新款华为 MateBook 14,从下图中可知,装的是 512G 走 NVME 接口的固态硬盘。

NVME 固态硬盘信息

而我远程服务器上应该就是 STATA 接口的硬盘了(当然这里云服务提供商虚拟化云虚拟出来的):

SATA 硬盘信息

四、挂载新分区

首先必须要有未分配的空闲磁盘空间,然后按以下步骤执行

  • 1. 使用如下命令查看硬盘信息:
1
ll /dev |grep nvme*

可以看到如下图结果,nvme0 表示一块磁盘,nvme0n1 表示这块磁盘上第一个分区,以此类推,可以发现已经有了 10 个硬盘分区。

磁盘分区列表

  • 2. 使用如下命令进行分区设置:
1
sudo fdisk /dev/nvme0n1    # nvme0n1 为相应的磁盘名称 

fdisk 分区工具
fdisk 分区操作

设置好分区后直接按:w 写入并保存

分区写入保存

重启系统:reboot
使用命令查看分区详情:lsblk -f

分区详情信息

发现分区已经出行,但是与其他分区是不一样的,因为这里需要进行格式化。

  • 3. 格式化
    使用如下命令进行格式化分区:
1
sudo mkfs -t ext4 /dev/nvme0n1p11  # ext4 表示分区类型,具体可自行 Google 查询

成功后如下图:

格式化分区

  • 4. 挂载分区到某个目录下
    使用如下命令将 nvme0n1p11 分区挂载到 /opt/test 目录
1
2
3
mount /dev/nvme0n1p11 /opt/test       # 这里是挂载命令
# 卸载命令如下
umount /dev/nvme0n1p11 /opt/test

挂载分区目录

  • 5. 设置永久挂载
    通过修改配置文件(/etc/fstab),新增如下图的内容保存即可完成永久挂载。

fstab 永久挂载

五、磁盘查询命令

  • 1. 查看系统磁盘的使用情况
1
df -lh

df 磁盘使用情况

  • 2. 查看指定目录的磁盘使用情况
1
2
3
4
5
6
du -h [dir name]
-s 指定目录占用总大小
-h 显示文件大小单位
-a 包含文件
--max-depth=1 子目录深度
-c 显示使用的总容量

du 目录大小

六、wc 命令

wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
这里利用 wc 命令和管道命令可以统计某个目录下的文件、目录的个数。例如:

1
2
ls -l |grep "^-" |wc -l      统计目录下文件的个数。
ls -lR |grep "^-" |wc -l 统计目录下文件的个数,包括子目录里的。

wc 文件统计