Jak mogę udostępnić napęd optyczny w sposób, który oszuka klienta, który myśli, że jest to napęd lokalny?

10

Szczerze mówiąc, jestem w absurdalnej sytuacji, gdy mój komputer stacjonarny ma dwa napędy optyczne, a moje centrum multimedialne nie ma (ani miejsca na jeden). Zanim zastanowię się nad czymś tak ekstremalnym, jak zakup zewnętrznego napędu optycznego, chciałbym sprawdzić, czy istnieje sposób tetheringu moich napędów w sieci.

Oba komputery są Ubuntu i mają już udostępnianie NFS, aby uzyskać dostęp do multimediów z pulpitu.

Powodem, dla którego pytam (a nie tylko eksportowanie / media / cdrom) jest to, że zamontowany udział NFS nie wygląda jak urządzenie CDROM na zdalnym komputerze. Jest to dla mnie istotne, ponieważ potrzebuję XBMC do rozpoznania napędu jako takiego, aby mógł on obsługiwać dyski automatycznie i odpowiednio.

Teraz ja nie wiem, co sprawia, że napęd optyczny wygląd takiego napędu optycznego do Ubuntu. Gdybym to wiedział, prawdopodobnie wiedziałbym, co powinienem zrobić. Domyślam się, że udevw tym momencie jest tam trochę akcji.

Czy jest jakiś sposób na udostępnienie urządzenia na poziomie bloku (np. /dev/sr0), Dzięki czemu oba komputery mogą go osobno zamontować ... Czuję, że upadam w króliczej nory i widzę te wszystkie masowo przeprojektowane rozwiązania, takie jak iSCSI i wirtualizacja przechodząca przede mną ... Z pewnością istnieje prosty sposób na udostępnienie kilku trybów napędu między dwoma komputerami Ubuntu!

Oli
źródło
Nie wiem, czy to wystarczy: thegeekstuff.com/2009/02/... --- Nie wiem, czy eksportuje specjalne ioctlpotrzebne DVD. Użyłem go wiele lat temu dla złej myśli o zamianie na sieć, a potem zapomniałem do tej pory ... (lepszy link: linux-mag.com/id/7118 )
Rmano
Dwie metody, których z powodzeniem używałem do robienia podobnych rzeczy, to używanie NFS i Samby, ale biorąc pod uwagę twojego przedstawiciela, zakładam, że wiesz o NFS na pewno i prawdopodobnie robię to przez Sambę. LMK, jeśli potrzebujesz dodatkowej pomocy.
slm
@slm Tak, między dwoma komputerami jest już NFS. Dodałem CD /media/cdromdo nfs i zamontowałem na drugim końcu jako /media/cdrom(i widzę pliki), ale XBMC nie wykrywa zmiany nośnika (nie uważa, że ​​mountpoint to DVD). Czy robię coś głupiego?
Oli
@Oli - OK, zobacz moje A i daj mi znać, jeśli tego właśnie szukasz. Nawiasem mówiąc, inną metodą, której użyłem, jest utworzenie ISO dysku DVD, udostępnienie go przez NFS, a następnie mount -o looplokalnie na innych komputerach.
slm

Odpowiedzi:

9

Myślę, że możesz być w stanie osiągnąć to, co chcesz, używając blokowych urządzeń sieciowych (NBD). Patrząc na stronę wikipedii na ten temat, wspomina się o narzędziu o nazwie nbd. Składa się z komponentu klient i serwer.

Przykład

W tym scenariuszu konfiguruję CDROM na moim laptopie Fedora 19 (serwer) i udostępniam go w systemie Ubuntu 12.10 (klient).

instalacja
$ 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
udostępnianie płyty CD

Teraz z powrotem na serwerze (Fedodra 19) Robię podobne rzeczy, używając menedżera pakietów YUM. Po zakończeniu włożę płytę CD i uruchom to polecenie, aby udostępnić ją jako urządzenie blokujące:

$ 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.
$

Szybkie sprawdzenie, czy działa:

$ 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
Montaż płyty CD

Teraz z powrotem na kliencie Ubuntu musimy się połączyć z nbd-server użyciem w następujący nbd-clientsposób:

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

Możemy potwierdzić, że w systemie Ubuntu jest teraz urządzenie blokujące 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 

A teraz montujemy:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
zadziałało?

Napięcie mnie zabija i mamy start:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Jest zawartość LiveCD CentOS, którą zamontowałem w laptopie Fedory 19 i byłem w stanie zamontować jako urządzenie blokujące sieć na Ubuntu.

Automatyczne odtwarzanie i automatyczne montowanie?

W powyższej konfiguracji musiałem ręcznie zamontować DVD.

W badaniu wiarygodności czy takie podejście będzie działać z autoodtwarzanie i automounting, po wyjęciu z pudełka, autoplay Ubuntu nie działa, ale nbd-clienti nbd-serverzatrzymaliśmy się, kiedy wyrzucony z dysku. Po ponownym włożeniu dysku DVD mogłem uruchomić mountkomendę w systemie Ubuntu, który ponownie zamontował dysk DVD.

Zakładam więc, że możesz wprowadzić regułę UDEV na Ubuntu, aby wykryć tę zmianę i wykonać automatyczne podłączanie / automatyczne odtwarzanie. Nie wypróbuję tego wszystkiego, ale nie widzę niczego, co skłoniłoby mnie do myślenia, że ​​to nie zadziała.

slm
źródło
1
Doskonałe instrukcje! To nie jest idealne: moje oprogramowanie wciąż może stwierdzić, że to nie jest prawdziwy dysk. Zgaduję, że ioctlnie radzę sobie idealnie. Ale udało mi się to zrobić na dwóch maszynach archlinux z zerowym czknięciem ! (Archlinux zainstalował klienta i serwer razem jako „nbd”.)
Ograniczone Zadośćuczynienie
3

Ta metoda używa również NBD, ale zamiast tego używa nowej konfiguracji stylu. Jedyne zalety to to, że nie trzeba ręcznie uruchamiać serwera i nie wyświetla się brzydkie ostrzeżenie o wycofaniu.

Po zainstalowaniu pakietów nbd-serveri nbd-clientkontynuuj edycję pliku konfiguracyjnego na serwerze ( /etc/nbd-server/config) i upewnij się, że wygląda mniej więcej tak:

[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

Uwaga:[dvd] etykieta powyżej jest nagłówek sekcji i może to być dowolny tekst, który chcesz w nawiasach kwadratowych. Służy do identyfikacji tego konkretnego udziału, więc upewnij się, że używasz nazwy, która jest łatwa w użyciu i oczywista.

Po zapisaniu zmian w pliku konfiguracyjnym uruchom lub zrestartuj serwer nbd (przykład ponownego uruchomienia):

sudo service nbd-server restart

Następnie z powrotem na komputerze klienckim połącz się z serwerem za pomocą polecenia:

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

Uwaga: Zamień dvdna nazwę użytą w powyższej konfiguracji serwera ihostname na nazwę hosta serwera.

Wreszcie jest to kwestia zamontowania nowego urządzenia z blokiem współdzielonym:

sudo mount /dev/nbd0 /mnt/
devius
źródło
Jeśli nadal otrzymujesz, Negotiation: ..Error: Server closed connection Exiting.to skomentuj oba useri groupwstawiaj /etc/nbd-server/config. To sprawia, że ​​uruchamiany nbd-serverpod rootem, który ma dostęp do twojego/dev/sr0
Petr Újezdský