磁盘、挂载与软件包
服务器运行一段时间后,最常见的基础设施问题之一就是磁盘空间不足。部署软件时,也经常需要理解包管理、源码安装、服务目录规划。
查看磁盘空间
查看文件系统空间:
bash
df -h查看 inode:
bash
df -i磁盘没满但无法创建文件,可能是 inode 用完了。大量小文件会消耗 inode。
查看目录大小:
bash
du -sh /var/log
du -sh /var/log/*查找大文件:
bash
find / -type f -size +1G 2>/dev/null按大小排序:
bash
du -ah /var | sort -rh | head -n 20磁盘打满处理流程
df -h找到哪个挂载点满了。du -sh /*找到大目录。- 继续进入大目录逐层排查。
- 判断文件是否能删除、压缩、迁移。
- 如果是日志,配置日志轮转。
- 如果是业务数据,评估扩容或归档。
不要直接执行危险命令:
bash
rm -rf /*不要删除不认识的系统目录。尤其是 /usr、/bin、/lib、/etc。
删除文件后空间不释放
如果进程正在写一个文件,即使文件被删除,空间也可能不释放,因为进程还持有文件句柄。
查看被删除但仍被占用的文件:
bash
lsof | grep deleted处理方式:
- 重启对应服务。
- 或让服务重新打开日志文件。
- 对日志优先使用截断:
truncate -s 0 file.log。
查看磁盘和分区
查看块设备:
bash
lsblk查看分区:
bash
fdisk -l查看文件系统类型:
bash
blkid挂载磁盘
创建挂载目录:
bash
mkdir -p /data临时挂载:
bash
mount /dev/sdb1 /data查看挂载:
bash
mount | grep /data
df -h卸载:
bash
umount /data如果提示 busy,说明有进程正在使用:
bash
lsof +D /data开机自动挂载
编辑:
bash
vi /etc/fstab建议使用 UUID:
text
UUID=xxxx-xxxx /data xfs defaults 0 0测试配置:
bash
mount -a生产注意:/etc/fstab 写错可能导致系统启动异常,修改前建议备份。
bash
cp /etc/fstab /etc/fstab.bakswap
查看 swap:
bash
free -h
swapon --show创建 swap 文件:
bash
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile写入 /etc/fstab:
text
/swapfile swap swap defaults 0 0数据库服务器是否开启 swap 要谨慎评估。swap 可以避免瞬时 OOM,但频繁使用 swap 会导致性能明显下降。
软件包管理
CentOS/RHEL:
bash
yum install -y nginx
yum remove -y nginx
yum update -y
yum list installed
yum info nginx较新的系统可能使用:
bash
dnf install -y nginxUbuntu/Debian:
bash
apt update
apt install -y nginx
apt remove -y nginx
apt list --installedrpm
安装 rpm 包:
bash
rpm -ivh package.rpm升级:
bash
rpm -Uvh package.rpm查询:
bash
rpm -qa | grep nginx
rpm -ql nginx
rpm -qi nginxrpm 不会像 yum 那样自动处理依赖,手动安装时更容易遇到依赖缺失。
源码安装
源码安装常见流程:
bash
tar -zxf app.tar.gz
cd app
./configure --prefix=/usr/local/app
make
make install源码安装适合需要自定义编译参数的场景。普通业务部署优先用包管理器或容器,减少维护成本。
应用目录规划
建议:
text
/opt/app 程序目录
/opt/app/releases 历史版本
/opt/app/current 当前版本软链接
/etc/app 配置文件
/var/log/app 日志
/data/app 数据示例:
bash
mkdir -p /opt/justin-app/releases /var/log/justin-app /data/justin-app
chown -R app:app /opt/justin-app /var/log/justin-app /data/justin-app这种规划方便备份、回滚、排障和权限控制。