linux常见文件系统+用户管理+常见故障
一、文件系统管理常用命令
1. 查看磁盘空间和文件系统状态
命令 | 功能 | 示例 |
---|---|---|
df -h | 查看磁盘空间使用情况(人类可读格式) | df -h /dev/sda1 |
du -sh /path | 查看目录总大小 | du -sh /var/log |
df -i | 查看 inode 使用情况 | df -i / |
tune2fs -l /dev/sda1 | 查看 ext 文件系统元数据(如超级块信息) | tune2fs -l /dev/sda1 |
xfs_info /dev/sda1 | 查看 XFS 文件系统信息 | xfs_info /dev/sda1 |
2. 检查和修复文件系统
命令 | 功能 | 示例 |
---|---|---|
fsck -y /dev/sda1 | 自动修复文件系统错误(需卸载分区) | sudo umount /dev/sda1 && sudo fsck -y /dev/sda1 |
e2fsck -f /dev/sda1 | 强制检查 ext 文件系统 | sudo e2fsck -f /dev/sda1 |
xfs_repair /dev/sda1 | 修复 XFS 文件系统 | sudo xfs_repair /dev/sda1 |
badblocks -v /dev/sda1 | 扫描磁盘坏块 | sudo badblocks -v /dev/sda1 |
fsck -l bad_sectors.txt /dev/sda1 | 将坏块标记为不可用 | sudo fsck -l bad_sectors.txt /dev/sda1 |
3. 挂载和卸载文件系统
命令 | 功能 | 示例 |
---|---|---|
mount /dev/sda1 /mnt | 挂载分区到指定目录 | sudo mount /dev/sda1 /mnt |
umount /dev/sda1 | 卸载分区 | sudo umount /dev/sda1 |
mount | grep /mnt | 查看挂载状态 |
mount -a | 根据 /etc/fstab 挂载所有分区 | sudo mount -a |
4. 格式化和调整文件系统
命令 | 功能 | 示例 |
---|---|---|
mkfs.ext4 /dev/sda1 | 格式化为 ext4 文件系统 | sudo mkfs.ext4 /dev/sda1 |
mkfs.xfs /dev/sda1 | 格式化为 XFS 文件系统 | sudo mkfs.xfs /dev/sda1 |
resize2fs /dev/sda1 20G | 调整 ext 文件系统大小 | sudo resize2fs /dev/sda1 20G |
xfs_growfs /mnt | 调整 XFS 文件系统大小 | sudo xfs_growfs /mnt |
5. 文件和目录操作
命令 | 功能 | 示例 |
---|---|---|
find /path -type f -size +1G | 查找大于 1GB 的文件 | find /var/log -type f -size +1G |
find /path -mtime +7 -delete | 删除 7 天前的文件 | find /tmp -mtime +7 -delete |
lsblk | 查看磁盘分区结构 | lsblk |
fdisk -l | 查看磁盘分区表 | sudo fdisk -l |
chown user:group file | 修改文件所有者 | sudo chown root:root /path/to/file |
chmod 755 file | 修改文件权限 | sudo chmod 755 /path/to/file |
6. 性能监控和日志分析
命令 | 功能 | 示例 |
---|---|---|
iostat -x 1 | 实时监控磁盘 I/O 性能 | iostat -x 1 |
smartctl -a /dev/sda | 查看硬盘 SMART 状态 | sudo smartctl -a /dev/sda |
`dmesg | grep -i error` | 查看内核日志中的错误 |
journalctl -u systemd-udevd | 查看特定服务日志 | sudo journalctl -u systemd-udevd |
二、Linux 用户管理命令
命令 | 功能 | 常用参数及示例 |
---|---|---|
useradd | 创建用户 |
|
passwd | 修改密码 |
|
userdel | 删除用户 |
|
groupadd | 创建用户组 | groupadd groupname |
su | 切换用户 |
|
id | 查看用户信息 | id username (显示UID、GID及所属组) |
二、权限管理
命令 | 描述 | 示例 |
---|---|---|
chown | 修改文件/目录所有者 |
|
chmod | 修改权限 |
|
chgrp | 修改所属组 | chgrp group file |
chattr | 设置文件属性 | chattr +i file (锁定文件) |
lsattr | 查看文件属性 | lsattr file (查看不可变标志) |
umask | 设置默认权限 | umask 022 (默认权限掩码) |
chmod | 设置 SUID/SGID/粘滞位 |
|
find | 查找特殊权限文件 |
|
三、常见文件系统故障及处理办法
1. 磁盘空间不足
现象:
df -h
显示某个分区使用率接近 100%。- 创建新文件时报错
No space left on device
。
处理步骤:
- 定位大文件:
find /path -type f -size +1G -exec ls -lh {} \;
- 清理日志或缓存:
find /var/log -type f -name "*.log" -mtime +30 -delete
- 释放 inode:
find /path -type f -size 0 -delete # 删除空文件
- 扩展文件系统(如 LVM):
lvextend -L +10G /dev/vg0/lv_root resize2fs /dev/vg0/lv_root
2. 文件系统损坏
现象:
- 挂载失败,提示
I/O error
或Read-only file system
。 dmesg
显示Filesystem check or mount failed
。
处理步骤:
- 卸载分区:
sudo umount /dev/sda1
- 强制检查并修复:
sudo fsck -y /dev/sda1 # ext4/XFS sudo xfs_repair /dev/sda1 # XFS
- 扫描坏块:
sudo badblocks -v /dev/sda1 > bad_sectors.txt sudo fsck -l bad_sectors.txt /dev/sda1
3. 权限错误
现象:
Permission denied
错误,无法访问文件或目录。ls -l
显示权限为----------
(无权限)。
处理步骤:
- 修改文件权限:
sudo chmod 755 /path/to/file
- 修改文件所有者:
sudo chown user:group /path/to/file
- 检查 SELinux/AppArmor:
getenforce # 查看 SELinux 状态 sudo setenforce 0 # 临时关闭 SELinux
4. 挂载失败
现象:
mount
报错No such device
或Invalid argument
。- 系统启动时无法挂载根分区。
处理步骤:
- 检查设备是否存在:
lsblk # 确认设备名称(如 /dev/sda1)
- 手动挂载测试:
sudo mount /dev/sda1 /mnt
- 修复
/etc/fstab
配置:- 检查 UUID 或设备名是否正确:
blkid # 查看设备 UUID
- 修改
/etc/fstab
中的条目。
- 检查 UUID 或设备名是否正确:
5. 硬盘物理故障
现象:
smartctl -a
显示Reallocated_Sector_Ct
高于 0。dmesg
显示end_request: I/O error
。
处理步骤:
- 备份数据:
dd if=/dev/sda of=/backup/sda.img bs=4M
- 更换硬盘:
- 使用
fdisk
和mkfs
重新分区格式化。
- 使用
- 监控 SMART 状态:
sudo smartctl -a /dev/sda | grep -i error
6. 文件系统只读
现象:
- 挂载后无法写入文件,提示
Read-only file system
。 mount
显示ro
标志。
处理步骤:
- 尝试重新挂载为可写:
sudo mount -o remount,rw /dev/sda1 /mnt
- 检查文件系统错误:
sudo fsck /dev/sda1
- 检查硬件问题:
sudo dmesg | grep -i error
7. 日志文件过大
现象:
/var/log
占用大量空间。journalctl
日志未轮转。
处理步骤:
- 清理旧日志:
sudo journalctl --vacuum-size=500M # 保留 500MB 日志
- 配置
logrotate
:- 修改
/etc/logrotate.conf
或/etc/logrotate.d/*
文件。
- 修改