Source: https://patents.google.com/patent/US8074038B2/en
Timestamp: 2019-11-22 06:33:56
Document Index: 661028040

Matched Legal Cases: ['art 1000', 'art 1000', 'art 1000', 'art 1600', 'art 1600', 'art 1000', 'art 1000']

US8074038B2 - Converting luns into files or files into luns in real time - Google Patents
Converting luns into files or files into luns in real time Download PDF
US8074038B2
US8074038B2 US12/464,329 US46432909A US8074038B2 US 8074038 B2 US8074038 B2 US 8074038B2 US 46432909 A US46432909 A US 46432909A US 8074038 B2 US8074038 B2 US 8074038B2
US12/464,329
US20100293349A1 (en
2009-05-12 Priority to US12/464,329 priority Critical patent/US8074038B2/en
2009-07-28 Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PIKE, ROBERT, LIONETTI, CHRIS
2010-11-18 Publication of US20100293349A1 publication Critical patent/US20100293349A1/en
2011-12-06 Publication of US8074038B2 publication Critical patent/US8074038B2/en
238000005192 partition Methods 0 abstract claims description 204
102100009497 TOPORS Human genes 0 abstract 11
101700018369 TOPRS family Proteins 0 abstract 11
Embodiments of the present invention relate to techniques for storing data and accessing data stored in computer data storage. For example, FIG. 1 shows a computing and data storage system 100 in which a plurality of computing devices access shared storage. As shown in FIG. 1, system 100 includes first-third host computers 102 a-102 c, a communication network 104, and a storage array 106. Storage array 106 includes a plurality of storage units/storage devices 114 a-114 n and a storage communication network 108. In the example of FIG. 1, first-third host computers 102 a-102 c share access to storage array 106, including being enabled to store data in, and to retrieve data stored in storage devices 114 a-114 n of storage array 106.
Each of host computers 102 a-102 c is shown in FIG. 1 as communicating with storage array 106 through network 104 and a corresponding communication link. For example, as shown in FIG. 1, host computer 102 a is communicatively coupled with network 104 through a first communication link 110 a, host computer 102 b is communicatively coupled with network 104 through a second communication link 110 b, and host computer 102 c is communicatively coupled with network 104 through a third communication link 110 c. Storage array 106 is shown communicatively coupled with network 104 through a fourth communication link 110 d. Network 104 may be a LAN, WAN (wide area network), or combination of networks, such as the Internet. First-fourth communication links 110 a-110 d may include any type or combination of communication links, including wired and/or wireless links, such as IEEE 802.11 wireless LAN (WLAN) wireless links, Worldwide Interoperability for Microwave Access (Wi-MAX) links, cellular network links, wireless personal area network (PAN) links (e.g., Bluetooth™ links), Ethernet links, USB links, etc.
For example, as shown in FIG. 1, storage array 106 may include an array controller 112. Array controller 112 may be configured to allocate logical storage to host computers 102 a-102 c based on the physical storage of storage devices 114 a-114 n. For example, array controller 112 may be configured to combine the set of physical storage devices of storage array 106 to create a RAID (redundant array of independent disks) array or set. A RAID set is a logical construct of storage devices 114 a-114 n. Storage array 106 may be configured in various types of RAID sets for storage array 106. One example of a RAID set is a “RAID 1,” where storage devices 114 a-114 n include mirror imaging storage devices. Further types of RAID sets may alternatively be included in storage array 106, including RAID 0, RAID 5, RAID 6, and RAID 10 configurations, which are well known to persons skilled in the relevant art(s). Array controller 112 may use some portion of usable storage space from the RAID set to generate a virtual representation of a hard drive called a LUN (logical unit number). Each of computers 102 a-102 c may have one or more LUNs exposed to it by array controller 112 for storage access.
For example, FIG. 4 shows a block diagram of a host computer 102 a executing a plurality of virtual machines 402 a-402 p. Furthermore, FIG. 4 shows virtual storage 202 including a plurality of LUNS 204 a-204 p allocated to computer 102 a as storage for virtual machines 402 a-402 p. As shown in FIG. 4, each of LUNs 204 a-204 p includes a corresponding one of virtual hard drives 404 a-404 p. Virtual hard drives 404 a-404 p are virtual storage locations for data corresponding to virtual machines 402 a-402 p. For example, virtual hard drives 404 a-404 p may each store one or more files that are executed by computer 102 a as a corresponding one of virtual machines 402 a-402 p. Furthermore, virtual hard drives 404 a-404 p each may provide virtual storage for the corresponding one of virtual machines 402 a-402 p.
Virtual machines access storage through several levels of abstraction, from virtual storage to physical storage. Some virtual machines may also be referred to as “virtual servers.” During operation, virtual machine 402 a may attempt to write a block of data to its virtual hard drive 404 a. An operating system (OS) of computer 102 a may intercept the data block write operation, and may perform a conversion to determine where the block of data should be written with respect to LUN 204 a. For example, virtual machine 402 a may attempt to write a data block having a LBA of 394 to virtual hard drive 404 a. The OS may determine that data block offset 394 in virtual hard drive 404 a is equivalent to a LBA of 9942 in LUN 204 a. Thus, the OS may attempt to write the data block to LBA 9942 of LUN 204 a. Array controller 112 (in FIG. 1) may receive the write request for LBA 9942 from the OS of host computer 102 a, and may write the data block to the actual physical location in storage array 106 corresponding to LBA 9924 (e.g., real spindle block 12345 on both spindle 47 and spindle 48 of storage device 114 a).
Furthermore, the ability to “pivot” datasets and/or partitions from a LUN that stores multiple datasets is enabled. For example, LUN 500 may store datasets 508 a-508 p in multiple partitions as a form of data store, and individual ones of datasets 508 a-508 p may be copied from LUN 500 to respective LUNs associated with further host computers. The further host computers can access the datasets at the respective LUNs. As such, the ownership of a dataset can be pivoted from a first host computer to a second host computer, which is provided access to the dataset in the form of a dedicated LUN. Furthermore, the second host computer can pivot ownership of the dataset back to the first host computer when the second host computer no longer needs access to the dataset, by copying the dataset from the dedicated LUN back to the multi-partition LUN.
For illustrative purposes, flowchart 1000 is described as follows with respect to FIG. 12, which shows a block diagram of a computing and data storage system 1200, according to an example embodiment. As shown in FIG. 12, system 1200 includes first and second host computers 102 a and 102 b and a storage array 1202. Storage array 1202 includes virtual storage 1204 and array controller 802. Virtual storage 1204 includes first LUN 500 and a second LUN 1206 (additional LUNs may be present that are not shown in FIG. 12, for purposes of brevity). FIG. 12 illustrates a dataset 508 a being pivoted from first host computer 102 a to second host computer 102 b.
As shown in FIG. 10, flowchart 1000 begins with step 1002. In step 1002, a first logical unit number (LUN) is exposed from a storage array to a first host computer. For example, in an embodiment, step 1002 may be performed by LUN allocator 1102. Referring to FIG. 12, LUN allocator 1102 may transmit an exposed LUN indicator signal 1218 to computer 102 a (e.g., through a communication medium, such as shown in FIGS. 1 and 2), which indicates that first LUN 500 is allocated to computer 102 a. For example, exposed LUN indicator signal 1218 may include an identifier (e.g., an identification number, an address, etc.) for first LUN 500 and an amount of storage included in first LUN 500.
Referring back to flowchart 1000 (FIG. 10), in step 1004, a pivot request is received from the first host computer regarding a first partition storing a dataset of a plurality of partitions of the first LUN. For example, in an embodiment, step 1004 may be performed by pivot request receiver 1104. As shown in FIG. 12, pivot request receiver 1104 may receive pivot request signal 1220 from first host computer 102 a, indicating that dataset 508 a of first partition 506 a is to be pivoted. As a result, pivot request receiver 1104 may indicate to LUN generator 1106 that a LUN be generated to accommodate dataset 508 a.
In step 1006, a size of the first partition in the first LUN is determined. For example, in an embodiment, step 1006 may be performed by LUN generator 1106. LUN generator 1106 may determine the size of first partition 506 a in any manner. For instance, referring to FIG. 12, LUN generator 1106 may access partition table 504 to determine an offset and/or range of LBAs allocated to first partition 506 a. In another embodiment, first host computer 102 a may include an indication of the size of first partition 506 a in pivot request signal 1220 received by pivot request receiver 1104, and pivot request receiver 1104 may provide the size indication to LUN generator 1106.
In step 1014, the first partition is copied from the first LUN to the second LUN at the location indicated in the partition table for the second partition. For example, in an embodiment, step 1014 may be performed by partition copier 1108. Partition copier 1108 is configured to copy a partition from a source LUN to a destination LUN. To initiate the copying, LUN generator 1106 may indicate to partition copier 1108 that the destination LUN has been generated. For instance, referring to FIG. 12, partition copier 1108 copies first partition 506 a (including dataset 508 a) of first LUN 500 to second partition 1212 in second LUN 1206. As shown in FIG. 12, dataset 508 a is copied to partition 1212 of second LUN 1206 (as indicated by dotted lines). Partition copier 1108 may perform the partition copying in any manner, including by techniques known to persons skilled in the relevant art(s). For example, partition copier 1108 may perform a snapshot (e.g., using copy-on-write snapshot technology) or a clone of first partition 506 a to generate partition 1212. For instance, a copy command may be issued in the form “snapshot LUN 500: Partition 506 a” or “LUN 500: LBA start-LBA end,” where “LBA start” and “LBA end” are respective starting and ending LBAs for first partition 506 a in first LUN 500. Such a copying operation may be performed relatively rapidly, such as in the order of seconds. In an embodiment, LUN 1206 is completely filled by signature 1208, partition table 1210 (which may follow signature 1208), and partition 1212 (which may follow partition table 1210), although in other embodiments, LUN 1206 may include additional storage space.
For illustrative purposes, flowchart 1600 is described as follows with respect to FIG. 17, which shows a block diagram of computing and data storage system 1200 of FIG. 12, according to an example embodiment. FIG. 17 illustrates dataset 508 a being pivoted from second host computer 102 b to first host computer 102 a.
As shown in FIG. 16, flowchart 1600 begins with step 1602. In step 1602, a first LUN of a storage array is exposed to a first host computer and a second LUN of the storage array is exposed to a second host computer. For example, referring to FIG. 17, first LUN 500 may be exposed to first host computer 102 a, and second LUN 1206 may be exposed to second host computer 102 b. In an embodiment, first LUN 500 may have been exposed to first host computer 102 a according to step 1002 of flowchart 1000 (FIG. 10) and second LUN 1206 may have be exposed to second host computer 102 b according to step 1016 of flowchart 1000, as described above.
performing a copy-on-write snapshot or a clone of the partition in the second LUN to copy the partition from the second LUN to the first LUN.
US12/464,329 2009-05-12 2009-05-12 Converting luns into files or files into luns in real time Active 2030-06-01 US8074038B2 (en)
US12/464,329 US8074038B2 (en) 2009-05-12 2009-05-12 Converting luns into files or files into luns in real time
CN 201080021485 CN102422277B (en) 2009-05-12 2010-05-10 Converting luns into files or files into luns in real time
JP2012510905A JP5276218B2 (en) 2009-05-12 2010-05-10 Convert LUNs to files or files to LUNs in real time
CA2953608A CA2953608A1 (en) 2009-05-12 2010-05-10 Converting luns into files or files into luns in real time
KR1020117026772A KR101624376B1 (en) 2009-05-12 2010-05-10 Converting luns into files or files into luns in real time
CA2758304A CA2758304C (en) 2009-05-12 2010-05-10 Converting luns into files or files into luns in real time
PCT/US2010/034276 WO2010132375A2 (en) 2009-05-12 2010-05-10 Converting luns into files or files into luns in real time
EP10775347.7A EP2430560A4 (en) 2009-05-12 2010-05-10 Converting luns into files or files into luns in real time
US13/298,835 US8473698B2 (en) 2009-05-12 2011-11-17 Converting LUNs into files or files into LUNs in real
US13/925,228 US8880825B2 (en) 2009-05-12 2013-06-24 Converting LUNs into files or files into LUNs in real time
US13/298,835 Continuation US8473698B2 (en) 2009-05-12 2011-11-17 Converting LUNs into files or files into LUNs in real
US20100293349A1 US20100293349A1 (en) 2010-11-18
US8074038B2 true US8074038B2 (en) 2011-12-06
ID=43069444
US12/464,329 Active 2030-06-01 US8074038B2 (en) 2009-05-12 2009-05-12 Converting luns into files or files into luns in real time
US13/298,835 Active US8473698B2 (en) 2009-05-12 2011-11-17 Converting LUNs into files or files into LUNs in real
US13/925,228 Active US8880825B2 (en) 2009-05-12 2013-06-24 Converting LUNs into files or files into LUNs in real time
US (3) US8074038B2 (en)
EP (1) EP2430560A4 (en)
JP (1) JP5276218B2 (en)
KR (1) KR101624376B1 (en)
CN (1) CN102422277B (en)
CA (2) CA2953608A1 (en)
WO (1) WO2010132375A2 (en)
US20120066452A1 (en) * 2009-05-12 2012-03-15 Microsoft Corporation Converting luns into files or files into luns in real time
US8402177B2 (en) 2011-06-29 2013-03-19 Hewlett-Packard Development Company, L.P. Inferring host storage topology
US9952807B1 (en) * 2011-06-30 2018-04-24 EMC IP Holding Company LLC Virtual machine back-up
CN109286792A (en) * 2014-07-28 2019-01-29 华为数字技术（成都）有限公司 A kind of monitor video storage method and device
US10370800B2 (en) 2016-08-15 2019-08-06 Sno-Way International, Inc. Hopper spreader with back EMF control and hopper system speed control
2009-05-12 US US12/464,329 patent/US8074038B2/en active Active
2010-05-10 KR KR1020117026772A patent/KR101624376B1/en active IP Right Grant
2010-05-10 WO PCT/US2010/034276 patent/WO2010132375A2/en active Application Filing
2010-05-10 CN CN 201080021485 patent/CN102422277B/en active IP Right Grant
2010-05-10 JP JP2012510905A patent/JP5276218B2/en active Active
2010-05-10 EP EP10775347.7A patent/EP2430560A4/en active Pending
2010-05-10 CA CA2953608A patent/CA2953608A1/en not_active Abandoned
2010-05-10 CA CA2758304A patent/CA2758304C/en not_active Expired - Fee Related
2011-11-17 US US13/298,835 patent/US8473698B2/en active Active
2013-06-24 US US13/925,228 patent/US8880825B2/en active Active
"Configuring a SAN Environment for VMM 2008", Retrieved at>, Oct. 21, 2008, pp. 4.
"International Search Report and Written Opinion", Mailed Date: Nov. 30, 2010, Application No. PCT/US2010/034276, Filed Date: May 10, 2010, pp. 9.
"Storage Considerations", Retrieved at>, 2009, pp. 2.
"VMware ESX Server: Using Raw Device Mapping", Retrieved at>, vmware, pp. 1-16.
"Configuring a SAN Environment for VMM 2008", Retrieved at<<http://technet.microsoft.com/en-us/library/cc764269.>>, Oct. 21, 2008, pp. 4.
"Storage Considerations", Retrieved at<<http://technet.microsoft.com/en-us/library/bb963723.aspx>>, 2009, pp. 2.
"VMware ESX Server: Using Raw Device Mapping", Retrieved at<<http://www.vmware.com/pdf/esx25—rawdevicemapping.pdf>>, vmware, pp. 1-16.
US8473698B2 (en) * 2009-05-12 2013-06-25 Microsoft Corporation Converting LUNs into files or files into LUNs in real
CA2953608A1 (en) 2010-11-18
JP2012527046A (en) 2012-11-01
US8473698B2 (en) 2013-06-25
US20120066452A1 (en) 2012-03-15
US8880825B2 (en) 2014-11-04
WO2010132375A3 (en) 2011-02-17
EP2430560A4 (en) 2016-10-26
CN102422277B (en) 2013-09-18
KR20120018314A (en) 2012-03-02
US20100293349A1 (en) 2010-11-18
CA2758304C (en) 2017-07-04
WO2010132375A2 (en) 2010-11-18
CN102422277A (en) 2012-04-18
JP5276218B2 (en) 2013-08-28
EP2430560A2 (en) 2012-03-21
CA2758304A1 (en) 2010-11-18
US20130290631A1 (en) 2013-10-31
KR101624376B1 (en) 2016-05-25
KR20140005280A (en) 2014-01-14 Virtual disk storage techniques
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LIONETTI, CHRIS;PIKE, ROBERT;SIGNING DATES FROM 20090430 TO 20090507;REEL/FRAME:023012/0324