Linux 系统如果把磁盘写满了继续写会怎么样? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zhoudaiyu
V2EX    Linux

Linux 系统如果把磁盘写满了继续写会怎么样?

  •  
  •   zhoudaiyu
    PRO
    2020-04-05 13:30:29 +08:00 via iPhone 6987 次点击
    这是一个创建于 2098 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨天发生了一件事: celery 写的 worker 日志把磁盘写满了,然后 CPU 突然拉到 100,今早发现所有任务都积压了....我想知道写满了磁盘后继续写文件系统会发生啥?
    21 条回复    2020-04-06 17:08:49 +08:00
    mritd
        1
    mritd  
       2020-04-05 13:47:37 +08:00 via iPhone
    写不进去
    zhoudaiyu
        2
    zhoudaiyu  
    OP
    PRO
       2020-04-05 13:49:02 +08:00 via iPhone
    @mritd 那把要写的东西扔到哪里了?/dev/null?
    inwar
        3
    inwar  
       2020-04-05 14:05:44 +08:00 via Android
    抛 io 异常了吧
    lisonfan
        4
    lisonfan  
       2020-04-05 14:06:18 +08:00
    我记得好像是抛异常
    zhoudaiyu
        5
    zhoudaiyu  
    OP
    PRO
       2020-04-05 14:06:51 +08:00 via iPhone
    @inwar 没来得及看日志直接清掉了 着急恢复功能 有可能抛异常吧
    bruce2000
        6
    bruce2000  
       2020-04-05 15:40:49 +08:00
    我遇到过,SSH 都无法远程登陆,只能接显示器删点东西后才能登陆
    zhoudaiyu
        7
    zhoudaiyu  
    OP
    PRO
       2020-04-05 15:43:57 +08:00 via iPhone
    @bruce2000 这个倒是能登...可能是因为只是 /opt 满了...
    wdlth
        8
    wdlth  
       2020-04-05 16:00:23 +08:00
    会导致很多程序异常,甚至是系统服务,所以一般把应用数据放在其他挂载点。
    laminux29
        9
    laminux29  
       2020-04-05 16:14:22 +08:00
    思考一个问题,如果是你操作系统,向用户提供一个写数据的接口,你会如何设计?
    julyclyde
        10
    julyclyde  
       2020-04-05 16:21:47 +08:00
    为什么 100%呢?既然都没事可干了
    pilgrim_kevin
        11
    pilgrim_kevin  
       2020-04-05 16:54:54 +08:00
    可以自己模拟一下,就知道会发生什么了:cat /dev/zero > zero.fill;sync;
    wanguorui123
        12
    wanguorui123  
       2020-04-05 18:21:00 +08:00 via iPhone
    崩溃
    MilkShake
        13
    MilkShake  
       2020-04-05 18:37:53 +08:00
    写不进去,会导致你的应用无法正常允许。
    W1angMh
        14
    W1angMh  
       2020-04-05 20:38:46 +08:00
    抛异常 服务全挂
    oahebky
        15
    oahebky  
       2020-04-05 21:19:58 +08:00
    只要涉及(依赖)读写文件(包括打开文件)的行为都不能用。
    其它不涉及(依赖)的都可以用。
    就这么回事。
    zhoudaiyu
        16
    zhoudaiyu  
    OP
    PRO
       2020-04-05 21:23:21 +08:00 via iPhone
    @oahebky 为啥 CPU 被拉满了 是一直在尝试写么?
    feelinglucky
        17
    feelinglucky  
       2020-04-05 22:26:35 +08:00   4
    你们还是太年轻呀,从业那么多年竟然没有被日志撑暴过硬盘…
    MOONLIGHTT
        18
    MOONLIGHTT  
       2020-04-05 23:35:18 +08:00
    msg7086
        19
    msg7086  
       2020-04-06 10:01:54 +08:00
    写文件用的是 write 调用。
    write 调用在磁盘满了的时候会报 ENOSPC 。

    ENOSPC The device containing the file referred to by fd has no room for the data.

    有一些程序会在磁盘满了的时候继续重试。
    RickyC
        20
    RickyC  
       2020-04-06 15:55:47 +08:00
    比如 MySQL 可能会崩溃不能启动
    oahebky
        21
    oahebky  
       2020-04-06 17:08:49 +08:00
    @zhoudaiyu 不会直接影响到 CPU 。你可以当做整个系统都能正常使用。就像我说的,除了涉及(依赖)读写文件的行文不能用。
    比如说打开一个新的 ssh 链接,这是要涉及到不止一个文件打开读取的,所以就不能用。

    但是你在已经打开过的 ssh 链接中执行 ls,rm 操作等等,是可以正常使用的。

    但是 cpu 一般情况下会是正常的,除非有某个进程因为无法读写(包括打开)文件,然后里面什么代码逻辑写的不对,会死循环占用 cpu,这样是会占满 cpu 的,这种情况是有可能发生的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     872 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 23:09 PVG 07:09 LAX 15:09 JFK 18:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86