किसी को लूप डिवाइस की आवश्यकता क्यों है?


15

मैं पहले इमेज फाइल बनाकर उपयोग करता था dd, उन पर फाइल सिस्टम सेट करता था mkfsऔर mountउन्हें माउंटेड पार्टीशन के रूप में एक्सेस करने के लिए। बाद में, मैंने इंटरनेट पर देखा कि कई उदाहरण losetupपहले से लूप डिवाइस प्रविष्टि के तहत उपयोग करते हैं /dev, और फिर इसे माउंट करते हैं। मैं यह नहीं बता सकता कि लूप डिवाइस के रूप में व्यवहार करने के लिए किसी को व्यावहारिक रूप से एक छवि फ़ाइल की आवश्यकता क्यों होगी और इसकी अपनी /devप्रविष्टि है जबकि समान व्यवहार सभी परेशानी के बिना प्राप्त किया जा सकता है।

सारांश: वास्तविक जीवन के परिदृश्य में, हमें एक /dev/loopXप्रविष्टि की आवश्यकता क्यों है , जब हम बस इसके बिना fs छवि को माउंट कर सकते हैं? लूप डिवाइस का उपयोग क्या है?


9
"... जबकि सभी समान व्यवहार बिना किसी परेशानी के प्राप्त किया जा सकता है।" - आप वहां गलत हैं;) - लिनक्स पर, एक फाइल को लूप डिवाइस के "परेशानी" के बिना माउंट नहीं किया जा सकता है। यह सिर्फ इतना है कि आजकल mountआप के लिए परेशानी करने के लिए काफी चालाक है। (जैसा कि स्टीफन हैरिस अपने जवाब में
दिखाते हैं

जवाबों:


22

माउंट, आमतौर पर, ब्लॉक डिवाइस पर किया जाना चाहिए। लूप ड्राइवर आपकी डेटा फ़ाइल पर एक ब्लॉक डिवाइस फ्रंट-एंड लगाता है।

यदि आप बिना लूप माउंट करते हैं losetupतो ओएस पृष्ठभूमि में एक करता है।

जैसे

$ dd if=/dev/zero of=/tmp/foo bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0798775 s, 1.3 GB/s
$ mke2fs /tmp/foo
mke2fs 1.42.9 (28-Dec-2013)
....


$ losetup    
$ mount -o loop /tmp/foo /mnt1    
$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         1  0 /tmp/foo
$ umount /mnt1
$ losetup
$ 

losetupयदि आपकी फ़ाइल छवि में विभाजन अंतर्निहित हैं तो आपको सीधे कॉल करने की आवश्यकता हो सकती है।

जैसे अगर मेरे पास यह छवि है:

$ fdisk -l /tmp/foo2      

Disk /tmp/foo2: 104 MB, 104857600 bytes, 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1f25ff39

     Device Boot      Start         End      Blocks   Id  System
/tmp/foo2p1            2048      204799      101376   83  Linux

मैं इसे सीधे माउंट नहीं कर सकता

$ mount -o loop /tmp/foo2 /mnt1
mount: /dev/loop0 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error

लेकिन अगर मैं उपयोग करता हूं losetupऔर kpartxफिर मैं विभाजन का उपयोग कर सकता हूं:

$ losetup -f /tmp/foo2
$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /tmp/foo2
$ kpartx -a /dev/loop0
$ mount /dev/mapper/loop0p1 /mnt1
$

आपको स्पष्ट रूप losetupसे उपयोग करने की आवश्यकता नहीं है , बस उपयोग करें mount -o loop,offset=$((512*2048)), जहां 512सेक्टर आकार है, और विभाजन के रूप में 2048क्या fdiskदिया गया Startहै।
रुस्लान

हां, यह केवल उपयोग का एक उदाहरण था। इस विशिष्ट उदाहरण में ऑफसेट गणना करना आसान हो सकता है, लेकिन उपयोग के मामले हो सकते हैं (उदाहरण के लिए एक से अधिक विभाजन आप एक ही समय में माउंट करना चाहते हैं) जहां यह सिर्फ losetupऔर सिर्फ आसान हो सकता है kpartx। उपकरण को कड़ी मेहनत करने दें :-)
स्टीफन हैरिस

18

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

कई मामलों में छवियों को बढ़ते समय लूप उपकरणों पर विचार करने की कोई आवश्यकता नहीं है क्योंकि mountआपके लिए सब कुछ ध्यान रखता है; लेकिन लूप डिवाइस अभी भी शामिल हैं। losetup -l -aउन्हें दिखाएगा।

