लिनक्स लाइव सिस्टम से वीएचडी डिस्क छवि कैसे बनाएं?


29

एक बार और, मुझे अपने अन्य स्रोतों (मुख्य रूप से Google ;-)) के रूप में सुपरयूज़र में यहाँ विशेषज्ञों का सहारा लेना पड़ा, जो बहुत मददगार साबित नहीं हुआ ...

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

  • मैं गंतव्य फ़ाइल को VHD छवि बनाना चाहूंगा , क्योंकि विंडोज 7 इसे नेटली माउंट कर सकता है, यहां तक ​​कि नेटवर्क पर भी और कई अन्य प्रोग्राम इसका उपयोग कर सकते हैं (वर्चुअलबॉक्स, ...)
  • जिस डिस्क की मैं छवि बनाने की कोशिश कर रहा हूं, उसमें एक विंडोज़ एक्सपी स्थापित है, इसलिए सिद्धांत रूप में, मैं disk2vhdउपयोगिता का उपयोग कर सकता हूं , लेकिन मैं एक ऐसा समाधान ढूंढना चाहूंगा जिसमें बूटिंग की आवश्यकता न हो, जो कि विंडोज़ एक्सपी स्थापित हो (यानी डिस्क को केवल पढ़ने के लिए रखें )
  • इस प्रकार मैं एक ऐसे समाधान की खोज कर रहा था जिसमें किसी प्रकार का लाइव सिस्टम (USB स्टिक या नेटवर्क से चल रहा हो)

हालाँकि, मेरे पास जो भी समाधान आए हैं, वे disk2vhdया तो ddकमांड का उपयोग करते हैं या लिनक्स के तहत कमांड का उपयोग करते हैं , जो डिस्क की पूरी प्रतिलिपि (यानी यहां तक ​​कि खाली ब्लॉक) करता है और वीएचडी फ़ाइल का उत्पादन नहीं करता है। क्या लिनक्स के तहत एक उपकरण / कार्यक्रम है जो सीधे वीएचडी फ़ाइल बना सकता है? या खाली खंडों के लिए जगह आवंटित किए बिना, डीडी का उपयोग करके बनाई गई कच्ची डिस्क छवि को वीएचडी फ़ाइल में बदलना संभव है? आप कैसे आगे बढ़ेंगे?

हमेशा की तरह, किसी भी सलाह या टिप्पणी की बहुत सराहना की है !!


BSD में mkimg नामक एक उपकरण होता है जो अन्य स्वरूपों के बीच एक vhd छवि बना सकता है।
जूलियन

जवाबों:


30

भविष्य के संदर्भ के लिए, यहां बताया गया है कि आखिरकार मैं आगे कैसे बढ़ा, विभिन्न मुद्दों या कमियों पर कुछ टिप्पणियों के साथ:

1. लिनक्स लाइव सिस्टम के साथ मशीन को बूट करें

पहले चरण में लिनक्स लाइव सिस्टम का उपयोग करते हुए डिस्क को छवि में रखने वाली मशीन को बूट करना था।

नोट: मेरा पहला विचार उबंटू लाइव यूएसबी डिस्क का उपयोग करना था, लेकिन मशीन ने यूएसबी से बूटिंग का समर्थन नहीं किया, इसलिए मुझे एक पुराने नोपेपिक्स लाइव सीडी का उपयोग करना आसान लगा ।

2. डिस्क का उपयोग करके छवि ddऔर डेटा को पाइप के माध्यम सेssh

फिर, मैंने अपने स्थानीय सर्वर ddपर डेटा का उपयोग करके और पाइपिंग करके सभी डिस्क सामग्री को एक फ़ाइल छवि पर कॉपी किया ssh:

$ dd if = / dev / hdX bs = 4k conv = noerror, सिंक | ssh -c ब्लोफ़िश myuser @ myserver 'dd of = myfile.dd'

यहां कुछ टिप्पणियां: यह विधि सभी डिस्क सामग्री को पढ़ेगी, इसलिए इसमें बहुत लंबा समय लग सकता है (80Gb डिस्क के लिए मुझे 5hrs लिया गया)। अड़चन नेटवर्क नहीं है, लेकिन वास्तव में डिस्क की गति पढ़ी जाती है। प्रतिलिपि लॉन्च करने से पहले, मैं यह सुनिश्चित करने के लिए BIOS / डिस्क / सिस्टम मापदंडों की जांच करने की सलाह देता हूं कि यह सुनिश्चित करने के लिए कि डिस्क और मदरबोर्ड अपनी उच्चतम संभव गति से काम कर रहे हैं (इसे कमांड का उपयोग करके hdparm -iऔर साथ परीक्षण चलाकर जांच की जा सकती है hdparm -Tt /dev/hdX)।

नोट: ddऑपरेशन की प्रगति को आउटपुट नहीं करता है, लेकिन हम USR1 सिग्नल को ddदूसरे टर्मिनल से PID प्रक्रिया में भेजकर ऐसा करने के लिए बाध्य कर सकते हैं :

