之前在分配虚拟机时,给服务器分配了100G,在使用过程中,提示"no space left on device",查看硬盘占用情况发现,虚拟机目前只使用了50G左右,但是为什么会提示这个就很纳闷了。
然后使用lsblk查看硬盘使用情况,发现root用户对应了50G容量。
这时仍然没有意识到问题出现在哪了。
接着使用df -hT,看了下
发现centos-root 容量为50G,已用50G了,由于我这里使用docker,所以会出现很多overlay类型的文件系统。占用都是99%了,就很神奇。
由于我是用jenkins发现的此问题,进入jenkins容器内部,查看硬盘占用情况:
发现确实硬盘满了,那就扩容虚拟机硬盘。直接在EXSI里面给该服务器扩容到500G。
再次查看上面的过程,发现除了硬盘总量变成500G了,其他还是没变。
查了一下,貌似需要合并硬盘。
接着需要先把新增的那部分硬盘容量给整出来。
使用 fdisk -l 看下总的硬盘的名字叫什么?我这里是叫sda,具体参考下图
接着就操作类似新建挂载盘:使用 fdisk /dev/ada, 操作步骤如下图
1. 加载分区表:
执行 partprobe命令用于将磁盘分区表变化信息通知内核,并请求操作系统重新加载分区表,此方法可以不用重启系统;
发现使用 partprobe 貌似不好使,提示 "Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。"
2. 分区确认:fdisk -l
然后发现,还是跟原来一样,显示两个sda。如果这里显示上面新增的分区,则不需要重启。
接着使用 reboot 重启试下才正常显示。
对新增加的硬盘格式化
由于上面新增的硬盘分区为ada3,所以这里使用:mkfs.ext3 /dev/sda3,如果分区号是4则执行 mkfs.ext4 /dev/sda4
格式化过程跟新分区大小有关,等待写入完成。
添加新LVM到已有的LVM组,实现扩容
#lvm /*进入lvm管理*/
lvm>pvcreate /dev/sda4 /*这是初始化刚才的分区,必须的*/
lvm>vgextend centos /dev/sda4 /*将初始化过的分区加入到虚拟卷组 centos为物理卷名称,可自定义*/
lvm>lvextend -L +400G /dev/mapper/centos-root /*扩展已有卷的容量(注意容量大小)*/
lvm>pvdisplay /*查看卷容量,这时你会看到一个很大的卷了*/
lvm>quit /*退出*/
以上只是卷扩容,下面是文件系统的真正扩容
查看文件系统格式
cat /etc/fstab | grep centos-root
如果文件系统是xfs,则执行:
xfs_growfs /dev/mapper/centos-root
如果文件系统是ext,则执行:resize2fs /dev/mapper/centos-root
再次查看:
至此,磁盘扩容完成。
2. Linux磁盘空间转移
磁盘空间转移适用于相同系统中,一个分区空间大,另外一个分区空间不足,将一个分区的空间转移一部分到另一个分区的情况。
1.减少cl-home磁盘大小
# lvreduce -L -200G /dev/mapper/cl-home
2.增加cl-root磁盘大小
# lvextend -L +200G /dev/mapper/cl-root
3.刷新磁盘
# xfs_growfs /dev/mapper/cl-home # xfs_growfs /dev/mapper/cl-root
4.显示文件系统信息
df -h
- sd一般是指sata或scsi接口的硬盘(sda是第一块,sdb是第二块);
- hd一般是指IDE接口的硬盘;
- vd一般是指虚拟硬盘。
硬盘接口分为:
- ide (integrated drive electronics) 把盘体和控制器集成在一起
- sata (serial ATA(advanced technology attachment))
- scsi (small computer system interface)
- 光纤通道 fibre channel