- Linux Gebruik UUID's om partities betrouwbaar te identificeren, ongeacht de apparaatnaam /dev.
- Met tools zoals blkid, /dev/disk/by-uuid, lsblk of GParted kun je eenvoudig UUID's opzoeken.
- Het wijzigen van UUID's vereist het gebruik van hulpprogramma's zoals uuidgen en tune2fs, en het bijwerken van /etc/fstab en andere bestanden.
- Bij het klonen van systemen is het raadzaam om de UUID's opnieuw te genereren en fstab, crypttab en GRUB te controleren om conflicten te voorkomen.
Wanneer er zich vreemde problemen voordoen in Linux, zoals opstartproblemen, eindeloze wachttijden of schijven die voorheen probleemloos werden aangekoppeld en nu niet meer verschijnen, is de boosdoener vaak dezelfde: een UUID gewijzigd of verkeerd geconfigureerdWeten hoe je deze identificatoren kunt vinden, begrijpen en wijzigen, is bijna een verplicht onderdeel van het leerproces voor iedereen die een GNU/Linux-systeem met meerdere schijven of partities beheert.
In dit artikel zullen we dit onderwerp uitgebreid behandelen. Hoe controleer je de UUID van je schijven en hoe wijzig je deze veilig? En welke systeembestanden je moet controleren om ervoor te zorgen dat alles goed blijft opstarten. Dat zul je zien. commando's als blkid, ls -l /dev/disk/by-uuid, uuidgen, tune2fshoe ze zich verhouden tot /etc/fstabWat gebeurt er met de swap-partitie en waar moet je rekening mee houden als je een compleet systeem kloont met tools zoals Clonezilla?
Wat is een UUID en waarom wordt deze in Linux gebruikt?
De term UUID (Universal Unique IDentifier) Het verwijst naar een universeel unieke 128-bits (16-byte) identificatiecode. In de meest gangbare vorm wordt deze weergegeven als een tekenreeks van 32 hexadecimale cijfers verdeeld in vijf groepen, gescheiden door koppeltekens, volgens het patroon 8-4-4-4-12, wat in totaal 36 tekens inclusief koppeltekens oplevert. Een typisch voorbeeld zou er als volgt uitzien: 123e4567-e89b-12d3-a456-426614174000.
In GNU/Linux-systemen is deze identificatiecode aan elk item gekoppeld. inrichting opslagruimte of verdeling (ext4, XFS, swap-partities, enz.) en dient om er onafhankelijk van de klassieke apparaatnaam naar te verwijzen (/dev/sda1, /dev/nvme0n1p2enz.), wat kan veranderen als u schijven aansluit of loskoppelt. Op deze manier kan het systeem Monteer altijd dezelfde partities. hoewel de volgorde waarin de schijven worden gedetecteerd kan variëren.
Niet alle partities hebben exact dezelfde UUID-indeling: bijvoorbeeld in partities met de indeling NTFS Het is gebruikelijk om te vinden 16 hexadecimale cijfers zonder koppeltekens (64 bits), terwijl in partities FAT32 De identificator kan het volgende hebben: 8 hexadecimale cijfersDesondanks worden ze in Linux in de praktijk nog steeds beschouwd als unieke identificatoren voor elk volume.
Een van de belangrijkste toepassingen van deze codes is het bestand /etc/fstab, waar ze gedefinieerd zijn bevestigingspunten en bevestigingsmogelijkheden van elke partitie. Daar ziet u meestal een kolom met vermeldingen van het type UUID=xxxx-xxxx... in plaats van /dev/sdXjuist om stabiliteit te verkrijgen en verrassingen te voorkomen wanneer u de situatie verandert. hardware.
Methoden om de UUID van uw schijven in Linux te bekijken
Voordat je ook maar iets aanraakt, is het raadzaam om precies te weten welke partities je hebt en wat de bijbehorende UUID's zijn. Linux biedt hiervoor verschillende tools, zoals... gescheidenNaar Controleer de UUID's van alle schijven. verbonden, zowel via de commandoregel als via grafische hulpprogramma's.
UUID opvragen met het blkid-commando
Een van de meest directe manieren om identificatoren te bekijken is door gebruik te maken van blkidVoor deze opdracht zijn beheerdersrechten vere vereist, dus u moet deze uitvoeren met... sudo of als gebruiker wortelAls je het zonder parameters start, lijst Je kunt alle gedetecteerde apparaten gebruiken:
sudo blkid
La uitgang Het toont meestal regels zoals deze:
/dev/sda1: UUID="8aa6c0d2-c18e-4606-b1da-f5f1f7617f00" TYPE="xfs" PARTUUID="..."
Elke regel koppelt een apparaat /dev met UUID, het type bestandssysteem (ext4, xfs, vfatenz.) en andere metadata zoals PARTUUIDAls u alleen wilt filteren op een specifiek apparaat, kunt u dit als parameter opgeven:
sudo blkid /dev/sda1
Als u de UUID van de gewenste partitie wilt vinden zonder alle regels te hoeven controleren, kunt u gebruikmaken van... grepOm bijvoorbeeld de identificatiecode te bekijken van /dev/sdd4:
sudo blkid | grep sdd4
Hetzelfde UUID Het is degene die je later zult zien in /etc/fstab als die partitie is geconfigureerd om automatisch te worden aangekoppeld op de BootHet is dus belangrijk om hier heel duidelijk over te zijn. welke lijn overeenkomt met elk montagepunt.
Gebruik de map /dev/disk/by-uuid om links te bekijken.
Een andere zeer praktische manier om te zien welke UUID elke partitie heeft, is door de inhoud van de map weer te geven. /dev/disk/by-uuid/In die map maakt het systeem aan symbolische links waarbij elke bestandsnaam de UUID van een apparaat is en de link naar het daadwerkelijke apparaat verwijst. /dev/.
Zien de volledige lijst Voer simpelweg het volgende commando uit:
sudo ls -l /dev/disk/by-uuid/
De uitgang zal u de weg wijzen. Zoiets als:
lrwxrwxrwx 1 root root 10 ... 8aa6c0d2-c18e-4606-b1da-f5f1f7617f00 -> ../../sda1
Zo kunt u in één oogopslag zien wat De UUID komt overeen met elk /dev-apparaat. en vergelijk die informatie met wat er in voorkomt /etc/fstab of met wat andere tools laten zien, zoals lsblk o gpartedHet is met name handig bij het debuggen van problemen met assembly-code of het corrigeren van fouten in configuratiebestanden.
Bekijk UUID's en mountpunten met lsblk
Het commando lsblk Het is een zeer handig hulpmiddel om in boomstructuur de relatie tussen schijven, partities, logische volumes en hun bevestigingspuntenHoewel het niet primair bedoeld is om UUID's weer te geven, kunt u het combineren met enkele opties om een redelijk compleet beeld van het opslagsysteem te krijgen.
Een typische aanroep zou er als volgt uitzien:
lsblk -o NAME,MOUNTPOINT,TYPE
In de kolom KOPPELPUNT Je ziet dan routes zoals /, /home, /boot, /mnt/datosenzovoort. Van daaruit kunt u het achterhalen. Welk apparaat wilt u inspecteren? en gebruik vervolgens blkid of beoordeling /dev/disk/by-uuid om de identificatiecode te zien. Dit is vooral handig wanneer het systeem schijven koppelt op onvriendelijke paden (bijvoorbeeld sommige NAS-apparaten of tools zoals OpenMediaVault die schijven koppelen op onvriendelijke paden). /srv/ met lange namen zoals dev-disk-by-uuid-XXXX).
UUID opvragen via /etc/fstab
Een andere manier om snel te zien welke UUID's op uw systeem worden gebruikt, is door het bestand te controleren. /etc/fstab, wat definieert welke partities zijn gemonteerd en waar tijdens het opstarten. Je kunt dit controleren met:
cat /etc/fstab
Daarin vind je regels die lijken op:
UUID=8aa6c0d2-c18e-4606-b1da-f5f1f7617f00 /backups xfs rw,noquota,nofail 0 1
De eerste kolom gebruikt de UUID als de partitie-identificatie, gevolgd door koppelpunt, bestandssysteem type (in dit voorbeeld, xfs) en de opciones de montaje (rw,noquota,nofailenz.). Controleer /etc/fstab Het is een goede gewoonte om af en toe te controleren, vooral na het wisselen van schijven, het herpartitioneren of het opnieuw installeren van systemen, of de UUID's nog steeds overeenkomen met de werkelijke UUID's.
Bovendien is een eenvoudige:
cat /etc/fstab | grep UUID
hiermee kunt u de locatie vinden Vind snel alle items die geïdentificeerd zijn door een UUID. Dit is erg handig als je vermoedt dat een identificatiecode verouderd is en opstartproblemen veroorzaakt.
Typische UUID-problemen: trage opstarttijden en gedeelde swap.
Een van de meest voorkomende symptomen van een verkeerd geconfigureerde UUID is dat Het systeem loopt vast tijdens het opstarten. Gedurende een aanzienlijke tijd, meestal ongeveer anderhalve minuut, worden er berichten weergegeven die aangeven dat een bepaalde partitie niet kan worden gevonden. Na deze wachttijd wordt het opstartproces voortgezet, maar de problematische partitie wordt niet aangekoppeld.
Dit gebeurt meestal wanneer in /etc/fstab Er is een vermelding met een UUID die niet meer bestaatHet kan zijn dat u een schijf hebt verwisseld, een partitie hebt geformatteerd of een andere distributie opnieuw op dezelfde schijf hebt geïnstalleerd, waardoor een nieuwe identificatiecode is gegenereerd. Het systeem probeert die partitie te koppelen met een UUID die niemand heeft en wacht tot deze verloopt. de tijd.
Een vrij veelvoorkomend geval doet zich voor wanneer je een dubbel systeem (bijvoorbeeld Ubuntu en Debian) die dezelfde partitie delen linux-swapStel je een schijf voor met drie partities: sdc1 zoals ruilen, en sdc2 y sdc3 als rootpartities in ext4 voor respectievelijk Ubuntu en Debian. Als je Ubuntu voor het eerst installeert in sdc3 en vervolgens Debian in sdc2Het is gebruikelijk dat het Debian-installatieprogramma Formatteer de swap en wijzig de UUID ervan..
Het resultaat is dat het eerst geïnstalleerde systeem (Ubuntu in dit voorbeeld) het volgende bevat: /etc/fstab un Oude UUID voor swapBij het opstarten zoekt het systeem naar die partitie met een identificatie die niet meer bestaat, wacht de maximale tijd, beschouwt deze als verloren en gaat verder met opstarten zonder de swap-partitie te mounten. Het is geen ramp, maar het zorgt wel voor vertraging en onnodig RAM-gebruik.
Om dit soort gevallen te diagnosticeren, kunt u grafische hulpmiddelen gebruiken zoals GPartedAls je het niet hebt geïnstalleerd, kun je het op Debian-gebaseerde distributies doen met:
sudo apt install gparted
Zodra je GParted hebt gestart, selecteer je de schijf en klik je met de rechtermuisknop op de swap-partitie om de optie te kiezen om informatieDaar ziet u informatie zoals de apparaatnaam (sdc1), het type ( )linux-swap) En huidige UUIDDat is de identificatiecode die ook in de moet voorkomen. /etc/fstab van elk systeem dat die swap gebruikt.
De oplossing bestaat uit het bewerken van de /etc/fstab van het systeem dat een verouderde UUID heeft (bijvoorbeeld Ubuntu) en Vervang de oude UUID door de nieuwe. die je hebt gezien in GParted of met blkidJe kunt het bijvoorbeeld met je favoriete editor doen:
sudo nano /etc/fstab
Na het opslaan van de wijzigingen zal het systeem bij de volgende opstart de juiste swap-partitie vinden en zal het opstartproces weer soepel verlopen. Deze procedure is ook van toepassing op... elke andere partitie waarvan de UUID is gewijzigd als gevolg van een herinstallatie, formatteren of een slecht uitgevoerde kloonbewerking.
UUID's genereren en wijzigen in Linux
Er komt een moment dat het lezen van UUID's niet meer voldoende is: je hebt nodig nieuwe identificatoren genereren of bestaande wijzigenDit kan nodig zijn bij het klonen van schijven, om conflicten tussen systemen te voorkomen, of simpelweg voor organisatorische doeleinden. Linux biedt verschillende tools voor deze taken, sommige algemeen (uuidgen) en andere die specifiek zijn voor bepaalde bestandssystemen (tune2fs voor ext2/3/4).
Genereer nieuwe UUID's met uuidgen
Nut uuidgen Het is verantwoordelijk voor het aanmaken en weergeven van nieuwe UUID's met behulp van de bibliotheek. vrijDe gegenereerde identificatoren zijn in de praktijk uniek, zowel binnen het lokale systeem als in elk ander systeem, in het verleden, heden of de toekomst, omdat ze voldoen aan standaarden die ontworpen zijn om botsingen op een statistisch zeer onwaarschijnlijke manier te voorkomen.
Het apparaat ondersteunt hoofdzakelijk twee generatiemodi. uuidgen: tijdsgebonden UUID's y willekeurige UUID'sDe eerste gebruiken de systeemklok en het adres. MAC-adres van de netwerkkaart (indien beschikbaar), terwijl de laatstgenoemde afhankelijk zijn van een willekeurige getallengenerator hoge kwaliteit, meestal /dev/random o /dev/urandom.
In sommige verdelingen, zoals Debian 9 Stretch, de tool uuidgen Het is niet standaard geïnstalleerd. In dat geval kunt u het toevoegen door het pakket te installeren. uuid-runtime:
sudo apt update
sudo apt install uuid-runtime
Eenmaal geïnstalleerd is de algemene syntaxis erg eenvoudig:
uuidgen
De meest voorkomende opties zijn:
- -r, –random: genereert een UUID op basis van willekeurigheidgebruikmakend van de willekeurige getallengenerator van het systeem.
- -t, -tijd: genereert een UUID op basis van de tijd en MAC-adres van de machine.
- -h, -help: toont helpinformatie en sluit af.
- -V, –versie: toont de versie en sluit af.
Als je rent uuidgen Zonder parameters ontvangt u direct een nieuwe UUID in uw terminal die je kunt kopiëren en gebruiken waar je maar wilt, bijvoorbeeld in scripts of aangepaste configuratiebestanden.
Wijzig de UUID van een ext2/3/4-partitie met tune2fs
Als je wilt dat een bestaande partitie een nieuwe UUIDIn ext2-, ext3- of ext4-bestandssystemen is de referentietool tune2fsMet dit commando kunt u interne parameters van het bestandssysteem wijzigen, waaronder de identificatiecode.
Voordat je iets verandert, is het essentieel de partitie ontkoppelen om gegevenscorruptie te voorkomen. Stel dat u de UUID van wilt wijzigen. /dev/sdd4De basisworkflow zou als volgt zijn:
sudo umount /dev/sdd4
Als het eenmaal gedemonteerd is, kunt u vragen tune2fs dat direct een nieuwe willekeurige UUID genereert:
sudo tune2fs /dev/sdd4 -U random
Als u de specifieke identificatiecode liever zelf beheert (bijvoorbeeld om er een te gebruiken die eerder is gegenereerd met uuidgen), kunt u de waarde ook expliciet doorgeven:
sudo tune2fs /dev/sdd4 -U 123e4567-e89b-12d3-a456-426614174000
Na de wijziging is het een goed idee om het resultaat te controleren met blkid of herzien /dev/disk/by-uuid Om te bevestigen dat de identificatiecode is bijgewerkt:
sudo blkid /dev/sdd4
Onthoud dat als die partitie verschijnt in /etc/fstab of andere configuratiebestanden, die u nodig heeft: Werk de nieuwe UUID handmatig bij. Om te voorkomen dat het systeem bij het opstarten blijft zoeken naar de oude identificatiecode.
Bewerk /etc/fstab om UUID's te gebruiken bij het mounten.
De aanbevolen manier om persistente mounts in Linux te definiëren is door gebruik te maken van UUID in /etc/fstabDe algemene syntaxis voor een op UUID gebaseerde invoer ziet er ongeveer zo uit:
UUID={TU-UUID} /ruta/de/montaje tipo_fs opciones 0 1
Bijvoorbeeld, voor een XFS-schijf bedoeld voor back-ups, zou je een regel als deze kunnen hebben:
UUID=8aa6c0d2-c18e-4606-b1da-f5f1f7617f00 /backups xfs rw,noquota,nofail 0 1
In dit voorbeeld is de optie geen mislukking Hierdoor beschouwt het systeem het niet als kritiek als de schijf niet aanwezig is bij het opstarten, wat erg handig is voor externe schijven of back-upschijven die niet altijd aangesloten zijn. Andere opties zijn onder andere: geen quotum o fouten=opnieuw koppelen-ro Dat hangt af van het type bestandssysteem en waarvoor je het gaat gebruiken.
Nadat u wijzigingen hebt aangebracht /etc/fstab Om een item toe te voegen of bij te werken, is het raadzaam de configuratie te testen zonder opnieuw op te starten, met behulp van:
sudo mount -a
Als er geen fouten zijn, kunt u het resultaat bekijken met:
df -h | grep backups
of iets dergelijks, ter vervanging van backups via het koppelpunt dat overeenkomt met uw situatie. Als er iets misgaat, controleer dan of de UUID correct is en of het aangegeven bestandssysteem overeenkomt met het werkelijke systeem.
Systeemklonen en UUID-conflicten
Een scenario dat veel vragen oproept, is het klonen van complete systemen, bijvoorbeeld met tools zoals ClonezillaBij het klonen van een schijf naar een andere schijf worden de gegevens gekopieerd. net zoals de partities, hun bestandssystemen en hun UUID'sDit betekent dat je een tijdlang twee verschillende schijven hebt met partities die dezelfde identificatiecode delen.
Deze overlapping is wellicht geen probleem als u alleen afwisselend vanaf de kloon of het origineel opstart, maar als u beide tegelijkertijd op dezelfde machine aansluit, is de kans groot dat er fouten optreden. UUID-conflictenHet systeem weet niet precies bij welke partitie elke identificatie hoort, en u kunt te maken krijgen met montagefouten, verwarrende opstarttijden of zelfs partities van de kloon die worden gemonteerd waar u die van de originele schijf verwachtte.
Om deze conflicten te vermijden, is het gebruikelijk om als volgt te werk te gaan. De UUID's van de kloonpartities wijzigen Zorg er na het klonen voor dat elke schijf duidelijk van elkaar te onderscheiden is. Voor ext4-partities kunt u, zoals we eerder hebben gezien, vertrouwen op... uuidgen om nieuwe identificatoren te genereren en in tune2fs om ze toe te passen.
Als uw systeem een wat complexere structuur heeft, bijvoorbeeld een root in ext4 > LVM > LUKS (dm-crypt), houd er rekening mee dat er mogelijk UUID op verschillende niveausDit omvat onder andere: bestandssysteembestanden, LVM-fysieke volumebestanden, logische volumebestanden, LUKS-containerbestanden, enz. Daarnaast bestanden zoals /etc/crypttab Ze kunnen naar die identificatoren verwijzen.
In een typisch geval met encryptie zou het schema er ongeveer zo uit kunnen zien:
nvme0n1 (disco físico)
├─nvme0n1p1 /boot/efi
├─nvme0n1p2 /boot
└─nvme0n1p3 (partición cifrada LUKS)
└─nvme0n1p3_crypt
├─sys--vg-root /
└─sys--vg-swap_1
Als u op enig punt in deze keten UUID's wijzigt, moet u ervoor zorgen dat u alle plaatsen waar ernaar wordt verwezen, bijwerkt: /etc/fstab voor mountpunten, /etc/crypttab voor versleutelde volumes en, in sommige gevallen, opstartparameters die GRUB gebruikt om de root te vinden.
Wat GRUB betreft, in veel moderne configuraties is het zelf aanwezig. menu-item gebruikt UUID Om erachter te komen waar de rootpartitie zich bevindt. Dat wil zeggen, zoiets als dit verschijnt in de kernelregel: root=UUID=...Wanneer je het bestand opnieuw genereert grub.cfg rennen update-grub (of het equivalente commando in uw distributie), leest het systeem de schijven opnieuw en werkt de identificaties bij. Daarom is het, na het wijzigen van UUID's op een opstartbare kloon, ten zeerste aan te raden om vanaf die kloon op te starten en een GRUB-configuratieregeneratie uit te voeren om ervoor te zorgen dat alles consistent is.
In de praktijk is de gebruikelijke workflow bij het klonen van een compleet systeem en het parallel gebruiken ervan met het origineel doorgaans als volgt:
- Start op vanaf de kloon (om verwarring met apparaatnamen te voorkomen).
- Wijzig de UUID's van de partities die u wilt onderscheiden (met
tune2fsof de tools die overeenkomen met elk bestandssysteem). - -update / Etc / fstab en, indien van toepassing, /etc/crypttab met de nieuwe identificatoren.
- GRUB-configuratie opnieuw genereren (bijvoorbeeld met
sudo update-grub(in Debian/Ubuntu).
Hoewel het misschien wat omslachtig lijkt, zorgt deze aanpak ervoor dat de kloon succesvol zal zijn. volledig opstartbaar en onafhankelijk van het origineel, en dat beide naast elkaar op dezelfde machine kunnen bestaan zonder elkaar in de weg te zitten.
Door UUID-beheer in Linux onder de knie te krijgen, kunt u trage opstarttijden diagnosticeren, problemen met gewijzigde partities oplossen en robuustere mountpunten configureren. /etc/fstabHet probleemloos delen van swapruimte tussen distributies en het klonen van complete systemen met behoud van volledige controle. Uiteindelijk komt het er gewoon op neer om correct te identificeren welke partitie bij welke distributie hoort en de bijbehorende code te controleren met tools zoals... blkid o ls -l /dev/disk/by-uuidEn maak er een gewoonte van om belangrijke configuratiebestanden te controleren en bij te werken telkens wanneer u ingrijpende wijzigingen aan uw schijven aanbrengt.
Gepassioneerd schrijver over de wereld van bytes en technologie in het algemeen. Ik deel mijn kennis graag door te schrijven, en dat is wat ik in deze blog ga doen: je de meest interessante dingen laten zien over gadgets, software, hardware, technologische trends en meer. Mijn doel is om u te helpen op een eenvoudige en onderhoudende manier door de digitale wereld te navigeren.