e7d57781

SCSI детали


Ситуация с SCSI немного отличается,т.к. все SCSI команды используют логические номера блоков(секторов),поэтому геометрия не зависит от физических процессов ввода/вывода. В тоже время формат таблицы разделов такой же что и для IDE, поэтому fdisk 'у приходиться изобретать некую геометрию,он также использует HDIO_GETGEO. Несмотря на это fdisk различает SCSI и IDE диски. Как можно видеть из описанного выше, различные драйвера изобретают различную геометрию. Что вызывает некий беспорядок и неорганизованность.

Если вы не используете DOS или ему подобные системы, то надо опасаться любых установок, связанных с расширенным преобразованием,просто используйте 64 головки,32 сектора на дорожку(для того чтобы у вас на 1 цилиндр приходился 1 МиБ),если это возможно,так чтобы при перестановки диска с одного контроллера на другой не возникало проблем. Некоторые (aha152x, pas16, ppa, qlogicfas, qlogicisp) драйвера SCSI дисков, так обеспокоены совместимостью с DOS ,что они не позволят Линукс использовать более 8 ГиБ. Это баг.

Что такое настоящая геометрия? Самый простой ответ - таковой не существует. Даже если таковая и была бы , вам не нужно бы было её знать и не в коем случае не рассказывать о ней fdisk или LILO или ядру. Это дело только SCSI контроллера и диска.

Но если вам это жизненно необходимо, вы можете спросить сам диск. Существует очень важная команда READ CAPACITY, которая сообщает полный размер диска, и команда MODE SENSE, которая на странице Rigid Disk Drive Geometry (страница 04) сообщает количество цилиндров и головок (т.е. параметры которые нельзя изменить), на странице Format (страница 03) дает количество байт в секторе и количество секторов на дорожку. Последнее число обычно зависит от notch, а количество секторов на дорожку обычно переменное - внешние треки имеют больше секторов,чем внутренние. Программа scsiinfo сообщает подобную информацию. Существует огромное количество деталей,которые никто,включая операционную систему,знать не хочет. Более того , т.к. мы концентрируемся на fdisk и LILO, то обычно получаемые величины вроде C/H/S=4476/27/171 - значения которые не могут быть использованы fdisk, т.к. в таблице разделов эти значения не помещаются в отведенные им поля.

А откуда-же берет данную информацию HDIO_GETGEO? Оно опрашивает SCSI контроллер,или делает сложный запрос. Некоторые драйвера думают что мы хотим знать настоящие значения, хотя на самом деле нам нужно знать лишь то, что будет использовать Fdisk в DOS или OS/2.

Заметит что fdisk для Линукс требуются H и S - количество головок и секторов на дорожку, для преобразования LBA номеров в c/h/s адреса,но значение C (количество цилиндров) не играет роли в данном преобразовании. Некоторые драйвера используют значения C/H/S = 1023/255/63 чтобы сигнализировать, что емкость диска как минимум 1023*255*63 секторов.Это плохо,т.к. не соотвествует реальным размерам, и ограничит пространство доступное пользователям большинства версий fdisk 8'ю ГиБ'ами.Это наиболее серьезная проблема сегодня.

В описании данном выше, M обозначает общую емкость диска, и C/H/S количество цилиндров,головок и секторов/дорожка. Задание H,S необходимо если мы расчитываем C как M/(H*S).

По умолчанию, H=64, S=32.



Начало  Назад  Вперед