एकल लूप डिवाइस के रूप में कई img फ़ाइलों को माउंट करना


19

वहाँ एक डिस्क img फ़ाइल है कि भागों में टूट गया है और इसे एक पाश डिवाइस के रूप में माउंट करने का एक तरीका है?


1
कैसे टूटा है? क्या प्रारूप है? इसके लिए कुछ फ़्यूज़ मैजिक हो सकता है अगर यह एक विशेष प्रारूप है, लेकिन मुझे संदेह है कि उत्तर उन्हें एक साथ कैट करना है!
कालेब

मैं डिवाइस के प्रारूप से उन फ़ाइलों तक सीमित हूं जो 4 गीगा से कम हैं। हालांकि डिवाइस के लिए मेरे पास रूट एक्सेस है। क्या मैं LVM
MageProspero

जवाबों:


16

मुझे नहीं लगता कि आप इसे कर सकते हैं लेकिन अगर आपके पास पर्याप्त जगह है तो यह काम करना चाहिए:

# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k

# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01

# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1

# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>

# Mount the new filesystem
mount /dev/md0 /mnt

आप मूल फ़ाइलों से केवल एक RAID सरणी नहीं बना सकते हैं क्योंकि RAID डिस्क में एक विशिष्ट हेडर होता है जहां डिस्क की संख्या, RAID स्तर, आदि को संग्रहीत किया जाता है। यदि आप ऐसा करते हैं, तो आपकी मूल फ़ाइलों का हिस्सा अधिलेखित हो जाएगा।

आप mdadm --buildमेटाडेटा के बिना एक सरणी बनाने के लिए उपयोग कर सकते हैं लेकिन फिर आपको वास्तव में पहले एक बैकअप बनाना चाहिए। या यदि केवल पढ़ने के लिए माउंट पर्याप्त है:

losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt

तुम ऐसा क्यों करना चाहते हो? यदि आपका फाइल सिस्टम> 4 जीबी फाइल को संभाल नहीं सकता है, तो आपको बस किसी एक पर स्विच करना चाहिए।


यह डिवाइस मैपर के साथ भी करने में सक्षम हो सकता है, लेकिन उपरोक्त आसान है।
वोडिन

स्वीकार करने के लिए इतना लंबा समय लेने के लिए क्षमा करें, बहुत अच्छा जवाब। मैं सामान्य परिस्थिति में ऐसा नहीं करूंगा, यह एक साहसिक मोड का सवाल है।
MageProspero

2
आप शायद truncateइसके बजाय उपयोग करना चाहते हैं ddक्योंकि यह बहुत तेज़ है (यह एफएस के लिए वास्तविक लेखन नहीं करता है लेकिन सिर्फ इनोड और मार्क फ़ाइल को आवंटित करता है जिसमें केवल छेद होता है)।
मैकीज पाइचोटका

अच्छा लगा। मुझे नहीं पता था।
स्ट्राइबिका

अनुभव से, यदि आप बड़ी क्षमता वाले क्लाउड-आधारित बैकअप का उपयोग करते हैं या क्रैशप्लान जैसे भुगतान समाधान या Google ड्राइव का भुगतान करते हैं तो यह एक बहुत बड़ी फ़ाइल के बजाय छोटी विभाजन फ़ाइलों का उपयोग करने के लिए एक बहुत अच्छा विचार है। असफल फ़ाइल डाउनलोड की स्थिति में, आपको केवल 100 GB की पूरी चीज़ के बजाय 1 GB को पुनः डाउनलोड करना होगा।
RAKK

3

एक विभाजन डिस्क छवि (या विभाजन छवि) को माउंट करने के लिए आपको affuseउन पुष्टिकरणों का उपयोग करना चाहिए जो वर्तमान में यहां बनाए हुए हैं: https://github.com/sshock/AFFLIBv3

इसलिए, यदि आपके पास कोई फ़ाइल है, तो कई उप-विभाजनों में विभाजित करें test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009

तब आप उनके साथ वस्तुतः जुड़ सकते हैं affuse

# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw

(यह फ़ाइल 000 के साथ शुरू होने वाली सभी फ़ाइलों को एक साथ जोड़ती है, फिर 001, 002,…)

और फिर छवि को माउंट करें

mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test

उपयोग यहां वर्णित है और कुछ उदाहरण यहां दिए गए हैं । संकलन या स्थापित करने के बाद या यहां एक मैनपेज भी उपलब्ध है

पुनश्च: मेरे लिए affuseकेवल तभी काम किया गया था जब स्प्लिट फ़ाइलों का आकार था जो 512 बाइट्स से अधिक था।


4
मैंने बस यही तरीका आजमाया। इसकी एक प्रमुख चेतावनी है: यह केवल आपको केवल पढ़ने के लिए अपनी छवि को माउंट करने की अनुमति देगा।
RAKK

