前言

环境

  • CentOS:8.x

背景

当前维护的物联网卡管理平台因为涉及到较多的上传和导出操作,经常会把当前并不大的磁盘空间给占满,导致服务挂掉。因此急需解决这个问题,以确保服务的稳定性。

目标

最简单的方式就是买块更大的硬盘挂载上去,上传和导出的文件都存储在新硬盘上。

操作步骤

购买新硬盘

直接在控制台购买一块新硬盘就好了。

查看新硬盘

$ fdisk -l
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x951dd9ee

Device     Boot Start       End   Sectors Size Id Type
/dev/vda1  *     2048 104857566 104855519  50G 83 Linux


Disk /dev/vdb: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

可以看到当前的新硬盘是 /dev/vdb

分区

$ fdisk /dev/vdb

依次输入 np1,和两次回车,即可完成分区。

格式化

分区完成以后,还需要格式化硬盘,将硬盘格式化成目标文件系统类型的,常见的类型有 ext3ext4 等等。

可以首先看看当前在用磁盘的文件系统类型,通过以下命令可以看出当前磁盘的文件系统类型是 xfs,那我们也把新的磁盘格式话成相同的类型就可以。

[[email protected] 2020-07-18]# df -lhT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs          tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs          tmpfs     3.9G  520K  3.9G   1% /run
tmpfs          tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda1      xfs        50G   16G   35G  31% /
tmpfs          tmpfs     782M     0  782M   0% /run/user/0
$ mkfs.xfs /dev/vdb

挂载

接下来就是最后一步,将新的硬盘挂载到文件系统中。

$ echo '/dev/vdb /data/projects/iot-files xfs defaults 0 0' >> /etc/fstab
$ mount -a

扩容

如果当前目标挂载点已经存在文件了,则为了确保不丢失文件,还需要将原来的文件复制到新硬盘上。

$ mkdir /storage # 创建一个临时挂载点
$ mount /dev/vdb /storage # 将新硬盘挂载到临时挂载点上
$ cp -a /data/projects/iot-files /storage # 将原来的文件复制到新硬盘上
$ rm -rf /data/projects/iot-files/* # 删除原来的文件和文件夹
$ umount /dev/vdb # 从临时挂载点上卸除硬盘,再重新挂载到正式的挂载点上
$ echo '/dev/vdb /data/projects/iot-files xfs defaults 0 0' >> /etc/fstab
$ mount -a

如果卸除过程中提示磁盘忙,可以找到使用磁盘的进程并 kill 掉。

$ fuser -m -v /var
$ fuser -m -v -i -k /var

参考资料