很多时候,我们会发现自己的服务器或者VPS主机会出现后台无法登录,或者是数据库连接错误,严重一点甚至连FTP和S-S-H都无法登录,但是查看主机系统负载正常,流量和带宽也一切正常,这时候就要怀疑是不是你的主机硬盘空间已经占用了100%了。
挖站否以前就遇到过好几次这样的情况,在一筹莫展之时猛然醒悟是因为硬盘空间用完导致的,常见的就是日志文件过多过大导致的。曾经见过有超过50GB以上的日志文件,真得让人汗颜!扩容硬盘推荐使用LVM动态扩容,后期可以多次“无痛”给硬盘扩容,方便快捷。
本篇文章就来分享一下如何在VPS主机和服务器磁盘挂载与动态扩容硬盘,如果你的VPS主机或者是独立服务器磁盘占用100%,可以通过以下方法查找问题并实现动态扩容:
为了达到动态扩容的目的,我们还需要将硬盘分区转化成LVM格式,我们还需要再次进入到fdisk命令,然后输入:t
(转换格式)→分区号1.2.3
→8e
(LVM)→p
(查看分区)→w
(保存)。如下图:
利用上面的方法,我们将多出来的3GB硬盘新建了一个sda3的分区,并设置为LVM格式。重启VPS主机生效,或者执行命令(该命令在CentOS 6可能会不支持):partprobe
。(如果提示该命令不存在,先执行安装:yum -y install parted
)
新的硬盘分区已经创建并设置为LVM格式完成了,现在我们就需要将新的硬盘分区挂载到某一个目录下使用了,使用以下命令创建物理卷、逻辑卷,说明如下:
fdisk /dev/vda pvcreate /dev/vda3 //创建物理卷 vgcreate qyfouda /dev/vda3 //创建逻辑卷组 vgchange -ay qyfouda //激活逻辑卷组 vgdisplay qyfouda | grep "Total PE" //查看该卷组所有的PE lvcreate -l 30719 -n qimm qyfouda //创建逻辑卷 mkfs.ext4 /dev/qyfouda/qimm //格式化逻辑卷
操作如下图:
假设你要将硬盘挂载在/home2目录下,你需要先创建好该目录。
现在使用以下命令将新的分区挂载到/home2目录下:
vim /etc/fstab /dev/qyfouda/qimm /home2 ext4 defaults 0 0 #全部挂载 mount -a
操作如下图:
现在我们再次使用命令:df -h
就可以看到新硬盘分区已经成功挂载并可以使用了。
打开/home2
,我们就可以往里面存储了。
假设后期我们又给硬盘增加了容量,如下图:
由于我们之前用了LVM格式的硬盘分区,现在我们可以将新的硬盘容量直接增加到原来的硬盘空间上而不损坏数据。首先,还是按照上面的方法继续新建一个分区,并设置为LVM格式,这里是/dev/vda4
。
创建好的新的分区不要挂载,而是按照下面的方法,给新的分区创建物理卷,并加入/dev/vda3所属的逻辑卷组,将逻辑卷组的空间全部扩容到原来的硬盘分区即可,操作如下:
pvs pvcreate /dev/vda4 //创建新的物理卷 vgextend qyfouda /dev/vda4 //将新硬盘加入原来的卷组,可通过PVS查看 vgdisplay qyfouda | grep "Total PE" //查看所有PE lvresize -l 107517 /dev/qyfouda/qimm //重新规定大小 resize2fs /dev/qyfouda/qimm //扩容
如下图:
最后,我们可以看到硬盘分区动态扩容成功了,而原来的数据依然保留没有损坏。
如果你遇到了错误:“resize2fs: Operation not permitted While trying to add group #1024
”,一般来说是由于是由于以下原因导致的:
这个问题是由于文件系统预留的Journal size太小导致,可以通过dumpe2fs /dev/test_vg/lvol0 |grep -i Journal查看。(Journal size大小默认由e2fsprogs工具自动根据文件系统大小来计算,也可以认为指定。越大Journal size,对文件系统性能越好,Ext4最大Journal size是400M。)
我们可以通过以下方法来解决:
#解决步骤: #查看 dumpe2fs /dev/qyfouda/qimm | grep -i Journal e2fsck -C 0 /dev/qyfouda/qimm #删除原来的journal空间 tune2fs -O ^has_journal /dev/qyfouda/qimm tune2fs 1.40.2 (12-Jul-2007) #自动生成新的journal tune2fs -j /dev/qyfouda/qimm tune2fs 1.40.2 (12-Jul-2007) Creating journal inode: done This filesystem will be automatically checked every 33 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. #也可以指定大小 #tune2fs -j -J size=400 /dev/mapper/${name_of_your_logical_volume} #例如 #tune2fs -j -J size=400 /dev/qyfouda/qimm e2fsck -C 0 /dev/qyfouda/qimm e2fsck 1.40.2 (12-Jul-2007) /dev/os/test: clean, 11/524288 files, 24822/524288 blocks
如果上面还是无法解决问题,请直接将/dev/vda3卸载了,离线扩容,然后再挂载,如下:
umount -v /home2 /dev/mapper/qyfouda-qimm umounted resize2fs /dev/qyfouda/qimm //扩容
DirectAdmin磁盘空间不足的问题一般是由于默认的目录/home存储文件太多的原因导致的,因为DirectAdmin默认的用户所有的网站文件都是放在/home里。解决DirectAdmin磁盘空间不足,我们只需要给DirectAdmin再指定一个新的目录/home2即可。
PS:20230416更新,新版Directadmin支持在directadmin.conf直接添加参数,让新建用户的网站目录都存放在新的默认存储路径上。打开directadmin.conf添加:create_user_home_override=/home2
,或者如果你有多个存储路径可以改成这样:home_override_list=/home:/home2:/home3
。这样会在套餐包比前面一个多出一个选择,相对来说比create_user_home_override=/home2这样灵活一些。参考:https://www.directadmin.com/features.php?id=2060
操作基本流程:按照上面的方法新建/home2目录,然后新建分区并挂载在该目录下,记得使用LVM动态扩容挂载,后期有扩容需要直接在/home2上操作,一劳永逸!命令如下:
#编辑directadmin.conf 文件,添加一行代码 ext_quota_partitions=/home2 #有多个存储目录也可以这样写 #ext_quota_partitions=/home2,/home3,/home4 #编辑useradd文件 vim /etc/default/useradd #修改调整此行 HOME=/home2 #保存,并重启 service directadmin restart
操作如下图:
现在, DirectAdmin面板新建的用户的存储都会放在/home2目录下,后期如果存储空间再次不足的话可以用LVM动态扩容的方法将/home目录再次扩容。
硬盘动态扩容最关键的就是要使用LVM格式,挂载和扩容硬盘是一个比较有风险的操作,在扩容前一定要备份好自己的数据,不要有任何的侥幸心理。
网站搭建好了再给目录挂载新的分区会存在很多的问题,建议大家在建站前就要尽早规划好存储容量,例如可以提前建立LVM分区,自定义存储路径等等。
文章出自:挖站否 https://wzfou.com/disk-kuorong/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
文章更新于: %s = human-readable time difference 下午12:29
查看评论
当初装DA的时候就遇到这种情况
LVM格式后就数据没了。
DA还是不错的。