V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
seWindows
V2EX  ›  Linux

Linux 服务器硬盘满了后感觉会出不少 bug

  •  
  •   seWindows · 55 天前 · 3197 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器上一直不停报错没注意,跑了几个月,竟然把 journal 的日志占满了。journal 日志一直没限制。后来清理的时候发现大概占了硬盘空间的 80%左右,其实是发现 ssh 登不上去了才发现这个问题。

    商家的 vnc 也因为硬盘满了,tty 进不去。

    还好进救援模式才进去了,不然只能重装了。一看是真的 100%,一点也没有空余空间了。

    期间还发现了如果硬盘满了,挂载里面 loop 文件也挂载不上去,提示“块有问题”。清理完后就行了


    后来复盘的时候才发现是一个 loop 硬盘满了,读写一直失败。导致宿主机一直记录这个失败日志,导致宿主机硬盘也满了。
    硬盘满了后,感觉有不少软件会卡在 syslog 或者其他 log 函数上。很多软件都会出现预期之外的行为。
    22 条回复    2024-09-24 11:07:25 +08:00
    wacxr123
        1
    wacxr123  
       55 天前 via Android
    确实,我的经验是如果按 Tab 无法自动补全路径,就知道是盘满了(
    flynaj
        2
    flynaj  
       55 天前 via Android
    这个时候你就知道 zabbix 的好处了。
    Donaldo
        3
    Donaldo  
       55 天前
    我中招过几次,但我一堆服务器总是懒得去设置,其实可以设置一下 rotate 或者过期日期,要不迟早有满的一天。。。啊,好累。。。
    Kumo31
        4
    Kumo31  
       55 天前
    这些行为就是预期内的,只不过大部分软件的设计者就没考虑处理这种情况。我们还有一个专门的避免任何 IO 的程序去做这种情况下的节点降级处理
    june4
        5
    june4  
       55 天前
    我自己写了个快满了无限 5 分钟发一次邮件的定时任务,放在我的 linux 服务器初始化安装脚本里。

    #!/bin/bash -e
    if [[ -f /etc/default/disk-usage-agent ]]; then
    . /etc/default/disk-usage-agent
    fi
    max_usage=${max_usage:-90}
    usage=$(df | grep -e '/$' | awk '{print $5}' | tr -d %)
    if (( usage > max_usage )); then
    warnmsg="WARNING: disk-usage-agent: exceeds max usage: $usage%"
    echo $warnmsg >&2
    df -h | /opt/util/bin/mailadmins "$warnmsg" -
    fi
    totoro625
        6
    totoro625  
       55 天前
    某些程序的写入操作是删除原有数据再写入(并不是追加和修改),硬盘已满的情况下这样会导致文件丢失
    这里点名 acme
    kneo
        7
    kneo  
       55 天前 via Android
    这不叫 bug 。举个再极端的例子,你电脑断电了程序挂了,你能说这是软件 bug ?
    L4Linux
        8
    L4Linux  
       55 天前
    你们运维在干啥? logrotate 都不跑一下的吗?
    dfdd1811
        9
    dfdd1811  
       55 天前
    所以虽然我自己只有三台机器,但我还是用 prometheus+grafana…
    wheat0r
        10
    wheat0r  
       55 天前
    这事最大的 bug 是有人把硬盘跑满了
    dengjunhua
        11
    dengjunhua  
       55 天前 via iPhone
    监控和告警的重要性
    wolonggl
        12
    wolonggl  
       55 天前
    磁盘满了。依赖在磁盘创建临时文件基本收到影响,
    报告/tmp 空间满了后,一大堆软件受影响
    flyqie
        13
    flyqie  
       54 天前
    这个其实蛮正常的。

    毕竟不同软件的内部流程是不一样的,自然是没法统一的。

    并且说真的。。应该设个剩余空间报警,不然很麻烦。
    Yii234
        14
    Yii234  
       54 天前
    最基础的主机监控告警都没有,是生产服务器吗?
    PerFectTime
        15
    PerFectTime  
       54 天前
    想起来之前看到的一个段子,新拿到服务器先 dd 一个 10g 的空文件,等到磁盘满了删除该文件以快速解决磁盘占用满的问题
    sunxvvv
        16
    sunxvvv  
       54 天前
    硬盘满了,数据无法写到硬盘上,程序和内核的部分功能无法正常完成,不出问题才不合理吧......
    pollux
        17
    pollux  
       53 天前
    @PerFectTime 牛 +1
    flyqie
        18
    flyqie  
       53 天前 via Android
    @PerFectTime #15

    你这让我想起来 ext4 的保留空间了。。

    都是干这个用的
    FrankAdler
        19
    FrankAdler  
       53 天前
    /usr/bin/journalctl --vacuum-size=50M 放定时任务把
    Coelacanthus
        20
    Coelacanthus  
       47 天前
    @FrankAdler 那不如在 journald.conf 里配置 SystemMaxUse 或者 SystemKeepFree
    FrankAdler
        21
    FrankAdler  
       47 天前
    @Coelacanthus 也是可以的
    dode
        22
    dode  
       46 天前
    升级系统命令好久都执行失败,提示请求源错误,后来看一下,系统根目录空间满了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:32 · PVG 00:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.