मैं एक ऑप्टिकल ड्राइव को किस तरह से साझा कर सकता हूं जो क्लाइंट को यह सोचने में बेवकूफ बनाता है कि यह एक स्थानीय ड्राइव है?


10

मैं स्पष्ट रूप से अजीब स्थिति में हूं जहां मेरे डेस्कटॉप में दो ऑप्टिकल ड्राइव हैं और मेरे मीडिया सेंटर में कोई नहीं है (न ही एक के लिए स्थान)। इससे पहले कि मैं किसी बाहरी ऑप्टिकल ड्राइव को खरीदने के रूप में चरम पर विचार करूं, मैं यह देखना चाहूंगा कि क्या नेटवर्क पर मेरे ड्राइव को चलाने का एक तरीका है।

दोनों मशीनें उबंटू हैं और डेस्कटॉप से ​​मीडिया तक पहुंचने के लिए उनके पास पहले से ही एनएफएस साझा है।

कारण मैं पूछ रहा हूं (सिर्फ निर्यात / मीडिया / सीडीआरएम के बजाय) यह है कि एक घुड़सवार एनएफएस शेयर दूरस्थ मशीन के लिए सीडीरॉम-शैली डिवाइस की तरह नहीं दिखता है । यह मेरे लिए महत्वपूर्ण है क्योंकि मुझे XBMC की आवश्यकता है ताकि डिस्क को स्वचालित रूप से और उचित रूप से संभालने के लिए ड्राइव को इस तरह से पहचाना जा सके।

अब मुझे पता नहीं है कि उबंटू में ऑप्टिकल ड्राइव की तरह ऑप्टिकल ड्राइव क्या दिखता है । अगर मुझे पता था कि, मुझे शायद पता होगा कि मुझे क्या करना है। मुझे लगता है कि वहाँ udevकुछ बिंदु पर कुछ गर्म कार्रवाई है।

क्या ब्लॉक-स्तरीय डिवाइस (जैसे /dev/sr0) साझा करने का कोई तरीका है, जिससे दोनों कंप्यूटरों को अलग-अलग माउंट करने की अनुमति मिल सके ... मुझे ऐसा लगता है कि मैं खरगोश के छेद से टकरा रहा हूं और मैं इन सभी बड़े पैमाने पर अति-इंजीनियर समाधानों को देख सकता हूं जैसे iSCSI और passthrough वर्चुअलाइजेशन मेरे सामने पॉप अप कर रहा है ... निश्चित रूप से उबंटू कंप्यूटर के बीच कुछ ड्राइव मोड साझा करने का एक सरल तरीका है!


मुझे नहीं पता कि क्या यह पर्याप्त है: thegeekstuff.com/2009/02/… --- मुझे नहीं पता कि यह ioctlडीवीडी के लिए आवश्यक विशेष निर्यात करता है या नहीं । मैंने इसे सालों पहले नेट पर स्वैप करने के बुरे विचार के लिए इस्तेमाल किया था, और फिर अब तक भूल गया ... (बेहतर लिंक: linux-mag.com/id/7118 )
Rmano

इसी तरह की चीजें करने के लिए मैंने जिन 2 तरीकों का सफलतापूर्वक उपयोग किया है, वे हैं एनएफएस और सांबा का उपयोग करना, लेकिन आपका दोहराव मुझे लगता है कि आप निश्चित रूप से एनएफएस के बारे में जानते हैं, और संभवतः सांबा के माध्यम से ऐसा कर रहे हैं। LMK अगर आपको इसके साथ और मदद की जरूरत है।
slm

@ एसएलएम हाँ दो कंप्यूटरों के बीच पहले से ही एनएफएस है। मैं सीडी जोड़ा /media/cdromNFS के लिए और के रूप में दूसरे छोर पर यह घुड़सवार /media/cdrom(और मैं फ़ाइलों को देख सकते हैं), लेकिन XBMC (यह नहीं लगता है माउंटप्वाइंट मीडिया का एक परिवर्तन का पता लगाने के नहीं है है एक डीवीडी)। क्या मैं कुछ बेवकूफी कर रहा हूँ?
ओली

@ ओली - ठीक है, मेरे ए को देखें और मुझे बताएं कि क्या आप देख रहे हैं। संयोग से जिस दूसरी विधि का मैंने उपयोग किया है वह डीवीडी का आईएसओ बनाना है, जो कि एनएफएस पर, और फिर mount -o loopस्थानीय रूप से अन्य कंप्यूटरों पर साझा करना है ।
स्लम

जवाबों:


9

मुझे लगता है कि आप नेटवर्क ब्लॉक उपकरणों (एनबीडी) का उपयोग करके जो हासिल करना चाहते हैं उसे पूरा करने में सक्षम हो सकते हैं। विषय पर विकिपीडिया पृष्ठ को देखते हुए एक उपकरण का उल्लेख किया जाता है nbd। यह एक ग्राहक और सर्वर घटक से मिलकर बनता है।

उदाहरण

इस परिदृश्य में मैं अपने फेडोरा 19 लैपटॉप (सर्वर) पर एक सीडीरॉम स्थापित कर रहा हूं और इसे एक उबंटू 12.10 सिस्टम (क्लाइंट) पर साझा कर रहा हूं।

स्थापना
$ 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
एक सीडी साझा करना

