US 6,983,355 B2 | ||
Virtualization of physical storage using size optimized hierarchical tables | ||
Richard Anthony Ripberger, Tucson, Ariz. (US); and Michael P. Vageline, Tucson, Ariz. (US) | ||
Assigned to International Business Machines Corporation, Armonk, N.Y. (US) | ||
Filed on Jun. 09, 2003, as Appl. No. 10/457,579. | ||
Prior Publication US 2004/0250043 A1, Dec. 09, 2004 | ||
Int. Cl. G06F 12/00 (2006.01) |
U.S. Cl. 711—206 | 22 Claims |
1. A method for managing physical storage space in a storage subsystem, the physical storage space including at least one
physical storage device attached to a storage controller in communication with at least one host system, the method comprising:
dividing the physical storage device into a plurality of segments (S);
assigning an identifier to each segment, the identifier having a first portion identifying a physical device in which the
segment is located and a second portion identifying a location within the physical device;
establishing a plurality of emulated devices (D) within the storage controller for access by the at least one host system;
establishing a plurality of tables within the storage controller, each table subdivided into a plurality of pages, each page
having a plurality of entry spaces, the tables comprising:
a first segment table having D pages, each page having a first plurality of entry spaces (i1) or storing segment identifiers, each segment identifier having a first plurality of bits identifying a segment number within
a physical storage device and a second plurality of bits identifying a physical storage device; and
a second segment table having a plurality of pages equal to S/(2i1), each page having a second plurality of entry spaces (i2) for storing pointers to entries in the first segment table; and
an emulated device table having a plurality of entry spaces equal to D, each entry space for storing an identifier of a segment
table and an identifier of a segment table page;
selecting the number of second entry spaces i2 such that:
memory space required by the segment tables in the storage controller is optimized; and
the segments may be allocated among any of the emulated devices in any proportion, including allocating all of the segments
to a single emulated device;
during operation of the storage subsystem, dynamically allocating the segments to the emulated devices; and
during operation of the storage subsystem, using the device and logical address provided through a host I/O operation to access
a logical block of an emulated device on the physical storage device associated with the emulated device by:
using a provided device address to select an entry in the emulated device table;
using information in the emulated device table entry to find a highest segment table and a segment table page within the highest
segment table associated with the emulated device;
using a logical block address (LBA) to navigate through the segment tables by considering the LBA as:
a first plurality of bits identifying an entry within a second segment table page that contains a pointer to a first segment
table page;
a second plurality of bits identifying an entry within the first segment table page which contains the segment identifier;
and
a third plurality of bits identifying a logical block within the physical segment identified by the segment identifier;
whereby a logical address on the emulated device is mappable to a logical block on a segment within the physical storage space.
|