यह भी देखें कि माउंट और माउंट-लूप के बीच अंतर क्या है


तो ब्लॉक डिवाइस-ओइज़ेशन को किसके द्वारा नियंत्रित किया जाता है mount?
corsel

2
हां, आदि को mountध्यान में रखते losetupहुए-o loop
स्टीफन किट

@ कोर्सेल, ज्यादातर मामलों में आपके लिए माउंट लॉसेटअप ठीक काम करता है, लेकिन एक डिस्क छवि से कई विभाजन बढ़ते जैसे अपवाद भी हैं।
हल्दी

11

आप लिनक्स पर लग रहे हैं और लिनक्स उस सुविधा के लिए एक गलत नाम का उपयोग करता है।

मैंने fbkसनोस-4.0 पर 1988 में उस सुविधा का आविष्कार किया था और मैं उस सुविधा को कॉल करता हूं - फाइल ब्लाक डिवाइस का अनुकरण करती है।

पृष्ठभूमि यह है कि डिवाइस ड्राइवर एक सादे फ़ाइल के शीर्ष पर एक ब्लॉक डिवाइस का अनुकरण करता है। आपको इसकी आवश्यकता है क्योंकि एक फाइल सिस्टम एक फाइल सिस्टम के लिए पृष्ठभूमि भंडारण के रूप में एक सादे फाइल का उपयोग नहीं कर सकता है। इसके बजाय एक ब्लॉक डिवाइस की जरूरत है और यही वह है जो fbkअनुकरण करता है।

कुछ समय के बाद से कुछ लोगों ने कार्यक्रम mountको थोड़ा और अधिक चतुर बना दिया और ऐसे माउंट कार्यान्वयन होते हैं जो स्वचालित रूप से fbkएक फ़ाइल के लिए एक उदाहरण बनाते हैं यदि mountप्रोग्राम यह पता लगाता है कि ब्लॉक डिवाइस होने की उम्मीद करने वाला तर्क इसके बजाय एक योजना फ़ाइल प्रतीत होता है।


3
बहुत प्रभावशाली सीवी आपको अपने प्रोफाइल पर मिला। सम्मान ...
corsel

11
आपकी पोस्ट कुछ हद तक उपयुक्त है। आपने पहला कार्यान्वयन लिखा हो सकता है, लेकिन लिनक्स एक अलग कार्यान्वयन का उपयोग करता है, इसलिए इसके 'गलत' नाम का उपयोग नहीं करते हैं, जो आपने अपने कार्यान्वयन के लिए चुना है, उससे अलग है।
ऑस्टिन हेमेलर्गरन

4
मैंने कभी नहीं कहा कि उन्होंने सही नाम का इस्तेमाल किया है, मैंने सिर्फ इतना कहा कि यह दावा करना गलत था कि आप एक राय वाले अभिजात्य व्यक्ति की तरह लग रहे हैं।
ऑस्टिन हेमेलर्गरन

9
"लूपबैक" का नाम "लूपबैक" के लिए छोटा है और यह दर्शाता है कि ब्लॉक डिवाइस पर संचालन वीएफएस के लिए "लूप बैक" हैं। सोलारिस 8 ने एक lofi("लूपबैक फ़ाइल") डिवाइस पेश किया जो समान रूप से काम करता था; बीएसडी ने उन्हें नाम vnd("vnode डिस्क") के तहत पेश किया था, इसलिए इस अवधारणा का वर्षों में कई अलग-अलग नाम रहा है।
कैफे

2
सीएस में दो सबसे कठिन समस्याएं: कैश सुसंगतता, पहचानकर्ता नामकरण और ऑफ-बाय-वन त्रुटियां।
जेन्स

1

यहां तक ​​कि अगर फाइलों से बढ़ते फाइल सिस्टम के लिए पृष्ठभूमि में इसकी आवश्यकता नहीं थी, तो भी आपको किसी ड्राइवर या प्रोग्राम का उपयोग करके किसी भी सेटअप के लिए इसकी आवश्यकता होगी जो पूरी तरह से एक ब्लॉक डिवाइस की उम्मीद करता है। Nbd (नेटवर्क ब्लॉक डिवाइस) सर्वर, कंपाउंड ब्लॉक डिवाइस ड्राइवर जैसे mdraid, lvm आदि के बारे में सोचें…।

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