CentOS 挂载卡住(如执行 mount 命令无响应、终端卡死)通常与存储设备异常、网络问题、文件系统损坏或参数配置错误有关。以下是分场景的排查和解决步骤:
首先确认是本地磁盘挂载还是网络存储(NFS/iSCSI)挂载卡住,不同场景原因不同:
如果 mount 命令卡住,先尝试用 Ctrl + C 中断;若无效,打开新终端,用 kill 终止进程:
# 查找卡住的 mount 进程 PID
ps aux | grep mount
# 强制终止(替换 <PID> 为实际进程号)
kill -9 <PID>
如果挂载点(如 /mnt/data)已被其他进程占用,会导致挂载卡住:
# 查看挂载点是否被进程占用(替换 /mnt/data 为你的挂载点)
lsof +D /mnt/data
# 或
fuser -m /mnt/data
若有进程占用,先终止这些进程(如 kill -9 <PID>),再尝试挂载。
用 fdisk 或 lsblk 确认磁盘分区是否存在:
lsblk # 查看磁盘和分区列表(如 /dev/sdb1 是否存在)
fdisk -l /dev/sdb # 查看指定磁盘的分区表(替换 /dev/sdb 为你的磁盘)
若分区表异常,可能需要修复(谨慎操作,避免数据丢失):
# 修复 MBR 分区表(仅适用于 MBR 磁盘,替换 /dev/sdb 为你的磁盘)
parted /dev/sdb print # 先查看分区表状态
# 若提示错误,可尝试用 testdisk 工具恢复(需安装:yum install testdisk)
若文件系统(如 ext4/xfs)损坏,挂载会卡住或失败,需先修复:
e2fsck 修复(需卸载磁盘,若无法卸载可加 -n 先检查):# 先卸载(若已挂载)
umount /dev/sdb1
# 修复文件系统(替换 /dev/sdb1 为你的分区,-y 自动确认修复)
e2fsck -y /dev/sdb1
xfs_repair 修复(xfs 不支持直接 e2fsck):# 卸载分区
umount /dev/sdb1
# 修复(替换 /dev/sdb1 为你的分区,-L 强制修复日志,谨慎使用)
xfs_repair /dev/sdb1
# 若提示日志损坏,可加 -L 清除日志(可能导致部分数据丢失,优先备份)
# xfs_repair -L /dev/sdb1
NFS 卡住通常是网络不通、服务端无响应、挂载参数错误:
ping <NFS服务端IP> # 确认能 ping 通服务端
telnet <NFS服务端IP> 2049 # 确认 NFS 端口(2049)是否开放
# 服务端执行:查看 NFS 服务状态
systemctl status nfs-server
# 查看共享目录是否正确导出
exportfs -v
soft、timeo、retrans 等超时参数(防止无限等待):# 示例:soft 模式(超时后返回错误)、timeo=100(超时10秒)、retrans=2(重试2次)
mount -t nfs -o soft,timeo=100,retrans=2 <NFS服务端IP>:/共享目录 /本地挂载点
若 NFS 版本不兼容,可指定版本(如 nfsvers=3 或 nfsvers=4):mount -t nfs -o nfsvers=3 <NFS服务端IP>:/共享目录 /本地挂载点
iSCSI 卡住通常是iSCSI 服务端无响应、initiator 配置错误:
systemctl status iscsi # 客户端 iSCSI 服务
systemctl status iscsid
# 发现目标(替换 <iSCSI服务端IP> 为实际IP)
iscsiadm -m discovery -t st -p <iSCSI服务端IP>
# 登录目标(替换 <目标IQN> 为发现的目标名称)
iscsiadm -m node -T <目标IQN> -p <iSCSI服务端IP> --login
systemctl restart iscsi iscsid
比如本地磁盘挂载时指定了错误的文件系统类型(如把 ext4 写成 xfs),或网络存储参数冲突:
# 明确指定文件系统类型(替换 ext4 为实际类型,如 xfs)
mount -t ext4 /dev/sdb1 /mnt/data
极少数情况是内核模块异常,可尝试重启系统(若允许):
reboot
重启后若仍卡住,检查系统日志(/var/log/messages 或 dmesg)找线索:
dmesg | grep -i mount # 查看内核关于挂载的日志
tail -f /var/log/messages # 实时查看系统日志
soft 模式+超时参数,避免 hard 模式(默认)导致无限等待。smartctl 工具:yum install smartmontools && smartctl -a /dev/sdb)。blkid 确认分区的 UUID 和文件系统类型,避免配置错误:blkid /dev/sdb1 # 查看分区的 UUID 和 TYPE
如果以上步骤仍无法解决,建议提供卡住时的具体命令、系统日志(dmesg 或 /var/log/messages 相关输出),以便进一步定位问题!