Як Linux знає, який жорсткий диск USB?


24

В даний час у мене на ПК встановлений Linux Mint, на якому встановлено розділ жорсткого диска USB /home. Це добре працює.

Якщо я встановлю другий жорсткий диск USB, чи є шанс Linux заплутатися між ними, і спробувати встановити розділ другого жорсткого диска, як /homeпід час завантаження? Це було б погано.

Приїжджаючи з Windows, я часто бачив, що букви диска не «запам’ятовуються» правильно, викликаючи всілякі проблеми.

Я думаю, головне питання: як Linux насправді знає, що таке жорсткий диск USB, /dev/sdbа який - /media/misha/my_2nd_drive?


із встановленим розділом жорсткого диска USB, як/home ви можете пояснити, як ви це зробили?
AL

Я робив це під час встановлення Linux Mint. На той момент це досить просто. Мій SSD виглядав як sda, а жорсткий диск USB - sdb . Ставлю /і swapна sda , і /homeна sdb . Але я не знаю, як змінити/home кріплення існуючої установки , занадто нове для цього!
misha256

Відповіді говорять про те, що ви повинні робити, але я не думаю, що вони прямо кажуть, що sd[a-z]їх просто називають у порядку виявлення. Нічого не робиться, щоб імена не збігалися. Зазвичай це детерміновано (те саме ядро ​​на одній HW дасть таку ж назву), але нове ядро ​​з оновленням драйвера SATA-контролера може змусити його сканувати диски SATA у зворотному порядку. Замість того, щоб навіть намагатися перейменувати блокові пристрої (як це робиться з nameifабо без / для імен Ethernet пристроїв, як правило, з правилами udev), існують імена UUID, label та id (за серійним номером диска).
Пітер Кордес

Я бачив сервери з дисками SAS, де перезавантаження зазвичай призвело б до іншого впорядкування sd[a-z]: зондування дисків проводиться одночасно (паралельно) і все, що відбувається, коли диск буде виявлений спочатку стає sdaі т. Д.
wurtel

Відповіді:


26

Зазвичай розташування порту USB (шина / пристрій) визначає порядок його виявлення. Однак не покладайтеся на це.

Кожна файлова система має UUID, який розшифровується як універсальний унікальний ідентифікатор ( FAT і NTFS використовують дещо іншу схему, але вони також мають ідентифікатор, який може використовуватися як UUID). Ви можете розраховувати на (Linux) UUID, щоб він був унікальним. Для отримання додаткової інформації про UUID див. Цю статтю у Вікіпедії .

Використовуйте дисковий UUID в якості аргументу монтажу. Щоб дізнатися, що таке UUID, запустіть це:

$ sudo blkid /dev/sdb1

( blkidпотрібно прочитати пристрій, отже, йому потрібні повноваження root, отже sudo. Якщо ви вже стали root, то sudoце не потрібно.)

Потім ви можете використовувати цей UUID /etc/fstabтак:

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

Тоді не може виникати плутанина щодо того, який диск потрібно встановити / додому.

Для ручного монтажу можна використовувати /dev/disk/by-uuid/.....


1
Дивовижно, я навіть досі не знав про це fstab(ось як я новачок в Linux). Я переглянув свій fstabфайл і все вже визначено UUID. Установник Linux Mint зробив добре.
misha256

Ви можете покращити цю відповідь, коротко пояснивши, що таке UUID, і чому він унікальний, що робить його надійним ідентифікатором.
AL

11

Якщо ваші fstabпосилання на розділи як /dev/sdx, то додавання нового диска, безумовно, може заплутати систему. Однак останнім звичаєм є використання UUIDs розділів для ідентифікації розділів.

Якщо у вашій системі udevвстановлено (що стосується ядер 2.6+ Linux), ви можете використовувати стійкі імена fstab. За замовчуванням розділи ідентифікуються через UUID:

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

Однак ви можете створити значущу мітку розділу як "домашня" та посилатись на свій розділ так:

/dev/disk/by-label/home

Ці ідентифікатори можна використовувати як заміну для /dev/sdxв fstab.


Мені б хотілося, щоб і ваша відповідь була правильною. Вуртел був у зв’язку раніше. Але дякую все одно, ви отримаєте мій +1.
misha256

@ misha256 Іронія полягає в тому, що я навіть не використовую UUID в моїх системах (тому що вихід з dfі mountстає нечитабельним). Внутрішні жорсткі диски мають досить високі шанси їх виявити спочатку, і в тому ж порядку щоразу.
Дмитро Григор’єв

1
Якщо ви використовуєте мітки, ви можете використовувати LABEL=homeу своєму fstab. Мені подобається використовувати мітки, наприклад, t-homeдля домашнього каталогу на своїй машині під назвою tesla. Тож якщо я вставляю диск в іншу систему, не буде двох файлових систем з однаковою міткою. Ось чому інсталятори Linux генерують випадкові UUID і використовують їх у fstab, замість того, щоб мітки за замовчуванням давали б більшості систем однакові мітки для своїх FSes. @ misha256, можливо, ви захочете подумати над цим, якщо позначите свій FSes.
Пітер Кордес

1
@PeterCordes Я дійсно використовую мітки, і у мене є схема іменування, спрямована на те, щоб зробити ці ярлики унікальними.
Дмитро Григор’єв

1
UUID - це чудово і працює, як зазначено у відповідях. Але вони не є людьми доброзичливими. Щоразу, коли я створюю розділи (де завгодно), я даю їм унікальні читаються людиною мітки, які мають для мене сенс. Це особливо корисно при написанні резервних скриптів, що мають кілька дисків. Ви не хочете, щоб джерело та місце призначення були перевернені випадково! Крім того, кожен раз, коли ви переформатуєте розділ, він отримує новий UUID і вам потрібно буде редагувати все, що використовувало цей UUID, тоді як ви все одно можете використовувати ту саму мітку, що і раніше, і нічого не потрібно змінювати.
Джо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.