Buộc ngắt kết nối thư mục gắn trên NFS [đã đóng]


163

Tôi có một thư mục gắn trên NFS trên máy Linux đã treo. Tôi đã cố gắng để buộc một unmount, nhưng nó dường như không hoạt động:

$ umount -f /mnt/data
$ umount2: Device or resource busy
$ umount: /mnt/data: device is busy

Nếu tôi gõ " mount", có vẻ như thư mục không còn được gắn kết, nhưng nó bị treo nếu tôi làm " ls /mnt/data" và nếu tôi cố gắng loại bỏ điểm gắn kết, tôi nhận được:

$ rmdir /mnt/data
rmdir: /mnt/data: Device or resource busy

Có điều gì tôi có thể làm ngoài việc khởi động lại máy không?


3
Tôi đồng ý, bất cứ ai bỏ phiếu để đóng này bối rối nghiêm trọng. Vấn đề này đã làm tôi khó chịu trong nhiều năm và câu trả lời dưới đây, umount -l, đối với Linux, là giải pháp đầu tiên tôi thấy có hiệu quả.
Lizardx

1
ok, nhưng bạn có thể tìm thấy nó trên Super User. mặc dù tôi không thấy lý do tại sao câu hỏi không được di chuyển thay vì đóng lại.
deeenes

Đối với umount --forcesẽ cố gắng nhiều hơn để unmount và -vhoặc -vvvthậm chí sẽ tiết lộ thêm vấn đề với mount. Vì vậy, hãy thử:umount -vvv --force /badmount
gaoithe

5
@deeenes Vì câu hỏi này đã được hỏi vào tháng 9 năm 2008 và Super User không được tung ra cho đến tháng 7 năm 2009 ;-)
Martin Tournoij

@Carpetsmoker nhưng nó được đánh dấu là lạc đề vào năm 2013
gợi ý

Câu trả lời:


254

Bạn có thể thử một lần lười biếng unmount:

umount -l

3
Điều này không được thực hiện ở mọi nơi. Tôi không có nó trên FreeBSD, ví dụ.
Daniel Papasian

28
@Daniel: chắc chắn, nhưng đó một câu hỏi Linux (được gắn thẻ như vậy) và Linux cũng có nó.
Jürgen A. Erhard

5
Tôi đã thử lệnh này trên Ubuntu và nó không hoạt động.
Kieran Andrew

1
Điều này làm việc cho tôi (Slackware 14.0). Tôi đã có một gắn kết CIFS, không phải NFS, đó là treo mọi thứ (bao gồm lsof). Tôi đã gây ra vấn đề bằng cách thoát ra khỏi một tập lệnh sao lưu mà tôi đang viết. Kịch bản gắn kết và ngắt kết nối thư mục, nhưng một cái gì đó về việc thoát ra khỏi mớ rsynchỗn độn của tôi. Tôi đã không biết về sự lười biếng unmount. Nó có thể là thiết bị NAS gây ra tất cả các rắc rối. Sau khi ngắt kết nối thành công, hóa ra tôi phải khởi động lại thiết bị trước khi có thể lắp lại thiết bị.
thóc

10
@KieranAndrews và bất kỳ ai khác trên Ubuntu, hãy thử fusermount -uz /path/to/file. Làm việc một cơ duyên cho tôi! :)
Matt Fletcher

78

Nếu máy chủ NFS biến mất và bạn không thể lấy lại trực tuyến, một mẹo mà tôi sử dụng là thêm bí danh vào giao diện với IP của máy chủ NFS (trong ví dụ này, 192.0.2.55).

Linux

Lệnh cho đó là một cái gì đó đại khái như:

ifconfig eth0:fakenfs 192.0.2.55 netmask 255.255.255.255

Trong đó 192.0.2.55 là IP của máy chủ NFS đã biến mất. Sau đó, bạn sẽ có thể ping địa chỉ và bạn cũng có thể ngắt kết nối hệ thống tập tin (sử dụng unmount -f). Sau đó, bạn nên hủy giao diện bí danh để bạn không còn định tuyến lưu lượng truy cập đến máy chủ NFS cũ với:

ifconfig eth0:fakenfs down

FreeBSD và các hệ điều hành tương tự

Lệnh sẽ là một cái gì đó như:

ifconfig em0 alias 192.0.2.55 netmask 255.255.255.255

Và sau đó để loại bỏ nó:

ifconfig em0 delete 192.0.2.55

man ifconfig (8) để biết thêm!


