Montaj kavramını anlamakta sorun


13

Her ikisini de okumuş Bir cihazı Linux'a monte etmek ne anlama geliyor? ve "mount" u OS'de bir kavram olarak anlamak , burada bir sorun var.

Tüm erişilebilir depolama alanlarının bu tek dizin ağacında ilişkili bir konumu olmalıdır. Bu, (dosya yolları için en yaygın sözdiziminde) depolama bileşeni (sürücü) başına bir dizin ağacının bulunduğu Windows'tan farklıdır. Montaj, bir depolama cihazını dizin ağacındaki belirli bir konumla ilişkilendirme eylemidir.

Ama zaten / dev / cdrom altında bir dizin dizin hiyerarşisinde gelen bir cdrom sürücü için erişilebilir bir konum var. Öyleyse neden / media / cdrom altında ayrı bir “bağlama noktası” yaratma gereği? Neden / dev / cdrom'dan doğrudan erişmek imkansız? Aygıt düğümü dosyalarının sıradan dosyalar gibi olduğunu duydum. Ve bunları okumak ve yazmak da sıradan dosyalar gibidir. Bu, eğer / dev / cdrom'dan erişirsek, cdrom'daki dosya sisteminin kullanılamayacağı anlamına mı geliyor? Ve dosya sistemi hiyerarşisi (cdrom'un içinde) "bağladığımızda" canlanıyor?

Yanıtlar:


11

/ Dev / cdrom (ör. ddVeya kullanarak cat) okuyabilir veya yazabilirsiniz, ancak bunu yaptığınızda yalnızca aygıtın ham baytlarını okuyor veya yazıyorsunuz. Bu, çeşitli durumlarda yararlı olabilir (bir bölümü klonlamak gibi), ancak genellikle cihazda depolanan dizinleri ve dosyaları görmek isteriz.

Bir aygıt bağladığınızda, çekirdeğe temel olarak bu ham baytları gerçek bir dosya sistemine çevirmek için bir yazılım katmanı (dosya sistemi sürücüsü) kullanmasını söylersiniz. Böylece bir aygıtın bağlanması , o aygıttaki dosya sistemini dizin hiyerarşisiyle ilişkilendirir.


8

Bunu şu şekilde düşünüyorum: mountsisteme bazı dosyaların içeriğini dizin ağaçları olarak yorumlamasını söyleyen bir araçtır.

  • Dosya sisteminin dizinleri ve dosyaları vardır ve her dosya bazı bayt dizeleri için bir etikettir.
  • /dev/cdrom bir dosyadır, CD'de saklanan bayt dizesini temsil eder.
  • Bu çok uzun dizeyi doğrudan okuyabilirsiniz, ancak bu özel amaçlar dışında çok pratik değildir (örn. Tam disk görüntüsü oluşturmak).
  • Bu uzun dize ek iç yapıya sahiptir: hangi dizinlerin ve dosyaların saklandığı ve bu çok uzun dizede nerede olduğu hakkında bilgi içeren bir dosya sistemi içerir.
  • Kullanarak mount -t iso9660 /dev/cdrom /media/cdromsisteme şunları söylersiniz: "içinde bulunduğunuz bu çok uzun bayt dizisini alın /dev/cdrom, iso9660 biçiminde bir dizin ağacı olarak yorumlayın ve konumun altında bu alana erişmeme izin verin /media/cdrom".
  • Aslında, bu normal dosyalar için de geçerlidir. Disk görüntüsü içeren normal bir dosya oluşturabilir ve sonra mountbuna erişmek için kullanabilirsiniz . Bunu dene:
gg = = dev / sıfır = fs-görüntü bs = 1M sayısı = 50
mke2fs fs görüntüsü
sudo dağı fs görüntüsü / bazı / bağlama / nokta

(ilk iki komut, görüntü dosyasını hazırlarken yalnızca ilk kez gereklidir.)


Neden ihtiyacın vardı mke2fs?
ADTC

Görüntü dosyasının içinde boş bir ext2 dosya sistemi oluşturmak için. Boş bir dosya sisteminin tümü sıfır değildir - tıpkı boş bir Word veya LibreOffice belgesinin sıfır olmayan bir boyutu olduğu ve örneğin varsayılan yazı tipi ve sayfanın boyutu hakkında bilgi içerdiği gibi bazı meta verileri ve sabit yapıları vardır.
Krzysztof Kosiński

Oh tamam, potansiyel olarak yıkıcı bir eylem. Bu komutun yalnızca ilk başlatma için olduğunu belirtmenizi öneririz. :)
ADTC

5

/dev/cdrombir aygıt dosyasına karşılık gelir . Bu, optik sürücünüze takmak isteyebileceğiniz disklerin içeriği değil , bunu size göstermek için çağırabileceğiniz donanım (ve muhtemelen yazılım sürücüleri) için bir referanstır . Ne zaman mount /dev/cdromsenin ağacında bazı yoluna onun takmak içeriğini sizin için dosya sistemi .

Mesele şu ki, bunu yapmanın başka bir yolunu gerçekten düşünemiyorum. Windows'ta bile - belirgin olmasa da - hala dosya sistemi soyutlaması var \\?\volumename\. Neye benzediğini hatırlamak bir dakikamı aldı ve ben bunu bu şekilde buldum :

... birim adı, yalnızca gerçek bir ses cihazına, genellikle şeklinde geri dönen sembolik bir bağlantıdır \Device\HarddiskVolume23. Sürücü harfi olan bir MS-DOS aygıtının başka bir örneği var. Biriminizde C: sürücü harfi varsa, şu şekilde adlandırılan sembolik bir bağlantınız olur \\?\C: bu, \Device\HarddiskVolumeXXbiçimdeki gerçek birime işaret eder .

Ve belki de bu kadar farklı değil - daha az karmaşık olduğunu iddia etsem de - bence daha açık . Tek ve aynı sistem değiller, ama temelde farklı değiller.

Muhtemelen en önemli ayrım arasında /dev/deviceve /path/to/its/mountikincisi yolu bir dosya sistemi de olmasıdır - yazılımın bazı biraz organize bir şekilde veri işlemek için amaçlanan - Eski içeriğini yorumluyor. Sadece bir diski okuyamazsınız - birisi size okumalıdır. Dosya sistemi cihazın içeriğini yorumlar.


Bu biraz yanıltıcı. /dev/cdromOnaltılık bir düzenleyicide açarsanız , aslında CD-ROM'un ham içeriğini içerir. Bunu kullanarak mountişletim sistemine bu içerikleri bir dizin ağacı olarak yorumlamasını söyleyin.
Krzysztof Kosiński

0

Yukarıda belirtilen öğelere ek olarak, bir sürücü veya başka bir program bir aygıttaki verileri önbelleğe alabilir. Sabit disk veya parmak sürücü gibi bir okuma-yazma aygıtında, aygıta yazılan veriler henüz yazılmamış olabilir. Günlük dosya sistemleri, artık aygıtı görmeden önce günlüğün yıkanmasını gerektirebilir. Ardından, altta yatan dosya sisteminin artık kullanılabilir olmadığını bilmesi gereken cryptfs gibi diğer dosya sistemlerini kaplayan dosya sistemleriniz var.

Kabul edilir, salt okunur bir cihaz için bu daha az mantıklıdır, ancak yine de geçerlidir.

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.