İki şey daha: Linux'un şirkete ve diğer büyük sunuculara taşınması statik /dev
kırılmaya neden oldu. Hem tüketici hem de işletmede, ileri teknoloji, statik / dev'i şaka olarak ortaya koyuyordu. [Bu cevap arkaplanın çoğunu doldurur, özellikle devfs'in neden udev ile değiştirildiğini].
Büyük ve Küçük Sayı Alanlarının Tükenmesi
/dev
dosyalar çekirdeğin içindeki büyük ve küçük sayılarla tanımlanır. Çekirdek aslında adı hiç umursamadı (ve örneğin, mv /dev/sda /dev/disk-1
ve çalışmaya devam edecektiniz - elbette programlar onu nerede bulacağını bilmese bile).
Statikle /dev
, olabilecek her potansiyel cihaz için büyük / küçük bir sayı ayırmanız gerekir. Bu rakamların, talep üzerine yaratılmayan dağıtımların bir parçası olarak gönderildiğinden, küresel olarak benzersiz olmaları gerekir. Sorun, her birinin 8 bitlik sayıları olmasıdır - aralık, 0-255'tir.
Örneğin, Linux, 8,0 sda, 8,1 sda1, 8,16 sdb, vb. İle başladı. Fakat insanlar, özellikle fiber kanal gibi şeyler düşündüğünüzde makinelere daha fazla disk eklemeye devam ettiler. Bir noktada, daha fazla disk için 65-71 arası büyük sayılar eklendi. Daha sonra, büyük sayılar 128–135. Ve yine de insanlar daha fazla disk istemeye devam etti ...
GPT gibi bölüm tablosu biçimleri ortaya çıktı ve disk başına daha fazla bölüm desteklendi. Ve elbette, diğer cihazlar sayı alanı boyunca yemek yiyorlardı: çeşitli RAID denetleyicileri, mantıksal ses yönetimi vb.
Sonuçta LANANA Linux Aygıt Listesi'nde görülebilir . 2.6 listesine bakarsanız (hala orada olan tek kişi), büyük sayıdaki 200 sayıdaki (maks: 255) blok kullanılır. Açıkça, sayılar tükenirdi.
Daha büyük sayılara geçmek kolay değildi. ABI çekirdeğini değiştirir. Dosya sistemine bağlı olarak, disk düzenini değiştirir. Ancak, elbette, bu cihazların çoğu herhangi bir sistemde mevcut değildi, hatta (örneğin) SCSI diskleri tükenmişti bile, muhtemelen bol miktarda ücretsiz şeyler vardı - muhtemelen bir IBM XT sabit diskine ihtiyaç duymuyordu, Örneğin.
Bir dinamik /dev
olduğunda, dağıtım cihaz numaralarını göndermek zorunda değildir. Artık küresel olarak benzersiz olmaları gerekmiyor. Botlar arasında benzersiz olmaları bile gerekmez.
Cihaz isimleri tahmin edilemezdi
Her şeye bir sayı atamak gerçekten kolaydı. Bir kurulun iki IDE kanalı vardı; Her IDE kanalı bir master ve bir slave destekledi. Kanal sırasına ve master-then-slave sırasına atayabilirsiniz. Böylece hda
ilk kanal olur, usta; hdb
ilk kanal, köle; hdc
ikinci kanal, ana; vb. Bunlar öngörülebilir ve kararlıydı. Yeni bir sürücü eklerseniz veya çıkarırsanız değişebilirler, ancak donanım değişikliği yoksa, bunlar statikti.
Sen koyabilirsiniz /dev/hda1
Gözlerinde farklı /etc/fstab
ve çalışma kalmak en azından eksik donanım değişiklikleri ediyorum emin olun.
IDE böyle çalıştı. Ondan sonra bir şey yok.
SATA basit görünüyor: bir port, bir disk. Ama öyle değil; port çarpanlarına izin verir. Ve çalışırken değiştirilebilir. Yine de, hiçbir donanım değişikliği olmazsa, haritayı çalışmaya devam ettirmeye devam edebilirsiniz.
USB çok daha kötü. Yalnızca çalışırken değiştirmeye izin vermekle kalmaz, tipiktir. İnsanlar her zaman USB flash sürücüler takarlar. Ayrıca, cihazların araştırması biraz zaman alabilir ve ne zaman isterlerse değişebilir (örneğin, telefonunuzdaki USB depolama modunu açıp kapattığınızda). Firewire benzer. Hiçbirinde, gerçekten kararlı bir haritalama yapamazsınız.
Ağa bağlı disklerde herhangi bir iç port sırası yoktur. Çekirdeğin kullandığı tek sıra, göründükleri sıradır. Mantıksal birimlerle aynıdır.
Önyükleme hızı arayışı da işleri daha da kötüleştirdi. Başlangıçta, çekirdek mutlu bir şekilde oturur ve örneğin tüm USB cihazlarının başlatılması için oldukça uzun süre beklerdi. Tüm SCSI otobüslerini vs. tamamen araştırmak için. Bu sondalar arka plan görevlerine dönüştürüldü; önyükleme artık onları beklemeyecekti. Cihazlar, problar tamamlandıktan sonra eklenir.
Bu yüzden çekirdek, aşağı yukarı "hangi sırayla ortaya çıkarsalar" ile bırakıldı. Bu, birçok önyükleme aygıtının her önyükleme sırasını değiştirebileceği ve değiştirdiği anlamına geliyordu; bir önyüklemede /dev/sdb
olan başka bir önyüklemede /dev/sdc
. Bu, statik fikrini /dev
şaka yapar.
özet
/dev
Tahmin edilemeyen cihaz prob siparişleri nedeniyle statikin önemsiz hale gelmesinin kombinasyonunu aldığınızda ve önemli bir çalışmanın bitmemesine yol açan statik büyük / küçük sayıları tahsis etmeye devam ettiğinizde, Linux geliştiricilerin neden bir dinamiğe geçmeyi seçtikleri anlaşılıyor /dev
.
/dev
(kolay veya rahat), bir USB ağ adaptörüne takılan bir kişi veya sistem çalışırken eklenmiş veya kaldırılmış sanal ağ adaptörleri gibi şeyleri ele almaz. Yine de siziudev
eski ve eski statik/dev
dizin yoluna geri götürmekten alıkoyacak hiçbir şey yok .