Ich denke, Sie können möglicherweise mit Netzwerkblockgeräten (NBD) erreichen, was Sie wollen. Auf der Wikipedia-Seite zu diesem Thema wird ein Tool namens nbd
erwähnt . Es besteht aus einer Client- und einer Serverkomponente.
Beispiel
In diesem Szenario richte ich eine CD-ROM auf meinem Fedora 19-Laptop (Server) ein und teile sie mit einem Ubuntu 12.10-System (Client).
installieren$ 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
eine CD teilen Jetzt zurück auf dem Server (Fedodra 19) mache ich etwas Ähnliches mit dem Paketmanager YUM. Sobald ich fertig bin, lege ich eine CD ein und führe diesen Befehl aus, um sie als Blockgerät freizugeben:
$ 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.
$
Eine schnelle Überprüfung, ob es läuft:
$ 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
Einhängen der CD
Jetzt zurück auf dem Ubuntu-Client müssen wir uns mit nbd-server
verbinden mit nbd-client
wie so. HINWEIS: der name des nbd-servers ist in diesem beispiel greeneggs.
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
(Auf manchen Systemen - z.B. Fedora - muss man modprobe nbd
zuerst.)
Wir können mit lsblk
bestätigen, dass es jetzt ein Blockgerät auf dem Ubuntu-System gibt :
$ 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
Und jetzt mounten wir es:
$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
hat es funktioniert? Die Spannung bringt mich um und wir starten:
$ sudo ls /mnt/
EFI GPL isolinux LiveOS
Es gibt den Inhalt einer LiveCD von CentOS, die ich in den Fedora 19-Laptop gemountet habe und es als Blockgerät des Netzwerks unter Ubuntu mounten konnte.
Eine Alternative zu nbd
(falls Sie interessiert sind) verwendet iSCSI. tgtd
kann so konfiguriert werden, dass es einen /dev
hat Gerät als Sicherungsspeicher für einen bestimmten iSCSI IQN.
Wenn Sie sich auf einem RHEL-System befinden, müssen Sie nur scsi-target-utils
installieren und dann tgtd
konfigurieren/starten auf dem Quellsystem. Konfiguration von tgtd
können sich beteiligen, aber Red Hat bietet viele verschiedene Beispiele für die verschiedenen Szenarien.
Zum Beispiel:
<target iqn.2008-09.com.example:server.target4>
direct-store /dev/sdb # Becomes LUN 1
direct-store /dev/sdc # Becomes LUN 2
direct-store /dev/sdd # Becomes LUN 3
write-cache off
vendor_id MyCompany Inc.
</target>
Um es auf Fedora/RHEL zu starten:
# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target
Sie würden iscsi-initiator-utils
installieren auf dem Clientsystem und verwenden Sie iscsiadm
um Ziele zu senden und sich dann bei den aufgezählten Zielen "einzuloggen". Zum Beispiel:
# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>
Die iSCSI-LUNs werden dem System dann als reguläre Blockgeräte angezeigt. Auf RHEL können Sie den Transport überprüfen, über den ein bestimmtes Gerät kommt, indem Sie einfach ls -l /dev/disk/by-path | grep iscsi
eingeben um zu sehen, welcher Speicher über iSCSI kommt. Der Pfad listet auch den IQN des Ziels auf, bei dem Sie sich oben angemeldet haben.
Wenn das iscsi-gerät nicht mehr benötigt wird, kann man es entfernen über:
# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>
Sie bevorzugen offensichtlich die SAN-Lösung. Neben dem bereits erwähnten iSCSI und NBD haben Sie auch den AoE-Ansatz (ATA over Ethernet).
Das geht ganz einfach:
Auf der Serving-Seite müssen Sie
modprobe aoe
vbladed 0 0 eth0 /dev/sdc
Auf der Client-Seite
modprobe aoe
aoe-discover
aoe-stat
e0.0 1000.204GB eth0 1024 up
Ihre Geräte sind in
ls -l /dev/etherd/
c-w--w---- 1 root disk 152, 3 Mar 12 22:47 discover
brw-rw---- 1 root disk 152, 0 Mar 12 22:47 e0.0
brw-rw---- 1 root disk 152, 1 Mar 12 22:47 e0.0p1
cr--r----- 1 root disk 152, 2 Mar 12 22:47 err
c-w--w---- 1 root disk 152, 6 Mar 12 22:47 flush
c-w--w---- 1 root disk 152, 4 Mar 12 22:47 interfaces
c-w--w---- 1 root disk 152, 5 Mar 12 22:47 revalidate
Wobei e0.0
ist Ihr /dev/sdc
und e0.0.p1
ist /dev/sdc1
dmesg
auf dem Server:
[221384.454447] aoe: AoE v85 initialised.
dmesg
Ausgabe auf Client:
[ 1923.225832] aoe: AoE v85 initialised.
[ 1923.226379] aoe: e0.0: setting 1024 byte data frames
[ 1923.226910] aoe: 38607725d8b1 e0.0 v4014 has 1953525168 sectors
[ 1923.653820] etherd/e0.0: p1
Ziemlich einfach.
Zusätzliche Hinweise
vbladed
ist Teil des Paketsvblade
auf Fedora &Ubuntu, wahrscheinlich auch in anderen Distributionen.aoe-discover
&aoe-stat
sind Teil des Paketsaoetools
auch auf Fedora &Ubuntu.- Gerät wird in
fdisk
angezeigt als Blockgerät beispielsweise/dev/etherd/e0.0
. - Die Version von
vblade
das in den F19- und F20-Repositories verfügbar ist, ist ziemlich veraltet, es ist Version 14. Auf der ATAoE-Projektseite ist Version 21 verfügbar. Hier ist ein aktualisiertes RPM für Fedora 19 x86_64 verfügbar.