Comment Linux sait-il quel disque dur USB est lequel?

24

Actuellement, j'ai Linux Mint installé sur mon PC avec une partition de disque dur USB montée en tant que /home. Cela fonctionne bien.

Si j'installe un deuxième disque dur USB, y a-t-il une chance que Linux se confonde entre les deux, et essaye de monter la partition du deuxième disque dur comme /homeau démarrage? Ce serait mauvais.

Venant de Windows, j'ai souvent vu que les lettres de lecteur ne sont pas «mémorisées» correctement, ce qui provoque toutes sortes de problèmes.

Je suppose que la question principale est: comment Linux sait-il réellement quel disque dur USB est /dev/sdbet lequel est /media/misha/my_2nd_drive?

misha256
la source
avec une partition de disque dur USB montée comme/home pouvez-vous s'il vous plaît expliquer comment vous avez fait cela?
AL
Je l'ai fait lors de l'installation de Linux Mint. À ce stade, c'est assez facile. Mon SSD est apparu comme sda et le disque dur USB est apparu comme sdb . Je mets /et swapsur sda , et /homesur sdb . Mais je ne saurais pas comment changer le /homemontage d' une installation existante , trop nouveau pour ça!
misha256
Les réponses disent ce que vous devez faire, mais je ne pense pas qu'ils disent directement que sd[a-z]sont simplement nommés dans l' ordre de détection. Aucune tentative n'est faite pour garder les noms identiques. Il est généralement déterministe (le même noyau sur le même matériel donnera le même nom), mais un nouveau noyau avec une mise à jour du pilote du contrôleur SATA pourrait le faire scanner les disques SATA dans l'ordre inverse. Au lieu d'essayer même de renommer les périphériques de bloc (comme cela se fait avec nameifou avec / pour les noms de périphériques Ethernet, généralement avec les règles udev), les noms UUID, label et id (par numéro de série du lecteur) existent.
Peter Cordes
J'ai vu des serveurs avec des disques SAS où le redémarrage conduirait généralement à un ordre différent de sd[a-z]: le sondage des disques se fait simultanément (en parallèle) et le disque détecté en premier devient sda, etc.
wurtel

Réponses:

26

Généralement, l'emplacement du port USB (bus / périphérique) détermine l'ordre dans lequel il est détecté. Mais ne vous fiez pas à cela.

Chaque système de fichiers a un UUID qui signifie identificateur universel unique ( FAT et NTFS utilisent un schéma légèrement différent, mais ils ont également un identifiant qui peut être utilisé comme UUID). Vous pouvez compter sur l'UUID (Linux) pour être unique. Pour plus d'informations sur les UUID, consultez cet article Wikipedia .

Utilisez l'UUID du disque comme argument de montage. Pour savoir ce qu'est l'UUID, exécutez ceci:

$ sudo blkid /dev/sdb1

( blkiddoit lire l'appareil, donc il a besoin des pouvoirs root, d'où le sudo. Si vous êtes déjà devenu root, le sudon'est pas nécessaire.)

Vous pouvez ensuite utiliser cet UUID /etc/fstabcomme ceci:

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

Il ne peut alors y avoir aucune confusion sur le disque à monter sur / home.

Pour un montage manuel, vous pouvez utiliser /dev/disk/by-uuid/.....

Wurtel
la source
1
Génial, je ne le savais même pas fstabjusqu'à présent (c'est comme ça que je suis nouveau sous Linux). J'ai regardé mon fstabdossier et tout est déjà identifié par UUID. Le programme d'installation de Linux Mint a bien fonctionné.
misha256
Vous pouvez améliorer cette réponse en expliquant brièvement ce qu'est l'UUID et pourquoi il est unique, ce qui en fait un identifiant fiable.
AL
11

Si vos fstabréférences sont des partitions /dev/sdx, l'ajout d'un nouveau lecteur peut certainement perturber le système. Cependant, la pratique récente consiste à utiliser des UUID de partition pour identifier les partitions.

Si votre système est udevinstallé (cela doit être le cas pour les noyaux Linux 2.6+), vous pouvez utiliser la dénomination persistante dans fstab. Par défaut, les partitions sont identifiées via les UUID:

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

Vous pouvez cependant créer une étiquette de partition significative comme "home" et référencer votre partition comme ceci:

/dev/disk/by-label/home

Ces identifiants peuvent être utilisés en remplacement de /dev/sdxin fstab.

Dmitry Grigoryev
la source
J'aimerais pouvoir marquer votre réponse aussi. Wurtel était en contact plus tôt. Mais merci quand même, vous obtenez mon +1.
misha256
@ misha256 L'ironie est que je n'utilise même pas d'UUID sur mes systèmes (car la sortie de dfet mountdevient illisible). Les disques durs internes ont des chances assez élevées d'être détectés en premier et dans le même ordre à chaque fois.
Dmitry Grigoryev,
1
Si vous utilisez des étiquettes, vous pouvez les utiliser LABEL=homedans votre fstab. J'aime utiliser des étiquettes comme t-homepour le répertoire personnel sur ma machine appelée tesla. Donc, si je colle le disque dans un autre système, il n'y aura pas deux systèmes de fichiers avec la même étiquette. C'est pourquoi les installateurs Linux génèrent des UUID aléatoires et les utilisent dans fstab, au lieu d'avoir des étiquettes par défaut qui donneraient à la plupart des systèmes les mêmes étiquettes pour leurs FS. @ misha256, vous voudrez peut-être y penser si vous étiquetez vos FS.
Peter Cordes
1
@PeterCordes J'utilise effectivement des labes, et j'ai un schéma de nommage visant à rendre ces étiquettes uniques.
Dmitry Grigoryev
1
Les UUID sont excellents et fonctionnent comme indiqué dans les réponses. Mais, ils ne sont pas adaptés aux humains. Chaque fois que je crée des partitions (n'importe où), je leur donne des étiquettes uniques lisibles par l'homme qui ont du sens pour moi. Cela est particulièrement utile lors de l'écriture de scripts de sauvegarde concernant plusieurs disques. Vous ne voulez pas inverser une source et une destination par accident! De plus, chaque fois que vous reformatez une partition, elle obtient un nouvel UUID et vous devez modifier tout ce qui a utilisé cet UUID, tandis que vous pouvez toujours utiliser la même étiquette qu'auparavant et ne rien changer.
Joe