अब सर्वर पर वापस (Fedodra 19) मैं इसके पैकेज मैनेजर YUM का उपयोग करके एक समान काम करता हूं। एक बार जब मैं एक सीडी को पूरा कर लेता हूं और इसे ब्लॉक डिवाइस के रूप में साझा करने के लिए इस कमांड को चलाता हूं:

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

यह देखने के लिए कि क्या चल रहा है एक त्वरित जांच:

$ 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
सीडी को माउंट करना

अब उबंटू ग्राहक पर वापस हम करने के लिए कनेक्ट करने की आवश्यकता nbd-serverका उपयोग कर nbd-clientतो जैसे:

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

हम पुष्टि कर सकते हैं कि अब उबंटू प्रणाली पर एक ब्लॉक डिवाइस का उपयोग कर रहा है 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 

और अब हम इसे माउंट करते हैं:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
काम किया?

सस्पेंस मुझे मार रहा है, और हमारे पास लिफ्टऑफ है:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

CentOS के एक LiveCD की सामग्री है जिसे मैंने Fedora 19 लैपटॉप में माउंट किया था और इसे उबंटू पर नेटवर्क के ब्लॉक डिवाइस के रूप में माउंट करने में सक्षम था।

ऑटोप्लेइंग और ऑटोमाउंटिंग?

उपरोक्त सेटअप में मुझे डीवीडी को मैन्युअल रूप से माउंट करना था।

क्या यह दृष्टिकोण स्वत: चलना और, automounting बॉक्स से बाहर के साथ काम करेगा की दिखावट की जांच में, Ubuntu के ऑटोप्ले काम नहीं करता है लेकिन nbd-clientऔर nbd-serverहो चुकी है जब मैं डिस्क अलग हो। जब मैंने डीवीडी को वापस रखा तो मैं mountउबंटू पर कमांड को चलाने में सक्षम था , जिसने डीवीडी को ठीक ठीक से रिमूव किया।

इसलिए मुझे लगता है कि आप इस बदलाव का पता लगाने के लिए और ऑटोमेशन / ऑटोप्ले को स्वचालित रूप से करने के लिए उबंटू में एक यूडीवी नियम बना सकते हैं। मैं यह सब करने की कोशिश नहीं कर रहा हूँ, लेकिन मुझे ऐसा कुछ भी नहीं दिख रहा है जो मुझे यह सोचने के लिए प्रेरित करे कि यह काम नहीं करेगा।


1
बहुत बढ़िया निर्देश! यह सही नहीं है: मेरा सॉफ्टवेयर अभी भी बता सकता है कि यह एक वास्तविक डिस्क ड्राइव नहीं है। मुझे लगता है ioctlकि पूरी तरह से संभाला नहीं जा रहा है। लेकिन, मैं इस काम को दो हिराक्लीन मशीनों पर शून्य हिचकी के साथ करने में सक्षम था ! (आर्कलिनक्स ने क्लाइंट और सर्वर को 'nbd' के रूप में स्थापित किया।)
लिमिटेड प्रायश्चित

3

यह विधि NBD का भी उपयोग करती है, लेकिन इसके बजाय नई शैली कॉन्फ़िगरेशन का उपयोग करती है। केवल लाभ यह है कि आपको सर्वर को मैन्युअल रूप से शुरू करने की आवश्यकता नहीं है और आपको एक बदसूरत अपचयन चेतावनी नहीं मिलती है।

स्थापित करने के बाद nbd-serverऔर nbd-clientपैकेज सर्वर पर विन्यास फाइल को संपादित करने के लिए आगे बढ़ते हैं ( /etc/nbd-server/config) और सुनिश्चित करें कि यह कुछ इस तरह दिखता है:

[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

नोट:[dvd] लेबल के ऊपर एक अनुभाग शीर्ष लेख है और यह किसी भी शब्द आप वर्गाकार कोष्ठक में करना चाहते हो सकता है। इसका उपयोग उस विशेष शेयर को पहचानने के लिए किया जाता है ताकि आप यह सुनिश्चित कर सकें कि आप एक ऐसे नाम का उपयोग करें जो उपयोग में आसान और स्पष्ट हो।

कॉन्फ़िगरेशन फ़ाइल में परिवर्तनों को सहेजने के बाद, या तो nbd- सर्वर को फिर से शुरू या फिर से शुरू करें (पुनः आरंभ करने का उदाहरण):

sudo service nbd-server restart

फिर, क्लाइंट मशीन पर वापस कमांड का उपयोग कर सर्वर से कनेक्ट करें:

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

नोट:dvd ऊपर दिए गए सर्वर कॉन्फ़िगरेशन में आपके द्वारा उपयोग किए गए hostnameनाम और सर्वर मशीन के होस्ट नाम के साथ बदलें ।

अंत में यह सिर्फ नए साझा ब्लॉक डिवाइस को बढ़ाने का मामला है:

sudo mount /dev/nbd0 /mnt/

अगर आपको मिलती रहती है Negotiation: ..Error: Server closed connection Exiting.तो दोनों userको groupलाइक और कमेंट करें /etc/nbd-server/config। यह nbd-serverरूट के तहत रन बनाता है जिसकी पहुंच आपके पास है/dev/sr0
पेट्र dsJzdský
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.