Bir optik sürücüyü, istemciyi yerel bir sürücü olduğunu düşünecek şekilde kandıracak şekilde nasıl paylaşabilirim?


10

Masaüstümde iki optik sürücünün bulunduğu ve medya merkezimin hiçbiri (ya da biri için yer yok) olduğu açıkça gülünç bir durumdayım. Harici bir optik sürücü satın almak kadar aşırı bir şey düşünmeden önce, sürücülerimi ağ üzerinden bağlamanın bir yolu olup olmadığını görmek istiyorum.

Her iki makine de Ubuntu'dur ve masaüstünden medyaya erişmek için zaten NFS paylaşımına sahiptirler.

Sormamın nedeni (sadece dışa aktarma / medya / cdrom yerine) bağlı bir NFS paylaşımının uzak makineye CDROM tarzı bir cihaz gibi görünmemesidir . Bu benim için önemli, çünkü diskleri otomatik ve uygun şekilde işlemek için sürücüyü böyle tanımak için XBMC'ye ihtiyacım var.

Şimdi ben bir optik sürücü yapar bilmiyorum göz Ubuntu için bir optik disk gibi. Bunu bilseydim, muhtemelen ne yapmam gerektiğini bilirdim. Bir udevnoktada sıcak bir eylem olduğunu tahmin ediyorum .

Her /dev/sr0iki bilgisayarın ayrı ayrı monte etmesine izin vermek için bir blok seviyesi cihaz (örneğin ) paylaşmanın bir yolu var mı ... Tavşan deliğinden aşağı yuvarlanıyormuşum gibi hissediyorum ve iSCSI gibi tüm bu aşırı mühendislik çözümlerini görebiliyorum ve önizleme sanallaştırma önümde patlıyor ... Şüphesiz iki Ubuntu bilgisayarı arasında birkaç sürücü modu paylaşmanın basit bir yolu var!


Bu yeterli olup olmadığını bilmiyorum: thegeekstuff.com/2009/02/… --- ioctlDVD için gereken özel ihracat olup olmadığını bilmiyorum . Yıllar önce, ağ üzerinden takas hakkında kötü düşünülmüş bir fikir için kullandım ve sonra şimdiye kadar unuttum ... (daha iyi bağlantı: linux-mag.com/id/7118 )
Rmano

Benzer şeyleri yapmak için başarılı bir şekilde kullandığım 2 yöntem NFS ve Samba kullanmaktır, ancak temsilciniz göz önüne alındığında NFS'yi kesin olarak bildiğinizi ve muhtemelen Samba aracılığıyla yaptığınızı varsayıyorum. LMK daha fazla yardıma ihtiyacınız varsa.
slm

@slm Evet, iki bilgisayar arasında zaten NFS var. Ben CD'yi ekledi /media/cdromnfs ve diğer uçta onu monte /media/cdrom(ve dosyaları görebilir) ama XBMC medya değişikliğini (o mountpoint düşünmüyor algılamıyor olan bir DVD). Aptalca bir şey mi yapıyorum?
Oli

@Oli - Tamam, A'mı gör ve aradığın bu ise bana haber ver. Bu arada kullandığım diğer yöntem DVD'nin ISO'sunu yapmak, bunu NFS üzerinden paylaşmak ve daha sonra mount -o loopyerel olarak diğer bilgisayarlarda yapmaktır .
slm

Yanıtlar:


9

Ağ engelleme cihazlarını (NBD) kullanarak istediğinizi başarabileceğinizi düşünüyorum. Konuyla ilgili wikipedia sayfasına baktığımızda bir araçtan bahsediliyor nbd. Bir istemci ve sunucu bileşeninden oluşur.

Misal

Bu senaryoda Fedora 19 dizüstü bilgisayarımda (sunucu) bir CDROM ayarlıyorum ve bir Ubuntu 12.10 sistemine (istemci) paylaşıyorum.

yükleme
$ apt-cache search ^nbd-
nbd-client - Network Block Device protocol - client
nbd-server - Network Block Device protocol - server

$ sudo apt-get install nbd-server nbd-client
CD paylaşma

Şimdi sunucuya geri dönün (Fedodra 19) Paket yöneticisi YUM'u kullanarak benzer bir şey yapıyorum. Tamamlandığında bir CD'yi açıyorum ve bir blok cihazı olarak paylaşmak için bu komutu çalıştırıyorum:

$ sudo nbd-server 2000 /dev/sr0

** (process:29516): WARNING **: Specifying an export on the command line is deprecated.

** (process:29516): WARNING **: Please use a configuration file instead.
$

Çalışıp çalışmadığını görmek için hızlı bir kontrol:

$ ps -eaf | grep nbd
root     29517     1  0 12:02 ?        00:00:00 nbd-server 2000 /dev/sr0
root     29519 29071  0 12:02 pts/6    00:00:00 grep --color=auto nbd
CD'yi takma

