फाइलसिस्टम UUID (2 समान UUID) कैसे बदलें?


26

मेरे पास VMware में एक फेडोरा गेस्ट ओएस है। मैं /bootविभाजन का विस्तार करना चाहता हूं , इसलिए मैं इस वीएम में एक और आभासी डिस्क जोड़ता हूं, और डिस्क को क्लोन करने का प्रयास करता हूं।

इसके बाद dd if=/dev/sda1 of=/dev/sdb1, blkidरिपोर्ट करें कि / dev / sda1 और / dev / sdb1 में समान UUID / GUID है।

यह अजीब है कि ब्रह्मांड में 2 समान UUID हैं, उनमें से एक को दूसरे UUID मान में कैसे बदला जाए?


अद्यतन 2017-01-25

विषय बदल गया, यहाँ UUID का अर्थ है फ़ाइल सिस्टम UUID, विभाजन UUID नहीं।

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


10
यह बिल्कुल भी अजीब नहीं है। जब आप dd के साथ एक विभाजन को क्लोन करते हैं, तो निश्चित रूप से क्लोन में मूल के समान ही UUID होगा। यूयूआईडी विभाजन का सिर्फ मेटाडेटा है - भौतिक डिस्क की कुछ अंतर्निहित संपत्ति नहीं।
एंड्रयू मेडिको

एंड्रयू को धन्यवाद, मैंने सोचा कि जब नया विभाजन बनाया गया है, तो यूयूआईडी एक गणना मूल्य है। अब मुझे पता है कि यह सिर्फ एक मेटाडाटा सामान है।

जवाबों:


28

एक नया UUID उत्पन्न करने के लिए, एक का उपयोग कर सकते हैं:

$ uuidgen

वास्तव में UUID को बदलने के लिए फ़ाइल सिस्टम निर्भर है।

पूर्व-परिवार फाइलसिस्टम को मानते हुए

# tune2fs -U <output of uuidgen> /dev/sdb1

या अगर आपको विश्वास है कि uuidgen काम करने वाला है:

# tune2fs -U $(uuidgen) /dev/sdb1

मान लें कि btrfs फ़ाइल सिस्टम

# btrfstune -U $(uuidgen) /dev/sdb1

UUID को सुपरब्लॉक में संग्रहीत किया जाता है, इसलिए फाइल सिस्टम की एक बाइट-फॉर-बाइट कॉपी में एक ही UUID होगा।


14
एंडी, आपको uuidgen कमांड की भी आवश्यकता नहीं है: "tune2fs -U random / dev / sdb1" को ठीक काम करना चाहिए
grzuy

इसे FAT पर कैसे चलाएं?
CMCDragonkai

@CMCDragonkai, मेरा जवाब देखें
लियूयान

13

उपयोग:

tune2fs -U random /dev/sdb1

अगर यह एक एक्सट्रीम फाइल सिस्टम है, या

xfs_admin -U generate /dev/sdb1

अगर यह एक xfs फाइल सिस्टम है।


दूसरे विभाजन का कारण एक ही UUID है क्योंकि ddसिर्फ एक फ़ाइल से दूसरे डेटा ( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1) की प्रतिलिपि बनाता है ; ddयह नहीं जानता कि विभाजन क्या है या UUID कैसे उत्पन्न होता है, इसलिए इसने UUID सहित सभी डेटा की प्रतिलिपि बनाई है, जो कि विभाजन की शुरुआत के पास फाइलसिस्टम सुपरब्लॉक में संग्रहीत है।


वैसे,
मुझे भी लगता है कि यूयूआईडी (यूनिवर्सली यूनिक आइडेंटिफायर) एक अजीब नाम है। इसे पीजीयूआईडी (संभवत: ग्लोबली यूनिक आइडेंटिफायर) कहा जाना चाहिए, या इससे भी बेहतर, सिर्फ ARLN (ए रिस्पॉन्सिबल लार्ज नंबर)।


मैंने / dev / sda6 पर अपने एक विभाजन का समर्थन किया है। मुझे निम्न त्रुटि मिलती है: xfs_admin -U जनरेट / dev / sda6 ERROR: फ़ाइल सिस्टम में लॉग में मूल्यवान मेटाडेटा परिवर्तन है जिसे पुनः चलाने की आवश्यकता है। लॉग को फिर से चलाने के लिए फाइलसिस्टम को माउंट करें, और xfs_admin को फिर से चलाने से पहले इसे अनमाउंट करें। यदि आप फ़ाइल सिस्टम को माउंट करने में असमर्थ हैं, तो लॉग को नष्ट करने और मरम्मत का प्रयास करने के लिए xfs_repair -L विकल्प का उपयोग करें। ध्यान दें कि लॉग को नष्ट करने से भ्रष्टाचार हो सकता है - कृपया ऐसा करने से पहले फाइल सिस्टम को माउंट करने का प्रयास करें।
गुड्डे

