Come fa Linux a sapere quale disco rigido USB è quale?


24

Attualmente ho Linux Mint installato sul mio PC con una partizione del disco rigido USB montata come /home. Funziona bene.

Se installo un secondo disco rigido USB, c'è qualche possibilità che Linux venga confuso tra i due e provi a montare la partizione del secondo disco rigido come /homeall'avvio? Sarebbe male.

Proveniente da Windows, ho visto succedere spesso che le lettere di unità non vengono "ricordate" correttamente causando ogni sorta di problemi.

Immagino che la domanda principale sia: come fa Linux a sapere quale disco rigido USB è /dev/sdbe quale /media/misha/my_2nd_drive?


con una partizione del disco rigido USB montata come/home puoi spiegare come hai fatto?
AL

L'ho fatto durante l'installazione di Linux Mint. A quel punto è abbastanza facile. Il mio SSD è apparso come sda e il disco rigido USB è apparso come sdb . Ho messo /e swapsu sda e /homesu sdb . Ma non saprei come cambiare il montaggio di un'installazione esistente /home, troppo nuovo per quello!
misha256,

Le risposte dicono cosa dovresti fare, ma non credo che dicano direttamente che sd[a-z]sono semplicemente nominate in ordine di rilevamento. Non viene fatto alcun tentativo di mantenere uguali i nomi. È tipicamente deterministico (lo stesso kernel sullo stesso HW darà lo stesso nome), ma un nuovo kernel con un aggiornamento al driver del controller SATA potrebbe far scansionare le unità SATA nell'ordine opposto. Invece di provare a rinominare i dispositivi a blocchi (come si fa con nameifo w / e per i nomi dei dispositivi Ethernet, di solito con le regole udev), esistono nomi UUID, etichetta e id (per numero seriale dell'unità).
Peter Cordes,

Ho visto server con dischi SAS in cui il riavvio di solito porta a un diverso ordinamento di sd[a-z]: il sondaggio dei dischi viene eseguito simultaneamente (in parallelo) e qualsiasi disco che viene rilevato per primo diventa sda, ecc.
wurtel

Risposte:


26

Di solito la posizione della porta USB (bus / dispositivo) determina l'ordine su cui viene rilevata. Tuttavia, non fare affidamento su questo.

Ogni file system ha un UUID che sta per identificatore univoco universale ( FAT e NTFS usano uno schema leggermente diverso, ma hanno anche un identificatore che può essere usato come UUID). Puoi affidarti all'UUID (Linux) per essere unico. Per ulteriori informazioni sugli UUID, consultare questo articolo di Wikipedia .

Utilizzare l'UUID del disco come argomento di montaggio. Per scoprire qual è l'UUID, esegui questo:

$ sudo blkid /dev/sdb1

( blkiddeve leggere il dispositivo, quindi ha bisogno dei poteri di root, quindi il sudo. Se sei già diventato root, sudonon è necessario.)

È quindi possibile utilizzare l'UUID in /etc/fstabquesto modo:

UUID=7e839ad8-78c5-471f-9bba-802eb0edfea5 /home ext4 defaults 0 2

Quindi non ci può essere confusione su quale disco deve essere montato su / home.

Per il montaggio manuale è possibile utilizzare /dev/disk/by-uuid/.....


1
Fantastico, non lo sapevo nemmeno fstabfino ad ora (ecco quanto sono nuovo su Linux). Ho guardato il mio fstabfile e tutto è già identificato da UUID. Il programma di installazione di Linux Mint ha funzionato bene.
misha256,

Puoi migliorare questa risposta spiegando brevemente cos'è l'UUID e perché è univoco che lo rende un identificatore affidabile.
AL

11

Se i tuoi fstabriferimenti sono partizioni come /dev/sdx, quindi l'aggiunta di una nuova unità può certamente confondere il sistema. La pratica recente, tuttavia, consiste nell'utilizzare gli UUID delle partizioni per identificare le partizioni.

Se il tuo sistema è udevinstallato (deve essere il caso dei kernel Linux 2.6+), puoi usare la denominazione persistente in fstab. Per impostazione predefinita, le partizioni sono identificate tramite UUID:

/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591

Puoi, tuttavia, creare un'etichetta di partizione significativa come "home" e fare riferimento alla tua partizione in questo modo:

/dev/disk/by-label/home

Tali ID possono essere utilizzati in sostituzione di /dev/sdxin fstab.


Vorrei poter contrassegnare anche la tua risposta corretta. Wurtel era in contatto prima. Ma grazie comunque, ottieni il mio +1.
misha256,

@ misha256 L'ironia è che non uso nemmeno gli UUID sui miei sistemi (perché l'output da dfe mountdiventa illeggibile). Gli HDD interni hanno probabilità abbastanza elevate di essere rilevati per primi e sempre nello stesso ordine.
Dmitry Grigoryev,

1
Se usi le etichette, puoi usarle LABEL=homenel tuo fstab. Mi piace usare le etichette come t-homeper la home directory sulla mia macchina chiamata tesla. Quindi, se inserisco il disco in un altro sistema, non ci saranno due filesystem con la stessa etichetta. Questo è il motivo per cui i programmi di installazione di Linux generano UUID casuali e li usano in fstab, invece di avere etichette predefinite che darebbero alla maggior parte dei sistemi le stesse etichette per i loro FS. @ misha256, potresti pensare a questo se etichetti le tue FS.
Peter Cordes,

1
@PeterCordes Uso davvero i lab e ho uno schema di denominazione volto a rendere uniche queste etichette.
Dmitry Grigoryev il

1
Gli UUID sono fantastici e funzionano come indicato nelle risposte. Ma non sono amici dell'uomo. Ogni volta che creo partizioni (ovunque), offro loro etichette leggibili dall'uomo uniche che hanno senso per me. Ciò è particolarmente utile quando si scrivono script di backup che trattano diverse unità. Non vuoi rovesciare una fonte e una destinazione per caso! Inoltre, ogni volta che riformatta una partizione, ottiene un nuovo UUID e devi modificare tutto ciò che ha usato quell'UUID, mentre puoi comunque usare la stessa etichetta di prima e non devi cambiare nulla.
Joe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.