Bagaimana saya bisa membagikan drive optik dengan cara yang membodohi klien dengan menganggap itu drive lokal?

10

Saya dalam situasi yang benar-benar menggelikan di mana desktop saya memiliki dua drive optik dan media center saya tidak memiliki (atau ruang untuk satu). Sebelum saya mempertimbangkan sesuatu yang ekstrem seperti membeli drive optik eksternal, saya ingin melihat apakah ada cara menambatkan drive saya di seluruh jaringan.

Kedua mesin tersebut adalah Ubuntu dan mereka sudah memiliki NFS sharing untuk mengakses media dari desktop.

Alasan saya bertanya (bukan hanya mengekspor / media / cdrom) adalah bahwa berbagi NFS yang dipasang tidak terlihat seperti perangkat gaya CDROM ke mesin jarak jauh. Ini penting bagi saya karena saya perlu XBMC untuk mengenali drive itu agar dapat menangani disk secara otomatis dan tepat.

Sekarang saya tidak tahu apa yang membuat drive optik terlihat seperti drive optik ke Ubuntu. Jika saya tahu itu, saya mungkin tahu apa yang perlu saya lakukan. Saya menduga ada beberapa udevaksi panas di sana pada suatu titik.

Apakah ada cara berbagi perangkat tingkat blok (misalnya /dev/sr0) sehingga memungkinkan kedua komputer untuk memasangnya secara terpisah ... Saya merasa seperti saya jatuh ke lubang kelinci dan saya bisa melihat semua solusi rekayasa besar-besaran seperti iSCSI ini dan passthrough virtualisasi muncul di depan saya ... Tentunya ada cara sederhana untuk berbagi beberapa mode drive antara dua komputer Ubuntu!

Oli
sumber
Saya tidak tahu apakah ini cukup: thegeekstuff.com/2009/02/... --- Saya tidak tahu apakah ini mengekspor kebutuhan khusus ioctluntuk DVD. Saya menggunakannya bertahun-tahun yang lalu untuk ide buruk untuk bertukar internet, dan kemudian lupa sampai sekarang ... (tautan yang lebih baik: linux-mag.com/id/7118 )
Rmano
2 metode yang saya gunakan dengan sukses untuk melakukan hal-hal serupa adalah menggunakan NFS dan Samba, tetapi mengingat perwakilan Anda, saya berasumsi Anda tahu tentang NFS pasti, dan mungkin melakukan ini melalui Samba. LMK jika Anda membutuhkan bantuan lebih lanjut.
slm
@slm Ya sudah ada NFS di antara kedua komputer. Saya menambahkan CD /media/cdromke nfs dan memasangnya di ujung lain /media/cdrom(dan saya bisa melihat file) tetapi XBMC tidak mendeteksi perubahan media (tidak berpikir mountpoint adalah DVD). Apakah saya melakukan sesuatu yang bodoh?
Oli
@Oli - OK, lihat A saya dan beri tahu saya kalau itu yang Anda cari. Kebetulan metode lain yang saya gunakan adalah membuat ISO dari DVD, membagikannya melalui NFS, dan kemudian mount -o loopsecara lokal di komputer lain.
slm

Jawaban:

9

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 sedang 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 harus terhubung ke nbd-servermenggunakan nbd-clientseperti:

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

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.

Putar Otomatis & Pengisian Otomatis?

Pada pengaturan di atas saya harus memasang DVD secara manual.

Dalam menyelidiki masuk akal apakah pendekatan ini akan bekerja dengan autoplaying dan automounting, di luar kotak, autoplay Ubuntu tidak berfungsi selain nbd-clientdan nbd-servertetap terjaga ketika saya mengeluarkan disk. Ketika saya memasukkan kembali DVD saya dapat menjalankan mountperintah pada Ubuntu, yang remounted DVD baik-baik saja.

Jadi saya akan menganggap Anda bisa memasukkan aturan UDEV di Ubuntu untuk mendeteksi perubahan ini dan melakukan automount / autoplay secara otomatis. Saya tidak akan mencoba semuanya tetapi saya tidak melihat apa pun yang akan membuat saya berpikir bahwa itu tidak akan berhasil.

slm
sumber
1
Instruksi luar biasa! Itu tidak sempurna: perangkat lunak saya masih bisa mengatakan bahwa itu bukan drive disk yang sebenarnya. Saya kira ioctltidak ditangani dengan sempurna. Tapi, saya bisa membuat ini bekerja pada dua mesin archlinux dengan nol cegukan! (Archlinux menginstal klien dan server bersama-sama sebagai 'nbd'.)
Penebusan Terbatas
3

Metode ini juga menggunakan NBD tetapi sebagai gantinya menggunakan konfigurasi gaya baru. Satu-satunya keuntungan adalah bahwa Anda tidak harus memulai server secara manual dan Anda tidak mendapatkan peringatan penghentian yang buruk.

Setelah menginstal nbd-serverdan nbd-clientpaket melanjutkan untuk mengedit file konfigurasi di server ( /etc/nbd-server/config) dan pastikan itu terlihat seperti ini:

[generic]
# If you want to run everything as root rather than the nbd user, you
# may either say "root" in the two following lines, or remove them
# altogether. Do not remove the [generic] section, however.
    user = nbd
    group = cdrom
    includedir = /etc/nbd-server/conf.d
    allowlist = true

# What follows are export definitions. You may create as much of them as
# you want, but the section header has to be unique.

[dvd]
    exportname = /dev/sr0
    readonly = true

Catatan: The [dvd]label di atas adalah header bagian dan dapat setiap kata yang Anda ingin ditutupi dalam kurung persegi. Ini digunakan untuk mengidentifikasi bagian tertentu, jadi pastikan Anda menggunakan nama yang mudah digunakan dan jelas.

Setelah menyimpan perubahan pada file konfigurasi, mulailah atau mulai ulang server nbd (contoh memulai ulang):

sudo service nbd-server restart

Kemudian, kembali pada mesin klien terhubung ke server menggunakan perintah:

sudo nbd-client -N dvd hostname /dev/nbd0

Catatan: Ganti dvddengan nama yang Anda gunakan dalam konfigurasi server di atas, dan hostnamedengan nama host mesin server.

Akhirnya itu hanya masalah pemasangan perangkat blok bersama baru:

sudo mount /dev/nbd0 /mnt/
devius
sumber
Jika Anda terus menerima Negotiation: ..Error: Server closed connection Exiting.maka komentari keduanya userdan groupmasukkan /etc/nbd-server/config. Ini membuat dijalankan di nbd-serverbawah root yang memiliki akses ke Anda/dev/sr0
Petr Újezdský