ฉันจะค้นหาโฟลเดอร์ที่อยู่ในอุปกรณ์ทางกายภาพได้อย่างไร


110

โดยเฉพาะ: ฉันทำsudo mkdir /workและต้องการตรวจสอบว่าอยู่ในฮาร์ดไดรฟ์ของฉันจริงและไม่ได้แมปกับไดรฟ์อื่น

ฉันจะตรวจสอบว่าโฟลเดอร์นี้อยู่ที่ใดได้อย่างไร


คำตอบ:


148

df(1)คำสั่งจะบอกคุณอุปกรณ์ที่แฟ้มหรือไดเรกทอรีที่อยู่บน:

df /work

ฟิลด์แรกมีอุปกรณ์ที่ไฟล์หรือไดเรกทอรีเปิดอยู่

เช่น

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

หากอุปกรณ์นั้นเป็นโลจิคัลวอลุ่มคุณจะต้องพิจารณาว่าอุปกรณ์บล็อกใดที่โลจิคัลวอลุ่มเปิดอยู่ สำหรับสิ่งนี้คุณสามารถใช้lvs(8)คำสั่ง:

# 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)

คอลัมน์สุดท้ายจะบอกคุณว่าปริมาณตรรกะusrในกลุ่มเสียงorthanc( /dev/mapper/orthanc-usr) /dev/sda3เป็นบนอุปกรณ์ เนื่องจากกลุ่มวอลุ่มสามารถขยายฟิสิคัลวอลุ่มหลายตัวคุณอาจพบว่าคุณมีอุปกรณ์หลายรายการ

ประเภทของอุปกรณ์ป้องกันตรรกะก็คือ md (อุปกรณ์หลายและเคยถูกเรียกว่าเมตาดิสก์ฉันคิด) /dev/md2อุปกรณ์เช่น ในการดูส่วนประกอบของอุปกรณ์ md คุณสามารถใช้mdadm --detailหรือดู/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

คุณสามารถเห็นว่า/dev/md2อยู่ใน/dev/sda3และ/dev/sdb3อุปกรณ์

มีวิธีการอื่นที่อุปกรณ์บล็อกสามารถซ้อนกันได้ (ฟิวส์, ระบบไฟล์ลูปแบ็ค) ที่จะมีวิธีการของตนเองในการกำหนดอุปกรณ์บล็อกพื้นฐานและคุณยังสามารถซ้อนซ้อนหลายเลเยอร์เพื่อให้คุณต้องหยุดทำงาน คุณจะต้องดำเนินการแต่ละกรณีตามที่มา


4
+1 น่าสนใจ ฉันไม่รู้ว่าdfให้การต้อนรับ
Faheem Mitha

ตกลงฉันทำอย่างนั้นและได้ / dev / mapper / fun-root เป็นระบบไฟล์ของฉัน ตอนนี้คืออะไร (ชื่อคอมพิวเตอร์ของฉันคือ 'สนุก')
ripper234

1
ถ้าอย่างนั้นคุณกำลังใช้ LVM อยู่หรือ? lvdisplayหรือlvsจะเป็นเพื่อนของคุณ
phunehehe

5
ฉันประทับใจมากกับคำตอบนี้ที่ฉันใช้เป็นพื้นฐานสำหรับคำสั่ง "rawdev" ​​ซึ่งคืนค่าอุปกรณ์พื้นฐานของเส้นทางหรือพาร์ติชันแม้ในกรณีที่ LVM และ / หรือ MD ซ้อนอยู่ มันมีอยู่บน Github: github.com/BMDan/rawdev
BMDan

5

สำหรับสคริปต์คุณสามารถใช้:

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

นี่รองรับ POSIX


ได้ผลเกือบตลอดเวลาอย่างไรก็ตามหาก <pathname> อยู่ในรูปแบบ btrfs ภาพรวมของรายงานนี้ '-'
มุมมองรูปไข่

1

ในการแจกแจงสมัยใหม่ของอูบุนตูมีเลเยอร์เพิ่มเติม (อุปกรณ์ทำแผนที่) ระหว่างไฟล์ / ไดเรกทอรีและอุปกรณ์ /dev/mapperมีลิงค์สัญลักษณ์ที่ชี้ไปยังอุปกรณ์พิเศษจริง ตัวอย่างเช่นลองไดเรกทอรีปัจจุบัน:

$ 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

ดังนั้นในการรับเส้นทางแบบเต็มของอุปกรณ์โดยทางโปรแกรมคุณสามารถใช้:

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

เคสของฉันพิมพ์ไหน:

/dev/dm-1

realpath เป็นส่วนหนึ่งของ GNU coreutils


ดี แต่เส้นทางแบบเต็มจะมีประโยชน์เมื่อใด dfจะยังคงแสดงmapperเส้นทาง
Dan Dascalescu

@DanDascalescu จุดยุติธรรม อาจเป็นประโยชน์เมื่อ / ถ้าคุณต้องการทราบอุปกรณ์ฮาร์ดแวร์จริงซึ่งเป็นสิ่งที่ฉันกำลังมองหาเมื่อกดปุ่มคำถามนี้
arielf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.