Linux 系统如果把磁盘写满了继续写会怎么样? - V2EX
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zhoudaiyu
V2EX    Linux

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

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

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

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

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

    但是 cpu 一般情况下会是正常的,除非有某个进程因为无法读写(包括打开)文件,然后里面什么代码逻辑写的不对,会死循环占用 cpu,这样是会占满 cpu 的,这种情况是有可能发生的。
    About     Help     Advertise     Blog     API     FAQ     Solana     2834 Online   Highest 6679       Select Language
    创意工作者们的社区
    World s powered by solitude
    VERSION: 3.9.8.5 60ms UTC 09:59 PVG 17:59 LAX 02:59 JFK 05:59
    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