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

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

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

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

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

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

2 ответа

Я думаю, что вы могли бы достичь того, что вы хотите, используя сетевые блочные устройства (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
делиться CD

Теперь вернувшись на сервер (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
Монтирование CD

Теперь вернемся к клиенту 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

Это содержимое Live CD CentOS, которое я смонтировал на ноутбуке Fedora 19 и смог смонтировать как блочное устройство сети в Ubuntu.

Автозапуск и автонастройка?

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

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

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

Этот метод также использует 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/
Другие вопросы по тегам