Bagaimana saya bisa memasang perangkat blok dari satu komputer ke komputer lain melalui jaringan sebagai perangkat blok?

40

Apakah mungkin untuk mengekspor perangkat blok seperti DVD atau CDROM dan membuatnya sehingga dapat dipasang di komputer lain sebagai perangkat blok?

CATATAN: Saya tidak tertarik melakukan ini menggunakan NFS atau Samba, saya sebenarnya ingin drive optis ditampilkan sebagai drive optis di komputer jarak jauh.

slm
sumber

Jawaban:

33

Saya pikir Anda mungkin dapat mencapai apa yang Anda inginkan menggunakan perangkat blok jaringan (NBD). Melihat halaman wikipedia pada subjek ada disebutkan alat yang disebut nbd. Ini terdiri dari komponen klien dan server.

Contoh

Dalam skenario ini saya menyiapkan CDROM pada laptop Fedora 19 saya (server) dan saya membagikannya ke sistem Ubuntu 12.10 (klien).

menginstal
$ 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
berbagi CD

Sekarang kembali ke server (Fedodra 19) Saya melakukan hal serupa menggunakan manajer paketnya YUM. Setelah selesai saya masukkan CD dan jalankan perintah ini untuk membagikannya sebagai perangkat blok:

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

Pemeriksaan cepat untuk melihat apakah itu berjalan:

$ 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
Memasang CD

Sekarang kembali pada klien Ubuntu kita perlu terhubung dengan nbd-servermenggunakan nbd-clientseperti itu. CATATAN: nama server nbd adalah greeneggs dalam contoh ini.

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

(Pada beberapa sistem - misalnya Fedora - kita harus modprobe nbdterlebih dahulu.)

Kami dapat mengonfirmasi bahwa sekarang ada perangkat blok di sistem Ubuntu menggunakan 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 

Dan sekarang kita pasang:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
apa itu bekerja?

Ketegangan itu membunuhku, dan kami harus lepas landas:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Ada konten LiveCD dari CentOS yang saya pasang di laptop Fedora 19 dan dapat memasangnya sebagai perangkat blok jaringan di Ubuntu.

slm
sumber
Saya mendapatkan ini: "PERINGATAN Menentukan ekspor pada baris perintah sudah usang. Silakan gunakan file konfigurasi sebagai gantinya". Versi: 3.3
guettli
@guettli - terima kasih atas umpan baliknya. Distro apa ini?
slm
@sim openSUSE 13.1
guettli
Catatan: greeneggsadalah nama host server.
devius
1
Perhatikan bahwa protokol gaya lama (yaitu menggunakan satu port untuk setiap perangkat) ditandai sebagai usang untuk beberapa versi dan dijatuhkan dalam nbd 3.10 .
maxschlepzig
20

Salah satu alternatif untuk nbd(jika Anda tertarik) adalah menggunakan iSCSI. tgtddapat dikonfigurasikan untuk memiliki /devperangkat sebagai penyimpanan pendukungnya untuk iSCSI IQN tertentu.

Jika Anda menggunakan sistem RHEL maka Anda hanya perlu menginstal scsi-target-utilsdan kemudian mengkonfigurasi / memulai tgtdpada sistem sumber. Konfigurasi tgtddapat terlibat tetapi Red Hat memberikan banyak contoh berbeda untuk berbagai skenario.

Sebagai contoh:

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

Untuk memulainya di Fedora / RHEL:

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

Anda akan menginstal iscsi-initiator-utilspada sistem klien dan menggunakan iscsiadmuntuk mengirim target kemudian untuk "masuk" ke target yang disebutkan. Sebagai contoh:

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

LUN iSCSI kemudian akan hadir ke sistem sebagai perangkat blok biasa. Di RHEL, Anda dapat memeriksa pengangkutan perangkat tertentu yang datang. Anda cukup melakukan a ls -l /dev/disk/by-path | grep iscsiuntuk melihat penyimpanan apa yang terjadi pada iSCSI. Path juga akan mencantumkan IQN dari target yang Anda masuki di atas.

Ketika perangkat iscsi tidak diperlukan lagi, seseorang dapat menghapusnya melalui:

# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>
Bratchley
sumber
2
Jika mau, Anda dapat menambahkan A ke AU ini Q juga, itulah yang mendorong saya untuk menulis ini: askubuntu.com/questions/433231/…
slm
Ya, tapi saya tidak benar-benar memiliki sistem Ubuntu yang berguna untuk memastikan nama paketnya sama atau jika contoh konfigurasi yang saya rujuk adalah hulu atau hanya sesuatu yang Red Hat lakukan. Konfigurasi itu sendiri harus sama.
Bratchley
1
Joel kaulah yang terbaik ... tidak ada sistem Ubuntu 8-)
slm
1
Sebenarnya lebih mudah diatur daripada NBD. Masalah dengan NBD saat ini adalah bahwa sebagian besar contoh / dokumentasi yang Anda temukan melalui google menggunakan konfigurasi gaya lama, di mana versi saat ini menghapus dukungan untuk itu. Juga, versi <3.10 mungkin memiliki bug read-only .
maxschlepzig
9

Anda jelas lebih suka solusi SAN. Selain iSCSI dan NBD yang telah disebutkan, Anda juga memiliki pendekatan AoE (ATA over ethernet).

Ini sangat mudah untuk dilakukan:

Di sisi servis Anda perlu melakukannya

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

Di sisi klien

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

Perangkat Anda ada di

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

Dimana e0.0kamu /dev/sdcdan e0.0.p1mana/dev/sdc1

dmesg di server:

[221384.454447] aoe: AoE v85 initialised.

dmesg output pada klien:

[ 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

Sangat mudah.

catatan tambahan

  • vbladedadalah bagian dari paket vbladedi Fedora & Ubuntu, kemungkinan sama di distro lain juga.
  • aoe-discover& aoe-statMerupakan bagian dari paket aoetoolsdi Fedora & Ubuntu juga.
  • Perangkat ditampilkan fdisksebagai perangkat blok, misalnya /dev/etherd/e0.0,.
  • Versi vbladeyang tersedia di repositori F19 dan F20 cukup tanggal, ini versi 14. Halaman proyek ATAoE memiliki versi 21 tersedia. Ada RPM yang diperbarui tersedia untuk Fedora 19 x86_64 di sini .

sumber
Sudah mencoba melakukan ini dengan Fedora dan Ubuntu, itu tidak berfungsi.
slm
Saya biasanya memeriksa semuanya sebelum memposting. T: apakah aoe dimuat? Apakah Anda memberikan argumen yang tepat? Pada penerima: apakah aoe menemukan lawan? Apa yang dikatakan dmesg?
Saya tahu Anda tahu, saya tidak menyiratkan bahwa itu salah hanya bahwa mungkin ada beberapa langkah tambahan 8-)
slm
tetapi tidak ada langkah tambahan, ini benar-benar tugas yang mudah.
1
ROTFL, dan apakah Anda menghitung smartphone juga?
1

Meskipun solusi ini berhasil, hanya disajikan sebagai metode untuk menunjukkan TMWTDI.

Untuk pengaturan ini, kita memerlukan sistem yang terinspirasi unix untuk meng-host perangkat blok, dan sistem dengan perangkat blok belakang untuk sistem untuk melihatnya. Linux akan bekerja untuk keduanya.

Selanjutnya kita memerlukan sistem file jaringan bodoh (tidak boleh membuat optimasi penyimpanan data), seperti samba atau webdav. Khususnya NFS, dan AFS tidak akan berfungsi.

Tempatkan perangkat blok dalam folder yang diekspor. ( man mknodakan membantu.) menonaktifkan pemeriksaan perangkat blok jika berlaku me-mount sistem file yang diekspor pada komputer klien, membuat perangkat loop menggunakan file yang diimpor sebagai backing store dan mount seperti biasa. ( losetupatau mount -o loop)

Bagaimana dan mengapa ia bekerja, dan mengapa kinerjanya payah: Salah satu ide inti di balik unix adalah bahwa semuanya adalah file, jadi perangkat adalah file hanya mereka yang sedikit spesial (itulah mengapa mereka disebut file khusus). Ada beberapa jenis file khusus yang dapat diproduksi mknod, tetapi kita hanya akan melihat perangkat blokir. perangkat blok ada di sistem file seperti file lain dan seperti file lain yang mereka miliki pemilik, izin, inode, dan nama; tetapi mereka memiliki dua perbedaan: mereka tidak menyimpan data mereka di sistem file, dan mereka memiliki kemampuan ekstra sehingga mereka dapat dipasang. Jika server file cukup bodoh untuk tidak memperhatikan perbedaan ini, Anda dapat mengabaikannya dan mengekspornya sebagai file biasa. Selanjutnya perangkat loop mengambil file biasa (lokal atau jarak jauh) dan menambahkan properti dan kemampuan khusus sehingga Anda dapat me-mount file biasa seolah-olah mereka adalah perangkat blok. Kelemahan besar adalah kinerja.

Hildred
sumber