Şimdi Ubuntu istemcisine geri nbd-serverkullanarak nbd-clientşu şekilde bağlanmamız gerekiyor :

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

Ubuntu sisteminde şu anda bir engelleme cihazı bulunduğunu onaylayabiliriz lsblk:

$ sudo lsblk -l
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 465.8G  0 disk 
sda1                   8:1    0   243M  0 part /boot
sda2                   8:2    0     1K  0 part 
sda5                   8:5    0 465.5G  0 part 
ubuntu-root (dm-0)   252:0    0 461.7G  0 lvm  /
ubuntu-swap_1 (dm-1) 252:1    0   3.8G  0 lvm  [SWAP]
sr0                   11:0    1 654.8M  0 rom  
nbd0                  43:0    0   643M  1 disk 
nbd0p1                43:1    0   643M  1 part 

Ve şimdi monte ediyoruz:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
işe yaradı mı?

Gerilim beni öldürüyor ve havalanmamız var:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Fedora 19 dizüstü bilgisayarına monte ettiğim ve Ubuntu'da ağın bir blok cihazı olarak bağlayabildiğim bir CentOS LiveCD içeriği var.

Otomatik oynatma ve Otomatikleştirme?

Yukarıdaki kurulumda DVD'yi manuel olarak monte etmek zorunda kaldım.

Bu yaklaşım autoplaying ve kutunun dışında, Automounting çalışmak edip akla yatkınlığını araştıran yılında Ubuntu'nun autoplay değil çalışır ama nbd-clientve nbd-serverben diski atılır zaman kadar kaldı. DVD'yi geri koyduğumda, DVD'yi mountiyi şekilde dolduran Ubuntu'daki komutu çalıştırabildim .

Bu nedenle, bu değişikliği tespit etmek ve otomatik olarak otomatik olarak / otomatik oynatmak için Ubuntu'ya bir UDEV kuralı yapıştırabileceğinizi varsayabilirim. Her şeyi denemeyeceğim ama işe yaramayacağını düşünmemi sağlayacak hiçbir şey görmüyorum.


1
Mükemmel talimatlar! Mükemmel değil: yazılımım hala gerçek bir disk sürücüsü olmadığını söyleyebilir. Sanırım ioctlmükemmel bir şekilde ele alınmıyor. Ancak, bu işi sıfır hıçkırık olan iki archlinux makinesinde yapabildim ! (Archlinux istemci ve sunucuyu birlikte 'nbd' olarak yükledi.)
Sınırlı Kefaret

3

Bu yöntem aynı zamanda NBD'yi kullanır ancak bunun yerine yeni stil yapılandırmasını kullanır. Tek avantajı, sunucuyu manuel olarak başlatmanız gerekmemesi ve çirkin bir kullanımdan kaldırma uyarısı almamanızdır.

nbd-serverVe nbd-clientpaketlerini kurduktan sonra sunucudaki yapılandırma dosyasını düzenlemeye devam edin ( /etc/nbd-server/config) ve bunun gibi göründüğünden emin olun:

[generic]
# If you want to run everything as root rather than the nbd user, you
# may either say "root" in the two following lines, or remove them
# altogether. Do not remove the [generic] section, however.
    user = nbd
    group = cdrom
    includedir = /etc/nbd-server/conf.d
    allowlist = true

# What follows are export definitions. You may create as much of them as
# you want, but the section header has to be unique.

[dvd]
    exportname = /dev/sr0
    readonly = true

Not: Yukarıdaki [dvd]etiket bir bölüm başlığıdır ve köşeli parantez içine alınmasını istediğiniz herhangi bir sözcük olabilir. Söz konusu paylaşımı tanımlamak için kullanılır, bu nedenle kullanımı kolay ve açık bir ad kullandığınızdan emin olun.

Yapılandırma dosyasındaki değişiklikleri kaydettikten sonra, nbd sunucusunu başlatın veya yeniden başlatın (yeniden başlatma örneği):

sudo service nbd-server restart

Sonra, istemci makinede geri komutu kullanarak sunucuya bağlanın:

sudo nbd-client -N dvd hostname /dev/nbd0

Not: Değiştir dvdYukarıdaki sunucu yapılandırmasında kullanılan adıyla ve hostnamesunucu makinenin ana bilgisayar adıyla.

Son olarak, sadece yeni paylaşılan blok cihazını monte etme meselesi:

sudo mount /dev/nbd0 /mnt/

Eğer sürekli olarak alıyorsanız Negotiation: ..Error: Server closed connection Exiting.o zaman hem açıklama userve groupsatırları /etc/nbd-server/config. Bu, nbd-serversizin erişime sahip olan kök altında koşmak yapar/dev/sr0
Petr Újezdský
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.