जब तक आपके पास केवल सैकड़ों और हजारों फ़ाइल विखंडू न हों, तब तक बढ़िया काम करता है। एक रेखीय छापे विभाजन बनाने के लिए mdadm का उपयोग करना बेहतर हो सकता है: unix.stackexchange.com/a/98779/22709
Jay Taylor

1

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

यहां आप फ्यूज https://github.com/libfuse/python-fuse/blob/master/example/hello.py का उपयोग करने के तरीके का उदाहरण पा सकते हैं


धन्यवाद, मुझे वास्तव में उस दिन की मेटा
सर्कुलरनेस के

0

वीएमवेयर वीएम बनाने के लिए एक समाधान के लिए अब तक मुझे सबसे करीबी बात पता है। आप Rescatux या Knoppix की तरह एक लिनक्स लाइव सीडी शुरू करते हैं, आप अपने होस्ट कंप्यूटर पर एक SMB साझा फ़ोल्डर बनाते हैं, आप अपने VM पर उस SMB साझा को माउंट करते हैं, और फिर आप ddवर्चुअल HD में छवि बनाते हैं। डिफ़ॉल्ट रूप से VMware अपनी डिस्क छवियों को विभाजित फ़ाइलों के रूप में बचाता है, इसलिए यह सीधे एक डिस्क छवि को कई फाइलों में विभाजित करने के लिए पढ़ने के लिए निकटतम चीज है।

बाद में, यदि आप अपने होस्ट कंप्यूटर से फ़ाइलों को एक्सेस करना चाहते हैं, तो आप छवि में एक दूसरे वर्चुअल एचडी को जोड़ने और वहां फाइलों को कॉपी करने का प्रयास कर सकते हैं। फिर आप VM पर एक SMB साझा फ़ोल्डर सेट करें और इसे अपने होस्ट से कनेक्ट करें। इस तरह, आप उदाहरण के लिए, उस घटना में FAT32 की 4 जीबी फ़ाइल सीमा का उल्लंघन कर सकते हैं जो आप एक iPod क्लासिक का उपयोग कर रहे हैं (जो कि केवल fat32), या आपके स्मार्टफोन का SD कार्ड (आमतौर पर आपको एक कस्टम रोम स्थापित करना होगा एक्सटर्नल स्टोरेज पर एक्सट्रीम 3 या एनटीएफएस का उपयोग करें, इसके लिए आपको सैमसंग या मोटोरोला जैसे लोकप्रिय निर्माता से फोन की आवश्यकता होती है, इसलिए यदि आपके पास एक चीनी स्मार्टफोन है जिसे आप स्टम्प्ड करते हैं)।

यह वास्तव में एक कुशल समाधान नहीं है, हालांकि, लेकिन जब से मैं अपने iPod क्लासिक या स्टॉक रॉम के साथ अपने सैमसंग स्मार्टफ़ोन पर fat32 के अलावा किसी भी FS का उपयोग करने में सक्षम नहीं होने के कारण सीमित हो गया हूं, मैंने पूरे इंटरनेट पर बहुत अधिक परिमार्जन किया है अतीत और अभी भी इसके लिए एक कुशल समाधान खोजने में सक्षम नहीं है। मुझे खुद भी लिखना पड़ सकता है।

पुनश्च: उल्लेख करना भूल गया, कि अगर आप विंडोज पर हैं तो ऐसा करने का एकमात्र तरीका हो सकता है।


इस समस्या का दौरा किए कुछ समय हो गया है। वह अभी भी मेरे पास है। इसके अलावा, मेरे पास यह वही कारण है जो आप करते हैं। मुझे आश्चर्य है कि यदि आप एक ऐसी प्रक्रिया ला सकते हैं जिसमें इसकी खुद की कस्टम फ़ाइल प्रणाली है, तो ईमानदारी से मुझे यह प्रयास करना अच्छा लगेगा। मुझे पता है कि मैं इसे नोड में कर सकता हूं। मुझे इंटरप्रेटर को जड़ तक लाने में सफलता मिली है। मुझे नहीं पता कि यह आपकी समस्या को हल करता है, हालांकि अगर मैंने किया। मेरे हार्डवेयर सैमसंग आकाशगंगाओं पर यह ठीक है। मुझे बताएं कि क्या आप इस समस्या के लिए कुछ पर एक साथ काम करना चाहेंगे।
MageProspero

-1

बीएसडी के तहत आप माउंट करने के लिए यूनियन विकल्प का उपयोग कर सकते हैं। लिनक्स के तहत आप यूनियनएफएस को एक कोशिश दे सकते हैं।


2
यह दूर से प्रासंगिक नहीं दिखता है। क्या आपने प्रश्न को गलत बताया?
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.