Як я можу поділитись оптичним приводом таким чином, що дурить клієнта думати, що це локальний привід?


10

Я переживаю відверто смішну ситуацію, коли на моєму робочому столі є два оптичні приводи, а в моєму медіа-центрі немає жодного (а також місця для одного). Перш ніж я розглядаю щось настільки екстремальне, як придбання зовнішнього оптичного приводу, я хотів би дізнатися, чи існує спосіб прив’язання моїх дисків до мережі.

Обидві машини є Ubuntu, і вони вже мають обмін NFS для доступу до засобів масової інформації з робочого столу.

Причина, про яку я запитую (а не просто експорт / media / cdrom), полягає в тому, що змонтована поділка NFS не схожа на пристрій у форматі CDROM на віддалену машину. Це для мене важливо, тому що мені потрібен XBMC для розпізнавання накопичувача як такого, щоб він міг обробляти диски автоматично і належним чином.

Тепер я не знаю , що робить оптичний привід зовнішній вигляд , як оптичний диск з Ubuntu. Якби я знав це, я, певно, знав би, що мені потрібно зробити. Я здогадуюсь, що udevтам в якийсь момент є якась гаряча дія.

Чи існує якийсь спосіб спільного використання пристрою на рівні блоку (наприклад /dev/sr0), що дозволяє обом комп'ютерам монтувати його окремо ... Я відчуваю, що я опускаюся в кролячу нору, і я бачу всі ці масово перероблені рішення, як iSCSI і найпростіша віртуалізація вискакує переді мною ... Напевно, існує простий спосіб спільного використання декількох режимів приводу між двома комп'ютерами Ubuntu!


Я не знаю, чи цього достатньо: thegeekstuff.com/2009/02/… --- Я не знаю, чи експортується спеціальна ioctlнеобхідна для DVD. Я використовував його років тому для непродуманої ідеї переключення через мережу, а потім забув дотепер ... (краще посилання: linux-mag.com/id/7118 )
Rmano

Два способи, які я успішно використовував для подібних речей, - це використання NFS та Samba, але, враховуючи, що ви повторюєте, я припускаю, що ви точно знаєте про NFS і, можливо, це робите через Samba. ЛМК, якщо вам потрібна додаткова допомога.
slm

@slm Так, між двома комп'ютерами вже є NFS. Я додав компакт-диск /media/cdromдо nfs і змонтував його на іншому кінці як /media/cdrom(і я бачу файли), але XBMC не виявляє зміни медіа (він не вважає, що місцем кріплення є DVD). Чи роблю щось дурне?
Олі

@ Oli - Гаразд, дивись моє "А" та дай мені знати, якщо це те, що ти шукаєш. До речі, інший метод, який я використав, - це зробити ISO DVD, поділитися цим NFS, а потім mount -o loopлокально на інших комп'ютерах.
slm

Відповіді:


9

Я думаю, ви, можливо, зможете виконати те, що хочете, використовуючи пристрої мережевого блоку (NBD). Переглядаючи сторінку вікіпедії з цього приводу , згадується інструмент під назвою nbd. Він складається з клієнтського та серверного компонентів.

Приклад

У цьому випадку я налаштовую CDROM на свій ноутбук Fedora 19 (сервер) і ділюсь ним із системою Ubuntu 12.10 (клієнт).

встановлення
$ 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
обмін компакт-диском

Тепер повернувся на сервер (Fedodra 19), я роблю подібну річ, використовуючи його менеджер пакунків YUM. Після завершення я вставляю компакт-диск і виконую цю команду, щоб поділитися ним як блоковий пристрій:

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

Швидка перевірка, щоб перевірити, чи працює вона:

$ 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
Монтаж компакт-диска

Тепер повернемося на клієнті Ubuntu нам потрібно підключитися до nbd-serverвикористовуючи nbd-clientтакий спосіб:

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

Ми можемо підтвердити, що зараз в системі Ubuntu блоковий пристрій використовується 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 

А тепер ми монтуємо його:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
це спрацювало?

Суспензія вбиває мене, і ми маємо відношення:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Там є вміст LiveCD з CentOS, який я встановив на ноутбуці Fedora 19 і міг змонтувати його як блок-пристрій мережі на Ubuntu.

Автоматична гра та автоматичний контроль?

У наведеній вище установці мені довелося вручну підключити DVD.

При дослідженні достовірності , чи буде цей підхід працювати з autoplaying і автомонтірованіе, з коробки, автозапуск Ubuntu не працює , але nbd-clientі nbd-serverзалишився , коли я викинув диск. Коли я повернув DVD назад, я зміг запустити mountкоманду на Ubuntu, яка переробили DVD просто.

Тож я б припустив, що ви можете дотримуватися правила UDEV в Ubuntu, щоб виявити цю зміну і зробити автоматичне чи автоматичне відтворення автоматично. Я не збираюся все це випробувати, але не бачу нічого, що б змусило мене думати, що це не вийде.


1
Відмінні інструкції! Це не ідеально: моє програмне забезпечення все ще може сказати, що це не фактичний диск. Я здогадуюсь ioctl, не впорається ідеально. Але, мені вдалося зробити цю роботу на двох машинах archlinux з нульовою іконою! (Archlinux встановив клієнта та сервера разом як "nbd".)
Обмежене спокутування

3

Цей метод також використовує NBD, але використовує нову конфігурацію стилю. Єдині переваги полягають у тому, що вам не потрібно запускати сервер вручну, і ви не отримуєте негарного попередження про депресію.

Після встановлення nbd-serverта nbd-clientпакунків перейдіть до редагування конфігураційного файла на сервері ( /etc/nbd-server/config) та переконайтесь, що він виглядає приблизно так:

[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

Примітка:[dvd] мітка вище заголовок розділу , і це може бути будь-яким словом , яке ви хочете укладати в квадратних дужках. Він використовується для ідентифікації конкретної частки, тому переконайтеся, що ви використовуєте ім’я, яке є простим у використанні та очевидним.

Після збереження змін у файлі конфігурації запустіть або перезавантажте сервер nbd (приклад перезавантаження):

sudo service nbd-server restart

Потім знову на клієнтській машині підключіться до сервера за допомогою команди:

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

Примітка. Замініть dvdім'я, яке ви використовували в налаштуваннях сервера вище, а hostnameтакож на ім'я хоста серверної машини.

Нарешті, це лише питання встановлення нового спільного блочного пристрою:

sudo mount /dev/nbd0 /mnt/

Якщо ви продовжуєте отримувати, Negotiation: ..Error: Server closed connection Exiting.тоді коментуйте обидва userта groupрядки в /etc/nbd-server/config. Це змушує працювати nbd-serverпід коренем, хто має доступ до вашого/dev/sr0
Петро rjezdský
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.