Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

настройка_монтирования_по_uuid [2015/02/22 08:47] (текущий)
vovka Перенос со старой wiki
Строка 1: Строка 1:
 +Во времена,​ когда PATA IDE был единственным доступным стандартом для бытовых компьютеров (SCSI я не беру в расчёт),​ не возникало проблем с именованием дисковых ​ устройств и разделов. Когда стандарт SATA IDE пошёл в массы, возникли проблемы с порядком именования устройств. Суть вот в чём: при включении компьютера,​ ядро опрашивает всё оборудование компьютера и создаёт им файлы в /dev .  ​
  
 +С шиной PATA проблем нет - имена устройствам даются в строгом соответствии с разъёмом контроллёра и перемычками на диске (primary-secondary\master-slave), ​ но вот с SATA можно наткнуться на изменение порядка именования,​ если в компьютере работает больше одного SATA-диска. Независимо от того, в какой разъём включен жёсткий диск на материнской плате (sata1, sata2 и тд), порядок именования будет проходить по мере опроса,​ а он не зависит от номера разъёма. Так если, диск включённый в sata1 может обзываться как sda1 и как sda2, если дисков 2 и больше.
 +Для решения этой проблемы именования,​ можно использовать **UUID** (Universally Unique Identifier) - это стандарт идентификации для физических или псевдо- устройств,​ используемый в создании программного обеспечения. Задача,​ которую решает стандарт - это присвоить и использовать уникальный идентификатор для устройства\диска\раздела. Таким образом,​ отказавшись от стандартных имён SATA устройств в linux, и используя UUID, можно решить проблему с монтированием устройств и разделов.
 +
 +=====  Задача ​ =====
 +**Дано:​** компьютер с установленной ОС Linux, 3 SATA жёстких диска, один из которых съёмный. disk1 и disk2 - не съёмные,​ disk3 - съёмный.
 +Описание системы:​ система устанавливалась когда к компьютеру были подключены 2 диска: disk1 и disk2. Корневая система находится на disk1 и каталоги с disk2 монтируются к ней. disk3 иногда отключается пользователем от компьютера для переноса информации. Каталоги этого диска также монтируются к корневой системе.\\  ​
 +**Проблема:​** когда в системе работают только disk1 и disk2, имена распределяются так: disk1 = /dev/sda и disk2 = /dev/sdb . После подключения третьего диска, имена меняются:​ disk1 = /dev/sda , disk2 = /dev/sdс , disk3 = /dev/sdb . Соответственно,​ при загрузке,​ система не находит каталоги в disk2 и переходит в однопользовательский режим. Приходится каждый раз редактировать записи для disk2 и disk3 в /etc/fstab , что совсем не удобно.\\  ​
 +**Задача:​** обеспечить монтирование disk1 и disk2 независимо от disk3.\\  ​
 +**Уровень пользователя:​** средний,​ знающий команды монтирования и умеющий работать в одном из текстовых редакторов:​ vi, nano, mcedit, emacs\\  ​
 +
 +**Решение:​**\\  ​
 +Примерный план работы:​
 +  -  Загрузиться в нормальном режиме,​ когда disk1 и disk2 работают в системе.
 +  -  Выяснить UUID разделов дисков.
 +  -  Модифицировать /etc/fstab
 +  -  Перезагрузиться с новыми параметрами в /etc/fstab
 +  -  Повторить пункты с 2-4 только для диска disk3.
 +
 +**Процесс:​**\\  ​
 +
 +Необходимо загрузиться в нормальном режиме,​ когда disk1 и disk2 работают в системе.
 +Выясняем какие разделы присутствуют в системе:​
 +<​code> ​
 + # fdisk -l
 + Disk /dev/sda: 250.1 GB, 250059350016 bytes
 + 255 heads, 63 sectors/​track,​ 30401 cylinders, total 488397168 sectors
 + Units = sectors of 1 * 512 = 512 bytes
 + ​Sector size (logical/​physical):​ 512 bytes / 512 bytes
 + I/O size (minimum/​optimal):​ 512 bytes / 512 bytes
 + Disk identifier: 0x000b5f01
 +
 +   ​Device Boot      Start         ​End ​     Blocks ​  ​Id ​ System
 + /​dev/​sda1 ​  ​* ​         63      979964 ​     489951 ​  ​83 ​ Linux
 + /​dev/​sda2 ​         489952 ​     738928 ​     248976 ​  ​82 ​ Linux swap / Solaris
 + /​dev/​sda3 ​         738929 ​  ​488392064 ​  ​487653135 ​   5  Extended
 + /​dev/​sda6 ​         738930 ​  ​488392064 ​  ​487653134 ​  ​83 ​ Linux
 +
 + Disk /dev/sdb: 640.1 GB, 640135028736 bytes
 + 81 heads, 63 sectors/​track,​ 245005 cylinders, total 1250263728 sectors
 + Units = sectors of 1 * 512 = 512 bytes
 + ​Sector size (logical/​physical):​ 512 bytes / 512 bytes
 + I/O size (minimum/​optimal):​ 512 bytes / 512 bytes
 + Disk identifier: 0xc65c2ceb
 +
 +   ​Device Boot      Start         ​End ​     Blocks ​  ​Id ​ System
 + /​dev/​sdb1 ​           2048  1250263727 ​  ​625130840 ​  ​83 ​ Linux
 +</​code>​
 +
 +disk1 разбит на 3 раздела:​
 +  *  sda1 - /boot
 +  *  sda2 - swap
 +  *  sda6 - /
 +disk2 и disk3 (не показан) имеют по одному разделу.\\  ​
 +Смотрим куда что монтируется /etc/fstab
 +<​code> ​
 + $ cat /etc/fstab
 +  # 
 +  # /etc/fstab: static file system information
 +  #
 +  # <file system> ​       <​dir> ​        <​type> ​   <​options> ​         <​dump>​ <​pass>​
 +  devpts ​                /​dev/​pts ​     devpts ​   defaults ​           0      0
 +  shm                    /​dev/​shm ​     tmpfs     ​nodev,​nosuid ​       0      0
 +
 +  /​dev/​cdrom ​            /​cdrom ​  ​auto ​   ro,​user=user,​noauto,​unhide ​  ​0 ​     0
 +
 +  /dev/sda1 /boot ext3 defaults 0 1
 +  /dev/sda2 swap swap defaults 0 0
 +  /dev/sda6 /boot ext3 defaults 0 1
 +
 +  # 650Gb disk
 +  /dev/sdb1 /disk2 ext3 defaults 0 1
 +
 +  # Removable
 +  # /dev/sdc1 /disk3 ext3 defaults 0 1
 +</​code>​
 +Обратите внимание,​ что строка с sdс1 помечена ремаркой и не обрабатывается. С ним будем работать после всех настроек.
 +
 +Теперь делаем листинг директории,​ где система создаёт UUID имена и сохраняем его:
 +<​code> ​
 + $ ls -l /​dev/​disk/​by-uuid/​
 +  total 0
 +  lrwxrwxrwx 1 root root 10 Apr 11 11:42 484b1cbb-5a3d-4a54-841b-424da3254db6 -> ../../sda1
 +  lrwxrwxrwx 1 root root 10 Apr 11 11:42 d14021bb-912e-4801-b6a8-874c41b8225c -> ../../sda2
 +  lrwxrwxrwx 1 root root 10 Apr 11 11:42 dedd9b49-5410-4c72-a018-f8293311c28e -> ../../sda6
 +  lrwxrwxrwx 1 root root 10 Apr 11 11:42 182ecbac-dd36-4113-b019-58f181c755a5 -> ../../sdb1
 +</​code>​
 +Для сохранения вывода команды в файл, можно попробовать:​
 +<​code>​
 + $ ls -l /​dev/​disk/​by-uuid/​ | /​home/​username/​имя_файла.txt
 +</​code>​
 +Если работа производится в графической среде, можно просто скопипастить непосредственно в редактор.
 +
 +Делаем резервную копию файла /etc/fstab на случай,​ если UUID будет неправильно введён и система не сможет загрузиться. ​
 +<​code>​
 + # cd /etc
 + # cp fstab fsab.bak
 +</​code>​
 +Кстати,​ не помешает и какой-нибудь liveCD с Linux`ом "на борту"​ на всякий аварийных случай.
 +
 +Редактируем сам файл /etc/fstab и вместо sda1, sda2,... sdb1 подставляем UUID раздела. Должно получиться что-то типа:
 +<​code> ​
 + $ cat /etc/fstab
 +  # 
 +  # /etc/fstab: static file system information
 +  #
 +  # <file system> ​       <​dir> ​        <​type> ​   <​options> ​         <​dump>​ <​pass>​
 +  devpts ​                /​dev/​pts ​     devpts ​   defaults ​           0      0
 +  shm                    /​dev/​shm ​     tmpfs     ​nodev,​nosuid ​       0      0
 +
 +  /​dev/​cdrom ​            /​cdrom ​  ​auto ​   ro,​user=user,​noauto,​unhide ​  ​0 ​     0
 +
 +  UUID=484b1cbb-5a3d-4a54-841b-424da3254db6 /boot ext3 defaults 0 1
 +  UUID=d14021bb-912e-4801-b6a8-874c41b8225c swap swap defaults 0 0
 +  UUID=dedd9b49-5410-4c72-a018-f8293311c28e /boot ext3 defaults 0 1
 +
 +  # 650Gb disk
 +  UUID=182ecbac-dd36-4113-b019-58f181c755a5 /disk2 ext3 defaults 0 1
 +
 +  # Removable
 +  # /dev/sdc1 /disk3 ext3 defaults 0 1
 +</​code>​
 +
 +Если в Вашей системе не оказалось каталога **/​dev/​disk/​by-uuid/​** , можно воспользоваться утилитой **blkid** для выяснения UUID:
 +<​code>​
 + # blkid /dev/sda1
 + /​dev/​sda1:​ UUID="​484b1cbb-5a3d-4a54-841b-424da3254db6"​ TYPE="​ext3" ​
 +</​code>​
 +Нужно будет получить номер для каждого монтируемого раздела.\\  ​
 +<note important>​ **Внимание!**\\ В файле **/​etc/​fstab** , в самом конце всегда нужно оставлять пустую строку,​ иначе система не сможет корректно распознать записи и загрузиться!</​note>​
 +
 +Когда fstab отредактирован,​ для проверки,​ пробуем отмонтировать disk2 и снова примонтировать:​
 +<​code>​
 + # umount /disk2
 + # mount  /disk2
 +</​code>​
 +//​Примечание://​ предполагается,​ что ресурсы на disk2 не заблокированы каким-либо процессом,​ иначе система не сможет отмонтировать disk2.
 +
 +Если всё прошло удачно,​ перезагружаем машину.
 +
 +Если загрузка прошла удачно,​ можно выключить компьютер,​ подключить disk3, выяснить его UUID и модифицировать строку fstab, касающуюся монтирования disk3.
 +
 +=====  Смотрите также ​ =====
 +  *  [[http://​nix.zeya.org/​forum/​index.php?​topic=92.0|Обсуждение статьи на форуме]]
 +  *  [[Монтирование устройств и файловых систем в nix]]
Печать/экспорт