โดยเฉพาะ: ฉันทำsudo mkdir /work
และต้องการตรวจสอบว่าอยู่ในฮาร์ดไดรฟ์ของฉันจริงและไม่ได้แมปกับไดรฟ์อื่น
ฉันจะตรวจสอบว่าโฟลเดอร์นี้อยู่ที่ใดได้อย่างไร
โดยเฉพาะ: ฉันทำsudo mkdir /work
และต้องการตรวจสอบว่าอยู่ในฮาร์ดไดรฟ์ของฉันจริงและไม่ได้แมปกับไดรฟ์อื่น
ฉันจะตรวจสอบว่าโฟลเดอร์นี้อยู่ที่ใดได้อย่างไร
คำตอบ:
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
อุปกรณ์
มีวิธีการอื่นที่อุปกรณ์บล็อกสามารถซ้อนกันได้ (ฟิวส์, ระบบไฟล์ลูปแบ็ค) ที่จะมีวิธีการของตนเองในการกำหนดอุปกรณ์บล็อกพื้นฐานและคุณยังสามารถซ้อนซ้อนหลายเลเยอร์เพื่อให้คุณต้องหยุดทำงาน คุณจะต้องดำเนินการแต่ละกรณีตามที่มา
df
ให้การต้อนรับ
lvdisplay
หรือlvs
จะเป็นเพื่อนของคุณ
สำหรับสคริปต์คุณสามารถใช้:
$ df -P <pathname> | awk 'END{print $1}'
นี่รองรับ POSIX
ในการแจกแจงสมัยใหม่ของอูบุนตูมีเลเยอร์เพิ่มเติม (อุปกรณ์ทำแผนที่) ระหว่างไฟล์ / ไดเรกทอรีและอุปกรณ์ /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
เส้นทาง
findmnt -T /work