Это заметка из разряда "Для Linux-новичков". При очередном развёртывании CentOS Linux 7.2 на физический сервер столкнулся с проблемой невозможности запуска программы установки ОС, получая ошибку:
Failed to scan disk [имя устройства]
For some reason we were unable to locate a disklabel on a disk that the kernel is reporting patitions on…
После изучения проблемы выяснилось, что физические диски HDD, которые были установлены в сервер, и на которые предполагалось выполнить установку CentOS Linux, ранее использовались в другом сервере, и на них была установлена OC Microsoft Windows Server. При этом разделы, созданные на дисках ОС Windows с этих самых дисков не были удалены и, по всей видимости, какой-то из разделов диска "сильно смущал" программу установки CentOS.
Первое, что может прийти в голову неискушённому Linux-администратору, это найти другой сервер с уже работающей системой, куда можно подключить такие диски и удалить оттуда все старые разделы для возможности дальнейшего беспроблемного использования в программе установки CentOS. Однако, я предполагаю, что может возникнуть ситуация, когда такой возможности не будет. Поэтому в данной заметке я опишу то, как быстро исправить данную проблему при помощи самой же программы установки CentOS и без всяких излишних физических манипуляций с дисками.
Итак, получив данное сообщение об ошибке, нам нужно удалить все старые разделы имеющиеся на нашем диске. Для этого, как предложено в сообщении об ошибке нажмём сочетание клавиш Ctrl-Alt-F1, откроется специальная консоль инсталлятора anaconda
Здесь с помощью комбинации клавиш Alt-Tab мы сможем переместиться в режим командной строки (пункт 2:shell)
Выполним команду fdisk -l, чтобы получить информацию о всех доступных загруженному экземпляру CentOS дисковых устройствах и их разметке:
Как видим, утилите fdisk не очень нравится таблица разделов на нашем диске, а некоторые разделы диска она не может даже распознать. Однако в нашей ситуации все эти старые разделы нам не нужны, более того, они нам мешают, и поэтому воспользуемся утилитой parted, чтобы удалить с диска все эти разделы.
# parted /dev/cciss/c0d0
где /dev/cciss/d0d0 это имя проблемного диска со старыми разделами. В командном интерфейсе утилиты parted нам достаточно будет ввести пару команд, чтобы пересоздать на диске таблицу разделов, удалив тем самым всю информацию о старых разделах…
(parted) mklabel msdos (parted) quit
После этого можно будет перезагрузить наш сервер и вернуться к процессу установки ОС, где теперь проблемы с определением диска уже быть не должно.
А через сам fdisk нельзя удалить разделы все? Или через parted быстрее? Просто первый раз про parted слышу, это я к тому что для запоминания удобней то, чем часто пользуешься.
Можно и через fdisk, но с parted, как я понимаю, это получится быстрей.
Можно попробовать вообще через dd снести диску MBR, типа:
dd if=/dev/zero of=/dev/[диск] bs=512 count=1