Я думаю, что вы могли бы достичь того, что вы хотите, используя сетевые блочные устройства (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
так. ПРИМЕЧАНИЕ: имя nbd-сервера в этом примере - greeneggs.
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
(В некоторых системах, например, в Fedora, нужно modprobe nbd
сначала.)
Мы можем подтвердить, что в системе 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.
greeneggs
это имя хоста сервера.Одной из альтернатив
nbd
(если вам интересно) является использование iSCSI.tgtd
может быть настроен для использования/dev
устройства в качестве резервного хранилища для конкретного ISCN iSCSI.Если вы работаете в системе RHEL, вам просто нужно установить,
scsi-target-utils
а затем настроить / запуститьtgtd
исходную систему. Конфигурацияtgtd
может быть вовлечена, но Red Hat предоставляет множество различных примеров для различных сценариев.Например:
Чтобы запустить его на Fedora / RHEL:
Вы должны установить
iscsi-initiator-utils
на клиентскую систему и использоватьiscsiadm
для отправки целей, а затем «войти» в перечисленные цели. Например:Затем iSCSI LUN будут представлены системе как обычные блочные устройства. На RHEL вы можете проверить передачу определенного устройства, вы можете просто сделать,
ls -l /dev/disk/by-path | grep iscsi
чтобы увидеть, какое хранилище идет через iSCSI. В пути также будет указан IQN цели, в которую вы вошли выше.Когда устройство iscsi больше не требуется, его можно удалить с помощью:
источник
Вы, очевидно, предпочитаете решение SAN. Помимо уже упомянутых iSCSI и NBD, у вас также есть подход AoE (ATA over ethernet).
Это очень легко сделать:
На стороне обслуживания вам нужно
На стороне клиента
Ваши устройства находятся в
Где
e0.0
ваши/dev/sdc
иe0.0.p1
есть/dev/sdc1
dmesg
на сервере:dmesg
вывод на клиента:Очень легко.
Дополнительные замечания
vbladed
входит в пакетvblade
Fedora & Ubuntu, вероятно, так же, как и в других дистрибутивах.aoe-discover
& такжеaoe-stat
являются частью пакетаaoetools
на Fedora и Ubuntu.fdisk
качестве блочного устройства, например/dev/etherd/e0.0
,.vblade
, доступная в репозиториях F19 и F20, довольно устарела, это версия 14. На странице проекта ATAoE доступна версия 21. Там есть обновленный RPM для Fedora 19 x86_64 здесь .источник
dmesg
?Хотя это решение работает, оно представлено только как способ показать, что TMWTDI.
Для этой настройки нам нужна система под управлением Unix для размещения блочного устройства и система с устройством обратной петли, чтобы система могла просматривать его. Linux будет работать для обоих.
Далее нам нужна тупая сетевая файловая система (она не должна оптимизировать хранилище данных), такая как samba или webdav. Конкретно NFS и AFS работать не будут.
Поместите блочное устройство в папку, которая экспортируется. (
man mknod
поможет.) отключите проверку блочного устройства, если применимо. Смонтируйте экспортированную файловую систему на клиентском компьютере, создайте устройство цикла, используя импортированный файл в качестве резервного хранилища, и смонтируйте как обычно. (losetup
илиmount -o loop
)Как и почему это работает, и почему производительность отстой: одна из основных идей Unix состоит в том, что все является файлом, поэтому устройства - это файлы, только они немного особенные (именно поэтому они называются специальными файлами). Существует несколько типов специальных файлов, которые может создавать mknod, но мы рассмотрим только блочные устройства. блочные устройства существуют в файловой системе, как и любой другой файл, и, как и любой другой файл, имеют владельцев, разрешения, inode-ы и имена; но у них есть два отличия: они не хранят свои данные в файловой системе, и у них есть дополнительные возможности, позволяющие их монтировать. Если файловый сервер достаточно туп, чтобы не обращать внимания на эти различия, вы можете игнорировать их и экспортировать как обычные файлы. Затем устройство петли берет обычный файл (локальный или удаленный) и добавляет специальные свойства и возможности, так что вы можете монтировать обычные файлы, как если бы они были блочными устройствами. Большой недостаток - производительность.
источник