Bir klasörün hangi fiziksel aygıtta bulunduğunu nasıl bulabilirim?


Yanıtlar:


148

df(1)Komut size dosya veya dizin üzerinde cihazı söyleyecektir:

df /work

İlk alan, dosya veya dizinin açık olduğu aygıta sahiptir.

Örneğin

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

Cihaz bir mantıksal birim ise, mantıksal birimin hangi blok cihazların açık olduğunu belirlemeniz gerekir. Bunun için şu lvs(8)komutu kullanabilirsiniz :

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

Son sütun size usr, hacim grubundaki orthanc( /dev/mapper/orthanc-usr) mantıksal hacmin cihazda olduğunu gösterir /dev/sda3. Bir cilt grubu birden çok fiziksel birimi kapsayabildiğinden, listelenen birden fazla aygıtınız olduğunu görebilirsiniz.

Diğer bir mantıksal blok aygıtı türü, md (Birden Çok Aygıt ve sanırım meta disk olarak adlandırılır) /dev/md2. Bir md cihazının bileşenlerine bakmak için, kullanabilir mdadm --detailveya/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

Bunu görebilirsiniz /dev/md2üzerindedir /dev/sda3ve /dev/sdb3cihazlar.

Blok aygıtlarının iç içe geçebilecek başka yöntemleri vardır (sigorta, geridöngü dosya sistemleri), altta yatan blok aygıtını belirlemek için kendi yöntemlerine sahip olur ve aşağı doğru çalışmanız için birden çok katmanı yuvalayabilirsiniz. Her davayı olduğu gibi kabul etmeniz gerekecek.


4
+1. İlginç. Bilmiyordum dfçok ağırlamayı oldu.
Faheem Mitha

Tamam, bunu yaptım ve / dev / mapper / fun-root'u Dosya Sistemim olarak aldım. Şimdi ne olacak? (Bilgisayarımın adı 'eğlenceli')
ripper234

1
O zaman belki LVM kullanıyorsunuz? lvdisplayya lvsda arkadaşın olacak.
phunehehe

5
Bu cevaptan o kadar etkilendim ki, LVM ve / veya MD'nin iç içe olduğu durumlarda bile, bir yolun veya bölümün temel aygıtlarını döndüren "rawdev" ​​komutunun temeli olarak kullandım. Github'da bulunabilir: github.com/BMDan/rawdev .
BMDan

5

Bir komut dosyası için şunları kullanabilirsiniz:

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

Bu POSIX uyumludur.


Çoğu zaman çalışır, ancak <yol adı> btrfs görüntüsündeyse, bu rapor '-' olur.
Eliptik manzara

1

Ubuntu’nun modern dağıtımında, dosya / dizininiz ve cihaz arasında ilave bir katman (cihaz eşleyici) vardır. /dev/mappergerçek özel cihazlara işaret eden sembolik bağlar içerir. Örneğin, geçerli dizinde çalışıyorum:

$ 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

Böylece cihazın tam yolunu programlı olarak almak için kullanabilirsiniz:

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

Benim durumum hangisi basar:

/dev/dm-1

realpath GNU coreutils'in bir parçasıdır.


Güzel, ama tam yol ne zaman faydalı? dfhala mapperyolu gösterecektir .
Dan Dascalescu

@DanDascalescu fuar noktası. Bu soruya çarptığımda aradığım gerçek donanım aygıtını bilmek / bilmek istediğinizde faydalı olabilir.
arielf,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.