thiết bị sshfs đang bận


30

Tôi đã gắn một hệ thống tệp từ xa bằng sshfs (phiên bản 2.8.4)

sshfs -o allow_root joeuser@example.com: ./example

nhưng không thể vượt qua

> fusermount -u example
umount: /home/joeuser/example: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

Bạn có ý tưởng nào về nguyên nhân gây ra lỗi này không và làm thế nào để khắc phục nó?

Câu trả lời:


14

Một số chương trình đang sử dụng một tệp trong hệ thống tệp mà bạn đang cố gắng ngắt kết nối. Nó có thể là một tệp được mở để đọc hoặc viết, một thư mục hiện tại hoặc một vài trường hợp khó hiểu hơn. Nó thậm chí có thể là do một thư mục trên hệ thống tập tin là một điểm gắn kết.

Để điều tra, chạy lsof +f -- example. Nó sẽ cho biết những gì quá trình đang sử dụng hệ thống tập tin. Đưa ra đánh giá của riêng bạn về việc có nên làm cho chúng đóng các tệp, giết chúng hoặc trì hoãn hoạt động không đếm được.


Điều kỳ lạ là lsof không hiển thị quy trình lưu trữ gvfsd, còn sót lại sau khi mở (và đóng?) Một tệp lưu trữ từ GUI của trình quản lý tệp. Vì vậy, cũng kiểm tra ps aux | grep gvfsd-archive.
alexei

Đã cảnh báo rằng lstat không thể thực thi và thông tin có thể không đầy đủ và không liệt kê thủ phạm. Trong trường hợp của tôi, tôi đã mở một thiết bị đầu cuối với thư mục làm việc bên trong cái được gắn kết.
Jāni Elmeris 27/12/18

36

Tôi nghĩ rằng bạn muốn một unmount lười biếng:

sudo umount -l example

1
Tôi nghĩ đề nghị của bạn là không chính xác. Theo trang hướng dẫn lười biếng umount Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem *as soon as it is not busy* anymore. Vì vậy, nó sẽ không giải quyết vấn đề ban đầu. Đồng ý với @Gilles, lsofnên giúp đỡ ở đây.

2
Trên thực tế, điều này làm việc cho tôi. lsof không thể tìm thấy bất kỳ tập tin mở nhưng umount -llàm việc.
gerrit

1
Giải pháp này cũng làm việc cho tôi!
Dan

1
Trải qua vấn đề tương tự với sshfs, điều này cũng làm việc cho tôi.
Orun

4

Tôi chỉ gặp vấn đề này và không thể kill -9đọc quá trình từ hệ thống tập tin được gắn kết. kill -9đã không làm việc ngay cả sau khi fusermount -zu /mount/pointhoặc umount -l /mount/point(mà làm việc). Điều duy nhất đã làm việc là pkill -9 sshfs.


1
fusermount -zu /mount/pointđã làm cho tôi. Cảm ơn!
Ostrokach

3

Chạy Ubuntu, man fusermountkể về một -ztùy chọn, được ghi nhận là lười biếng không thể đếm được. Nó dường như có liên quan, nhưng cần một xác nhận, được đưa ra bởi trang người đàn ông khác này: fusermount (man.he.net) , trong đó nói rằng Lazy lazy unmount (hoạt động ngay cả khi tài nguyên vẫn đang bận rộn). Người ta phải sử dụng nó với các -u, các -ztùy chọn một mình, sẽ tạo ra một lỗi. Tôi đã thử -ztùy chọn này và có thể xác nhận nó thực hiện thủ thuật, nhưng điều này chính xác quá nhiều trông giống như một mẹo: chính xác thì nó làm gì? Làm cho nó được tự động ngắt kết nối ngay khi thư mục không bận rộn nữa? Tôi không biết, không được ghi chép lại, nên không an toàn.

Vì vậy, đây là một lựa chọn khác, dài dòng hơn, nhưng an toàn hơn: cố gắng ngắt kết nối cho đến khi thành công, bao nhiêu lần khi cần, trong một vòng lặp.

echo -n "Unmounting...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";

while [ "$OK" != "0" ]
do
   sleep 1;
   echo -n ".";
   fusermount -u -q "$MOUNT_POINT";
   OK="$?";
done

echo;

Có một phản hồi tiến bộ tối thiểu, để người ta biết những gì đang xảy ra và không tin rằng nó bị treo.

Tùy chọn này được chấp nhận từ một tập lệnh shell; đối với tương tác dòng lệnh, việc sử dụng -ztùy chọn sẽ tiện dụng hơn, nhưng có lẽ người ta phải biết rằng trang man không ghi lại nó và có thể có nghi ngờ về chính xác những gì nó làm.


2

Tôi thường thấy "thiết bị bận" với sshfs khi tôi có một cửa sổ đầu cuối mở vào một thư mục trên chia sẻ sshfs. Thoát khỏi thiết bị đầu cuối hoặc thay đổi thư mục thành một chia sẻ cục bộ sau đó chạy fusermount -u giải quyết vấn đề của tôi.



1

Nếu bạn đã đảm bảo không có quá trình nào vẫn đang sử dụng hệ thống tập tin trước khi thử "thông thường":

  • fuser -vm /mount/point và / hoặc
  • lsof /mount/point để tìm thấy chúng,
  • thoát / giết / do_s Something_with_them để họ không sử dụng /mount/pointnữa,

Thử:

  • pkill -KILL sshfs và sau đó
  • fusermount -u /mount/point.

Nó giúp tôi khi tôi mất kết nối mạng và không thể vượt qua điểm gắn kết sshfs không phản hồi.

Ngoài ra, nếu bạn muốn sshfs tự động mở rộng khi mất kết nối mạng , hãy thông báo cho các ứng dụng sử dụng sshfs về lỗi I / O (để chúng không bị kẹt vô hạn), gắn kết với:

  • sshfs -o ServerAliveInterval=15 remote-srv:/remote/dir /local/mountpoint

Khi không có dữ liệu được trao đổi, sshkhách hàng của bạn sẽ kiểm tra cứ sau 15 giây nếu nó có thể nhận được phản hồi từ máy chủ. Nếu 3 kiểm tra thất bại, nó sẽ ngắt kết nối và umount.

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.