umount: mục tiêu là bận rộn


8

Tôi đã gắn kết /devvà ngay lập tức cố gắng để ngắt kết nối:

$ sudo mount -o rbind /dev m
$ sudo umount m
umount: /tmp/m: target is busy.
$ sudo lsof m
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kdevtmpfs  55 root  cwd    DIR    0,6     4420    2 m
kdevtmpfs  55 root  rtd    DIR    0,6     4420    2 m

Tôi đã đọc rằng fusercó thể giết các quá trình truy cập vào điểm gắn kết, nhưng tôi muốn hiểu những gì đang xảy ra trong trường hợp đơn giản này. Theo lsofđầu ra, một cái gì đó sử dụng mountpoint như thư mục làm việc hiện tại (cwd)?

Tôi không muốn sử dụng lười biếng unmount.

Câu trả lời:


11

Bạn đã sử dụng rbindđể gắn kết một hệ thống tập tin và phục vụ. Để ngắt kết nối một hệ thống tập tin, trước tiên bạn phải ngắt kết nối các phần phụ của nó (và tương tự cho các phần phụ của chúng, theo cách đệ quy). Nhưng hãy cẩn thận!

mount --make-rslave m
umount -R m

Nếu không có lệnh đầu tiên, bạn có nguy cơ ngắt kết nối tất cả các mount phụ trên nguồn , do lan truyền mount. Trong trường hợp này có nghĩa là tất cả các gắn kết phụ /dev, sẽ có tác động xấu đến hệ thống đang chạy của bạn ;-).

Về cơ bản việc truyền bá gắn kết là một cái bẫy lớn đang chờ bạn rơi vào đó :-). Có vẻ như nó sẽ tốt hơn nếu các liên kết gắn kết vô hiệu hóa nó theo mặc định.


kdevtmpfslà luồng kernel duy trì devtmpfs. Nó không ngăn chặn devtmpfs unmounting. Điều này là do luồng kernel chạy trên một mount riêng biệt (như mount mount). Bạn không thể thấy gắn kết ban đầu đó; nó nằm trong một không gian tên mount riêng biệt. Nếu bạn muốn thử và tìm hiểu lý do tại sao kdevtmpfsxuất hiện lsof, tôi không biết, có thể coi đó là một câu hỏi riêng biệt.

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.