Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist

Как изменить UUID раздела и его метку

Алексей Дмитриев, 18 августа 2011

А зачем?

Если вы много экспериментируете со своей системой Linux, постоянно пробуете всякие новые программы, частый гость в репозиториях testing и Sid, пробуете удалить GRUB2 и поставить Grub Legacy и т.д. и т.п., то у вас, без сомнения, есть запасной клон вашей системы, спрятанный где-нибудь в надежном месте. О изготовлении таких клонов я писал в конце 2010 года.

Но, если вы "убили" систему, а клон еще не занял ее место, вы, лишенные привычного рабочего окружения, некоторое время испытываете определенные неудобства. Поэтому предлагаю для экспериментов иметь клон вашей системы в соседнем разделе того же диска.

Все эксперименты сначала проводятся на клоне ≈ подопытном кролике, и в случае удачи переносятся в основной вариант системы.

Как делается клон

Сделать это просто: сначала нужно создать раздел такого же размера, как и образец. Как это сделать, зависит от ваших навыков и вашего дистрибутива. Программы Gparted и Fdisk доступны каждому. Раздел можно даже не форматировать, так как он будет полностью переписан.

Затем клонируем систему в новый раздел:

$ sudo dd if=/dev/исходный_раздел of=/dev/целевой_раздел bs=10M

(bs=10M ≈ это величина блока (в данном случае ≈ 10 мегабайт), которыми будет происходить копирование на уровне секторов диска. Чем больше блок, тем быстрее копируется, но и меру нужно знать).

Полученный клон является побайтовой копией оригинала, поэтому он имеет ту же файловую систему со всеми своими суперблоками на тех же местах. Дублируется также и нулевой сектор, недоступный при обычном копировании. Кроме того, при копировании командой cp данные записываются на свободное место, а при клонировании ≈ на то же самое, что и в оригинале. Это приводит к тому, что оригинал и клон имеют абсолютно идентичные файловые системы, одинаковые UUID'ы и метки тома.

Так как мы собираемся пользоваться обеими копиями одновременно, то наличие у них одинаковых UUID'ов и меток (LABEL), неудобно в работе, так как приводит к путанице. Почему и нужно изменить UUID клона и дать ему новую метку.

Изменение UUID раздела

UUID (Universally Unique IDentifier ≈ Универсальный Уникальный ИДентификатор) дается разделу автоматически при его форматировании. UUID записан в суперблоках файловой системы.

Чтобы узнать UUID'ы всех разделов вашей системы нужно применить команду:

$ sudo blkid -c /dev/null

Такой синтаксис команды предпочтителен. Подробное объяснение в статье "Как узнать UUID'ы разделов?", там же описаны другие команды для этой цели.

$ sudo blkid -c /dev/null
...
/dev/sda7: LABEL="squeeze" UUID="96e4e816-6de4-4a18-890d-10e06c57a3b9" TYPE="ext4" 
/dev/sda8: LABEL="squeeze" UUID="96e4e816-6de4-4a18-890d-10e06c57a3b9" TYPE="ext4"

Хотя теоретически можно самостоятельно придумать новый UUID, рекомендуется пользоваться командой uuid ≈ генератором UUID'ов. Если у вас нет этой команды, то нужно установить пакет uuid (или соответствующий ему в вашей системе) привычным вам способом. Команда без лишних слов генерирует новый UUID при каждом запуске.

$ uuid
342724be-c948-11e0-9055-000c6e1ac553

$ uuid
46492296-c948-11e0-b30e-000c6e1ac553

Поскольку UUID есть атрибут файловой системы, то для его изменения применяется команда tune2fs, служащая для настройки файловых систем ext2, ext3, ext4.

$ sudo tune2fs /dev/sda8 -U `uuid`

tune2fs 1.42-WIP (02-Jul-2011)

Проверим, что получилось:

$ sudo blkid -c /dev/null

/dev/sda7: LABEL="squeeze" UUID="96e4e816-6de4-4a18-890d-10e06c57a3b9" TYPE="ext4" 
/dev/sda8: LABEL="squeeze" UUID="567d4886-c894-11e0-88a6-000c6e1ac553" TYPE="ext4"

Отлично! Теперь займемся меткой тома.

Как изменить метку тома

Для чего вообще нужна метка тома? Дело в том, что в современных операционных системах все определение и монтаж / демонтаж разделов происходит автоматически при помощи udev и HAL. Если раздел не имеет метки тома, то он будет примонтирован как безликий /media/disk . А если разделов много, то разобраться где какой disk можно только "методом тыка". Другое дело, если раздел имеет LABEL (метку тома). В этом случае он и будет примонтирован под понятным вам именем. Кроме того, метку тома можно прописывать, как и UUID, в /etc/fstab и прочих конфигурационных файлах. Это даже удобнее, чем UUID'ы, так как сразу видно, что это за раздел.

Узнать, какой раздел кроется за данной меткой тома, можно при помощи команды:

$ sudo findfs LABEL=squeeze

/dev/sda7

Если вы часто удаляете / создаете разделы, то их имена (/dev/sdxx) могут измениться, зато UUID и LABEL останутся неизменными и никакой путаницы в конфигах не произойдет.

Итак, два раздела с одинаковой меткой тома ≈ это нонсенс! Давайте менять метку. Для этого применяется команда e2label. Она не входит в стандартный набор команд, поэтому скорее устанавливайте одноименный пакет. Пользоваться ей просто ≈ пишем имя раздела и за ним новый LABEL:

$ sudo e2label /dev/sda8 clone

Проверяем:

$ sudo blkid -c /dev/null

/dev/sda7: LABEL="squeeze" UUID="96e4e816-6de4-4a18-890d-10e06c57a3b9" TYPE="ext4" 
/dev/sda8: LABEL="clone" UUID="567d4886-c894-11e0-88a6-000c6e1ac553" TYPE="ext4"

Теперь наш основной рабочий раздел (/dev/sda7 "squeeze") и его клон (/dev/sda8 "clone") имеют свои уникальные UUID'ы и понятные метки тома.

Чего и всем желаю!

 



Комментарии