记一次为服务器扩容根目录

记录一下实习的时候为服务器扩容的一些步骤啥的。以前好像没有给 linux 服务器 / 虚拟机扩容过。
(说起来之前编译 OpenWRT 的 Ubuntu 只要空间不够了我就重开一个加大内容了。现在想想咋还能没研究过给根目录扩容呢……)

以下为正文

示例机器为:

1
CentOS release 6.5 (Final
  1. 添加磁盘到需要扩容的机器上

  2. 使用 lsblk 查看磁盘情况
    image-20230318095354975

    可以看到,机器加载了磁盘 sdc ,但是未挂载

  3. 使用 fdisk -l 查看磁盘分区情况
    image-20230318095645794
    可以看到, sdc 并未分区

  4. 使用 fdisk 创建新分区

    1
    2
    3
    fdisk /dev/sdc
    # 其中/sdc根据你要分区的磁盘标识进行修改
    # lsblk中可以查看到

    fdisk 后会进行命令界面

    输入 n ,表示新建一个分区

    输入 p ,表示新建分区类型为主分区(相对 e 是扩展分区)

    输入 1 ,表示分区号为 1,即为 sdc1

    其他内容默认即可,直接回车

    最后输入 w ,表示保存退出
    image-20230318100735151

  5. 此时输入 lsblk ,检查 sdc1 分区是否正确创建

    image-20230318100748064
    可以看到, sdc1 已经正确被创建,但是依旧没有被挂载

  6. 创建分区之后,我们需要对分区进行格式化操作
    由于我们需要对根目录进行扩容,所以需要先确保根目录的文件系统格式,比如 ext3ext4

    使用命令 lsblk -fs 查看当前磁盘分区格式
    image-20230318101148614
    可以看到,挂载点为根目录的分区是 VolGroup-lv_root (dm-0) ,分区格式是 ext4

    所以我们同样也把 sdc1 格式化为 ext4 格式

    使用 mkfs 命令进行格式化

    1
    2
    mkfs -t ext4 /dev/sdc1
    #mkfs -t 分区格式 要格式化的分区

    image-20230318101552204

    至此,我们已经为新磁盘进行了分区和格式化操作了。但是要想让新加的 100G 加到以前的根目录分区的话,我们需要用到 linux 中的 LVM 技术,即逻辑卷管理。详见 [知乎:操作系统概念中,分区和卷的区别是什么?](操作系统概念中,分区和卷的区别是什么? - 知乎 (zhihu.com))

  7. 由于我们的机器上已经有 vg 卷了,所以我们需要知道它的卷名和卷路径,使用 vgdisplay -v 查看
    image-20230318102517022
    这里,我们需要获取 VG NAME 的值,后续扩容需要用到。但是这个卷组下还有两个 LV,我们需要为根目录(root) 的 LV 扩容而不是给交换分区(swap) 扩容,所以也需要把根目录的 LV Path 记住。

  8. 使用 pvcreate /dev/sdc1 创建物理卷
    image-20230318103209998
    可以看见物理卷已经被成功创建了

    这里扯一下 PV、VG、LV 的关系,LVM 是逻辑卷管理(Logical Volume Manager),其中 LV 是逻辑卷的意思。而逻辑卷对应的就是物理卷,即 PV(physical volume)。而逻辑卷是建立在卷组之上的,即 VG(Volume Group)。即:多个物理卷在一起组成卷组,然后可以在卷组织上建立逻辑卷,逻辑卷能够和正常的分区一样使用。

    img
    此处借用一张 CSDN 博客上的图,其中 PE 不做涉入。

  9. 使用 pvdisplay 命令查看物理卷
    image-20230318105122462
    可以看到 /dev/sdc1 已经创建好了物理卷,但是 VG Name 一栏为空,说明它不属于任意卷组

  10. 使用命令将物理卷添加至卷组

    1
    2
    vgextend VolGroup /dev/sdc1
    # vgextend 卷组名 物理卷名

    其中卷组名即为第 7 步的 VG Name

    image-20230318110404276

  11. 使用命令扩展逻辑卷

    1
    2
    lvextend -L +99.9G /dev/VolGroup/lv_root
    # lvextend -L +扩展大小 扩展逻辑卷路径

    其中扩展逻辑卷路径即为第 7 步的 LV Path

    其中扩展大小如果为 100 的话会产生报错,报错内容为剩余空间不足,我们稍微缩小一点即可。发生这种情况可能是因为 linux 计算空间的问题,这里我也不清楚具体原因。

    image-20230318110501492

  12. 扩展之后并不是即时完成的,还需要使用命令增长文件系统,这个命令根据不同分区格式各不相同,这里我使用的是 ext4 的命令。

    1
    2
    resize2fs /dev/VolGroup/lv_root
    # resize2fs 增长逻辑卷路径

    其中增长逻辑卷路径同样为第 7 步的 LV Path

    image-20230318111016191
    增长成功,使用 df -h 查看:
    image-20230318111124739