磁盘、文件系统与 inode:磁盘没满为什么也可能写不进文件
很多人判断磁盘问题,只会看 df -h。但在线上环境里,磁盘没满却写不进文件并不罕见:inode 耗尽、挂载异常、权限问题、文件句柄占用、文件系统只读,都可能让“磁盘还有空间”这件事失去意义。 Linux 对磁盘的管理,不只是字节容量问题,...
很多人判断磁盘问题,只会看 df -h。但在线上环境里,磁盘没满却写不进文件并不罕见:inode 耗尽、挂载异常、权限问题、文件句柄占用、文件系统只读,都可能让“磁盘还有空间”这件事失去意义。 Linux 对磁盘的管理,不只是字节容量问题,...
后端线上最常见的一类问题,就是“服务连不上”。但“连不上”背后可能是域名解析、目标 IP、源地址选择、路由、端口监听、防火墙、连接状态、应用协议任意一层出了问题。 Linux 网络排障之所以难,是因为网络是分层的。要想收敛得快,就必须把 I...
很多人排查网络问题时,第一反应是 ping。但 ping 只能说明 ICMP 是否可达,根本不能回答“某个 TCP 端口有没有监听”“连接有没有建立”“数据包有没有真正发出去”“请求有没有返回”这些更关键的问题。 ss 负责看连接状态,ls...
磁盘问题的表现通常很绕:接口变慢、load 升高、日志刷不出来、数据库抖动、容器启动卡住。这类现象经常不是“磁盘坏了”,而是某个环节的 IO 压力、等待时间或空间占用已经异常。 df、du、iostat 这些工具的价值,不在于命令本身,而在...
“我在终端里能跑,为什么服务里跑不起来”是很经典的一类问题。很多时候,不是程序本身坏了,而是执行环境变了:PATH 不一样、工作目录不一样、依赖变量没带上、用户身份变了。 Linux 里的启动环境并不只有一种。交互式 shell、脚本、sy...
很多人第一次接触进程控制时,只记住了一个动作:kill -9。但在线上系统里,进程退出并不只是“结束掉”这么简单。请求是否处理完、连接是否释放、文件是否刷盘、资源是否回收,都会直接影响稳定性。 Linux 信号机制提供的,不只是暴力终止,而...
很多服务并不是手工执行一个二进制就算上线了,而是通过 systemd 这类初始化和服务管理系统被拉起、守护、重启和记录状态。于是“服务起不来”这个问题,往往既有应用层原因,也有 systemd 配置和启动环境原因。 如果只会 systemc...
Linux 很有意思的一点,是它会把很多运行状态直接暴露成“文件”。比如进程状态、内存信息、网络参数、文件句柄限制、内核配置,都可以通过 /proc 和 sysctl 这样的接口看到。 这不是把所有东西都硬塞进文件,而是一种非常统一的系统观...
很多人先学了 Docker 和 Kubernetes,再反过来补 Linux 时,会发现容器很多“神奇能力”其实都不是凭空出现的。容器能隔离进程、网络、挂载点和资源限制,背后依靠的正是 Linux 的 namespace、cgroup 等机...
学 Linux 最容易出现两种极端:一种是只背命令,结果遇到真实问题还是不会分析;另一种是一上来就钻内核细节,结果迟迟没和工作场景建立联系。更适合后端工程师的路线,应该是从常用命令和现象出发,逐步补齐系统模型。 也就是说,Linux 的学习...