Câu trả lời:
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ý usr
trong 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 --detail
hoặ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/md2
là trên /dev/sda3
và /dev/sdb3
cá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.
df
là có sức chứa.
lvdisplay
hoặc lvs
sẽ là bạn của bạn
Đố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.
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/mapper
chứ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.
df
vẫn sẽ hiển thị mapper
đường dẫn.
findmnt -T /work