[Comm] Re: Что с моим /dev/hdc?

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вт Июн 10 15:01:51 MSD 2003


On Tue, 10 Jun 2003 08:45:48 +0400
Прокопьев Евгений <john на rmts.donpac.ru> wrote:

> Кто-нибудь может объяснить такой феномен:
> 
> #cfdisk /dev/hdc
> FATAL ERROR: Bad primary partition 0: Partition ends after end-of-disk
>                  Press any key to exit cfdisk
> 
> # fdisk /dev/hdc
> The number of cylinders for this disk is set to 7476.
> There is nothing wrong with that, but this is larger than 1024,
> and could in certain setups cause problems with:
> 1) software that runs at boot time (e.g., old versions of LILO)
> 2) booting and partitioning software from other OSs
>     (e.g., DOS FDISK, OS/2 FDISK)
> 
> Command (m for help): p
> 
> Disk /dev/hdc: 61.4 GB, 61492838400 bytes
> 255 heads, 63 sectors/track, 7476 cylinders
> Units = cylinders of 16065 * 512 = 8225280 bytes
> 
>     Device Boot    Start       End    Blocks   Id  System
> /dev/hdc1   *         1      7477  60051568+  83  Linux
> 
> Command (m for help):

При этом 7476.0 * 255 * 63 / 2 = 60050970.0, что действительно меньше,
чем размер раздела в блоках.

В то же время ((60051568.0*2 + 1)/63 + 1)/16 = 119150.0 - т.е. размер
раздела ('+' в выводе fdisk обозначает лишний сектор) соответствует
геометрии 119150/16/63, а не используемой 7476/255/63.



> Собственно, так было после установки системы, раздел /dev/hdc1 был 
> создан в fdisk, а на нем была создана XFS. На разделе лежит немаленькая 
> БД и вроде нормально себя чувствует, хотя пока еще работает в отладочном 
> режиме.

Вероятно, диск был совсем пустой, поэтому ядро не смогло определить
правильные параметры CHS (данные BIOS читаются только для /dev/hda и
/dev/hdb, для остальных IDE-устройств берутся без учёта преобразования
в BIOS, а потом корректируется по данным таблицы разделов). Поэтому
fdisk и создал раздел такого размера. Откуда потом взялась геометрия
/255/63 - не знаю; возможно, таблицу разделов чем-то "подправили"
(например, если диск при этом стоял на hda или hdb).

Посмотрите в вывод hdparm -i /dev/hdc и сообщения ядра при загрузке
(сначала распознаётся геометрия /16/63, а позже при Partition check
корректируется, при этом пишется [PTBL]).

> Кстати, абсолютно аналогично размечен /dev/hdc, но его видит и fdisk и 
> cfdisk.

Не понял - и тут, и там hdc. Так где у вас диски?

И в чём разница в выводе fdisk -l на работающем и неработающем?

> И еще gkrellm отказывается рисовать графики по /dev/hdc, что тоже 
> настораживает.
> 
> Какие проблемы я могу получить в будущем?

Ядро использует LBA, так что вроде бы в Linux проблем возникнуть не
должно, но кто его знает...

Попробуйте запустить cfdisk -h 16 - если так запустится, вероятно,
именно эта геометрия правильная для такой разбивки. Можно попробовать
запустить fdisk -H 16 /dev/hdc и записать таблицу разделов - есть
вероятность, что после этого распознавание геометрии встанет на место.
А вот чтобы исправить на /255/63, придётся всё сносить и
переразбивать, предвариельно убедившись, что fdisk использует
правильную CHS-геометрию.



Подробная информация о списке рассылки community