云服务器磁盘清理

自己做的公众号,欢迎各位关注:

https://blog.csdn.net/weixin_41684005/article/details/89316917此篇中提到,将云服务器hbase数据迁移至本地物理服务器,之后对hbase的表做了TTL设置,手动触发major_compact删除数据,空间得以释放。

成功的将原来的40多T的存储降为现在的不到10T,至此以为数据清理完成,但经两天观察云服务存储账单,存储的收费并没有降低,每天还是八九百块的收费。神马情况,蒙圈了。。。。

沉下心慢慢思考,在hbase删除数据的时候,遇到的情况是设置TTL后并不会及时的去删除数据,只有在大合并的时候才会将过期数据删除,因而是逻辑删除。于是手动的触发major_compact,才做到将数据物理删除。这会不会是同样的问题,服务器只是逻辑删除了数据,并没有物理的将数据删除掉。在服务器上执行df -h查看空间确实已减少。好吧,问下度娘,发现一个我这个对服务器的菜鸟不知道的情况:“传统磁盘驱动器上,删除时所删除的文件不会从磁盘中完全删除。这就是为什么你可以恢复已删除的文件的原因”。还真是没有将数据物理删除掉,经研究需要使用fstrim去收缩空间。

在linux服务器上执行fstrim报错:fstrim: /data: FITRIM ioctl failed: Operation not supported,不支持该操作。

再次深入的去研究

1,cat /sys/block/sdb/queue/discard_max_bytes 如果命令返回非零值,则该磁盘支持trim,如果返回零,则不支持

2,cat /proc/version 查看系统内核版本,内核版本:2.6.32-431.29.2.el6.x86_64  以上支持fstrim

经过命令查看我们的服务器是支持fstrim的,但是为什么操作报不支持该操作呢。

经排查发现我们的系统使用了LVM的逻辑分区,将16块1T的磁盘划分到一个lvm下,所以无法使用fstrim进行手动收缩。

在azure的Linux VM 文档上看到有两种方法可以启用 TRIM 支持

  • 在 /etc/fstab 中使用 discard 装载选项,例如:

    bash复制

    /dev/data-vg01/data-lv01  /data  ext4  defaults,discard  0  2
    
  • 在某些情况下,discard 选项可能会影响性能。 此处,还可以从命令行手动运行 fstrim 命令,或将其添加到 crontab 以定期运行:

    Ubuntu

    bash复制

    # sudo apt-get install util-linux
    # sudo fstrim /datadrive
    

    CentOS

    bash复制

    # sudo yum install util-linux
    # sudo fstrim /datadrive

OK,按照以上操作,操作之后重启服务器,发现fstrim可以用了。再次观察了两天的存储账单,存储的费用直线下降。成功搞定。

一句话总结:方法总比问题多

发布了7 篇原创文章 · 获赞 9 · 访问量 726

猜你喜欢

转载自blog.csdn.net/weixin_41684005/article/details/90233526