Поиск по блогу :

    среда, 19 ноября 2008 г.

    Использование UUID при монтировании дисков

    Как-то столкнулся с одной проблемкой. У меня есть IDE-карман, который я редко, но использую. Так вот, когда в этот карман вставляешь диск, а комп при этом потушен, то при загрузке мои жесткие диски меняли свои названия в каталоге /dev. Из-за этого, некоторые монтировались ни туда, куда надо, а некоторые вообще не монтировались.


    Как выяснилось, дело было в том, что я по старинке монтировал свои диски указывая название жесткого диска (например: /dev/sda1 ) и папку куда он должен монтироваться (например: /mnt/D ). Все бы ничего, но когда я вставлял жесткий в карман, то добавлялось еще одно устройство и названия жестких дисков в каталоге /dev - менялись.
    Решение такой проблеме очень простое. Вы наверное замечали, как монтируются по умолчанию ваша домашняя директория и корневая система в Убунту. Монтируются они с помощью стандарта идентификации - UUID (Universally Unique Identifier). Смысл системы в том, что каждый ваш диск идентифицируется специальным номером, который не меняется даже тогда, когда диски меняются местами в каталоге /dev. И с помощью этого идентификатора, вы можете монтировать все свои диски не задумываясь о том, что будет если вы добавите еще один диск в вашу систему и т.д.

    Использование UUID

    1. Применять идентификаторы дисков, будем в файле /etc/fstab, который отвечает за монтирование устройств при загрузке системы.
    1.1. Вот так вот, выглядела раньше запись монтирования двух моих дисков:
    /dev/sda1 /mnt/D ext3 defaults,relatime 0 0
    /dev/sda5 /mnt/E vfat iocharset=utf8,umask=000 0 0
    Теперь она выглядит вот так:
    UUID=5d94e4f6-c678-442a-a640-d20e0fd3b383 /mnt/D ext3 defaults,relatime 0 0
    UUID=4574-A323 /mnt/E vfat iocharset=utf8,umask=000 0 0
    1.2. В зависимости от файловой системы, используемой на диске, меняется и UUID (в нашем случае ext3 = 16 байтный номер, а fat32 = пара четырехзначных чисел).
    2. Как вы сами понимаете, нельзя примонтировать устройство с помощью UUID, не зная его.
    2.1. Узнать UUID устройства можно, как минимум, двумя способами. Первый:
    $
    blkid

    вам будет выведен список всех устройств с их UUID и типом файловой системы.
    Второй способ:
    $
    ls -l /dev/disk/by-uuid/

    Как по мне, первый более информативен.
    3. Теперь вставляете полученные UUID нужным дискам в /etc/fstab и все, теперь вы больше никогда не столкнетесь с той проблемой, о которой я писал в начале статьи.

    7 коммент.:

    safright комментирует...

    Спс, у меня была немного другая проблема: поставил ubuntu поверх винды, второй винт - ntfs для всякой всячины. Когда понял, что винде больше нчиего у меня не светит - снес, диск форматнул. UUID поменялся (я так понимаю, он меняется при форматировании в другую ФС) - и при загрузке выдавал ошибки "нет такого, откуда взять - не знаю".

    Leolik комментирует...

    2 safright
    да, вы совершенно правы, когда диски форматируются в другую файловую систему их UUID меняется, так как для каждой фс он различный (в плане написания).

    Марецкий Александр комментирует...

    blkid работает и без sudo

    Leolik комментирует...

    2 Марецкий Александр
    спасибо, подправил

    antage комментирует...

    Для полноты картины, неплохо бы еще проставить UUID для root-раздела в параметрах ядра.

    Leolik комментирует...

    2 antage
    Ну вообще-то, Ubuntu уже давным-давно, по-умолчанию записывает в /boot/grub/menu.lst UUID для root.

    xzirrow комментирует...

    +1 и спасибо за blkid - не знал.

    Отправить комментарий