Disk and Related Technology
(Show hardware: Spindles, platters, heads.) Sectors and cylinders (tracks) and heads (platter faces) = disk geometry (“CHS”). Discuss speed (7,200–15,000 rpm; seek time). Each read/write chunk is one sector (512 bytes on all modern disks).
One block (a.k.a. a cluster) is smallest chunk of disk that can be allocated by the OS to a file, so one block is smallest file size. On Sun systems (UFS) a block is 512 bytes (1 sector) of data, on Linux (ext[23]) it is 1024. (On Reiser4FS it is 1 byte!)
Unformatted Capacity Versus Usable Capacity
Disks are sold by their total unformatted capacity. Formatting the disk takes a significant fraction of that space, as does the space sector list (used for mapping out bad sectors), boot code, hidden or reserved areas on the disk, RAID and LVM metadata, etc. Since most filesystems use blocks (or clusters) to allocate files, a file of size 1 block plus one byte takes two blocks of disk space. With many small files the usable space can be less than half the unformatted capacity. For example I have a 1GB flash drive with the standard FAT FS on it. After formatting there are 977 MB available. I put about 200 small files on it, leaving about 700 MB reported free. However I can’t put even one more file on it!
Some OSes allow you to adjust the block size in some filesystems to reduce wastage (but reduces I/O speed.) Others permit packing multiple file fragments into blocks.
Disk Geometry and LBA (Logical Block Addressing)
The number of sectors per track varies with the radius of the track on the platter. The outermost tracks are larger and can hold more sectors than the inner ones. The location of sectors is staggered as well, for efficiency. The geometry is a triple: #cylinders, #heads, #sectors. The growth of disk sizes means modern disks lie about their true geometry. Rather than use (c,h,s) addressing it is common to use a Logical Block Address (LBA) instead, which is translated by the disk to the actual CHS.
Some OSes use BIOS to access disks (which is also used at power up), and BIOS uses (c,h,s) addressing. So BIOS must know the correct geometry setting. (Even then the disk must translate the official geometry to the real geometry!) Others (e.g., Linux) directly access disks with LBAs and don’t care.
Prior to LBA the combined limitations of BIOS and ATA restricted the useful unformatted capacity of IDE hard disks on IA PCs to 504 megabytes (528 million bytes):
1024 cyls * 16 heads (tracks/cyl) * 63 sectors/track * 512 bytes/sector
Later BIOSes and ATA disks use LBA mode to work around those limits, by faking the geometry and translating to the official one. (This still leaves a BIOS disk size limit of 1024 cylinders * 63 sectors per track * 256 heads * 512 bytes per sector = 8 gigabytes; such older BIOS can’t boot from a partition beyond the first 8 GBs.) This is one motivation for the modern BIOS replacements (e.g., EFI).
Modern OSes (including Windows and Linux) are not affected by this since these OSes use direct LBA-based calls and do not use BIOS hard disk services. Also modern BIOSes support larger disks and LBA. Older BIOS limits affect booting: /boot below cylinder 1024.
RAM Disks (“ramdisks”) are a section of RAM that is used as a filesystem (and thus that RAM is not available for other purposes). These can be used to speed access to programs and other files, used while booting, or to check a disk. A ramdisk can double the battery life on a laptop! All systems support at least one ramdisk driver (or type); Linux supports several, some for special purposes. For example you will see a ramdisk mounted at /dev/shm for POSIX shared memory.
Modern Linux supports several types of ramdisks: “ramfs” and the newer “tmpfs” which uses both swap and RAM. This is mostly useful for /tmp. It can also be used to hold security-sensitive documents that shouldn’t be written to actual disk. Note you don’t format ramfs or tmpfs filesystems!
The main difference between ramfs and tmpfs are that ramfs uses physical RAM only and if that runs out your system can crash. Tmpfs uses virtual RAM (so it can use swap space as needed). Also tmpfs allows you to specify a maximum size.
By itself a ramdisk is useful for temporary data files. In some cases you want to save the contents of a ramdisk to a file, and restore the state of that ramdisk from a file when mounting it. Such a file is usually called a disk image. This ramdisk and image file technique is used during the boot process.
Unix and Linux can mount an image file as if it were a disk. This is similar to using a ramdisk and copying an image file to/from it but more convenient.
An
initial ramdisk is often needed during the boot process (discussed later).
This is initialized from an image file. It is used as an initial root
filesystem and contains some required /dev
files, /lib files, init, etc. To make a boot ramdisk
image file for linux with all the right stuff in it, use the command:
mkinitrd OS_Version
filename
For example:
mkinitrd 2.4.9-31 /boot/initrd-2.4.9-31.img
Then edit the boot loader’s config file (grub.conf) and add this line:
initrd=/boot/initrd-2.4.9-31.img
This special image file is a gzip compressed “filesystem”; it’s really just a “cpio” archive file! Once mounted the script /linuxrc runs if possible. This can be used to load USB or SCSI drivers for such CD or floppy drives.
Newer Linux systems have a type of ramdisk (“initramfs”) called “rootfs” that is always mounted. It is used to ensure there is always something mounted (so the kernel doesn’t have to check for an empty mount list). rootfs is also used during booting of a Linux 2.6 kernel. It can be used as the initial ramdisk. When the real root FS is ready to be mounted rootfs is then emptied of files (to free the RAM). The system switches to the real root filesystem using a command usually called switch_root or pivot_root. The new root is mounted right on top of rootfs.
Creating RAM disks is easy. For Solaris: “ramdiskadm ‑a mydisk 40m” will create /dev/ramdisk/mydisk, which you must format and then mount as normal. To create and use a ramdisk on Linux (note no formatting needed):
# mkdir /mnt/ramdisk
# mount -t ramfs none /mnt/ramdisk
# mount -t tmpfs size=32m /tmp
# cd /mnt/ramdisk; vi foo; ...
# umount /mnt/ramdisk
The ramdisk starts out small and grows as needed. With tmpfs you can optionally specify a maximum size. This is a good thing to do since if a system runs out of virtual memory, ugly things happen!
When a ramdisk is unmounted (via umount), all files in it are lost.
You can specify a max size with tmpfs, with the mount option size=size (the default is half the size of physical RAM). The size is in bytes but you can add a k, m, or g suffix. You can also specify a max number of inodes with nr_inodes=number. (The default is half the number of physical RAM pages.)
Ramdisks are rarely used anymore since the Unix virtual memory system is so efficient. They are used for initial booting, for /tmp on Solaris and other OSes, for security, to mount (potentially a large number of) disk image files, and occasionally for efficiency.
On Solaris you can use a RAM disk for an RAID 1 mirror. This can be useful if an application is mostly reading from the disk. In this case you can change the read policy for the mirror to first read from the RAM disk.
More common than a real ramdisk is to mount an image file (.img, .iso) using a loop device. A “jukebox” can be created by putting many image files on a large disk and mount them all. (Project 4, filesystems, discusses how to use image files.)
Historical note: Linux creates some fixed-size (old style) ramdisks at boot time:
ls -l /dev/ram*; dmesg | grep -i ram
shows the system creates 16 4K RAM disks. To set the size use the kernel (boot) parameter ramdisk_size=sizeInBytes. Unlike ramfs/tmpfs these are not initialized. Before you can mount one of these you need to format it with mkfs.
If planing on using ramdisks (say for /tmp) you will need a larger swap partition (and possibly more RAM) then the standard guidelines suggest.
Solid State disks (SSD)
This is a new technology that isn’t used yet but probably soon will be. It’s just a large amount on non-volatile RAM and works like a flash disk. If/when it gets popular/cheaper it will mean many changes to how storage is managed: no seek time issues, no block sizes, etc.
Directly Attached Storage (DAS)
Used to mean the disks were inside the computer enclosure. Today’s servers are small form-factor rack-mounted servers or blade servers. In either case the disks are not enclosed by the computer. With DAS you are limited to having the disks in the same cabinet. With DAS the disk attaches to an interface (SCSI or IDE). A cable connects that to a host interface (the controller), which usually allows more than one disk to be attached to the host computer.
DAS is also used for RAID devices to attach several disks to a special RAID controller. This in turn is attached to the host computer as if it were a simple disk.
Disk controllers
There are two common types of controllers: IDE (or EIDE or ATA) and SCSI. The SCSI controller is misnamed as it is really only a bridge connecting the SCSI bus to the host bus It is correctly referred to as a host bus adaptor (HBA).
The controllers support many options (we’ll learn some of these later). One to know about now is a write cache, which should be turned off for reliability. However leaving it on (the usual default) dramatically increases performance.
Solaris provides the tool fwflash(1M) to examine and load (or flash) firmware on some models of HBAs (which are sometimes referred to as host channel adaptors, or HCAs).
IDE/ATA
Allows two devices per IDE controller (technically called a channel), referred to as the master and the other the slave (even though neither controls the other). It is common to have two controllers per workstation, referred to as the primary and secondary. ATA disks must be within 18" of the controller, so sometimes the controller is connected to a host with a cable to a HBA.
IDE became EIDE then ATA (Advanced Technology Attachment, a.k.a. PATA, ATAPI, and UDMA) to support CD-ROM and other devices. Not as fast (~133Mbps) or reliable as SCSI, but cheaper. 18" cable length max. so good only for DAS. The controller is usually integrated into the motherboard. To date (~2007) there have been 6 versions of the ATA standard.
AT (since v3) allows sneaky commands to permit the disk to hide some space from the OS, using a Host Protected Area (HPA) and Device Configuration Overlay (DCO). Actually at boot time the OS can access the HPA then lock it down, so Microsoft can hide stuff there. The HPA and DCO are hard but not impossible to access with special software.
Serial ATA
(SATA or S-ATA) is the successor to IDE, which was retroactively renamed Parallel ATA (PATA) to distinguish it from Serial ATA. ~300Mbps, more than double the speed of the older IDE (parallel ATA) disks. Modern workstations uses SATA. The cables are much smaller (versus the 40+ pin ribbon cable). To the OS, each disk appears as the master on a separate IDE controller.
With older hardware parallel cables were faster since you could sent 8 (or more) bits simultaneously, compared to serial (where you might also need extra bits sent to control timing). But with modern electronics the speed that data is sent is much higher. Parallel wires generate interference, putting a limit on the top speed they can use. Serial cables are now capable of higher speeds than a parallel cable, are cheaper, and easier to work with.
SCSI
A SCSI device includes a “controller”. The SCSI bus can connect disks or any similar devices: CD-ROM, DVD, Tape, etc. These devices are peers on the bus, just like Ethernet NICs. The SCSI controller is physically part of the disk so you purchase, unlike ATA disks which do require a separate controller. This makes SCSI disks a little more expensive than AT disks. With SANS the actual SCSI disks may be far away and a special type of NIC, an “HBA” is used to talk to them.
With IDE/EIDE/ATA/ATAPI the device driver sends commands to the controller, which sends AT (ATAPI) commands to the disk (by loading data registers, then sending a command). In contrast, with SCSI the device driver sends SCSI commands directly to the device (disk). The SCSI controller or HBA simply forwards those commands onto the bus (and sends any reply back to the device driver).
Many devices (8 to >95) can be daisy-chained together, with the end of the chain needing termination. Each device is assigned a unique SCSI-ID (or SCSI address), with the controller usually assigned ID 7. You may have to manually assign SCSI-IDs to avoid conflicts!
SCSI is faster, more flexible, and more expandable than IDE and is used almost universally on servers (e.g., HP Proliant, Dell PowerEdge), but usually is considered too expensive for workstations. Note that a disk must have the correct connectors as well as the correct on-board software to talk to an HBA (often called the controller).
SCSI is very fast (>300Mbps), reliable, and allows longer cables than IDE. There are several incompatible SCSI standards in use today. The devices/connectors are marked with different symbols (SE, LVD, and DIFF) but it is up to you to not mix incompatible ones (some devices may be marked as SE/LVD which can use either). (Mixing types can cause serious damage and risk electrical fire!) Types:
SCSI-1 8-bit bus, 5MBps, bulky Centronics connector.
SCSI-2 Same as SCSI-1 but with Micro-D 50 pin connector.
Fast 8-bit bus, 10MBps, Micro-D 68 pin connector.
Ultra 8-bit bus, 20MBps, Micro-D 50 pin connector.
Ultra2 8-bit bus, 40MBps, Micro-D 50 pin connector
Ultra3 (a.k.a. Ultra-160) 8-bit bus, up to 160MBps
Ultra-320 320MBps
Ultra-640 (a.k.a. fast-320) 640MBps but limited cable length, # devices
Wide 16-bit bus, 10MBps (same clock rate as SCSI-1), Micro-D 68 pin connector
There are also fast wide, ultra-wide (a.k.a. SCSI-3), wide ultra2, ...
iSCSI Ultra-3 SCSI but using TCP/IP and Ethernet for the bus.
Serial SCS and other new developments: not really SCSI but uses SCSI command set to communicate with devices.
Although many of these busses support high speed by default, the clock rate will automatically adjust down to the speed of the slowest device on the bus. So use 2 controllers (1 for slower tape/CDROM, one for fast disks). You can manually set the speed to adjust for longer than normal cable lengths or flaky devices.
The 8-bit SCSI bus has 3 bits for an ID, so on 0–7 are available. The 16-bit bus uses 4 bits so 0–15 are available. SCSI ID 0 generally is the boot disk.
SCSI LUNs:
A SCSI device can have up to 8 ‘sub-devices’ contained within itself. (Some SCSI busses support more than this: 32, 128, or 254.)
The most common example is a RAID controller (single SCSI ID) with each disk (or more commonly a logical volume) in the array assigned a different Logical Unit Number (or LUN). Another example is a CD‑ROM jukebox that handles more than one disk at a time. Each CD/DVD is addressed as a LUN of that device. Most devices (such as hard disks) contain only one drive and get assigned LUN zero. Some of these devices internally ignore LUNs and if queried will report the same device for any LUN. Beware of auto-detection!
Each unique SCSI-ID/LUN gets a device in /dev. Disks will be /dev/sd?, tape drives will be /dev/st#. Example: a SCSI RAID of two disks will appear as /dev/sda (the RAID’s logical device), /dev/sdb and /dev/sdc (the disks within the array). Usually you only access /dev/sda, but may need to access the others to re-mirror or to get status.
For non-disk and non-tape devices SCSI Generic drivers may be used: /dev/sg?.
Note: A RAID controller plugs into the SCSI chain and the disks plug into the RAID controller’s internal bus, which may or may not be SCSI (so as to use cheaper ATA disks). It’s the RAID controller reporting the LUNs to the SCSI driver in your kernel.
Controller Protocol Example: SCSI Commands
An OS must use a controller’s protocol to tell it what to do. In SCSI terminology, communication takes place between an initiator (typically the host) and a target (typically one of the disks). The initiator sends a command to the target which then responds. SCSI commands consist of a one byte operation code followed by five or more bytes containing command-specific parameters. At the end of the command sequence the target returns a Status Code byte which is usually 00h for success, 02h for an error (called a Check Condition), or 08h for busy.
There are 4 types of SCSI commands: N (non-data), W (writing data from initiator to target), R (reading data), and B (bidirectional). There are about 60 different SCSI commands in total. (AT commands are simpler.) Here are a few:
· Test unit ready - “ping” the device to see if it responds
· Inquiry - return basic device information
· Request sense - give any error codes from the previous command
· Send diagnostic and Receive diagnostic results - run a simple self-test, or a specialized test defined in a diagnostic page
· Start/Stop unit
· Read capacity - return storage capacity
· Read
· Write
In all cases (both DAS and remote storage) the older parallel interfaces (P-ATA) are going away in favor of serial cables and interfaces. The reasons are simple: parallel cables are bulky, expensive, and have greater distance limitations than serial cables.
RAID
Each level defines some combination of stripping, replication, and parity. Stripping means to write logically consecutive sectors to different disks, which speeds things up. Replication or mirroring makes multiple copies of data on different disks. Parity data allows the RAID controller can detect when some disk contains corrupted data; with enough parity data the controller can determine which disk is bad. The system can continue by using the remaining good disk(s).
Level numbers definitions vary. [ Show (!) www.acnc.com/raid.html ]
|
RAID |
Description |
|
0 |
stripping
— Spread data over disks |
|
1 |
mirror
— duplicate data on 2 or more disks. (Duplex means mirror
with one controller per disk.) Requires OS support. |
|
0+1 (01) |
mirror of RAID
0 sets |
|
1+0 (10) |
stripping
across RAID 1 sets |
|
2, 3, 4 |
stripping +
parity (slight variations in type of parity) |
|
5 |
stripping +
(distributed) parity |
|
6 |
5+extra
parity |
Only RAID 0, 1, 1+0, and 5 are standard. All these extra disks can be expensive. Low cost servers may have just two (identical) disks, and can opt for striping (performance) or mirroring (safety). With four disks you can stripe across mirrored sets, or mirror each strip set.
Parity data used for standard RAID is known as n+1 parity. Each bit of each byte of each block of the data disks (there may be more than two) are XOR-ed to produce parity bits (except for RAID 2). For example, assume RAID 3 (stripe+parity): Disk1Block1byte1 = “1011 0010”, D2B1b1 = “1100 1111”, then P1B1b1 is “0111 1101”. If a disk fails the data can be recalculated from the others. For example if D2 fails: D2B1b1 = D1B1b1 XOR PB1b1, 1011 0010 XOR 0111 1101 = 1100 1111
RAID may be supported in hardware or software. Don’t use IDE for this. (Note book omits duplexing from definition of RAID1.) Software RAID >0 will impact performance (RAID 5 in sw + ~23% slower).
Using RAID storage systems in a data center (with SAN or NAS), it pays to have huge disks. The RAID system then defines logical volumes and assigns each a “LUN”. This is done in a vendor-specific way but efforts are underway to create a usable open standard for this (4/08). Different servers are assigned different LUNs. The OS sees each LUN as a disk to be partitioned and formatted.
The Linux software RAID driver is called “md” (multi-device); see mdadm and consider turning off init.d/mdmonitor if not using software RAID. See also mdmpd. On Debian see mkraid. On Solaris, metainit, metattach. Note most hardware RAID controllers are incompatible with SMART device monitoring.
Replacing a bad disk from a hardware RAID set:
Nearly all servers have status lights on the disks, although they
may not always indicate a failure. Usually you can determine which is the
failed disk by examining the logs which report the /dev/dsk/cXtXdX notation, then find the matching entry
from the output of the RAID controller software. On Solaris this usually means
looking at the output of “cfgadm
-la” and run:
“cfgadm ‑c unconfigure matching_disk_entry”. This will
shut the drive down and trip the LED indicator. Once the drive is replaced
with a good one, run:
“cfgadm ‑c configure matching_disk_entry”. (Depending
on your system (e.g., Sunfire) you run the Solaris luxadm command instead.)
Running RedHat on HP Proliants merely need to look for the failed drive with the bright red light on, rip it out and stick a new one in. This is picked up by the hardware RAID controller and the operating system never even notices!
Software RAID Example: A RAID 1 array formatted with ext3:
# mdadm --create /dev/md0
--level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mkfs -t ext3 /dev/md0
The mdadm configuration file tells an mdadm process running in monitor mode how to manage hot spares, so that they’re ready to replace any failed disk in any mirror. See spare groups in the mdadm man page.
The startup and shutdown scripts are easy to create. The startup script simply assembles each mirrored pair RAID 1, assembles each RAID 0 and starts an mdadm monitor process. The shutdown script stops the mdadm monitor, stops the RAID 0s and, finally, stops the mirrors.
Modern disks aren’t as reliable as many believe. A recent study (Data corruption in the storage stack: a closer look by Bairavasundaram et. al, ;login: June 2008, pp. 6-14) analyzed 1.53 million disks over 41 months, and found that around 4% of disks develop errors that can be detected by computing checksums (and comparing those with stored checksums). Of the 400,000 errors found, 8% were found during RAID reconstruction and created the possibility of data loss even for RAID5. For this reason data centers use RAID6 or better in SAN/NAS systems.
DAS vs. remote storage: With very high speed LANs available, it becomes possible to have the CPUs (blade servers) in one place and the disks in another (rack). This can be useful in many common situations. For one thing vibration affects disk speed by as much as 50% so disks often need more expensive racks that dampen noise and vibration. Special racks can efficiently hold, power, and cool many individual disks, and provide RAID controllers for them.
A more important reason is that separating the storage from the hosts provides you with great flexibility — you can easily share disks among many hosts and allocate storage easily to any host without buying bigger disks or adding more controllers per host. You can use different types of disks for different applications (e.g., web server must be fast; data warehouse must be reliable but can be slower).
Having all the disks in one place means expensive network backup can be eliminated. Special backup systems can be expensive (e.g., a tape library with robotic arm) and it may be an enterprise can only afford one of those, so all disks must be at that location, whereas the servers can be in other rooms, buildings, or even other campuses (up to several kilometers away when using optical cabling).
A number of different remote storage technologies are available, with different trade-offs of initial and operational costs, distances allowed, speed, reliability, and security and management issues.
Network Area Storage (NAS)
NAS attaches disks to the NAS head server, which is accessed as a file server across the LAN. Windows services will map a drive letter to some NAS volume; Unix/Linux servers typically use NFS. This solution is cheap to deploy as it can use your existing network(s). (Historically this is how Novell servers worked: workstations would have limited or no disks and use a file server .)
A problem with this approach is that your network is used for other things and thus there are issues of security, reliability, and bandwidth. (Qu: what issues? Ans: if network fails or stalls, applications may crash or workstations/servers may not operate at all. If you open a large file you can swamp the network. File permissions mean little if files are sent across a network where anyone can capture them.) These issues can be addressed by using encryption and bandwidth management, or a private LAN (say in a server farm or cluster).
Companies such as Network Appliance and EMC make large data center NAS systems. Linksys and others make smaller ones for SOHO use.
Storage Area Networks
SANs uses a dedicated LAN, often with Fibre Channel, that uses SCSI commands to connect servers to RAID and/or JBOD systems, and backup devices. This solution mimics DAS (from the host’s point of view). SANs support very high speed but can be expensive, due to the extra cabling (and possibly bridging) required. With SANs the storage is made available as volumes (virtual/logical disks) called LUNs and each is accessed by a single server (at a time). Often used with clusters. But that requires SANs support cluster file systems which permit multiple hosts to mount the same LUN simultaneously. SANs also support access control, to determine which servers can access which LUNs.
ATA over Ethernet
AoE is a cheap but effective replacement for Fibre Channel or iSCSI technology, using ATA disks connected to standard Ethernet NICs.
Serial Attached SCSI (SAS)
SAS is a newer standard with the benefits of Fibre Channel but supporting a wider range of devices (e.g., SATA and SAS drives), and at lower cost. SAS supports cascading expanders (much like a USB hub can be plugged into another hub). SAS uses serial communication instead of the parallel method found in traditional SCSI devices, but uses SCSI commands for interacting with SAS devices.
SAS supports up to 16K addressable devices in an SAS domain and point to point data transfer speeds up to 3 Gbit/s, but is expected to reach 10 Gbit/s in the next few years. The SAS connector is much smaller than traditional parallel SCSI connectors allowing for the popular 2.5 inch drives.
An SAS domain is a collection of one or more drives plus a controller (service delivery subsystem). Each domain is assigned a unique ID by the IEEE (much like it does for MAC addresses).
Storage Management
With very high capacity storage products used, an SA will need to consider having spare disks available. An SA will need to determine storage needs (useable space needed now and for the near-term) and determine an SLA for backups, recovery, space increase requests. The storage devices will need monitoring. The SA will also need to determine access policies, decide if quotas should be used. Since buying new storage is often determined by financial and political factors, you should assign LUNs for one group/department from a single storage unit, rather than group customer with similar needs per storage unit.
Rack Mounted Servers
While not part of this course, you should know there are standards for building reliable data/computing centers. These standards include EIA/TIA 568B, and the network equipment building standard (NEBS) in the U.S. and European Telecommunications Standards Institute (ETSI) standard. Today there are excellent boots and on-line resources for this, even certifications and degrees. (See the Data Center Univ. by APC) In this course we will discuss rack-mounting and a few related topics only.
Racks can be free-standing (floor mounts) or wall mounts. They may be completely enclosed or completely open. Some racks use only two supports (centered on the left and right sides of the shelves) and others use 4 corner supports. The primary design criteria are:
1. Access to equipment — Various enclosures, locks, and latches restrict access.
2. Airflow — Cabinets are designed to be placed side-to-side, so airflow is vertical, with vents and mounting brackets for fans. The shelving needs to support this too.
3. Mounting brackets — Mounting brackets have mounting holes at standard spacing and are a standard distance apart, to allow a variety of equipment to be installed in several configurations.
4. Grounding — The mounting brackets are conductive, acting as grounding strips for the cabinet and equipment, allowing the whole cabinet to be connected to the building ground.
5. Cable access — The bottom of the cabinet is usually open, allowing external cables to drop through a raised floor.
6. Noise reduction — Built into some cabinets.
The most common type of rack mount cabinet is known as “EIA standard”. Most rack mounted computer equipment is standardized to a 19" width. The internal width of these rack mount enclosures is also “EIA standard” of 19". There are many different server racks sizes (heights and depths) and different types of shelving systems that can be put in to these enclosures. The form of the modern cabinet is standardized by the Electronic Industries Alliance so that any EIA standard equipment can be placed in any manufacturer’s EIA standard cabinet.
All computer equipment heights are measured in units called rack units or RUs or simply “U’s”. One U (“1U”) equals 1.75 inches. When shopping for rack mount cabinets you will see references to 10u, 12u, 25u, etc. cabinets.
For example: If looking at a 25U rack mount cabinet, you need to choose some shelving that will fit into this cabinet for my specific application. The shelves for these cabinets are also rated in U’s. If you choose shelving that has a rating of 5 U’s, then this particular server rack will accommodate 5 shelves. If you choose shelves that have a rating of 12 U’s each, then this rack mount enclosure will only accommodate 2 such shelves.
Note most racks reserve some space for a power supply, fans, etc.
Airflow is a big issue when it comes to enclosed rack mount cabinets. Dissipating heat becomes critical when storing multiple devices inside of a single cabinet. This is certainly something you will need to take in to consideration when purchasing your server rack cabinet. You will also want to consider noise, power supplies, locks, and cable management. It is often best to use separate racks for hard disk arrays, with extra noise and vibration damping.
Laptop and Notebook Computer Hardware
Portable computers typically contain non-standard hardware, to keep them small and lightweight. This hardware often requires proprietary drivers which aren’t usually available for BSD or Linux (Solaris isn’t designed to run on a laptop, but it might on some PCs). The laptops that do run Linux/BSD usually contain modified kernels and proprietary drivers, making it difficult to upgrade the OS later. This situation is changing though.
Laptops/Notebooks have add-on slots for PCMCIA or PC-Card peripherals. The modern PC card is a 32 bit card. These work just like normal PCI add-ons and require no special setup to work (provided you have the correct drivers installed).
Older PC cards work more like ISA add-ons. To support these a program cardmgr watches the slots for card insertions/removals. It ignores 32-bit cards and handles the rest (loading modules, with the correct options, and creates /dev entries).
Cardmgr often requires the hotplug package. Upon insertion cardmgr looks up the card’s identification string in /etc/pcmcia/config, which lists the correct modules to load and a hotplug script to run. (Sources the file /etc/pcmcia/config.opts, make changes here. The scripts in turn are configured from /etc/pcmcia/*.opts files. See also the cardctl ident command to configure and control cards.