Một cách tốt hơn để đối phó với việc ngắt kết nối máy chủ của sshfs mount là gì?


58

Tôi có một số thư mục được gắn thông qua sshfs . Đôi khi tôi nhận được ngắt kết nối từ máy chủ (không thể cấu hình bởi tôi). Tôi thường gắn kết các thư mục như thế này

sshfs user@server.example.com:/home/user /mnt/example

Khi một máy chủ ngắt kết nối, hệ thống con sshfs không mở / giải phóng thư mục mà thay vào đó khóa nó không thể truy cập được. Gắn kết vẫn có thể nhìn thấy khi gõ mount. Khi tôi gõ

ls /mnt/example

quá trình bị khóa (cũng Ctrl+ ckhông giúp đỡ). Vì vậy tôi làm

sudo umount -l /mnt/example
# find pid of corresponding process:
ps aux | grep example.com
kill -9 <pid of locked sshfs process>

Có cách nào tốt hơn để đối phó với điều này? Rõ ràng sshfs nên làm umount và dọn dẹp ... Lý tưởng nhất là nó sẽ kết nối tự động.



4
giải pháp nào sử dụng phần mềm bảo trì ?
Sebastian

Câu trả lời:


45

Bạn có thể chạy sshfs với tùy chọn "kết nối lại". Chúng tôi sử dụng sshfs với PAM / automount để chia sẻ tệp máy chủ cho mỗi máy trạm trong mạng của chúng tôi. Chúng tôi sử dụng -o kết nối lại làm tham số cho sshfs, chủ yếu là do người dùng của chúng tôi đã treo máy tính của họ và trên sshfs sẽ không kết nối lại (hoặc phản hồi hoặc bất cứ điều gì).

Ví dụ:

sshfs mvaldez@192.168.128.1:/home/mvaldez/REMOTE /home/mvaldez/RemoteDocs -o reconnect,idmap=user,password_stdin,dev,suid

Chỉ cần một lưu ý, nếu máy tính từ xa thực sự không hoạt động, sshfs có thể không phản hồi trong một thời gian dài.


11

Điều này có thể được giải quyết bằng cách giảm thời gian chờ. Thêm phần sau vào $HOME/.ssh/confighoặc /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

Điều này dẫn đến thời gian chờ 45 giây.


3
Điều này chỉ có ích nếu sự cố là lỗi của SSH. Có một vấn đề lớn hơn sshfskhông giải quyết được cái chết của sshquá trình cơ bản một cách duyên dáng.
bahamat

Quả thực đây chỉ là một cách giải quyết và nên được sửa trong sshfs.
Thor

Nhưng chỉ có một cách giải quyết liên quan đến một nguyên nhân trong số nhiều nguyên nhân. Vấn đề của anh ta có thể không liên quan gì đến những người bảo vệ. Bản chất của câu hỏi là ít về nguyên nhân và nhiều hơn về việc làm sạch đến một trạng thái nhất quán.
bahamat

5

Tôi có một máy chủ mà tôi sử dụng để lưu trữ và vì thiếu không gian nơi tôi sống, tôi giữ nó ở một vị trí khác. Để đưa các tệp vào mạng của tôi, tôi sử dụng một raspberry pi gắn kết các tệp từ máy chủ bằng sshfs.

Gần đây tôi đã phải nâng cấp lên jessie raspbian do mất điện và nhận ra rằng sshfs trở nên không ổn định nghiêm trọng. Các thư mục sẽ được gắn đúng cách nhưng sau một thời gian tôi sẽ không thể kết nối với chúng và pi mâm xôi sẽ đóng băng nếu tôi muốn liệt kê nội dung của các giá treo.

Những gì tôi đã cố gắng là:

  1. sử dụng kết nối lại trong fstab
  2. đã sử dụng ServerAliveInterval và ServerAliveCountMax trong tệp .ssh / config nhưng không có kết quả.
  3. giải pháp khác tôi đọc trên hầu hết các diễn đàn.

nhưng không có xúc xắc! Cho đến khi tôi sửa đổi tệp fstab như sau:

sshfs#user@server:/remote/folder /local/mount/dir fuse IdentityFile=sshkeyfile,Port=XXX,uid=1000,gid=1000,allow_other,_netdev,ServerAliveInterval=45,ServerAliveCountMax=2,reconnect,noatime,auto 0 0

Và nó hoạt động! Không còn ngắt kết nối! Tôi có vẻ như sshfs không đọc tệp cấu hình ssh vì một số lý do và các tín hiệu tiếp tục không bao giờ được gửi.


3

Điều này nghe có vẻ như một công việc cho autofs. Nó khá lão luyện trong việc xử lý các loại kết nối mạng khác nhau (nfs, samba, sshfs, bạn đặt tên cho nó) và nhận thấy khi những thứ đó cần lắp lại. Nó cũng có thể xử lý việc ngắt kết nối chúng sau thời gian không sử dụng và gắn chúng khi yêu cầu hệ thống tệp được thực hiện.


11
autofs sẽ thực hiện kết nối theo yêu cầu và có thể ngắt kết nối khi không hoạt động (làm giảm cửa sổ thời gian có vấn đề), nhưng sẽ không có ích nếu sshfs bị treo do máy chủ bị ngắt kết nối.
Gilles 'SO- ngừng trở nên xấu xa'

1

Nếu vẫn còn người gặp phải vấn đề này, tôi vẫn không thể khắc phục nó. Tôi đã tìm thấy một cách giải quyết.

Các kịch bản ruby ​​sau đây đã lừa Nó tạo ra một thư mục gọi là "keepalive" nhiều lần. Chỉ cần tiếp tục chạy này cho đến vô cùng.

$i =1 
$num =0
begin
    puts("Inside the loop i = #$i" )
    $i +=1
    puts 'creating obj'
    system 'mkdir  /{yourmountpoint}/keepalive'
    sleep 5
    puts 'we did it, it should be still alive'
end while $i > $num

Tôi không biết tại sao điều này hoạt động. Nhưng nó dường như giải quyết vấn đề của tôi khi tôi không hoạt động trong một phút và mọi thứ đóng băng. Nó chỉ cố gắng tạo một thư mục tại điểm gắn kết và điều đó dường như giữ cho nó không bị ngắt kết nối và đóng băng mọi thứ bằng cách nào đó.


6
Chà, nếu điều đó phù hợp với bạn, thì bạn không cần một trình thông dịch kịch bản và ruby. Một dòng duy nhất có thể làm chỉ là tốt:while true; do mkdir -p /x/y; sleep 2; done
mivk
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.