+1 गंदे गंदे झूठ के लिए जो UUID है ... क्या मैं "दुर्भाग्य से, अनोखी आईडी नहीं" के लिए UNUID का सुझाव भी दे सकता हूं
Foon

खैर, मैं सुझाव दूंगा कि विश्व स्तर पर यूनिक IDentifier (GUID) - "ग्लोबली" जैसा कि "आम तौर पर", या "सामान्य रूप से" हो। ओह रुको ... यह वास्तव में इसका मूल नाम नहीं है? ...
क्वार्क

11

Ext2 / ext3 / ex4 और xfs के अलावा, आप निम्न फाइल सिस्टम या ब्लॉक डिवाइस के UUID को भी बदल सकते हैं।

विनिमय

swaplabel -U $NEW_UUID

सॉफ्टवेयर RAID (एमडी छापे)

एमडी RAID के लिए, आपको पहले RAID को रोकना होगा, फिर पुन: संयोजन करते समय UUID को अपडेट करना होगा। इसलिए यदि आपका RAID आरोहित है /, तो आपको ऑफ़लाइन मोड में UUID को अपडेट करने की आवश्यकता है - इसे करने के लिए एक लाइव सीडी का उपयोग करें।

  1. mdadm --stop $RAID_DEVICE
  2. mdadm --assemble $RAID_DEVICE --update=uuid --uuid=$NEW_UUID $MEMBER_DEVICES...

उदाहरण:

  1. mdadm --stop /dev/md127
  2. mdadm --assemble /dev/md127 --update=uuid --uuid=2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D /dev/sda2 /dev/sdb2

बाद UUID अद्यतन किया गया है, तो आप अद्यतन करना पड़ सकता grub.cfg( rd.md.uuid=$NEW_UUIDमें linux/linuxefi/linux16कमांड लाइन) और / या fstabऔर / या mdadm.confऔर / या update-initramfs(Debian परिवार) और / या dracut --forceआप सफलतापूर्वक अगली बार बूट कर सकते हैं कि (रेड हैट परिवार) तो।

LUKS (क्रायसिपेटअप)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

उदाहरण:

cryptsetup luksUUID --uuid=e0c0e0c0-e0c0-e0c0-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop

एफएटी / एनटीएफएस / एक्सफ़ैट

यह एक और कहानी यहाँ है, वर्तमान में इन filesystems के फाइल सिस्टम UUID को संशोधित करने के लिए कोई उपयोगिताओं नहीं हैं( रीचार्ट का उत्तर - mlabelउपकरण देखें), लेकिन हम ऐसा करने के लिए डिस्क पर कच्चे डेटा को संशोधित कर सकते हैं।

चेतावनी, डिस्क पर कच्चे डेटा को संशोधित करना खतरनाक है, और सावधान ऑपरेशन के बिना डेटा खो सकता है।

यहां डिस्क पर कच्चे डेटा को संशोधित करने के लिए विस्तार से कदम हैं hexedit

  1. blkid, फाइल सिस्टम के UUID को कागज पर लिखें, या इसे याद रखें। FAT / exFAT का 1122-3344UUID स्ट्रिंग दिखता है , NTFS का UUID स्ट्रिंग जैसा दिखता है 1122334455667788
  2. हेक्सेडिट का उपयोग करके विभाजन डिवाइस खोलें

    hexedit <partition device such as /dev/sda1>

  3. प्रेस /, UUID को उल्टे क्रम में दर्ज करें (यदि blkidरिपोर्ट की गई है 1234-ABCD, तो खोज करें CDAB3412) डिस्क पर UUID डेटा खोजने के लिए।
  4. UUID स्थित हो जाने पर, उन्हें बदल दें, F2सहेजने और बाहर निकलने के लिए दबाएं ।
  5. blkid UUID को सत्यापित करने के लिए।
  6. एक बार UUID संशोधित होने के बाद, आपको अगली बार सफलतापूर्वक बूट करने के लिए grub.cfgऔर / या अपडेट करने की आवश्यकता हो सकती है fstab
  7. निष्पादित करें fsck <partition device such as /dev/sda1>और देखें "बूट सेक्टर और इसके बैकअप के बीच अंतर हैं" संदेश। इसे हल करने के लिए, "1) बैकअप के लिए मूल कॉपी करें " का चयन करें , और यदि आपसे पूछा जाए "परिवर्तन करें? (Y / n)" तो आप दबाएं y

