Disk fundamentals Old edition chapter 14 The virtual layering • Virtual layering of disk storage system: 1. disk controller firmware – controller chips or card to map physical disk geometry for different drive brands and models 2. BIOS – low level functions to read/write sectors or format tracks 3. The OS API services to open/close files, set properties, read/write files Virtual levels of disk access OS API System bios Disk controller firmware Common to all systems • Physical partitioning of data • Access to data at the file level • Map filenames to physical locations Hardware level • • • • • Platters sides Tracks Cylinders sectors OS level • OS level view of the disk is in terms of partitions, directories and files Assembly access to disk • Readily available using BIOS under MSDOS for ME, NT, XP, Windows7, etc. • Store and retrieve data in a special format (like Hamming or Huffman codes) • Recover lost data • Perform diagnostics • Using NT or XP you must use Win32 API for disk manipulation…or write device drivers with high privilege Tracks, cylinders, sectors • Disk is made up of multiple platters • Attached to a spindle which rotates at constant speed • Above the surface of each platter is a r/w head that records magnetic pulses • The heads move in or out as a group • See text sketch p 465 Tracks, cylinders, sectors • Surface of disk is formatted into (invisible) concentric bands called tracks where data is stored magnetically. • A disk will have thousands of tracks. • Moving r/w head from one track to another is called seeking. • (not mentioned) latency is the time it takes a particular sector to rotate around under the head • Seek time for a disk is one sort of performance measure • RPM is another performance measure- usually 7200 • The outermost track is track 0 and numbers increase as you move toward the center. Tracks, cylinders, sectors • All tracks readable from a given r/w head position together form a cylinder. • A file would typically be stored on disk using adjacent cylinders. This reduces seek time. • A sector is a 512-byte portion of a track • Physical sectors are magnetically marked at the factory using low-level formatting. Their size does not change regardless of the OS used. A hard disk may have 63 or more sectors per track. Photo of hard disk with reflective platter visible A platter from a 5.25" hard disk, with 20 concentric tracks drawn over the surface. Each track is divided into 16 imaginary sectors Figure 1 Sectors & tracks • A sector is the basic unit of data storage on a hard disk. The term "sector" emanates from a mathematical term referring to that pie shaped angular section of a circle, bounded on two sides by radii and the third by the perimeter of the circle - See Figure 1. An explanation in its simplest form, a hard disk is comprised of a group of predefined sectors that form a circle. That circle of predefined sectors is defined as a single track. A group of concentric circles (tracks) define a single surface of a disks platter. Early hard disks had just a single one-sided platter, while today's hard disks are comprised of several platters with tracks on both sides, all of which comprise the entire hard disk capacity. Early hard disks had the same number of sectors per track location, and in fact, the number of sectors in each track were fairly standard between models. Today's advances in drive technology have allowed the number of sectors per track, or SPT, to vary significantly, but more about that later. More about disks • • When a hard disk is prepared with its default values, each sector will be able to store 512 bytes of data. Without elaborating, there are a few operating system disk setup utilities that permit this 512 byte number per sector to be modified, however 512 is the standard, and found on virtually all hard drives by default. Each sector, however, actually holds much more than 512 bytes of information. Additional bytes are needed for control structures, information necessary to manage the drive, locate data and perform other functions. Exact sector structure depends on the drive manufacturer and model, however the contents of a sector usually include the following elements: ID Information: Within each sector a small space is left to identify the sector's number and location, which is used to locate the sector on the disk and provide for status information about the sector itself. For example, a single bit is used to indicate if the sector has been marked defective and remapped. • Synchronization Fields: These are used internally by the drive controller to guide the read process. • Data: The actual data in the sector. • ECC: Error correcting code used to ensure data integrity. • Gaps: Often referred to as spacers used to separate sector areas and provide time for the controller to process what it has been read before processing additional data. • Servo Information: In addition to the sectors, each of which contain the items above, space on each track is allocated for servo information on drives that utilize embedded servo drives. Most, if not all, modern drives not employ servo technology. Aside: Zoned Bit Recording • • We would be remiss in our discussion of drive sectors, tracks and performance without mentioning mass improvements such as Zoned Bit Recording. One of the methods used to increase capacity and data access speeds on hard disks is by improving the utilization of the larger, outer tracks of the disk. Early hard disks were extremely primitive, and their controllers weren't capable of handling complicated arrangements such as being able to change tracks. As the result of this arrangement, every track had the same number of sectors, with the standard set at 17 sectors per track. As you can see from our sketch above, Figure 1, tracks are concentric circles, with the ones on the outside of the platter much larger in circumference than the ones closer to the center. Since there is a constraint on how tightly the inner circles can be packed with bits, developers packed them tightly as possible given the state of technology at the time. By reducing bit density, developers were able to assign the same number of sectors to the outer circles. Essentially this meant that the inner sectors were being packed so tightly there was no room for error, and the outer sectors underutilized, as in theory they could hold many more sectors given the same linear bit density limitations as were imposed on the inner sectors. Zoned Bit Recording • • • • Drive developers, in an effort to create larger drive sizes, as well as improve utilization and performance, developed a technology referred to as zoned bit recording (ZBR). Zoned bit recording is often referred to as multiple zone recording or just zone recording. With this technology, tracks are grouped into zones based on their distance from the center of the disk, and each zone is assigned a number of sectors per track. As you move from the innermost part of the disk to the outer edge, you move through different zones, each containing more sectors per track than the one before. This makes more efficient use of the larger tracks on the outside of the disk. In essence, with ZBR, the size (or length) of a sector remains reasonably constant over the entire surface of the disk. Stark contrast to very early hard disks that did not employ ZBR, as their tracks were limited to only 9 sectors regardless of track size. An interesting added benefit from zoned bit recording is that the raw data transfer rate of the disk, also referred to as the media transfer rate (a bit of a misnomer), when reading the outside cylinders is considerably higher than when reading the inside ones. Although the angular velocity of the platters is constant regardless of which track is being read, the outer cylinders contain more data. Bear in mind though that angular velocity does not necessarily compensate for the fact that the outer tracks (periphery of the platter) is moving much faster than the tracks at the core of the platter. Take note that constant angular velocity is not the case for all drive technologies, such as older CD-ROM drives. Since data is written to the outer tracks of a drive first, hence the drive is filled with data from the outside in. The fastest data transfer occurs when the drive is first used and data retained in the outer tracks. Many people that perform benchmarks on their systems and their hard drives when new, then make some tweaks and changes to their system only to return to their benchmarks weeks or months later only to be unpleasantly surprised that the disk and its benchmarks are getting slower. Actually, the disk has probably has not changed at all, but the second benchmark may have been run on tracks closer to the center of the disk. While most people that take benchmarking seriously defragment their drives before running the tests, fragmentation of the file system can have impact performance benchmarks. fragmentation • Disk storage becomes fragmented over time just like main memory. • A fragmented file is not located in contiguous disk sectors. This slows access time. translation • Translation is the process converting physical geometry into logical structure • The drive itself or a card has a controller to perform this operation. • The OS works with logical (not physical) sector numbers. Logical Block Addressing: aside • • Prior to the advent of Logical Block Addressing, all hard drives were accessed via CHS (Cylinder, Head, Sector) or Extended CHS, which means that the drive was accessed by specifying its cylinder, head and sector address. More appropriately, it was referred to as accessing the drive through its "geometry". Extended CHS was a transition change in the way a drive was accessed in order to work around the 504 MiB barrier, however, the addressing was still done in terms of cylinder, head and sector numbers and then translated one or more times before actually accessing the drive itself. By contrast, logical block addressing (LBA) involves a completely new method of addressing sectors. New in that it is new to the EIDE/IDE interface. LBA was first developed around SCSI hard drives. With LBA, instead of referring to a drives cylinder, head and sector number geometry in order to access or "address" it, each sector is assigned a unique "sector number". In essence, LBA is a means by which a drive is accessed by linearly addressing sector addresses, beginning at sector 1 of head 0, cylinder 0 as LBA 0, and proceeding on in sequence to the last physical sector on the drive, which, for instance, on a standard 540 Meg drive would be LBA 1,065,456. While this was new it the AT Specification ATA-2, it has always been the one and only addressing mode in SCSI. AT Attachment ATA-2 has been subsequently replaced, and the latest AT specification is at ATA-7. Note also that LBA does not allow you to address more sectors than CHS style addressing would. Logical Block Addressing • • • • In order for you to employ LBA support, it must be supported by both the BIOS and the operating system. In addition, since it is a new method of communicating with the hard drive, the drive itself must support LBA as well. All newer hard drives do in fact support LBA. Often we review other sites to ensure that we provide you with accurate information, and with respect to LBA, we came upon a unique, but inaccurate, statement. One purported authority on computer systems stated that when drives supporting LBA are auto-detected by a BIOS that supports LBA, it will be set up to use that mode. This is inaccurate and misleading, as there's nothing in the BIOS code that will set up your drive to use LBA mode. If you have ever used Fdisk, you may recall that during the drive setup process, you are asked whether you want to enable LBA. Hence, it is a function of the operating system, and therefore don't expect your BIOS to somehow mysteriously setup your drive. While it is true that a drive enabled for LBA is not subject to the 504 MiB drive size barrier, there still remains considerable confusion about Logical Block Address and what it does. Many knowledgeable technicians and users believe that it is LBA addressing that avoids the 504 MiB barrier, however this is not quite accurate. Logical Block Addressing isn't getting around the barrier, because it is just another manner in which to address the same geometry. If you were still limited to 1,024 cylinders, 16 heads and 63 sectors, you would still have logical sectors beginning with number 0, and progressing sequentially through to 1,032,191, with the 504 MiB still in place. What does avoid this barrier is that LBA mode automatically enables geometry translation. This translation is required because the operating system calling the BIOS Int 13h routines knows nothing about LBA. Therefore it is the translation part of LBA that really gets around the barrier. When LBA is enabled, the BIOS will enable geometry translation. This translation may be done in the same way that it is done in Extended CHS or large mode via a drives geometry, or it may be done using a different algorithm called LBA-assist translation. It is this translated geometry that is presented to the operating system for use in Int 13h calls. Basically, the difference between LBA and ECHS is that when using ECHS the BIOS translates the parameters used by these calls from the translated geometry to the drive's logical geometry. With LBA, it translates from the translated geometry directly into a logical block (sector) number. LBA is currently the dominant form of hard disk addressing. When the 8.4 GB limit of the Int13h interface was reached in 1998-1999, it became impossible to express the geometry of large hard disks using cylinder, head and sector numbers, regardless of whether translated or not, while remaining below the Int13h limits of 1,024 cylinders, 256 heads and 63 sectors. This is one of the reasons that today's hard drives no longer indicate their classical geometry. Disk partitioning • A single harddrive may be partitioned into logical units named partitions or volumes represented by a letter, A, B, C, .. • A partition may be primary or extended and a drive may contain both types. • A primary partition is bootable. • An extended partition may be further divided into unlimited logical partitions. Each is mapped to a drive letter and can not be bootable. But each may be formatted with a different file system. Multiboot systems • It is common to create multiple primary partitions each booting a different OS. • Mathlab is dual boot • In industry, you might have primary partitions for development and production. • Logical partitions hold data. Different OS can access the same file systems. Both Linux and DOS can read FAT32 disks. FDISK.exe under MS-DOS • Create and remove partitions • Does not preserve data • Later versions (Win2000 and later) have a disk manager utility File systems • Every OS has some disk management system. • At the lowest level it manages partitions, at the next highest, files and dirctories. • It must keep track of location, size and attributes for each file. FAT File-Allocation-Table (see also later slide) • Maps logical sectors to clusters (a basic storage unit) • Maps files and directories to sequences of clusters. • A cluster is the smallest unit of space used by a file, consisting of one or more adjacent disk sectors. Wikipedia FAT • • • File Allocation Table (FAT) is a file system developed by Microsoft for MSDOS and was the primary file system for consumer versions of Microsoft Windows up to and including Windows Me. FAT as it applies to flexible/floppy and optical disk cartridges (FAT12 and FAT16 without long file name support) has been standardized as ECMA-107 and ISO/IEC 9293. The file system is partially patented. The FAT file system is relatively uncomplicated, and is supported by virtually all existing operating systems for personal computers. This ubiquity makes it an ideal format for floppy disks and solid-state memory cards, and a convenient way of sharing data between disparate operating systems installed on the same computer (a dual boot environment). The most common implementations have a serious drawback in that when files are deleted and new files written to the media, directory fragments tend to become scattered over the entire media, making reading and writing a slow process. Defragmentation is one solution to this, but is often a lengthy process in itself and has to be performed regularly to keep the FAT file system clean. Wikipedia NTFS • NTFS (New Technology File System) is the standard file system of Windows NT, including its later versions Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008, and Windows Vista.[5] • NTFS replaced Microsoft's previous FAT file system, used in MS-DOS and early versions of Windows. NTFS has several improvements over FAT and HPFS (High Performance File System) such as improved support for metadata and the use of advanced data structures to improve performance, reliability, and disk space utilization plus additional extensions such as security access control lists and file system journaling. The exact specification is a trade secret, although (since NTFS v3.00) it can be licensed commercially from Microsoft through their Intellectual Property Licensing program. XP disk management tool Cluster sizes for 1.25-2gig volume FAT Type FAT16 Cluster Size 32 kiB Number of FAT Entries65,526 Size of FAT~ 128 kiB FAT32 4 kiB 524,208 ~ 2 MiB Clusters used by FAT • A chain of clusters is referenced by a FAT that keeps track of all clusters used by a file. Pictures show cluster chain and wasted space examples. sector 1 2 3 4 5 6 7 8 cluster1 cluster2 4096 used 4096 used 1000 bytes used FAT 12 • Still supported by Windows and Linux • Cluster size is 512 bytes – perfect for small files • Each table entry is 12 bits • A volume holds less than 4087 clusters FAT 16 • The only system for drives formatted under msdos • Supported by all versions of windows and linux • Drawbacks: – Storage is inefficient on volumes over 1 gig due to large cluster size – Each table entry is 16 bits limiting the total number of clusters that can be accessed – Volume holds between 4087 and 65,526 clusters – Boot sector has no backup so a read error can be catastrophic – No built in security or individual user permissions FAT 32 • • • • • • Introduced with OEM2 release of win 95 and later refined A single file can be up to 4gb (minus 2b) Each table entry is 32 bits a volume holds 65,526 up to 268,435,456 clusters Volume can hold up to 32 gig Smaller clusters than FAT 16 on volumes 1gb to 8gb resulting in less waste • Boot record has a backup of critical information NTFS • Supported under NT, 2000, XP • Handles large volumes possibly spread over multiple drives • For disks>2gig, default cluster is 4kb • Supports unicode filenames up to 255 chars long • Permissions • Built-in encryption • Change journal can track file revisions • Disk quotas for individuals or groups of users • Robust recovery for data error and automatically repairs errors • Supports multiple disk mirroring (a mirror is a copy) ECC and Hamming • Hamming is a fairly expensive single-error correction scheme developed by Hamming at Bell Labs. • 2-power bits store parity of the other bits which they correct. So bit 1 is parity for all the odd bits. Bit 2 is parity for bits 3, 6, 7, 10,11, 14, 15, bit 4 is correction bit for bits 5, 6, 7, 12, 13, 14, 15. Bit 8 corrects 9, 10, ..15, and so on. Hamming… performance • To send an 8 bit (ASCII code for example) piece of data, we will use correcting bits 1, 2, 4, and 8 (4 bits) plus the 8 data bits means we will “package” 12 bits. Notice this is a 33% overhead. • To send 16 bits of data we would use correction bits 1,2,4,8 and 16 for a 21-bit package where overhead has dropped to less than 25% • We can send up to 247 bits of data using parity bits 1,2,4,8,16,32,64,and 128 (=8 correction bits) so the overhead has dropped down to 8/255…smaller than 3% Hamming…a 12 bit example • Compute the correcting bits to send 8 bits of data, like ‘A’ or ‘9’. • Assume even parity bits. ECC example • In bit interleaved parity disk 4 might hold parity bits for data on the other three disks. • Bits are read simultaneously off the 4 disks. If data is lost on one of the 3 data disks it can be recovered from the parity disk. • For example, if 2 good data bits read (with X marking lost data) are 1X1 with parity bit==1 we see lost data (X) must be a 1. MS DOS boot record • See text pg 471 • Root directory is the main directory for a disk volume A directory entry for a file contains filename, size, attribute and starting cluster number. Directory trees • FAT and NTFS have root directories containing primary list of files on the disk. • Subdirectories may be contained in the directory Directory trees Root directory cpp java asm lib jdk source bin jar bin etc MS DOS directory structure • MS-DOS entries are 32 bytes long with fields shown in table 14-5 MS DOS directory entry Hex ofs 00 08 0B 0C 16 18 1A 1C Field Filename extension attr reserved time data Start cluster size format ASCII ASCII 8-bit bin 16-bit bin 16-bit bin 16-bit bin 32-bit bin Filename status byte Status byte description 00h Entry never used 01h With attr=0fh and status byte 1h, this is the first entry of a long filename 05h E5h 2E5h 4nh Entry is for a filename where the file has been erased (.) for directory name First long name entry… with attr=0fh this marks the end. n=#entries for filename Attribute field is bit-mapped reserved reserved archive subdir Volume label System hidden Readonly An entry of 0Fh indicates that the current dir entry is for an extended filename Date stamp Year = 0..119 and is added to 1980 Month=1..12 Day=1..31 month day 15 year 9 8 5 Time stamp Hour=0..23 Minute=0..59 Seconds=0..59 seconds hours minutes 0 15 11 10 5 4 MSDOS 32 bit date/time same as 16 bit, but date is high word of a double word • • • • • • Year bits 31-25 Month 24-21 Day 20-16 Hour 15-11 Min 10-5 Sec 4-0 Cluster chain example- just links are shown 2 3 4 8 1 2 3 4 9 10 eoc 5 6 7 8 9 10 File starting cluster=1, filesize=7 11 12 13 14 15 16 Cluster chain example#2- just links are shown 6 7 11 1 2 3 4 5 6 7 12 eoc 8 9 10 File starts in cluster 5, size5 11 12 13 14 15 16 FAT • When a file is create the OS looks for an available cluster entry in the FAT. Gaps occur if insufficient contiguous entries are available – typically as files are deleted & new ones added. • As files are modified and resaved, their chains become fragmented. • As r/w heads jumps between cylinders to locate all of a file’s clusters, performance degrades. 3 programs • Previous (5th) edition text contained 3 programs to read sectors, check free diskspace, and look at clusters. • But the first two do not run under xp.