This section gives information that is specific to disk drives.
All direct access SCSI devices with a block size of 256, 512, or 1024 bytes should work. Other block sizes will not work (Note that this can often be fixed by changing the block and/or sector sizes using the MODE SELECT SCSI command)
Sector size refers to the number of data bytes allocated per sector on a device, ie CDROMs use a 2048 byte sector size.
Block size refers to the size of the logical blocks used to interface with the device. Although this is usually identical to sector size, some devices map multiple smaller physical sectors (ie, 256 bytes in the case of 55M Syquest drives) to larger logical blocks or vice versa (ie, 512 byte blocks on SUN compatable CDROM drives).
Removeable media devices, including Bernoulis, flopticals, and MO drives work.
In theory, drives up to a terrabyte in size should work. There is definately no problem with tiny 9G drives.
When partitioning, you get a warning message about ``cylinder > 1024'' or you are unable to boot from a partition including a logical cylinder past logical cylinder 1024.
This is a BIOS limitation.
See Section geometry and parts : Disk Geometry and Partitioning for a n explanation.
/dev/hd* aren't SCSI devices, /dev/sd* are.
See Section device files : Device files, and Section device files geometry and parts , Disk Geometry and Partitioning for the correct device names and partitioning procedure.
Linux attempts to lock the drive door when a piece of media is mounted to prevent filesystem corruption due to an inadvertant media change.
Please unmount your disks before ejecting them.
In some cases, the SCSI driver and BIOS will disagree over the correct BIOS mapping to use, and will result in LILO hanging after 'LI' at boot time and/or other problems.
To workarround this, you'll have to determine your BIOS geometry mapping used under DOS, and make an entry for your disk in /etc/lilo/disktab.
Alternatively, you may be able to use the ``linear'' configuration file option.
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
and disk geometry is not 'remembered' when fdisk is rerun.
See Section partitioning : Partitioning
multiple drives connected.
Linux won't search LUNs past zero on SCSI devices which predate ANSI SCSI revision 1. If you wish devices on alternate LUNs to be recognized, you will have to modify drivers/scsi/scsi.c:scan_scsis().
We think this has been fixed, try upgrading to 1.1.38.
This is due to a microcode bug in the read-ahead and caching code.
>From Soenke Behrens of Conner tech. support:
During the past few weeks, we got several calls from customers stating
that they had severe problems with Conner CFP1060x 1GB SCSI drives
using the Linux operating system. Symptoms were corrupt filesystems
(damaged inodes) reported by e2fsck on each system boot and similar
errors.
There is now a fix available for customers with a CFP1060x (microcode
revisions 9WA1.62/1.66/1.68) and Linux. To apply the upgrade, you
will need a DOS boot disk and ASPI drivers that can access the hard
drive. The upgrade downloads new queuing and lookahead code into the
non-volatile SCSI RAM of the drive.
If you are experiencing problems with a disk that has microcode
revision 9WA1.60, you will have to contact your nearest Conner service
centre to get the disk upgraded. The microcode revision can be found
on the label of the drive and on the underside of the drive on a label
on one of the ICs.
If you are confident that you can perform the upgrade yourself, please
contact Conner Technical Support and have your microcode revision
ready. Conner Technical Support Europe can be reached on +44-1294-315333,
Conner Technical Support in the USA can be reached on 1-800-4CONNER.
Regards
Soenke Behrens
European Technical Support
SCSI disks use block device major 8, and there are no ``raw'' devices ala BSD.
16 minor numbers are allocated to each SCSI disk, with minor % 16 == 0 being the whole disk, minors 1 < = (minor % 16) < = 4 the four prima ry partitions, minors 5 < = (minor % 16) < = 15 any extended partitions.
Due to constraints imposed by Linux's use of a sixteen bit dev_t with only eight bits allocated to the minor number, the SCSI disk minor numbers are assigned dynamically starting with the lowest SCSI HOST/ID/LUN.
Ie, a configuration may work out like this (with one host adapter)
Device Target Lun SCSI disk
84M Seagate 0 0 /dev/sda
SCSI-> SMD bridge disk 0 3 0 /dev/sdb
SCSI-> SMD bridge disk 1 3 1 /dev/sdc
Wangtek tape 4 0 none
213M Maxtor 6 0 /dev/sdd
etc.
The standard naming convention is
/dev/sd{letter} for the entire disk device ((minor % 16) == 0) /dev/sd{letter}{partition} for the partitions on that device (1 < = (minor % 16) < = 15)
Ie
Device type major minor
/dev/sda block 8 0
/dev/sda1 block 8 1
/dev/sda2 block 8 2
/dev/sda3 block 8 3
etc.
You can partition your SCSI disks using the partitioning program of your choice, under DOS, OS/2, Linux or any other operating system supporting the standard partitioning scheme.
The correct way to run the Linux fdisk program is by specifying the device on the command line. Ie, to partition the first SCSI disk,
fdisk /dev/sda
If you don't explicitly specify the device, the partitioning program may default to /dev/hda, which isn't a SCSI disk.
In some cases, fdisk will respond with
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
Command (m for help):
and/or give a message to the effect that the HDIO_REQ or HDIO_GETGEO ioctl failed. In these cases, you must manually specify the disk geometry as outlined in Subsection fdisk geometry : Disk Geometry when running fdisk, and also in /etc/disktab if you wish to boot kernels off that disk with LILO.
If you have manually specified the disk geometry, subsequent attempts to run fdisk will give the same error message. This is normal, since PCs don't store the disk geometry information in the partition table. In and of itself, will cause _NO PROBLEMS_, and you will have no problems accessing partitions you created on the drive with Linux. Some vendors' poor installation code will choke on this, in which case you should contact your vendor and insist that they fix the code.
In some cases, you will get a warning message about a partition ending past cylinder 1024. If you create one of these partitions, you will be unable to boot Linux kernels off of that partition using LILO. Note, however, that this restriction does not preclude the creation of a root partition partially or entirely above the 1024 cylinder mark, since it is possible to create a small /boot partition below the 1024 cylinder mark or to boot kernels off existing partitions.
Under Linux, each disk is viewed as the SCSI host adapter sees it : N blocks, numbered from 0 to N-1, all error free, where as DOS/BIOS predate intelligent disks and apply an arbitrary head / cylinder / sector mapping to this linear addressing.
This can pose a problem when you partition the drives under Linux, since there is no portable way to get DOS/BIOS's idea of the mapped geometry. In most cases, a HDIO_GETGEO ioctl() can be implemented to return this mapping. Unfortunately, when the vendor (ie Seagate) has chosen a perverse, non-standard, and undocumented mapping, this is not possible and geometry must be manually specified
If manual specification of the is required, you have one of several options :
begin 664 dparam.com MBAZ``##_B+^!`+N!`(H'0SP@=/D\,'5:@#]X=`6`/UAU4(!_`3AU2H!_`P!U M1(I7`H#J,(#Z`7L6N]T!,=*Y M"@#W\8#",$N(%PG`=>^)VK0)S2'#=7-A9V4Z(&1P87)A;2`P>#@P#0H@("!O L
When run it prints the sectors, heads, and cylinders of the drive whose BIOS address was specified on the command line (0x80 is the first disk, 0x81 the second). Ie,Would mean that C: had 60 sectors, 17 heads, and 1007 cylinders.
dparam 0x80 60 17 1007
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter