Myślę, że możesz być w stanie osiągnąć to, co chcesz, używając bloków sieciowych (NBD). Patrząc na stronę wikipedii na ten temat, wspomina się o narzędziu o nazwie nbd
. Składa się z komponentu klient i serwer.
Przykład
W tym scenariuszu konfiguruję CDROM na moim laptopie Fedora 19 (serwer) i udostępniam go w systemie Ubuntu 12.10 (klient).
instalacja
$ 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
udostępnianie płyty CD
Teraz z powrotem na serwerze (Fedodra 19) Robię podobne rzeczy, używając menedżera pakietów YUM. Po zakończeniu włożę płytę CD i uruchom to polecenie, aby udostępnić ją jako urządzenie blokujące:
$ 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.
$
Szybkie sprawdzenie, czy działa:
$ 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
Montaż płyty CD
Teraz z powrotem na kliencie Ubuntu musimy połączyć się z nbd-server
użyciem w ten nbd-client
sposób. UWAGA: w tym przykładzie nazwa serwera nbd to greeneggs.
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
(W niektórych systemach - np. Fedora - trzeba modprobe nbd
najpierw.)
Możemy potwierdzić, że w systemie Ubuntu jest teraz urządzenie blokowe, używając 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
A teraz montujemy:
$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
zadziałało?
Napięcie mnie zabija i mamy start:
$ sudo ls /mnt/
EFI GPL isolinux LiveOS
Jest zawartość LiveCD CentOS, którą zamontowałem w laptopie Fedory 19 i byłem w stanie zamontować jako urządzenie blokujące sieć na Ubuntu.
greeneggs
to nazwa hosta serwera.Jedną z alternatyw dla
nbd
(jeśli jesteś zainteresowany) jest użycie iSCSI.tgtd
można skonfigurować tak, aby/dev
urządzenie pełniło rolę pamięci zapasowej dla określonego ISCN ISCSI.Jeśli korzystasz z systemu RHEL, wystarczy zainstalować,
scsi-target-utils
a następnie skonfigurować / uruchomićtgtd
system źródłowy. Konfiguracjatgtd
może się zaangażować, ale Red Hat zapewnia wiele różnych przykładów dla różnych scenariuszy.Na przykład:
Aby uruchomić go na Fedorze / RHEL:
Zainstalowałbyś
iscsi-initiator-utils
się w systemie klienta i używałeśiscsiadm
do wysyłania celów, a następnie do „logowania się” do wyliczonych celów. Na przykład:Jednostki iSCSI LUN będą następnie prezentowane w systemie jako zwykłe urządzenia blokowe. Na RHEL możesz sprawdzić transport nadchodzącego konkretnego urządzenia, możesz po prostu
ls -l /dev/disk/by-path | grep iscsi
sprawdzić, jakie miejsce na dysku przesyła iSCSI. Ścieżka wyświetli także IQN celu, do którego zalogowałeś się powyżej.Gdy urządzenie iscsi nie jest już potrzebne, można je usunąć poprzez:
źródło
Oczywiście wolisz rozwiązanie SAN. Oprócz wspomnianych już iSCSI i NBD, masz także podejście AoE (ATA over ethernet).
Jest to bardzo łatwe do zrobienia:
Po stronie serwującej musisz
Po stronie klienta
Twoje urządzenia są włączone
Gdzie
e0.0
jest twój/dev/sdc
i gdziee0.0.p1
jest/dev/sdc1
dmesg
na serwerze:dmesg
dane wyjściowe na kliencie:Całkiem łatwe.
Dodatkowe uwagi
vbladed
jest częścią pakietuvblade
Fedora i Ubuntu, prawdopodobnie podobnie w innych dystrybucjach.aoe-discover
iaoe-stat
są również częścią pakietuaoetools
Fedora i Ubuntu.fdisk
jako urządzenie blokowe, na przykład/dev/etherd/e0.0
.vblade
dostępna w repozytoriach F19 i F20 jest dość datowana, to jest wersja 14. Na stronie projektu ATAoE dostępna jest wersja 21. Tutaj dostępna jest zaktualizowana RPM dla Fedory 19 x86_64 .źródło
dmesg
?Chociaż to rozwiązanie działa, jest przedstawione jedynie jako metoda pokazania, że TMWTDI.
Do tej konfiguracji potrzebujemy systemu zainspirowanego Uniksem do obsługi urządzenia blokowego oraz systemu z urządzeniem blokowym z pętlą zwrotną, aby system mógł go wyświetlić. Linux będzie działał dla obu.
Następnie potrzebujemy głupiego sieciowego systemu plików (nie może on optymalizować przechowywania danych), takiego jak samba lub webdav. W szczególności NFS i AFS nie będą działać.
Umieść urządzenie blokujące w eksportowanym folderze. (
man mknod
pomoże.) wyłącz sprawdzanie urządzeń blokowych, jeśli dotyczy. zamontuj wyeksportowany system plików na komputerze klienckim, utwórz urządzenie pętlowe za pomocą importowanego pliku jako magazynu kopii zapasowych i podłącz jak zwykle. (losetup
lubmount -o loop
)Jak i dlaczego to działa oraz dlaczego wydajność jest do kitu: jedną z podstawowych idei unixa jest to, że wszystko jest plikiem, więc urządzenia są plikami, tylko że są trochę wyjątkowe (dlatego nazywane są plikami specjalnymi). Istnieje kilka rodzajów plików specjalnych, które może produkować mknod, ale przyjrzymy się tylko urządzeniom blokowym. urządzenia blokowe istnieją w systemie plików, jak każdy inny plik i jak każdy inny plik, który mają właścicieli, uprawnienia, i-węzły i nazwy; ale mają dwie różnice: nie przechowują swoich danych w systemie plików i mają dodatkowe możliwości, aby można je było zamontować. Jeśli serwer plików jest na tyle głupi, aby nie zwracać uwagi na te różnice, możesz je zignorować i wyeksportować jako zwykłe pliki. Następnie urządzenie pętli pobiera zwykły plik (lokalny lub zdalny) i dodaje specjalne właściwości i możliwości, dzięki czemu można montować zwykłe pliki tak, jakby były urządzeniami blokowymi. Dużą wadą jest wydajność.
źródło