Làm thế nào tôi có thể giải quyết một xử lý nfs cũ?


8

Tôi đã nhận thấy một lần khi tôi tắt máy chủ gia đình trong khi máy tính để bàn của tôi được kết nối qua NFS mà tôi liên tục nhận được "cảnh báo xử lý NFS cũ" khi vào thư mục nhà của tôi, điều này gây ra sự cố với một số chương trình có trong các thư mục đó.

Làm cách nào để giải quyết vấn đề này mà không cần khởi động lại máy?

Debian Bóp / Wheezy


Hệ điều hành và / hoặc phân phối nào bạn đang chạy?
Jodie C

Tôi đang sử dụng Debian Squeeze
yakamok

Câu trả lời:


4

Trên Debian Bóp / Wheezy:

Buộc tháo lắp cục bộ

umount -f /mnt/dir

Sau đó khởi động lại nfs

/etc/init.d/nfs-common restart

Tôi sẽ ngạc nhiên nếu bạn có thể buộc unmount của một hệ thống tập tin - vì vậy tôi nghi ngờ những điều trên sẽ hoạt động.
David Goodwin

umount -f không làm việc cho tôi, nhưng umount -lf đã làm!
FreeSoftwareServers

2

Hãy thử kịch bản shell này. Hoạt động tốt cho tôi:

#!/bin/bash
# Purpose:
# Detect Stale File handle and remove it
# Script created: July 29, 2015 by Birgit Ducarroz
# Last modification: --
#

# Detect Stale file handle and write output into a variable and then into a file
mounts=`df 2>&1 | grep 'Stale file handle' |awk '{print ""$2"" }' > NFS_stales.txt`
# Remove : ‘ and ’ characters from the output
sed -r -i 's/://' NFS_stales.txt && sed -r -i 's/‘//' NFS_stales.txt && sed -r -i 's/’//' NFS_stales.txt

# Not used: replace space by a new line
# stales=`cat NFS_stales.txt && sed -r -i ':a;N;$!ba;s/ /\n /g' NFS_stales.txt`

# read NFS_stales.txt output file line by line then unmount stale by stale.
#    IFS='' (or IFS=) prevents leading/trailing whitespace from being trimmed.
#    -r prevents backslash escapes from being interpreted.
#    || [[ -n $line ]] prevents the last line from being ignored if it doesn't end with a \n (since read returns a non-zero exit code when it encounters EOF).

while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Unmounting due to NFS Stale file handle: $line"
    umount -fl $line
done < "NFS_stales.txt"
#EOF

Dựa trên kinh nghiệm của tôi, có vẻ như đó là một thay đổi 50:50 cho điều này là không đủ, và cần phải khởi động lại máy. Tôi đang mong đợi để xem một kịch bản tốt hơn, có thể là một để đưa vào crontab. Chúng tôi gặp phải loại vấn đề này rất thường xuyên, với hơn một máy mỗi ngày.
sorin

0

Tôi thường sẽ ban hành các lệnh đó (như root):

service nis restart
service autofs restart
service nfs restart
service portmap restart

Bạn có thể không cần tất cả những thứ đó, tùy thuộc vào cách hệ thống của bạn hoạt động.


Cái này dành cho cái gì?
yakamok
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.