5
Một sự kết hợp của ifconfig eth0:fakenfs ...' and umount -f -l / my / mount / dir 'đã giải quyết vấn đề cho tôi.
điểm

1
tôi cũng vậy, vấn đề chưa từng có khiến tôi không thể treo máy tính xách tay của mình, vì vậy giải pháp này thực sự hữu ích. Tôi đã tạo kịch bản của riêng mình để tự động hóa quá.
albfan

Vì vậy, để loại bỏ một bí danh khỏi Linux, nó sẽ là ifconfig eth0:fakenfs delete? Hay tôi đang tìm kiếm một cái gì đó khác? Giống như ifconfig eth0 delete 192.0.2.55?
Ehtesh Choudhury

2
@Shurane Trong Linux, xóa bí danh ifconfig eth0:fakenfs downsẽ thực hiện thủ thuật.
Sven

1
cảm ơn, công việc tuyệt vời xung quanh! trong trường hợp của tôi máy chủ nfs đã trở lại trực tuyến và vẫn không thể umount nó, điều này đã làm các trick, cheers
nmirceac

20

Hãy thử chạy

lsof | grep /mnt/data

Điều đó sẽ liệt kê bất kỳ quá trình nào đang truy cập / mnt / dữ liệu sẽ ngăn không cho nó bị ngắt kết nối.


1
Chắc chắn là hữu ích, mặc dù đã không hoàn toàn cứu tôi. Nhưng hữu ích.
James T Snell

2
Khi lsof bị treo vĩnh viễn, hãy thử "lsof -b" (có một lỗi lsof được thực hiện với NFS, xem ví dụ bugzilla.redhat.com/show_orms.cgi?id=962755 ).
dr0i

11

Tôi đã có cùng một vấn đề, và không umount /path -f, cũng không umount.nfs /path -f, không fuser -km /path, hoạt động

cuối cùng tôi tìm thấy một giải pháp đơn giản>. <

sudo /etc/init.d/nfs-common restart, sau đó hãy làm đơn giản umount;-)


5
Làm việc cho tôi vớiumount -f -l ...
mivk

Trên máy chủ Ubuntu 14.04 tôi đã phải sudo service nfs-kernel-server restart, nhưng câu trả lời của bạn chắc chắn đã đưa tôi đi đúng hướng, cảm ơn!
Murmel

4

Máy chủ NFS của bạn biến mất.

Lý tưởng nhất là đặt cược của bạn là nếu máy chủ NFS quay trở lại.

Nếu không, "umount -f" đã thực hiện thủ thuật. Nó không LUÔN hoạt động, nhưng nó thường sẽ.

Nếu bạn tình cờ biết các quy trình đang SỬ DỤNG hệ thống tập tin NFS, bạn có thể thử giết các quy trình đó và sau đó có thể một chế độ không đếm được sẽ hoạt động.

Cuối cùng, tôi đoán bạn cần phải khởi động lại.

Ngoài ra, KHÔNG gắn mềm ổ đĩa NFS của bạn. Bạn sử dụng gắn kết cứng để đảm bảo rằng họ đã làm việc. Điều đó là cần thiết nếu bạn đang viết.


Gắn mềm và cứng dường như là một vấn đề của các trường hợp sử dụng. Có, một phần mềm mềm sẽ khiến các tệp hiện đang bị ghi bị hỏng nếu máy chủ NFS bị hỏng vì một số lý do và do đó có thể không phải là thư mục quan trọng của hệ thống, nhưng đối với một ổ đĩa có các tệp không quan trọng như nhạc và phim thì nó sẽ hoạt động bình thường.
zrajm

4

Không thể tìm thấy một câu trả lời làm việc ở đây; nhưng trên linux bạn có thể chạy "umount.nfs4 / volume -f" và nó chắc chắn sẽ ngắt kết nối nó.


4
Không phải là umount.nfs4 là một tiểu ban cho umount? Nói cách khác, umount -f /some/mountpointcũng giống như umount.nfs4 /some/mountpoint -f.
Ville

1
Hấp dẫn. Về phía tôi (sau khi NFS-Server biến mất): umountcác cuộc gọi umount.nfs, bị treo vĩnh viễn (bất kể tùy chọn). umount.nfs4 /mnt -fmất khá nhiều thời gian, nhưng hoàn thành umount.nfs4 /mnt -lhoàn thành ngay lập tức (có lẽ vì nó không chờ quá trình).
Tino
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.