前言
针对某托管平台分配的4台虚拟服务器,操作系统统信UOS(Linux),数据磁盘空间已满,无损扩容的办法。
(在操作硬盘扩容前,为了安全起见,请通过磁盘快照功能备份服务器系统盘与数据盘;
然后在确保数据安全的情况下操作关闭服务器,扩容磁盘空间,等待配置完成后启动服务器
)硬盘有价,数据无价!
目录
前言
一、首先要判断自己的磁盘属于哪种卷(PV、VG、LV、LVM)
二、进行扩容
1.关闭swap分区
2.卸载主分区
3.解除占用(把占用 /dev/vdb1 的进程杀死)
4.用 fdisk 命令删除原来的分区并创建新分区
5.检查文件系统,并变更文件系统大小
6.将扩容完成的文件系统挂载到原来的挂载点
7.查看磁盘空间和使用情况:运行命令 df -h
三、解决其他三台服务器通过NFS连接到扩容服务器的/data磁盘,并mount挂载到本地(共享存储)
四、总结
五、参考文献
一、首先要判断自己的磁盘属于哪种卷(PV、VG、LV、LVM)
PV(Physical Volume)物理卷
物理卷可以是一块硬盘、一个物理硬盘的分区、RAID 逻辑分区等。
VG(Volume Group)卷组
卷组是由一个或者多个 PV 组成,可动态扩展和缩小存储空间的一种逻辑上的概念,VG 的存储空间可以被分割为 LV。
LV(Logical Volume)逻辑卷
我们使用 LVM 技术将硬盘空间组成 VG 卷组后是不能直接使用的,就像我们把硬盘组成 RAID 之后也是不能直接使用的,要通过划分逻辑分区才能使用,LV 就是我们组好 VG 后划分出来的逻辑卷,逻辑卷就和硬盘的分区概念差不多,所以 LV 是可以格式化为具体的文件系统的。
逻辑卷(LV)由逻辑卷组管理(LVM)创建,优点在于:
1、将零散的物理卷(PV)整合成卷组(VG),根据使用的需求量,动态的扩展和收缩磁盘,按需(逻辑卷)分配空间。
2、若业务要求超大磁盘,单一磁盘无法满足需求,逻辑卷(LVM)可将小磁盘整合起来。
#查看物理卷信息,这里检查到我的服务器没有物理卷
pvdisplay
root@LNSJW-V04:/# pvdisplay
root@LNSJW-V04:/#
#查看卷组信息,这里检查到我的服务器没有卷组
vgdisplay
root@LNSJW-V04:/# vgdisplay
root@LNSJW-V04:/#
#查看逻辑卷信息,这里检查到我的服务器没有逻辑卷
lvdisplay
root@LNSJW-V04:/# lvdisplay
root@LNSJW-V04:/#
#那可以确认我的硬盘只是分区模式。
#提前查看所有设备挂载情况,将数值都提前保存好。
lsblk
lsblk -f
df -h
fdisk -l
root@LNSJW-V04:/# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 406K 0 rom
vda 253:0 0 50G 0 disk
├─vda1 253:1 0 1G 0 part /boot/efi
├─vda2 253:2 0 1.5G 0 part /boot
└─vda3 253:3 0 47.5G 0 part /
vdb 253:16 0 1000G 0 disk
└─vdb1 253:17 0 1000G 0 part /data
root@LNSJW-V04:/# lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sr0 iso9660 config-2 2023-04-16-23-43-37-00
vda
├─vda1 vfat *-* 1021.4M 0% /boot/efi
├─vda2 ext4 *-*-*-*-* 1.3G 6% /boot
└─vda3 ext4 *-*-*-*-* 29.9G 31% /
vdb
└─vdb1 ext4 *-*-*-*-* 705.6G 23% /data
root@LNSJW-V04:/#
root@LNSJW-V04:/# df -h
Filesystem Size Used Avail Use% Mounted on
udev 32G 0 32G 0% /dev
tmpfs 6.4G 319M 6.1G 5% /run
/dev/vda3 47G 15G 30G 33% /
tmpfs 32G 19M 32G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/vda2 1.5G 86M 1.3G 7% /boot
/dev/vda1 1022M 564K 1022M 1% /boot/efi
/dev/vdb1 984G 229G 706G 25% /data
tmpfs 6.4G 0 6.4G 0% /run/user/0
root@LNSJW-V04:/#
root@LNSJW-V04:/# fdisk -l
Disk /dev/ram15: 128 MiB, 134217728 bytes, 262144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 65536 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
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: gpt
Disk identifier: A116A18A-E208-4F24-AA5D-CB2A1756AC02
Device Start End Sectors Size Type
/dev/vda1 2048 2099199 2097152 1G EFI System
/dev/vda2 2099200 5244927 3145728 1.5G Linux filesystem
/dev/vda3 5244928 104855551 99610624 47.5G Linux filesystem
Disk /dev/vdb: 1000 GiB, 1073741824000 bytes, 2097152000 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: 0xf61ac2fa
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 2097151999 2097149952 1000G 83 Linux
root@LNSJW-V04:/#
二、进行扩容
1.关闭swap分区
swapoff -a #这里我没有操作
2.卸载主分区
umount /dev/vdb1
报错umount: /data: target is busy.
3.解除占用(把占用 /dev/vdb1 的进程杀死)
fuser -m -k /dev/vdb1
这里我这边fuser杀死进程也无法umount掉分区,注释掉/etc/fstab里面的/dev/vdb1磁盘,重启服务器,即可umount掉分区了。
4.用 fdisk 命令删除原来的分区并创建新分区
运行命令 fdisk -l 列出分区信息并记录扩容前数据盘的最终容量、起始扇区(First sector)位置
运行命令 fdisk /dev/vdb 进入 fdisk 界面
本示例中,命令为 fdisk /dev/vdb
输入 p并按回车键,打印出当前的配置
输入 d 并按回车键,删除原来的分区,我这里只有vdb1(删除分区不会造成数据盘内数据的丢失)
输入 n 并按回车键,开始创建新的分区
输入 p 并按回车键,选择创建主分区
输入分区编号并按回车键,这里仅创建一个分区,所以输入 1
输入第一个可用的扇区编号:为了保证数据的一致性,First sector 需要与原来的分区保持一致(在本示例中,按回车键采用默认值2048)
输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值
磁盘若有提示修改分区格式是ext4还是xfs啥的,记得选N
输入 p并按回车键,打印出当前的配置
输入 w 并按回车键,开始保存之前对分区的操作
5.检查文件系统,并变更文件系统大小
e2fsck -f /dev/vdb1 #检查文件系统
resize2fs /dev/vdb1 #变更文件系统大小
使用 e2fsck 时,由于系统需要检查并修正文件系统元数据,所以速度较慢、耗时较长,请耐心等待。正确使用 e2fsck 和 resize2fs 指令,不会造成原有数据的丢失。
6.将扩容完成的文件系统挂载到原来的挂载点
mount /dev/vdb1 /data
vim /etc/fstab #记得将注释掉的开启挂载恢复原样
7.查看磁盘空间和使用情况:运行命令 df -h
如果出现扩容后的文件系统信息,说明挂载成功,就可以使用扩容后的文件系统了。
三、解决其他三台服务器通过NFS连接到扩容服务器的/data磁盘,并mount挂载到本地(共享存储)
正常的命令是
mount -t nfs 192.168.21.14:/data /root/data
#这里我报错mount.nfs: requested NFS version or transport protocol is not supported
错误信息说明需求的nfs版本或传输协议不支持,意思是服务器端的nfs版本和客户端的nfs版本不同,百度发现网上都说该错误是内核配置有问题引发的,说是内核配置没有启用nfs导致。但是始终没有找到网上所说的修改内核配置的方法。
但是经过我实际检查发现,错误在于服务启动的顺序不对,应该先启动或重启rpcbind服务,然后在启动或重启nfs服务。
service rpcbind restart
service nfs-kernel-server restart
mount -t nfs 192.168.21.14:/data /root/data
df -h
四、总结
重新启动服务器让全部环境和进程恢复启动,至此教程结束。不谢( ̄_, ̄ )
五、参考文献
Linux - 磁盘基础知识、磁盘管理(类型、引导、分区、挂载、raid、LVM、loop、overlayfs)_linux磁盘类型_骆言的博客-CSDN博客
Linux磁盘、磁盘分区、物理卷、卷组、逻辑卷_linux查看磁盘卷组_kthx的博客-CSDN博客
Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)管理
关于 Linux中逻辑卷/物理分区等知识的一些总结_山河已无恙的博客-CSDN博客
Linux系统-磁盘无损扩容教程【宝塔面板适用】_宝塔扩容硬盘_小蓝博客的博客-CSDN博客
mount.nfs: requested NFS version or transport protocol is not supported_热气球、的博客-CSDN博客