मैं ब्लॉक डिवाइस के रूप में नेटवर्क के माध्यम से एक कंप्यूटर से दूसरे कंप्यूटर पर एक ब्लॉक डिवाइस कैसे माउंट कर सकता हूं?


40

क्या एक डीवीडी या सीडीरॉम जैसे ब्लॉक डिवाइस को निर्यात करना और इसे बनाना संभव है ताकि यह ब्लॉक डिवाइस के रूप में दूसरे कंप्यूटर पर माउंट हो सके?

नोट: मैं एनएफएस या सांबा का उपयोग करने में दिलचस्पी नहीं रखता हूं, मैं वास्तव में चाहता हूं कि ऑप्टिकल ड्राइव एक दूरस्थ कंप्यूटर पर एक ऑप्टिकल ड्राइव के रूप में दिखाई दे।

जवाबों:


33

मुझे लगता है कि आप नेटवर्क ब्लॉक डिवाइस (एनबीडी) का उपयोग करके जो हासिल करना चाहते हैं उसे पूरा करने में सक्षम हो सकते हैं। इस विषय पर विकिपीडिया पृष्ठ को देखते हुए एक उपकरण का उल्लेख है 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नोट: nbd- सर्वर का नाम इस उदाहरण में ग्रीनएग है।

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

(कुछ प्रणालियों पर - जैसे फेडोरा - एक को modprobe nbdपहले करना है।)

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


मुझे यह मिलता है: "कमांड लाइन पर एक निर्यात निर्दिष्ट करना पदावनत है। कृपया इसके बजाय एक कॉन्फ़िगरेशन फ़ाइल का उपयोग करें"। संस्करण: 3.3
गुत्थी

@guettli - प्रतिक्रिया के लिए धन्यवाद। यह किस डिस्ट्रो पर था?
slm

@ सिसीम ओपन १३.१
गुएतली ११'१४

नोट: greeneggsसर्वर का होस्ट नाम है।
devius

1
ध्यान दें कि पुराने-शैली के प्रोटोकॉल (प्रत्येक डिवाइस के लिए एक पोर्ट का उपयोग करके) को कई संस्करणों के लिए पदावनत के रूप में चिह्नित किया गया था और इसे nbd 3.10 में हटा दिया गया था
मैकशलेपजिग

20

एक विकल्प nbd(यदि आप रुचि रखते हैं) iSCSI का उपयोग कर रहे हैं। किसी विशेष iSCSI IQN के लिए इसके बैकिंग स्टोरेज के रूप में tgtdएक /devडिवाइस के लिए कॉन्फ़िगर किया जा सकता है ।

यदि आप एक आरएचईएल प्रणाली पर हैं, तो आपको बस स्रोत प्रणाली को स्थापित scsi-target-utilsऔर कॉन्फ़िगर / प्रारंभ tgtdकरना होगा। कॉन्फ़िगरेशन tgtdशामिल हो सकता है लेकिन Red Hat विभिन्न परिदृश्यों के लिए विभिन्न उदाहरण प्रदान करता है।

उदाहरण के लिए:

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

फेडोरा / आरएचईएल पर इसे शुरू करने के लिए:

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

आप iscsi-initiator-utilsक्लाइंट सिस्टम पर स्थापित होंगे और iscsiadmफिर लक्ष्य को "लॉग इन" करने के लिए लक्ष्य भेजने के लिए उपयोग करेंगे। उदाहरण के लिए:

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

ISCSI LUN की प्रणाली नियमित ब्लॉक उपकरणों के रूप में सिस्टम में मौजूद होगी। आरएचईएल पर, आप परिवहन की जांच कर सकते हैं कि एक विशेष उपकरण आपके ऊपर आ रहा है आप सिर्फ यह देख सकते ls -l /dev/disk/by-path | grep iscsiहैं कि iSCSI पर क्या संग्रहण आ रहा है। पथ आपके द्वारा ऊपर दिए गए लक्ष्य के IQN को भी सूचीबद्ध करेगा।

जब iscsi डिवाइस की आवश्यकता नहीं होती है, तो कोई इसे इसके माध्यम से हटा सकता है:

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

2
: क्या आप भी इस ए.यू. क्यू करने के लिए अपने एक जोड़ सकते हैं चाहते हैं, यह क्या मुझे संकेत दिए जाने तक इस एक लिखने के लिए है askubuntu.com/questions/433231/...
SLM

मैं करूंगा, लेकिन मेरे पास वास्तव में उबंटू प्रणाली नहीं है ताकि यह सुनिश्चित किया जा सके कि पैकेज के नाम समान हैं या यदि मेरे द्वारा संदर्भित कॉन्फ़िगरेशन उदाहरण ऊपर की तरफ हैं या सिर्फ कुछ Red Hat करता है। हालांकि, कॉन्फ़िगरेशन समान होना चाहिए।
ब्राचली

1
जोएल आप सबसे अच्छा ... कोई उबंटू प्रणाली 8-) कर रहे हैं
SLM

