Làm cách nào để tìm thư mục trên thiết bị vật lý?


Câu trả lời:


148

Các df(1)lệnh sẽ cho bạn biết thiết bị có một tập tin hoặc thư mục trên:

df /work

Trường đầu tiên có thiết bị mà tập tin hoặc thư mục được bật.

ví dụ

$ df /root
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              1043289    194300    795977  20% /

Nếu thiết bị là âm lượng hợp lý, bạn sẽ cần xác định (các) thiết bị khối nào được bật. Đối với điều này, bạn có thể sử dụng lvs(8)lệnh:

# df /usr
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/orthanc-usr
                       8256952   4578000   3259524  59% /usr
# lvs -o +devices /dev/mapper/orthanc-usr
  LV   VG      Attr   LSize Origin Snap%  Move Log Copy%  Convert Devices     
  usr  orthanc -wi-ao 8.00g                                       /dev/sda3(0)

Cột cuối cùng cho bạn biết rằng âm lượng hợp lý usrtrong nhóm âm lượng orthanc( /dev/mapper/orthanc-usr) nằm trên thiết bị /dev/sda3. Vì một nhóm âm lượng có thể kéo dài nhiều âm lượng vật lý, bạn có thể thấy rằng bạn có nhiều thiết bị được liệt kê.

Một loại thiết bị khối logic khác là thiết bị md (Nhiều thiết bị và được gọi là thiết bị meta-đĩa tôi nghĩ), chẳng hạn như /dev/md2. Để xem các thành phần của thiết bị md, bạn có thể sử dụng mdadm --detailhoặc xem trong/proc/mdstat

# df /srv
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md2             956626436 199340344 757286092  21% /srv
# mdadm --detail /dev/md2
...details elided...
    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync   /dev/sda3
       1       8       19        1      active sync   /dev/sdb3

Bạn có thể thấy đó /dev/md2là trên /dev/sda3/dev/sdb3các thiết bị.

Có các phương pháp khác mà các thiết bị khối có thể được lồng vào nhau (cầu chì, hệ thống tập tin loopback) sẽ có các phương thức riêng để xác định thiết bị khối bên dưới và thậm chí bạn có thể lồng nhiều lớp để bạn phải làm việc theo cách của mình. Bạn sẽ phải nhận từng trường hợp như nó đến.


4
+1. Hấp dẫn. Tôi không biết dflà có sức chứa.
Faheem Mitha

OK, tôi đã làm điều đó và có / dev / mapper / fun-root làm Hệ thống tập tin của tôi. Giờ thì sao? (Tên máy tính của tôi là 'vui vẻ')
ripper234

1
Vậy thì có lẽ bạn đang sử dụng LVM? lvdisplayhoặc lvssẽ là bạn của bạn
phunehehe

5
Tôi rất ấn tượng với câu trả lời này đến nỗi tôi đã sử dụng nó làm cơ sở cho một lệnh, "rawdev", trả về (các) thiết bị cơ bản của một đường dẫn hoặc phân vùng, ngay cả trong trường hợp LVM và / hoặc MD được lồng vào nhau. Nó có sẵn trên Github: github.com/BMDan/rawdev .
BMDan

5

Đối với một tập lệnh, bạn có thể sử dụng:

$ df -P <pathname> | awk 'END{print $1}'

Đây là tương thích POSIX.


Tuy nhiên, hoạt động hầu hết thời gian, nếu <pathname> trong một btrfs chụp nhanh báo cáo này '-'.
Chế độ xem hình elip

1

Trong các bản phân phối hiện đại của Ubuntu, có một lớp bổ sung (trình ánh xạ thiết bị) giữa tệp / thư mục của bạn và thiết bị. /dev/mapperchứa các liên kết tượng trưng chỉ đến các thiết bị đặc biệt thực tế. Ví dụ: thử thư mục hiện tại:

$ df . | grep '^/' | cut -d' ' -f1
/dev/mapper/kubuntu--vg-root

$ ls -l /dev/mapper/kubuntu--vg-root
lrwxrwxrwx 1 root root 7 Nov 22 18:02 /dev/mapper/kubuntu--vg-root -> ../dm-1

Vì vậy, để có được đường dẫn đầy đủ của thiết bị theo chương trình, bạn có thể sử dụng:

$ realpath $(df . | grep '^/' | cut -d' ' -f1)

Đó là trường hợp của tôi in:

/dev/dm-1

realpath là một phần của lõi GNU.


Đẹp, nhưng khi nào thì đường dẫn đầy đủ hữu ích? dfvẫn sẽ hiển thị mapperđường dẫn.
Dan Dascalescu

@DanDascalescu điểm công bằng. Nó có thể hữu ích khi / nếu bạn muốn biết thiết bị phần cứng thực tế, thứ mà tôi đang tìm kiếm khi trả lời câu hỏi này.
arielf
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.