¿Cómo sabe Linux qué disco duro USB es cuál?

24

Actualmente tengo Linux Mint instalado en mi PC con una partición de disco duro USB montada como /home. Esto esta funcionando bien.

Si instalo un segundo disco duro USB, ¿hay alguna posibilidad de que Linux se confunda entre los dos e intente montar la segunda partición del disco duro como /homeen el arranque? Eso sería malo.

Viniendo de Windows, he visto que a menudo sucede que las letras de unidad no se "recuerdan" correctamente, causando todo tipo de problemas.

Supongo que la pregunta principal es: ¿Cómo sabe realmente Linux qué disco duro USB es /dev/sdby cuál es /media/misha/my_2nd_drive?

misha256
fuente
con una partición de disco duro USB montada como/home ¿Puede explicar cómo hizo esto?
AL
Lo hice durante la instalación de Linux Mint. En ese punto es bastante fácil. Mi SSD apareció como sda y el disco duro USB apareció como sdb . Me puse /y swapen sda , y /homeen sdb . Pero no sabría cómo cambiar el /homemontaje de una instalación existente , ¡demasiado nuevo para eso!
misha256
Las respuestas dicen lo que debe hacer, pero no creo que digan directamente que sd[a-z]simplemente se nombran en orden de detección. No se hace ningún intento para mantener los nombres iguales. Normalmente es determinista (el mismo núcleo en el mismo HW dará el mismo nombre), pero un nuevo núcleo con una actualización del controlador del controlador SATA podría hacer que escanee las unidades SATA en el orden opuesto. En lugar de incluso tratar de cambiar el nombre de los dispositivos de bloque (como se hace con nameifo w / e para los nombres de dispositivos ethernet, generalmente con reglas udev), existen nombres UUID, etiqueta e id (por número de serie de la unidad).
Peter Cordes
He visto servidores con discos SAS, donde el reinicio sería por lo general conducen a un orden diferente de sd[a-z]: el sondeo de los discos se realiza simultáneamente (en paralelo) y cualquiera que sea el disco pasa a ser detectado por primera vez se convierte sda, etc.
wurtel

Respuestas:

26

Por lo general, la ubicación del puerto USB (bus / dispositivo) determina el orden en el que se detecta. Sin embargo, no confíes en esto.

Cada sistema de archivos tiene un UUID que representa un identificador universalmente único ( FAT y NTFS usan un esquema ligeramente diferente, pero también tienen un identificador que puede usarse como un UUID). Puede confiar en que el UUID (Linux) sea único. Para obtener más información sobre UUID, consulte este artículo de Wikipedia .

Use el UUID del disco como argumento de montaje. Para saber cuál es el UUID, ejecute esto:

$ sudo blkid /dev/sdb1

( blkidnecesita leer el dispositivo, por lo tanto, necesita poderes de raíz, de ahí el sudo. Si ya se ha convertido en root, sudono es necesario).

Luego puede usar ese UUID de /etc/fstabesta manera:

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

Entonces no puede haber confusión sobre qué disco se va a montar en / home.

Para el montaje manual puede usar /dev/disk/by-uuid/.....

wurtel
fuente
1
Impresionante, ni siquiera lo sabía fstabhasta ahora (así de nuevo soy para Linux). He mirado mi fstabarchivo y todo ya está identificado por UUID. El instalador de Linux Mint funcionó bien.
misha256
Puede mejorar esta respuesta explicando brevemente qué es el UUID y por qué es único, lo que lo convierte en un identificador confiable.
AL
11

Si sus fstabreferencias se dividen en particiones /dev/sdx, entonces agregar una nueva unidad ciertamente puede confundir al sistema. La práctica reciente, sin embargo, es utilizar UUID de partición para identificar las particiones.

Si su sistema se ha udevinstalado (debe ser el caso para los núcleos de Linux 2.6+), puede usar nombres persistentes fstab. Por defecto, las particiones se identifican a través de UUID:

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

Sin embargo, puede crear una etiqueta de partición significativa como "inicio" y hacer referencia a su partición de esta manera:

/dev/disk/by-label/home

Esos ID se pueden usar como reemplazo de /dev/sdxin fstab.

Dmitry Grigoryev
fuente
Ojalá pudiera marcar tu respuesta correcta también. Wurtel estaba en contacto antes. Pero gracias de todos modos, obtienes mi +1.
misha256
@ misha256 La ironía es que ni siquiera uso UUID en mis sistemas (porque la salida de dfy se mountvuelve ilegible). Los discos duros internos tienen muchas posibilidades de ser detectados primero y siempre en el mismo orden.
Dmitry Grigoryev
1
Si usa etiquetas, puede usarlas LABEL=homeen su fstab. Me gusta usar etiquetas como t-homepara el directorio de inicio en mi máquina llamada tesla. Entonces, si pego el disco en otro sistema, no habrá dos sistemas de archivos con la misma etiqueta. Es por eso que los instaladores de Linux generan UUID aleatorios y los usan en fstab, en lugar de tener etiquetas predeterminadas que darían a la mayoría de los sistemas las mismas etiquetas para sus FSes. @ misha256, es posible que desee pensar en esto si etiqueta sus FSes.
Peter Cordes
1
@PeterCordes De hecho, uso labes, y tengo un esquema de nombres destinado a hacer que estas etiquetas sean únicas.
Dmitry Grigoryev
1
Los UUID son geniales y funcionan como se indica en las respuestas. Pero, no son amigables con los humanos. Cada vez que creo particiones (en cualquier lugar), les doy etiquetas únicas legibles por humanos que tienen sentido para mí. Esto es especialmente útil cuando se escriben scripts de respaldo relacionados con varias unidades. ¡No quieres que una fuente y un destino se reviertan por accidente! Además, cada vez que vuelve a formatear una partición, obtiene un nuevo UUID y tiene que editar todo lo que usó ese UUID, mientras que aún puede usar la misma etiqueta que antes y no tiene que cambiar nada.
Joe