Làm thế nào để tìm hiểu dễ dàng liệu một thiết bị khối (hoặc một phần của thiết bị) được gắn bằng cách nào đó


10

Tôi muốn biết cách dễ nhất để xác định (không có đặc quyền gốc) cho dù một thiết bị khối (nói sdb) hoặc bất kỳ phần nào của nó được gắn (và phần nào của nó).

Kiểm tra /proc/mountssdb là không đủ vì sdbhoặc một trong các phân vùng của nó có thể được LVM sử dụng. Bạn có thể kiểm tra /sys/block/sdb/sdb*/holders/nhưng bạn nhận được dm-xcác mục phải được phân giải thành /dev/mappertên để kiểm tra /proc/mounts. Có thể nhưng nếu có một giải pháp dễ dàng hơn ... (không cần có quyền root)


2
Tôi tò mò, bạn không chỉ đang cố gắng tìm hiểu xem thiết bị có được gắn không? * / chủ sở hữu và * / * / chủ sở hữu đủ tốt để cho bạn biết thiết bị được gắn nếu thiết bị không tồn tại trong bảng / Proc / mounts. Tại sao bạn cần phải giải quyết nó, hơn nữa? tức là cryptsetup thêm nó vào các chủ sở hữu, cho biết bạn không nên làm hỏng ổ đĩa .. ngay cả khi / dev / mapper không gắn kết hoặc gây ra lỗi mã hóa. Nó chỉ là nó được gắn kết nội bộ thông qua một trình điều khiển. Cũng đừng quên kiểm tra / sys / block / sdb / chủ sở hữu, vì ổ đĩa có thể được "giữ" mà không có phân vùng.
Rahly

Câu trả lời:


12

Đây thực chất là vấn đề kiểm tra toàn bộ túi đựng các góc.

  • Một ổ đĩa có thể xuất hiện trong / Proc / mounts
  • Một ổ đĩa có thể được sử dụng như trao đổi (sử dụng / Proc / hoán đổi)
  • Một ổ đĩa có thể là một phần của pv LVM hoạt động (sử dụng pvdisplay)
  • Một ổ đĩa có thể là một phần của nhóm RAID dm-mapper (use / Proc / mdstat)
  • Một ổ đĩa có thể được truy cập trực tiếp bởi một ứng dụng (ví dụ: Oracle hỗ trợ ghi trực tiếp vào ổ đĩa hoặc phân vùng thay vì hệ thống tệp) (sử dụng fuser)
  • Một ổ đĩa có thể được truy cập trực tiếp bằng máy ảo (sử dụng bộ nhiệt áp)
  • Một ổ đĩa có thể được tham chiếu bởi một thiết bị loopback (ví dụ mount /dev/sda -o offset=1M /foo:) (sử dụng losetup -a)

Đây chỉ là những ví dụ tôi đưa ra trong một phút rưỡi để suy nghĩ về nó. Tôi chắc chắn có hàng tá người khác.

Ví dụ cuối cùng này tôi nghĩ là thú vị nhất và ít người biết về nó. Nó cho phép bạn gắn kết một hệ thống tập tin mà không cần sử dụng phân vùng. Chỉ cần chỉ định bù đắp bắt đầu và Linux sẽ tạo ra một thiết bị loopback trong suốt. Ví dụ trên mang lại kết quả như sau:

# cat /proc/mounts
...
/dev/loop0 /foo ext4 relatime,data=ordered 0 0

# losetup -a
/dev/loop0 [0005]:2048 (/dev/sda), offset 1048576

Tại sao bạn lại làm vậy? Thông thường nó liên quan đến các tình huống mà trước đây mọi thứ đã đi sai lầm khủng khiếp.

Cũng nên nhớ rằng với tính năng không gian tên hiện tại trong dòng chính (xem phần không chia sẻ ), các quy trình khác nhau có thể có các quan điểm khác nhau về những gì được gắn kết và những gì không. Ở đây mọi thứ bắt đầu để có một chút thuốc đỏ.


1

Có rất nhiều cách để gắn kết thiết bị, tất cả chúng có thể được kết hợp với nhau, vì vậy, nó giống như thường xuyên, tùy thuộc vào bạn để tìm hiểu.

tức là những gì được sử dụng bởi lvm: pvdisplay

Vì vậy, bạn cần bao gồm nfs, cifs, đột kích, vòng lặp, mật mã, v.v. Một điểm khởi đầu tốt là luôn luôn /proc/mounts, như bạn đã đề cập.

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.