$ मार -USR1 PIDofdd

3. अप्रयुक्त स्थान को पुनः प्राप्त करें

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

ऐसा करने के लिए, मैंने छवियों को लूपबैक डिवाइस के रूप में माउंट किया:

$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file

नोट: डिस्क छवि के भीतर विभाजन की शुरुआत का संकेत ऑफसेट partedछवि फ़ाइल का उपयोग करके प्राप्त किया जा सकता है :

$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit?  [compact]? B
(parted) print
Model:  (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type      File system  Flags
 1      32256B        21936821759B  21936789504B  primary   ntfs         boot
 2      21936821760B  80023749119B  58086927360B  extended               lba
 5      26608813056B  80023749119B  53414936064B  logical   ntfs

NOTE2: डिफ़ॉल्ट लिनक्स कर्नेल NTFS ड्राइवर रीड-ओनली एक्सेस प्रदान करता है, इस प्रकार यह आवश्यक है कि यूजरस्पेस ntfs-3gड्राइवर को इंस्टाल करें और डिस्क पर लिखकर एक त्रुटि उत्पन्न करें!

4. VBoxManage का उपयोग करके VHD छवि बनाएं

इस बिंदु पर, हम कच्ची छवि को VHD फ़ाइल में बदलने के लिए VirtualBox उपयोगिताओं का उपयोग कर सकते हैं:

VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD

आप उपयोग कर VHD छवि माउंट करने के लिए सक्षम होना चाहिए vdfuseया qemu-nbd(अधिक जानकारी: या यह एक .img फ़ाइलों में कनवर्ट करने askubuntu.com/questions/19430/... )
फ्रांसेस्को

1
धीमी मशीन पर, ssh का एन्क्रिप्शन एक अड़चन हो सकता है। यदि आपको एन्क्रिप्शन की आवश्यकता नहीं है, तो इसके बजाय netcat (मैन एनसी) का उपयोग करने पर विचार करें।
जेरेमी

2
आप शून्य फ़ाइल बनाने से पहले माउंटेड डिस्क में सीडी लगाना भूल गए: माउंट-लो लूप, आरडब्ल्यू, ऑफसेट = 26608813056 -t ntfs-3G /mnt/mydisk/myfile.dd / mnt / tmp_mnt; cd / mnt / tmp_mnt; cat / dev / zero> zero.file; rm zero.file; इसके अलावा, आप तुरंत प्रगति दिखाने के लिए dd के बजाय pv का उपयोग कर सकते हैं।
स्मारलिंक

1
आपको संभवतः dd के साथ एक बड़े ब्लॉक आकार का उपयोग करना चाहिए, उदाहरण के bs=4Mलिए प्रक्रिया में तेजी लाने के लिए।
फ्रिट्ज

13

मैं ठीक उसी तरह की कोशिश कर रहा था जैसे कि ओपी (एक विंडोज इंस्टॉलेशन को बचाते हुए) और इसके लिए एक नया टूल तैयार कर रहा था ntfsclone2vhd

आप तो बस कुछ इस तरह से करेंगे:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd

1
खेल के लिए 3 साल की देर है, लेकिन यह पेज प्रासंगिक कीवर्ड के लिए शीर्ष Google हिट है, इसलिए यह भविष्य में कुछ गरीब आत्माओं की मदद कर सकता है।
यरकहा

2
इस समाधान के लिए शीर्ष पर जाने की आवश्यकता है। यह अब तक का सबसे आसान समाधान है ( makeलिनक्स की प्रतियों के साथ बार ) जो मैंने कई घंटों की खोज में पाया है। पहल करने के लिए ब्रावो यिरखा!
user66001

3

वर्चुअलबॉक्स और ntfsprogsपैकेज : एक दृष्टिकोण कुछ आसान तकनीकों का उपयोग करना है।

वर्चुअलबॉक्स के हाल के संस्करण आपको वीएचडी हार्ड डिस्क फ़ाइलों को बनाने की अनुमति देते हैं, जबकि उपयोगिता ntfsprogsप्रदान करते हैं ntfsclone। जैसा कि इसके नाम से पता चलता है, ntfscloneक्लोन NTFS फाइलसिस्टम को क्लोन करता है, और मुझे विश्वास है कि यह फाइल सिस्टम स्तर पर ऐसा करता है, बिना डिस्क डिस्क पर लंघन।

इसलिए, VirtualBox में एक नया VM बनाने के लिए, और इसके लिए एक नई, खाली VHD-file ड्राइव का प्रावधान करें। VHD ड्राइव को केवल उस डेटा के आकार जितना बड़ा होना चाहिए, जिस भौतिक ड्राइव पर आप क्लोन करना चाहते हैं (वास्तव में, इसे थोड़ा बड़ा करें, कुछ विगेल रूम की अनुमति दें)।

अगला, एक लिनक्स लाइव सीडी ढूंढें जिसमें ntfsprogsपैकेज शामिल है , साथ ही साथ openssh-server। मुझे इसके लिए सिस्टम रेस्क्यू सीडी पसंद है , लेकिन बहुत ज्यादा किसी डेबियन या उबंटू-आधारित लाइव सीडी को भी काम करना चाहिए।

लिनक्स लाइव सीडी के साथ वर्चुअलबॉक्स वीएम को बूट करें, और sshdवीएम के भीतर शुरू करें ताकि आप दूरस्थ रूप से इस पर कमांड निष्पादित कर पाएंगे। विभाजन VHD ड्राइव को स्पष्ट रूप से विभाजित करें, जो भी विभाजन उपकरण आपको पसंद है (मुझे सादे पुराने पसंद हैं fdisk, लेकिन मैं कुछ हद तक पुराना स्कूल हूं) का उपयोग कर रहा हूं।

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

ntfsclone --save-image -o - /dev/sdXX |
    ssh root@VirtualBox-VM 'ntfsclone --restore-image --overwrite /dev/sdYY -'

कहा पे:

  • /dev/sdXX उस भौतिक ड्राइव का डिवाइस नाम (स्थानीय मशीन पर) जिसे आप क्लोन करना चाहते हैं, और
  • /dev/sdYY VHD गंतव्य ड्राइव का डिवाइस नाम (VM में) है।

स्पष्टीकरण: ntfscloneपाइपलाइन में पहला कमांड स्रोत NTFS फाइल सिस्टम की एक छवि को निकालता है और इसे ssh सुरंग के माध्यम से बाहर भेजता है, जबकि दूसरी ntfscloneकमांड छवि प्राप्त करता है और इसे VHD ड्राइव पर पुनर्स्थापित करता है।

एक बार जब ऑपरेशन पूरा हो जाता है, तो VHD फ़ाइल में मूल भौतिक डिस्क का एक फ़ाइल-फॉर-फ़ाइल सटीक क्लोन होना चाहिए (किसी भी हार्डवेयर त्रुटियों को खराब क्षेत्रों की तरह, जिससे प्रक्रिया समय से पहले समाप्त हो सकती है)।

एक आखिरी चीज जो आप करना चाहते हैं वह है chkdskVHD ड्राइव पर विंडोज चलाना, बस यह सुनिश्चित करने के लिए कि क्लोनिंग ने कोई समस्या पेश नहीं की (यह नहीं होना चाहिए, लेकिन हे, मैं इन चीजों के बारे में थोड़ा पागल हूं)।


नमस्ते, आपके प्रस्तावित समाधान के लिए बहुत-बहुत धन्यवाद! अंत में, मैंने एक और विधि का उपयोग किया क्योंकि मेरे पास बैकअप के लिए डिस्क पर कई विभाजन थे और आसानी से बैकअप के लिए मशीन पर वर्चुअलबॉक्स का उपयोग नहीं कर सकते थे (विवरण के लिए मेरा उत्तर देखें), लेकिन वर्चुअलबॉक्स और ssh का उपयोग करने का आपका सुझाव बहुत उपयोगी साबित हुआ!
फेडरिको

1

(मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन शायद यह कम से कम दूसरों की मदद करेगा।)

क्या आपको वास्तव में लिनक्स के तहत छवि बनाने में सक्षम होना चाहिए? मुझे लगता है कि आप वीएचडी को विंडोज हार्ड ड्राइव का बैकअप देने की कोशिश कर रहे हैं। मुझे नहीं लगता कि VHD कंटेनर में लिनक्स फाइल सिस्टम को एनकैप्सुलेट किया जा सकता है।

एक मुफ्त SysInternals उपयोगिता जिसे Disk2vhd कहा जाता है, वर्तमान में चल रहे Windows XP या नए सिस्टम के VHD बनाएगी । यह USB माउंटेड ड्राइव की इमेजिंग के लिए भी काम करना चाहिए।


0

मैं हाल ही में एक लाइव लिनक्स सिस्टम को क्लोन करने का भी प्रयास करता हूं।

फिर भी कोई सटीक उपाय नहीं। 2 तरीके सुझाएं:

(1) VMware vConverter (मुक्त)

आपको गंतव्य के रूप में vsphere hypervisor (मुक्त) स्थापित करने की आवश्यकता है।

मैंने यह दिन पहले किया था, सफल होने का कोई सौभाग्य नहीं। लगता है कि मैं एक VirtualBox पर vSphere स्थापित करता हूं।

यहां देखें: http://xrubenx.blogspot.com.au/2010/01/vmware-converter-standalone.html

(2) इस एक का उपयोग करें http://www.r1soft.com/tools/linux-hot-copy/

मैं इस सप्ताह के अंत में R1Soft हॉटकॉपी की कोशिश करूंगा।


मैं इसकी वजह से हॉट-कॉपी की कोशिश नहीं करूंगा
नेल्सन

0

तुम भी खिड़कियों के साथ एक जीवित सीडी का उपयोग कर सकते हैं। यह Microsoft से आधिकारिक नहीं है, लेकिन काम करता है। आप इसे सीडी या यूएसबी ड्राइव पर रख सकते हैं।

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