1
वास्तव में एनबीडी की तुलना में सेटअप करना आसान था। वर्तमान एनबीडी के साथ मुद्दा यह है कि आपके द्वारा Google के माध्यम से पाए जाने वाले अधिकांश उदाहरण / दस्तावेज पुराने शैली के कॉन्फ़िगरेशन का उपयोग करते हैं, जहां वर्तमान संस्करणों ने इसके लिए समर्थन को हटा दिया है। इसके अलावा, संस्करण <3.10 में केवल-पढ़ने के लिए बग हो सकता है
मैक्सक्लेपज़िग

9

आप स्पष्ट रूप से पसंद करते हैं SAN समाधान। पहले से ही उल्लेख किए गए iSCSI और NBD के अलावा, आपके पास AoE (एटीए ओवर ईथरनेट) भी है।

यह करने में बहुत आसान है:

सेवारत पक्ष पर आप की जरूरत है

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

क्लाइंट की तरफ

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

आपके उपकरण में हैं

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

e0.0तुम्हारा कहां है /dev/sdcऔर e0.0.p1है/dev/sdc1

dmesg सर्वर पर:

[221384.454447] aoe: AoE v85 initialised.

dmesg ग्राहक पर उत्पादन:

[ 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

बहुत आसान।

अतिरिक्त नोट्स

  • vbladedvbladeफेडोरा और उबंटू पर पैकेज का हिस्सा है , संभवतः अन्य डिस्ट्रो में भी ऐसा ही है।
  • aoe-discoverऔर फेडोरा और उबंटू पर aoe-statभी पैकेज का हिस्सा हैं aoetools
  • डिवाइस fdiskएक ब्लॉक डिवाइस के रूप में दिखाता है, उदाहरण के लिए /dev/etherd/e0.0,।
  • vbladeF19 और F20 रिपॉजिटरी में उपलब्ध संस्करण का संस्करण बहुत दिनांकित है, यह संस्करण 14 है। ATAoE प्रोजेक्ट पेज में संस्करण 21 उपलब्ध है। यहाँ फेडोरा 19 x86_64 के लिए एक अद्यतन RPM उपलब्ध है

इस बी / डब्ल्यू फेडोरा और उबंटू को करने की कोशिश की, यह काम नहीं कर रहा है।
slm

मैं आमतौर पर पोस्ट करने से पहले सब कुछ देखता हूं। प्रश्न: ऐ ओ लोडेड है? क्या आपने उचित तर्क दिए? रिसीवर पर: क्या प्रतिद्वंद्वी प्रतिद्वंद्वी पाया? क्या कहता है dmesg?

मैं तुम्हें, मैं जिसका अर्थ नहीं था कि यह गलत था ही नहीं वहाँ कुछ अतिरिक्त कदम हो सकता है 8-) पता है
SLM

लेकिन कोई अतिरिक्त कदम नहीं हैं, यह वास्तव में एक आसान काम है।

1
ROTFL, और क्या आपने स्मार्टफोन को भी गिना है?

1

यद्यपि यह समाधान काम करता है, यह केवल उस TMWTDI को दिखाने के लिए एक विधि के रूप में प्रस्तुत किया गया है।

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

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

निर्यात किए गए फ़ोल्डर में ब्लॉक डिवाइस रखें। ( man mknodमदद करेगा।) यदि लागू हो तो ब्लॉक डिवाइस जाँच को अक्षम करें। क्लाइंट कंप्यूटर पर निर्यात की गई फ़ाइल सिस्टम को माउंट करें, आयातित फ़ाइल का उपयोग करके एक लूप डिवाइस बनाएं क्योंकि यह बैकिंग स्टोर है और सामान्य रूप से माउंट है। ( losetupया mount -o loop)

यह कैसे और क्यों काम करता है, और प्रदर्शन क्यों बेकार है: यूनिक्स के पीछे मुख्य विचारों में से एक यह है कि सब कुछ एक फाइल है, इसलिए डिवाइस केवल फाइलें हैं वे थोड़ा विशेष हैं (यही कारण है कि उन्हें विशेष फाइलें कहा जाता है)। कई प्रकार की विशेष फाइलें हैं जो मेकॉड उत्पादन कर सकती हैं, लेकिन हम केवल ब्लॉक डिवाइसों को देखने जा रहे हैं। ब्लॉक डिवाइस किसी अन्य फ़ाइल की तरह फ़ाइल सिस्टम में मौजूद हैं और किसी भी अन्य फ़ाइल की तरह उनके पास मालिक, अनुमति, इनोड और नाम हैं; लेकिन उनके दो अंतर हैं: वे अपने डेटा को फाइलसिस्टम में संग्रहीत नहीं करते हैं, और उनके पास अतिरिक्त क्षमताएं हैं इसलिए उन्हें माउंट किया जा सकता है। यदि फ़ाइल सर्वर इन अंतरों पर ध्यान नहीं देने के लिए पर्याप्त गूंगा है, तो आप उन्हें अनदेखा कर सकते हैं और उन्हें नियमित फ़ाइलों के रूप में निर्यात कर सकते हैं। अगला लूप डिवाइस एक साधारण फ़ाइल (स्थानीय या रिमोट) लेता है और विशेष गुण और क्षमताएं जोड़ता है ताकि आप नियमित फ़ाइलों को माउंट कर सकें जैसे कि वे डिवाइस को ब्लॉक कर सकते हैं। बड़ा दोष प्रदर्शन है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.