Computers utilize a wide variety of disks to store data. Disks are classified according to the storage medium employed, such as when "optical" disks are distinguished from "magnetic" disks. Disks are also classified as either "floppy" or "hard." Hard disks generally have greater storage capacity, faster data access times, and longer useful lives than floppy disks ("floppies"). Unlike hard disks, however, floppies are "removable." That is, floppies are easily released from, and reattached to, a disk drive which provides the computer with access to the data on the disk.
FIG. 1 illustrates a disk 10 attached to a disk drive 12. The disk 10 illustrates physical characteristics of both floppies and hard disks. The disk 10 contains a number of concentric data cylinders such as the cylinder 14. The cylinder 14 contains several data sectors, including sectors 16 and 18. The sectors 16 and 18 are located on an upper side 20 of the disk 10; additional sectors may be located on a lower side 22 of the disk 10. The sides 20, 22 of the disk 10 define a platter 24. Floppy disks contain only one platter and thus are either single-sided or double-sided. For clarity of illustration only one platter 24 is shown in FIG. 1, but hard disks often contain several platters and thus may include one, two, or more sides.
The upper side 20 of the disk 10 is accessed by a head 26 mounted on an arm 28 secured to the drive 12. To access different cylinders of the disk 10, the arm 28 moves the head 26 in toward the center of the disk 10 or out toward the periphery of the disk 10 according to the position of the desired cylinder. To access different sectors within a cylinder, the drive 12 rotates the disk 10 around a spindle 30, thereby rotating the desired sectors into adjacency with the head 26. Additional sides of a disk, including sides on additional platters, may be accessed in a similar manner by additional disk drive heads. Because each side of a disk is accessed by a corresponding disk drive head, the number of heads is sometimes used to indicate the number of sides of the disk that are accessible to the drive. For example, double-sided disks are accessed with double-headed drives.
A given sector on the disk 10 may be identified by specifying a head, a cylinder, and a sector within the cylinder. Heads are generally numbered from the top of the drive proceeding downward, beginning at zero. Cylinders are generally numbered from the outside edge of the platter proceeding inward, beginning at zero. Sectors within a cylinder are generally numbered from a marker in the disk medium proceeding either clockwise or counter-clockwise, depending on the direction of disk rotation in the disk drive, and beginning at one. A triplet specifying the head number, cylinder number, and sector number in this manner is known as a "physical sector address." For instance, the sector labeled as 16 in FIG. 1 could have a physical sector address of (head zero, cylinder seven, sector two), or more concisely, a physical address of (0, 7, 2). The terms "address" and "pointer" are used interchangeably herein.
Alternatively, a given sector may be identified by a "logical sector address." Each logical sector address is a single number rather than a triplet of numbers. The logical address of a sector corresponds to the number of sectors between the addressed sector and the "first" sector on the disk 10 along some specified path which traverses all available sectors in order. The first sector, known as "sector zero," is often located at a physical sector address of (0, 0, 1). One common traversal path begins at logical sector zero, traverses the sectors in cylinder zero of head zero, traverses the sectors of cylinder zero of head one, proceeds thus through cylinder zero on each successive head, proceeds to the sectors of cylinder one of head zero, and continues in like manner. However, other disk traversal paths are also used.
Disks are also classified by rules governing the physical organization of data on the disk. Many disks mold the available space into one or more "partitions" by a "partition table" located on the disk. For instance, MACINTOSH.RTM. computers utilize a partition table having a composition that is specifically adapted for use with the MACINTOSH operating system (MACINTOSH is a registered trademark of Apple Computer, Inc.). Many SUN.RTM. workstation computers utilize a partition table composition that is specifically adapted for use with the SunOS.RTM. File System (SUN and SunOS are registered trademark of Sun Microsystems, Inc.). Other examples abound; different partition table compositions are almost as common as different operating systems and different file systems, which number in the hundreds.
Unfortunately, different partition table compositions are usually incompatible. Detailed methods which correctly modify the contents of a first partition table will often scramble the contents of a second partition table if the first and second tables use different composition rules. A detailed method for reducing the number of disk sectors in a MACINTOSH partition, for instance, is likely to be of little help in shrinking a SunOS partition, and may even cause data loss if applied to the SunOS partition table.
One partition table composition, denoted herein as the "IBM-compatible" partition table, is found on the disks used in many IBM.RTM. personal computers and IBM-compatible computers (IBM is a registered trademark of International Business Machines Corporation). IBM-compatible partition tables may be used on both floppies and hard disks, and they may be used with magnetic disks, optical disks, and disks employing other storage media. IBM-compatible partition tables may also be used with a variety of disk sector addressing schemes, including without limitation schemes that employ traversal paths different from the path described above and schemes which assign logical sector addresses that start over again at zero for each partition on the disk.
As shown in FIG. 2, an IBM-compatible partition table 32 includes an Initial Program Loader ("IPL") identifier 34, four primary partition identifiers 36, and a boot identifier 38. As shown in FIG. 3, each partition identifier 36 includes a boot indicator 40 to indicate whether the partition in question is bootable. At most one of the partitions in the set of partitions defined by the partition table 32 is bootable at any given time.
Each partition identifier 36 also includes a starting address 42, which is the physical sector address of the first sector in the partition in question, and an ending address 44, which is the physical sector address of the last sector in the partition. A sector count 46 holds the total number of disk sectors in the partition. A boot sector address 48 holds the logical sector address corresponding to the physical starting address 42. On disks having more than 1024 cylinders, the starting address 42 and the ending address 44 contain predetermined maximum values if the actual values are too large to store in the space given in the partition table 32; the actual values can be derived from the sector count 46 and the boot sector address 48.
Some IBM-compatible computer systems allow "logical partitions" as well as the primary partitions just described. All logical partitions are contained within one primary partition; a primary partition which contains logical partitions is also known as an "extended partition." Logical partitions are represented by one or more lists of partition identifiers 36. Each list is attached in conventional fashion to one of the partition identifiers P1, P2, P3, or P4. Thus, the set of partitions defined by an IBM-compatible partition table includes any defined primary partition, regardless of whether that primary partition is an extended partition, and also includes any logical partitions defined by partition identifiers 36.
Each partition identifier 36 also includes a system indicator 50. The system indicator 50 identifies the type of file system contained in the partition, which in turn defines the physical arrangement of data that is stored in the partition on the disk 10 (FIG. 1). The system indicator 50 utilizes predefined constant values to designate various file systems. For instance, the constant value 01H indicates a 12-bit File Allocation Table ("FAT") file system first used by the MS-DOSS operating system (MS-DOS is a registered trademark of Microsoft Corporation). Other values designate other file systems, including the CP/M-86.RTM. file system (registered trademark of Novell, Inc), the XENIX.RTM. file system (registered trademark of Microsoft Corporation), the NOVELL file system (trademark of Novell, Inc.), a 16-bit FAT file system of the MS-DOS operating system, and the PCIX file system. Values not recognized by a particular operating system are treated as designating an unknown file system.
The system indicator 50 may designate a file system, such as the 12-bit FAT file system, which is used most widely in connection with a particular operating system, such as MS-DOS. However, operating systems and file systems are different components of the computer. The file system associated with a specific partition of the disk 10 (FIG. 1) determines the format in which data is stored in the partition, namely, the physical arrangement of user data and of file system structures in the portion of the disk 10 that is delimited by the starting address 42 and the ending address 44 of the partition in question. At any given time, each partition thus contains at most one type of file system.
The operating system manages access, not only to the disk 10, but to other computer resources as well. Resources typically managed by the operating system include one or more disks and disk drives, memory (RAM and/or ROM), microprocessors, and I/O devices such as a keyboard, mouse, screen, printer, tape drive, modem, serial port, parallel port, or network port.
The operating system accesses the disk 10 in part through subprograms known as "file system drivers." These drivers use internal file system data and assumptions about the file system to translate more abstract information such as file names and read/write requests into more detailed information such as sector addresses and physical disk accesses. By appropriate use of file system drivers, a single operating system can access files stored according to different file systems. For instance the OS/2 operating system can access both FAT files and High Performance File System ("HPFS") files (OS/2 is a mark of International Business Machines corporation). File system drivers do not alter the type of file system that is contained in a partition, nor do they alter characteristics such as the partition's size or its location on the disk 10 (FIG. 1).
It is sometimes desirable to alter the contents of an IBM-compatible partition table. For instance, a person using a computer may wish to expand a particular partition to allow additional data to be stored in files within that partition. Conversely, the user may wish to shrink a specified partition by allocating fewer disk sectors to the partition. It may also be convenient or necessary to move a partition to a different location on the disk while substantially or exactly preserving the number of disk sectors allocated to the partition.
One conventional approach to modification of an IBM-compatible partition table begins by copying all necessary user and system data off the disk to a temporary storage location such as a tape or another disk. The data copied includes without limitation the contents of files created by the user such as textual documents and spreadsheets, the contents of files required to run applications such as word processors, and system data such as directory information. Some internal file system data such as sector allocation maps does not necessarily need to be copied, but is often copied anyway. The familiar disk utility FDISK is then used to update the IBM-compatible partition table. The newly specified partition is then formatted with the familiar disk utility FORMAT or a similar utility. Finally, the data is copied back into the new partition on the disk. During this copying process the file system copy utility creates appropriate new file system structures reflecting the current locations of data on the disk.
This approach to partition manipulation has several drawbacks. A temporary storage device with adequate storage capacity may not be readily available or affordable under the circumstances. Even if temporary storage is available, copying large amounts of data from the disk to temporary storage and then back again can take a substantial period of time.
In addition, manipulating IBM-compatible partition tables in this manner is confusing and dangerous for many computer users. The FDISK utility assumes that the user is familiar with the intricacies of IBM-compatible partition tables, physical disk addresses, logical partitions, extended partitions, operating system assumptions regarding partitions, and related matters. Users who are unfamiliar with these technical details may easily and inadvertently destroy data.
Less grievous but nonetheless undesirable situations can also arise if the user miscalculates the correct size or position of the new partitions. For instance, if the partition has been made too small to receive all the data from temporary storage, it becomes necessary to once again modify the partition table with FDISK, to reformat again, and to once again copy all the data from temporary storage into the reformatted partition. Even if everything works as desired the first time, this approach to partition modification can be very time-consuming. With a typical disk holding several hundred megabytes of data the process may require several hours to complete successfully.
Some conventional partition manipulation approaches are limited to shrinking FAT partitions or HPFS partitions. These approaches are not capable of shrinking logical partitions. They provide no capability for expanding a partition or moving a partition to a new location on the disk while preserving the partition's size. Moreover, known approaches allow user data to be lost if power to the computer is interrupted during the partition shrinking operation.
It is sometimes desirable to convert a partition from one file system to another. For instance, one known approach converts a FAT partition into an HPFS partition. However, the conversion is performed in place. That is, user data is left substantially in the same sectors on disk while FAT file system structures are converted into corresponding HPFS file system structures. This approach has the advantage of requiring only about enough additional disk space to hold the HPFS file system structures.
However, during virtually the entire conversion operation, the partition is in a hybrid state that matches no single known file system. Thus, it is very likely that user data will be lost if the file system conversion is interrupted. In particular, data is likely to be lost if power to the computer is interrupted for even a moment during the conversion. Moreover, this approach is not integrated with means for shrinking, expanding, and moving partitions, or with efficient means for checking the integrity and self-consistency of the file system before and after the conversion.
Thus, it would be an advancement in the art to provide a method that allows users who are unfamiliar with technical intricacies to easily shrink, expand, and move IBM-compatible disk partitions.
It would be a further advancement to provide such a method which prevents data loss caused by interruptions such as a power failure during the manipulation of a partition.
It would also be an advancement to provide such a method which properly shrinks, expands, and moves logical partitions and extended partitions.
It would be an additional advancement in the art to provide such a method which safely converts partitions from one file system to another file system.
It would be a further advancement to provide such a method which efficiently tests the integrity and consistency of the file system data within a partition.
Such a method for manipulating disk partitions is disclosed and claimed herein.