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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/659589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX