it-swarm-vi.com

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ì?

Tôi có một số thư mục được gắn 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 [email protected]:/home/user /mnt/example

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

ls /mnt/example

quá trình bị khóa (cũng Ctrl+c khô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 thực hiện mount và dọn dẹp ... Lý tưởng nhất là nó sẽ tự động kết nối lại.

60
Sebastian

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 [email protected]:/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.

45
MV.

Đ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/config hoặc là /etc/ssh/ssh_config:

ServerAliveInterval 15
ServerAliveCountMax 3

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

11
Thor

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 Raspberry Pi gắn 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à Raspberry Pi sẽ bị đóng băng nếu tôi muốn liệt kê nội dung của các mount.

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#[email protected]:/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.

6
lucian

Đ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.

3
Caleb

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.

Tập lệnh Ruby đã thực hiện thủ thuật. Nó tạo ra một thư mục có tên "keepalive" nhiều lần. Chỉ cần tiếp tục chạy nó cho đến vô tận.

$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 đó.

1
Vudew