Hfs / hfs + या hfsplus के बारे में क्या?
व्लाद

1
आप बस उपयोग कर सकते हैं mkfs.exfat -i 01234567 /dev/partitionnameजहां Fedora लिनक्स पर mkfs.exfatपैकेज एक्सफ़ैट-बर्तनों द्वारा कमांड स्थापित किया गया था । हो सकता है कि आपको अपने उत्तर में जोड़ना चाहिए, क्योंकि हेक्सिडिट संस्करण काफी खतरनाक है!
एरिक

टिप के लिए @erik धन्यवाद, लेकिन हम मौजूदा फ़ाइल सिस्टम या ब्लॉक डिवाइस पर पुराने UUID को नए UUID में अपडेट करने के लिए एक विधि की तलाश कर रहे हैं।
लियूयान

अरे @LiuYan 刘 i NTFS के लिए ntfslabelउपकरण है। askubuntu.com/questions/642591/…
aaditya1234

6

XFS के लिए, उपयोग करें: xfs_admin -U <uuid> <device>

xfs_admin -u <device>UUID देखने के लिए उपयोग करें (देखने के लिए ऊपरी केस विकल्प बनाम सेट करने के लिए कम केस विकल्प देखें)। U & L पर एक अन्य पोस्ट ने blkidसिस्टम पर सभी या कुछ UUIDs देखने के लिए कमांड को इंगित किया ।


2

VFAT के लिए आंशिक उत्तर

Ext * और xfs फाइल सिस्टम के लिए पहले से ही ठीक उत्तर हैं। लेकिन VFAT के लिए मैं दृढ़ता से mtools पैकेज के mlabel का उपयोग करने की सलाह देता हूं । हेक्स संपादकों का उपयोग करना खतरनाक है।

एक नया UUID बनाने के लिए कुछ इस तरह का उपयोग करें:

echo 'drive d: file="/dev/sdb3" exclusive' >>/etc/mtools.conf
mlabel -n d:

यदि आप मैन्युअल रूप से अनन्य एक्सेस के लिए जाँच करने का मन नहीं करते हैं (जैसा कि यहां वर्णित सभी अन्य कमांड्स के साथ), तो आप इसे एक ही कमांड के रूप में कर सकते हैंmlabel -n -i /dev/sdb3 ::
telcoM

2

BTRFS

sudo btrfstune -u /dev/sdaX

sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX

रनिंग btrfsckकी सिफारिश की गई है क्योंकि बीटीआरएफएस में यूयूआईडी को बदलना एक परमाणु ऑपरेशन नहीं है।


0

फेडोरा 27 के तहत मैंने पाया कि तर्कों का क्रम एक महत्वपूर्ण भूमिका निभाता है ... आपको पहले डिवाइस लिखना होगा, अन्यथा यूयूआईडी को नहीं बदला गया है। उदाहरण के लिए

tune2fs /dev/sdb1 -U random

1
यह असामान्य व्यवहार की तरह लगता है, कम से कम ऑनलाइन मैन पेज का विवरण -Uपहले दिया गया है device
जेफ स्कालर

0

Dd कमांड को बदलने के लिए डुप्लिकेटेड डिस्क पार्टिशन UUID / s - GParted का उपयोग करें।

GParted उपयोगकर्ता इंटरफ़ेस से, ड्राइव का चयन करें, विभाजन का चयन करें, विभाजन को अनमाउंट करें। 'विभाजन फ़ोल्डर' से 'नया UUID' चुनें, तब तक दोहराएं जब तक कि सभी dd ड्राइव डुप्लिकेट किए गए विभाजन uuid / s को प्रतिस्थापन के लिए चिह्नित न कर दें। बूट करने योग्य डिस्क के लिए, UEFI विभाजन uuid को प्रतिस्थापित न करें।

चयनित ड्राइव अक्षर और विभाजन की समीक्षा करें - सभी ठीक है? ...

GParted उपयोगकर्ता इंटरफ़ेस पर 'सभी कार्यों को लागू करें' आइकन पर क्लिक करें।
बूट करने योग्य डिस्क के लिए / etc / fstab फ़ाइल UUID = string / s और माउंट पॉइंट / s संपादित करें।:


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