Как я могу обмениваться оптическим диском таким образом, что он обманывает клиента, думая, что это локальный диск?

10

Я в откровенно смешной ситуации, когда на моем рабочем столе есть два оптических диска, а в моем медиацентре нет ни одного места. Прежде чем я рассмотрю что-то столь же экстремальное, как покупка внешнего оптического диска, я хотел бы посмотреть, есть ли способ привязать мои диски по сети.

Обе машины - Ubuntu, и у них уже есть совместное использование NFS для доступа к носителям с рабочего стола.

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

Теперь I не знает, что делает оптический дисковод выглядеть как оптический диск для Ubuntu. Если бы я знал это, я бы, наверное, знал, что мне нужно делать. Я предполагаю, что в какой-то момент есть какое-то горячее udev .

Есть ли способ совместного использования устройства уровня блока (например, /dev/sr0 ), позволяя обоим компьютерам монтировать его отдельно ... Я чувствую, что я рушаюсь по кроличьей дыре, и я могу видеть все это массово перепрограммированные решения, такие как iSCSI и сквозная виртуализация, появляются передо мной ... Конечно, есть простой способ обмена несколькими режимами работы между двумя компьютерами Ubuntu!

    
задан Oli 12.03.2014 в 14:10
источник

2 ответа

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.

Автовоспроизведение & amp; Автомонтирование?

В приведенной выше настройке мне пришлось вручную установить DVD.

При изучении правдоподобности того, будет ли этот подход работать с автозапуском и автоматизацией, из автоматического запуска, автовоспроизведение Ubuntu не работает, но nbd-client и nbd-server остались, когда я выталкивал диск. Когда я вернул DVD, я смог запустить команду mount на Ubuntu, которая просто переделала DVD.

Итак, я бы предположил, что вы можете придерживаться правила UDEV на Ubuntu, чтобы обнаружить это изменение и автоматически выполнить автомонт / автозапуск. Я не собираюсь все это пробовать, но я не вижу ничего, что могло бы заставить меня думать, что это не сработает.

    
ответ дан slm 12.03.2014 в 16:28
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/
    
ответ дан devius 10.11.2014 в 22:01