mount.nfs: Stale file handle
错误原因:
此错误一般出现在使用NFS共享的目录,挂载时出现了问题。且大部分情况都是之前挂载成功过,因为服务端或者客户端重启,更换硬盘等造成的。
#mount -t nfs -o rw 192.168.0.108:/mnt/HD2 /mnt/NAS/HD2/
#mount.nfs: Stale file handle
前提
- 首先保证服务端硬盘状态正常,如果出现无法读取超级快,或者无法挂载等问题,请参照此帖其他解决方案,解决完成再解决无法挂载NFS目录的问题。
- 其次保证你之前成功使用NFS挂载过,且可以使用,后因其他问题造成不能使用。
- 保证服务端及客户端的NFS-SERVER和rpcbind服务正常启动。
解决方案
- 重新挂载
有可能客户端还没有卸载挂载时,服务端那里就更改了路径或者更改了挂载状态造成,使用重新挂载新目录可以解决。
如果取消挂载时出现设备忙问题请参考此贴另一问题:umount: /mnt/HD2: target is busy
#mount \\查看挂载信息
vmware-vmblock on /run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=388052k,mode=700)
192.168.0.108:/mnt/HD1 on /mnt/NAS/HD1 type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.22,local_lock=none,addr=192.168.0.108)
192.168.0.108:/mnt/HD2 on /mnt/NAS/HD2 type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.22,local_lock=none,addr=192.168.0.108)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
#umount /mnt/NAS/HD2 \\卸载挂载点
#mount -t nfs -o rw 192.168.0.108:/mnt/HD2 /mnt/NAS/HD2/ \\重新挂载
#df -Th \\查看挂载情况,T显示分区类型 h显示容量单位
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 46G 11G 35G 23% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 154M 1.8G 9% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 233M 782M 23% /boot
tmpfs tmpfs 379M 0 379M 0% /run/user/0
192.168.0.108:/mnt/HD1 nfs4 3.6T 265M 3.4T 1% /mnt/NAS/HD1
192.168.0.108:/mnt/HD2 nfs4 3.6T 27G 3.4T 1% /mnt/NAS/HD2
- 重启服务及客户端
服务端因为更改过硬盘状态 inode索引标识也发生了改变,但是nfs-server服务记录的状态还未更新,所以我们通过重启服务以达到重新加载的效果。
重启操作先在客户端进行,如还无法解决再在服务端进行。
# systemctl status nfs-server \\查看NFS服务启动情况
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled) \\正常运行
Active: active (exited) since Fri 2019-09-20 19:36:09 CST; 14h ago
Process: 383 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 381 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 383 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/nfs-server.service
#systemctl restart nfs-server \\重启nfs服务
#systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2019-09-21 10:31:18 CST; 4s ago
Process: 1590 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 1588 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Process: 1585 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 1608 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 1605 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 1608 (code=exited, status=0/SUCCESS) \\PID发送变化,重启成功。
#showmount -e 192.168.0.108 \\客户端执行:查看NFS服务端共享的目录
Export list for 192.168.0.108:
/mnt/HD2 192.168.0.22
/mnt/HD1 192.168.0.22
#mount -t nfs -o rw 192.168.0.108:/mnt/HD2 /mnt/NAS/HD2/ \\挂载目录
#df -Th \\查看挂载情况
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 46G 11G 35G 23% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 154M 1.8G 9% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 233M 782M 23% /boot
tmpfs 379M 0 379M 0% /run/user/0
192.168.0.108:/mnt/HD1 3.6T 265M 3.4T 1% /mnt/NAS/HD1
192.168.0.108:/mnt/HD2 3.6T 27G 3.4T 1% /mnt/NAS/HD2
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
错误原因:
不支持的文件类型,或者因为硬盘硬件的损伤导致的问题。
- 与问题:mount: /dev/sdb1: can't read superblock关联
# mount /dev/sdb1 /mnt/HD2
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
前提:待定
解决方案:
- 安装nfs-common
未支持的文件类型,安装对应依赖即可。
#apt-get install nfs-common
- 重启
因为某种原因系统未能识别硬盘,或因为某种原因造成的掉盘现象,重启以实现重新加载该硬盘的目的。
#fdisk -l \\查看设备上的所有硬盘信息,如果无法查看到指定硬盘必须得检测硬盘是否已经硬件损坏或者没有供电等问题。
Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0A1C2B96-B7C2-42A5-9447-21787120DFBF
Device Start End Sectors Size Type
/dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem
Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 07C3D708-AB93-4232-915C-12B790D7E0C1
Device Start End Sectors Size Type
/dev/sdb1 2048 7814037127 7814035080 3.7T Linux filesystem
#shutdown -r now \\向所有进程发出关闭的信号,并重新启动系统。
- 使用fsck修复文件系统
因为某种原因造成分区表异常无法读取或者损坏,索引节点信息丢失损坏等问题,但是硬盘本身没有硬件故障,可以使用fsck修复该分区。
#fdisk -l \\查看所有硬盘信息
Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0A1C2B96-B7C2-42A5-9447-21787120DFBF
Device Start End Sectors Size Type
/dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem
Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 07C3D708-AB93-4232-915C-12B790D7E0C1
Device Start End Sectors Size Type
/dev/sdb1 2048 7814037127 7814035080 3.7T Linux filesystem
#fsck -t ext4 /dev/sdb1 \\修复分区/dev/sdb1
fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
/dev/sdb1:正在修复日志
JBD2: Invalid checksum recovering block 4 in log
在 /dev/sdb1 中发现日志校验值错误
/dev/sdb1 未被彻底卸载,强制进行检查。
第 1 步:检查inode、块和大小
第 2 步:检查目录结构
第 3 步:检查目录连接性
第 4 步:检查引用计数
第 5 步:检查组概要信息
可用块数错误(0,实际为0)
处理<y>? 是
可用inode数错误(244183133,实际为244183130)
处理<y>? 是
/dev/sdb1:***** 文件系统已修改 *****
/dev/sdb1:12198/244195328 文件(0.0% 为非连续的), 22578694/976754385 块
#mount /dev/sdb1 /mnt/HD2
#df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
udev devtmpfs 867M 0 867M 0% /dev
tmpfs tmpfs 176M 3.4M 173M 2% /run
/dev/mmcblk0p1 ext4 3.6G 1.6G 1.8G 47% /
tmpfs tmpfs 878M 0 878M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 878M 0 878M 0% /sys/fs/cgroup
tmpfs tmpfs 176M 0 176M 0% /run/user/1000
/dev/sda1 ext4 3.6T 265M 3.4T 1% /mnt/HD1
tmpfs tmpfs 176M 0 176M 0% /run/user/0
/dev/sdb1 ext4 3.6T 27G 3.4T 1% /mnt/HD2 \\挂载成功
umount: /mnt/HD2: target is busy
或者
umount: /mnt/sdb: device is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)
或者
unmount error 16 = Device or resource busy
错误原因:
该分区中的文件或者文件夹被用户占用,故无法直接卸载。
# umount /mnt/HD2
umount: /mnt/HD2: target is busy
(In some cases useful info about processes that
use the device is found by lsof(8) or fuser(1).)
前提:
硬盘无硬件故障
解决方案:
- umount -l /mnt/HD2
使用-l选项进行延迟卸载(lazy unmount)会立即卸载目录树里的文件系统,等到设备不再繁忙时才清理所有相关资源。
# umount -l /mnt/HD2/
# mount \\查看卸载情况
/dev/sda1 on /mnt/HD1 type ext4 (rw,relatime,data=ordered)
- 参考
man umount
Linux umount命令
- fuser -kmi /mnt/HD2
使用fuser结束或者查看正在占用分区的进程号,并杀死。
其中k是结束 m是查看 i是结束前进行确认。
# fuser -m /mnt/HD2/ \\查看占用情况
/mnt/HD2: 1rce 2rce 3rce 5rce 7rce 8rce 9rce 10rce 11rce 12rce 13rce 15rce 16rce 17rce 18rce 20rce 21rce 22rce 23rce 25rce 26rce 27rce 28rce 29rce 30rce 31rce 32rce 33rce 34rce 35rce 36rce 37rce 38rce 39rce 42rce 43rce 44rce 45rce 61rce 62rce 64rce 65rce 66rce 67rce 68rce 69rce 70rce 71rce 72rce 73rce 74rce 75rce 76rce 77rce 78rce 79rce 80rce 81rce 82rce 83rce 84rce 85rce 86rce 87rce 88rce 96rce 109rce 110rce 147rce 148rce 149rce 150rce 153rce 155rce 156rce 157rce 158rce 159rce 160rce 161rce 162rce 163rce 164rce 174rce 193rce 194rce 218rce 230rce 232rce 240rce 241rce 242rce 255rce 259rce 288rce 291rce 293rce 305rce 315rce 316rce 319rce 320rce 321rce 324rce 325rce 326rce 327rce 369rce 372rce 377rce 380rce 387rce 388rce 396rce 398rce 399rce 400rce 401rce 402rce 403rce 404rce 405rce 421rce 425rce 781rce 803rce 806rce 807rce 828rce 829rce 830rce 832rce 833rce 846rce 875rce 876rce 877rce 881rce 901rce 993re 1778rce 1812rce 1890rce 2008rce 2293rce 2396rce 2433rce 2507rce 2508rce 2517rce 2521rce 2556rce 2557rce 2561rce 2562rce 2564rce 2565rce 2571rce
# fuser -km /mnt/HD2 \\杀死占用进程
# mount \\查看卸载情况
/dev/sda1 on /mnt/HD1 type ext4 (rw,relatime,data=ordered)
- 参考
man fuser
nfs挂载后umount不掉
mount: /dev/sdb1: can't read superblock
错误原因:
因为热插拔 断电或者硬盘损伤造成的错误。硬盘体质较差,或者硬盘工作环境温度过高过低,或者没有良好的休眠计划也会导致硬盘硬件损坏。
- 与问题:mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or helper program, or other error关联
前提:
硬盘无完全损坏,坏道太多也无法修复。
- 如果数据比较重要,请联系硬盘厂商售后,或者送去专业维修机构。在此之间切勿再对硬盘进行任何操作,如果有必要请直接关机,断电后拔出硬盘。
如要尝试修复请在本贴的资料中详细阅读linux操作系统故障处理-ext4文件系统超级块损坏修复
解决方案
- 重新挂载
部分情况有可能是机器系统的问题,经常出现掉盘的情况。重启后重新挂载可以解决。
#fdisk -l \\查看设备情况
Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0A1C2B96-B7C2-42A5-9447-21787120DFBF
Device Start End Sectors Size Type
/dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem
\\只有一块硬盘,另一块硬盘已经无法识别了
#shutdown -r now \\重新启动设备
待定
资料:
Linux数据恢复专题——恢复丢失的分区
解决八种Linux硬盘问题的技巧
(推荐)linux操作系统故障处理-ext4文件系统超级块损坏修复
Linux上的 LVM 灾难修复,VG在系统间移动
Linux的inode