In Linux, partitions are represented by device files. These are phoney files located in /dev. Here are a few entries:
brw-rw---- 1 root disk 3, 0 May 5 1998 hda brw-rw---- 1 root disk 8, 0 May 5 1998 sda crw------- 1 root tty 4, 64 May 5 1998 ttyS0A device file is a file with type c ( for "character" devices, devices that do not use the buffer cache) or b (for "block" devices, which go through the buffer cache). In Linux, all disks are represented as block devices only.
/dev/hda
and /dev/hdd
. The first drive is
'a' the second drive 'b' and so on. For example, /dev/hda
is the first drive on the first IDE controller and
/dev/hdd
is the second drive on the second controller
(the fourth IDE drive in the computer). You can write to these devices
directly (using cat or dd). However, since these devices represent the
entire disk, starting at the first block, you can mistakenly overwrite
the master boot record and the partition table, which will render the
drive unusable.
Once a drive has been partitioned, the partitions will
represented as numbers on the end of the names. For example, the
second partition on the second drive will be /dev/hdb2
.
SCSI drives follow a similar pattern; They are represented by 'sd'
instead of 'hd'. The first partition of the second SCSI drive would
therefore be /dev/sdb1
.
Primary partitions on a disk are 1, 2, 3 and 4. Logical partitions have numbers 5 and up, for reasons explained later.
This is all you have to know to deal with linux disk devices. For the sake of completeness, see Kristan's discussion of device numbers below.
$ ls -l /dev/hda
brw-rw---- | 1 | root | disk | 3, | 0 | Jul 18 1994 | /dev/hda |
permissions | owner | group | minor device number | major device number | date | device name |
When accessing a device file, the major number
selects which device driver is being called to perform the
input/output operation. This call is being done with the minor number
as a parameter and it is entirely up to the driver how the minor
number is being interpreted. The driver documentation usually
describes how the driver uses minor numbers. For IDE disks, this
documentation is in
/usr/src/linux/Documentation/ide.txt
.
For SCSI disks, one would expect such documentation in
/usr/src/linux/Documentation/scsi.txt
,
but it isn't there. One has to look at the driver source to be sure
(
/usr/src/linux/driver/scsi/sd.c:184-196
).
Fortunately,
there is Peter Anvin's list of device numbers and names in
/usr/src/linux/Documentation/devices.txt
;
see the entries for block devices, major 3, 22, 33, 34 for IDE and
major 8 for SCSI disks. The major and minor numbers are a byte each
and that is why the number of partitions per disk is limited.