GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu připojit blokové zařízení z jednoho počítače do druhého přes síť jako blokové zařízení?

Myslím, že byste mohli být schopni dosáhnout toho, co chcete, pomocí síťových blokových zařízení (NBD). Při pohledu na stránku wikipedie na toto téma je zmínka o nástroji s názvem nbd . Skládá se z klientské a serverové komponenty.

Příklad

V tomto scénáři nastavuji CDROM na svém notebooku Fedora 19 (server) a sdílím jej se systémem Ubuntu 12.10 (klient).

instalace
$ 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
sdílení disku CD

Nyní zpět na serveru (Fedodra 19) dělám podobnou věc pomocí jeho správce balíčků YUM. Po dokončení vložím CD a spustím tento příkaz, abych jej nasdílel jako blokové zařízení:

$ 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.
$

Rychlá kontrola, zda běží:

$ 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
Připojení disku CD

Nyní zpět na klientovi Ubuntu se musíme připojit k nbd-server pomocí nbd-client jako tak. POZNÁMKA: název nbd-serveru je v tomto příkladu greeneggs.

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

(Na některých systémech – např. Fedora – musí být modprobe nbd první.)

Můžeme potvrdit, že v systému Ubuntu je nyní blokové zařízení pomocí 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 teď to připojíme:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
fungovalo to?

To napětí mě zabíjí a máme start:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Je tam obsah LiveCD CentOS, který jsem připojil do notebooku Fedora 19 a byl jsem schopen jej připojit jako blokové zařízení sítě na Ubuntu.


Jedna alternativa k nbd (pokud máte zájem) používá iSCSI. tgtd lze nakonfigurovat tak, aby měl /dev zařízení jako jeho záložní úložiště pro konkrétní iSCSI IQN.

Pokud používáte systém RHEL, stačí nainstalovat scsi-target-utils a poté nakonfigurujte/spusťte tgtd na zdrojovém systému. Konfigurace tgtd může se zapojit, ale Red Hat poskytuje spoustu různých příkladů pro různé scénáře.

Například:

<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>

Chcete-li jej spustit na Fedoře/RHEL:

# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target

Nainstalovali byste iscsi-initiator-utils na klientském systému a použijte iscsiadm odeslat cíle a poté se "přihlásit" do vyjmenovaných cílů. Například:

# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>

Jednotky iSCSI LUN se pak systému představí jako běžná bloková zařízení. Na RHEL můžete zkontrolovat přepravu konkrétního zařízení, stačí provést ls -l /dev/disk/by-path | grep iscsi abyste viděli, jaké úložiště přichází přes iSCSI. V cestě bude také uvedeno IQN cíle, ke kterému jste se přihlásili výše.

Když již zařízení iscsi není potřeba, můžete jej odebrat pomocí:

# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>

Zjevně preferujete řešení SAN. Kromě již zmíněných iSCSI a NBD máte také přístup AoE (ATA over ethernet).

To je velmi snadné:

Na straně podávání musíte

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

Na straně klienta

modprobe aoe
aoe-discover
aoe-stat
e0.0      1000.204GB       eth0 1024  up

Vaše zařízení jsou v

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

Kde e0.0 je vaše /dev/sdc a e0.0.p1 je /dev/sdc1

dmesg na serveru:

[221384.454447] aoe: AoE v85 initialised.

dmesg výstup na klientovi:

[ 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

Docela snadné.

Další poznámky

  • vbladed je součástí balíčku vblade na Fedoře a Ubuntu, pravděpodobně to samé i v jiných distribucích.
  • aoe-discover &aoe-stat jsou součástí balíčku aoetools také na Fedoře a Ubuntu.
  • Zařízení se zobrazí v fdisk jako blokové zařízení, například /dev/etherd/e0.0 .
  • Verze vblade který je dostupný v repozitářích F19 a F20, je dost zastaralý, je to verze 14. Stránka projektu ATAoE má k dispozici verzi 21. Zde je k dispozici aktualizované RPM pro Fedoru 19 x86_64.

Linux
  1. Jak zkopírovat nastavení z jednoho počítače do druhého?

  2. Jak přesunout soubory z jednoho uživatelského účtu do druhého na stejném počítači?

  3. Jak zkopírovat tabulku z jedné databáze mysql do jiné databáze mysql

  1. Jak mohu spustit kód PHP z příkazového řádku?

  2. Jak najít slova z jednoho souboru v jiném souboru?

  3. Jak zkopírovat commity z jednoho repozitáře Git do druhého?

  1. Jak mohu číst vstup z klávesnice hostitelů při připojení přes SSH?

  2. Jak mohu řídit řazení síťových rozhraní?

  3. Jak mohu rezervovat blok paměti z jádra Linuxu?