IP Library Granted Patent US 8,209,288
Granted Patent B2
US 8,209,288 · App. 12/476,210 · Granted Jun 26, 2012

System and method for inspecting a virtual appliance runtime environment

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,209,288
App. No.
12/476,210
Granted
Jun 26, 2012
Kind
B2
Abstract

A system and method for inspecting a virtual appliance runtime environment is provided. In particular, runtime activity within a virtual machine may be monitored and tracked to manage a file system associated with the runtime activity. For example, a new image having a pointer to a base image being executed may be created, wherein the new image may be empty when created, and wherein data may be written to the new image in response to any files being created, deleted, modified, or otherwise accessed during execution of the base image within the virtual machine. Thus, a file system for the new image may be compared to a file system for the base image to analyze the runtime activity for the base image, wherein the new image may preserve runtime changes to the file system and provide visibility into particular runtime modifications to the file system.

Claims (89)

1. A system for inspecting a virtual appliance runtime environment, comprising:

a runtime environment having one or more processors configured to:

execute a base image in a virtual machine having a guest operating system and a user space file system to execute the base image;

load a new image having a pointer to the base image, wherein the new image initially comprises an empty file;

receive one or more read requests to read data from the user space file system associated with the guest operating system, wherein the one or more read requests reference one or more memory blocks or clusters in the base image;

read the data associated with the one or more read requests from the new image if the one or more memory blocks or clusters referenced in the one or more read requests have been allocated in the new image;

read the data associated with the one or more read requests from the base image and write the one or more memory blocks or clusters referenced in the one or more read requests to the new image if the one or more memory blocks or clusters have not been allocated in the new image;

receive one or more write requests to write data to the user space file system associated with the guest operating system; and

write the data associated with the one or more write requests to the new image to process the one or more write requests; and

a monitoring engine configured to compare the new image to the base image to generate a runtime log that describes runtime activity attributable to the one or more read requests and the one or more write requests.

2. The system of claim 1 , wherein the one or more processors associated with the runtime environment are further configured to:

copy the data associated with the one or more read requests from the new image to the user space file system associated with the guest operating system if the one or more memory blocks or clusters referenced in the one or more read requests have been allocated in the new image; and

write the data associated with the one or more write requests to the user space file system associated with the guest operating system to process the one or more write requests.

3. The system of claim 1 , wherein the one or more processors associated with the runtime environment are further configured to:

copy the data associated with the one or more read requests from the base image to the user space file system associated with the guest operating system if the one or more memory blocks or clusters referenced in the one or more read requests have not been allocated in the new image; and

write the data associated with the one or more write requests to the user space file system associated with the guest operating system to process the one or more write requests.

4. The system of claim 1 , wherein the monitoring engine is further configured to:

retrieve inodes that contain metadata describing every object in the user space file system associated with the guest operating system from the new image;

retrieve inodes that contain metadata describing every object in an original version associated with the user space file system from the base image; and

compare the metadata contained in the inodes retrieved from the new image to the metadata contained in the inodes retrieved from the base image to identify the runtime activity attributable to the one or more read requests and the one or more write requests.

5. The system of claim 4 , the identified runtime activity includes one or more added files that were created in the user space file system, one or more deleted files that were deleted from the original version associated with the user space file system, one or more modified files that were read from the base image and subsequently modified in the user space file system, one or more unchanged files that were read from the base image but not subsequently modified in the user space file system, and one or more unused files that were not read from the base image.

6. The system of claim 5 , wherein the monitoring engine is further configured to identify the one or more added files in response to the metadata contained in the inodes retrieved from the new image describing one or more objects in the user space file system that are not described in the metadata contained in the inodes retrieved from the base image.

7. The system of claim 5 , wherein the monitoring engine is further configured to identify the one or more deleted files in response to the metadata contained in the inodes retrieved from the new image describing one or more objects in the user space file system that have deletion times associated therewith.

8. The system of claim 5 , wherein the monitoring engine is further configured to identify the one or more modified files in response to the inodes retrieved from the new image and the inodes retrieved from the base image containing different metadata to describe one or more objects in the user space file system and the original version associated therewith that correspond to one another.

9. The system of claim 8 , wherein the monitoring engine is further configured to compare the different metadata associated with the one or more modified files to identify changes to the one or more objects in the user space file system relative to the one or more objects the original version associated with the user space file system.

10. The system of claim 9 , further comprising a build engine configured to update the base image to incorporate the changes to the one or more objects in the user space file system into the original version associated therewith.

11. The system of claim 5 , wherein the monitoring engine is further configured to identify the one or more unchanged files in response to the inodes retrieved from the new image and the inodes retrieved from the base image containing identical metadata to describe one or more objects in the user space file system and the original version associated therewith that correspond to one another.

12. The system of claim 11 , wherein monitoring engine is further configured to identify the one or more unused files in response to the metadata contained in the inodes retrieved from the base image describing one or more objects in the original version associated with the user space file system that are not described in the metadata contained in the inodes retrieved from the new image.

13. The system of claim 1 , wherein the new image comprises a snapshot to capture a runtime state associated with the base image.

14. The system of claim 13 , wherein the runtime log describes the runtime activity attributable to the one or more read requests and the one or more write requests subsequent to when the snapshot was created to capture the runtime state associated with the base image.

15. The system of claim 1 , further comprising a build engine configured to update the base image to incorporate one or more changes to the user space file system associated with the runtime activity attributable to the one or more read requests and the one or more write requests.

16. The system of claim 1 , wherein the new image comprises a copy-on-write image.

17. A system for inspecting a virtual appliance runtime environment, comprising:

a runtime environment configured to:

execute an application in a virtual machine having a guest operating system and a user space file system to execute the application with data stored on a disk;

receive one or more read requests to read from the user space file system associated with the application executed in the virtual machine;

forward activity relating to the one or more read requests to a monitoring engine, wherein the forwarded activity relating to the one or more read requests includes data that the virtual machine read from the disk to process the one or more read requests and one or more timestamps to describe when the virtual machine read the data associated with the one or more read requests from the disk;

receive one or more write requests to write to the user space file system associated with the application executed in the virtual machine; and

forward activity relating to the one or more write requests to the monitoring engine, wherein the forwarded activity relating to the one or more write requests includes data that the virtual machine wrote to the disk to process the one or more write requests and one or more timestamps to describe when the virtual machine wrote the data associated with the one or more write requests to the disk; and

one or more processors to execute the monitoring engine, wherein the one or more processors to execute the monitoring engine are configured to:

determine a startup state associated with the user space file system, wherein the startup state associated with the user space file system corresponds to a state associated with the data stored on the disk when the runtime environment started to execute the application in the virtual machine;

construct a first version associated with the user space file system at a first point in time using the startup state associated with the user space file system, the forwarded activity relating to the one or more read requests, and the forwarded activity relating the one or more write requests;

construct a second version associated with the user space file system at a second point in time using the startup state associated with the user space file system, the forwarded activity relating to the one or more read requests, and the forwarded activity relating to the one or more write requests; and

compare the first version associated with the user space file system to the second version associated with the user space file system to generate a runtime log that describes runtime activity associated with the application executed in the virtual machine that occurred between the first point in time and the second point in time.

18. The system of claim 17 , further comprising a build engine configured to restore the user space file system to the first version associated with the user space file system using the one or more timestamps that describe when the virtual machine read the data associated with the one or more read requests from the disk and the one or more timestamps that describe when the virtual machine wrote the data associated with the one or more write requests to the disk, wherein the restored user space file system discards changes to the user space file system attributable to the runtime activity that occurred between the first point in time and the second point in time.

19. The system of claim 17 , wherein the one or more processors associated with the monitoring engine are configured to construct the first version associated with the user space file system at the first point in time and the second version associated with the user space file system at the second point in time using the one or more timestamps that describe when the virtual machine read the data associated with the one or more read requests from the disk and the one or more timestamps that describe when the virtual machine wrote the data associated with the one or more write requests to the disk.

20. A method for inspecting a virtual appliance runtime environment, comprising:

loading a runtime environment configured to execute a base image in a virtual machine having a guest operating system and a user space file system to execute the base image;

loading a new image having a pointer to the base image, wherein the new image initially comprises an empty file;

receiving one or more read requests to read data from the user space file system associated with the guest operating system, wherein the one or more read requests reference one or more memory blocks or clusters in the base image;

reading the data from associated with the one or more read requests from the new image if the one or more memory blocks or clusters referenced in the one or more read requests have been allocated in the new image;

reading the data associated with the one or more read requests from the base image and writing the one or more memory blocks or clusters referenced in the one or more read requests to the new image if the one or more memory blocks or clusters have not been allocated in the new image;

receiving one or more write requests to write data to the user space file system associated with the guest operating system;

writing the data associated with the one or more write requests to the new image to process the one or more write requests; and

comparing the new image to the base image to generate a runtime log that describes runtime activity attributable to the one or more read requests and the one or more write requests.

21. The method of claim 20 , further comprising:

copying the data associated with the one or more read requests from the new image to the user space file system associated with the guest operating system if the one or more memory blocks or clusters referenced in the one or more read requests have been allocated in the new image; and

writing the data associated with the one or more write requests to the user space file system associated with the guest operating system to process the one or more write requests.

22. The method of claim 20 , further comprising:

copying the data associated with the one or more read requests from the base image to the user space file system associated with the guest operating system if the one or more memory blocks or clusters referenced in the one or more read requests have not been allocated in the new image; and

writing the data associated with the one or more write requests to the user space file system associated with the guest operating system to process the one or more write requests.

23. The method of claim 20 , wherein comparing the new image to the base image to generate the runtime log includes:

retrieving inodes that contain metadata describing every object in the user space file system associated with the guest operating system from the new image;

retrieving inodes that contain metadata describing every object in an original version associated with the user space file system from the base image; and

comparing the metadata contained in the inodes retrieved from the new image to the metadata contained in the inodes retrieved from the base image to identify the runtime activity attributable to the one or more read requests and the one or more write requests.

24. The method of claim 23 , wherein the identified runtime activity includes one or more added files that were created in the user space file system, one or more deleted files that were deleted from the original version associated with the user space file system, one or more modified files that were read from the base image and subsequently modified in the user space file system, one or more unchanged files that were read from the base image but not subsequently modified in the user space file system, and one or more unused files that were not read from the base image.

25. The method of claim 24 , further comprising identifying the one or more added files in response to the metadata contained in the inodes retrieved from the new image describing one or more objects in the user space file system that are not described in the metadata contained in the inodes retrieved from the base image.

26. The method of claim 24 , further comprising identifying the one or more deleted files in response to the metadata contained in the inodes retrieved from the new image describing one or more objects in the user space file system that have deletion times associated therewith.

27. The method of claim 24 , further comprising identifying the one or more modified files in response to the inodes retrieved from the new image and the inodes retrieved from the base image containing different metadata to describe one or more objects in the user space file system and the original version associated therewith that correspond to one another.

28. The method of claim 27 , further comparing the different metadata associated with the one or more modified files to identify changes to the one or more objects in the user space file system relative to the one or more objects the original version associated with the user space file system.

29. The method of claim 28 , further comprising updating the base image to incorporate the changes to the one or more objects in the user space file system into the original version associated therewith.

30. The method of claim 24 , further comprising identifying the one or more unchanged files in response to the inodes retrieved from the new image and the inodes retrieved from the base image containing identical metadata to describe one or more objects in the user space file system and the original version associated therewith that correspond to one another.

31. The method of claim 30 , further comprising identifying the one or more unused files in response to the metadata contained in the inodes retrieved from the base image describing one or more objects in the original version associated with the user space file system that are not described in the metadata contained in the inodes retrieved from the new image.

32. The method of claim 20 , wherein the new image comprises a snapshot to capture a runtime state associated with the base image.

33. The method of claim 32 , wherein the runtime log describes the runtime activity attributable to the one or more read requests and the one or more write requests subsequent to when the snapshot was created to capture the runtime state associated with the base image.

34. The method of claim 20 , wherein the new image comprises a copy-on-write image.

35. The method of claim 20 , further comprising updating the base image to incorporate one or more changes to the user space file system associated with the runtime activity attributable to the one or more read requests and the one or more write requests.

36. A method for inspecting a virtual appliance runtime environment, comprising:

executing an application in a runtime environment, wherein the runtime environment includes a virtual machine having a guest operating system and a user space file system to execute the application with data stored on a disk;

read a state associated with the data stored on the disk in response to the runtime environment starting to execute the application in the virtual machine, wherein a monitoring engine reads the state associated with the data stored on the disk to capture a startup state associated with the user space file system;

receiving one or more read requests to read from the user space file system associated with the application executed in the virtual machine;

forwarding activity relating to the one or more read requests from the virtual machine to the monitoring engine, wherein the forwarded activity relating to the one or more read requests includes data that the virtual machine read from the disk to process the one or more read requests and one or more timestamps to describe when the virtual machine read the data associated with the one or more read requests from the disk;

receiving one or more write requests to write to the user space file system associated with the application executed in the virtual machine;

forwarding activity relating to the one or more write requests from the virtual machine to the monitoring engine, wherein the forwarded activity relating to the one or more write requests includes data that the virtual machine wrote to the disk to process the one or more write requests and one or more timestamps to describe when the virtual machine wrote the data associated with the one or more write requests to the disk;

constructing, at the monitoring engine, a first version associated with the user space file system at a first point in time using the startup state associated with the user space file system, the forwarded activity relating to the one or more read requests, and the forwarded activity relating the one or more write, requests;

constructing, at the monitoring engine, a second version associated with the user space file system at a second point in time using the startup state associated with the user space file system, the forwarded activity relating to the one or more read requests, and the forwarded activity relating to the one or more write requests; and

comparing, at the monitoring engine, the first version associated with the user space file system to the second version associated with the user space file system to generate a runtime log that describes runtime activity associated with the application executed in the virtual machine that occurred between the first point in time and the second point in time.

37. The method of claim 36 , further comprising restoring the user space file system to the first version associated with the user space file system using the one or more timestamps that describe when the virtual machine read the data associated with the one or more read requests from the disk and the one or more timestamps that describe when the virtual machine wrote the data associated with the one or more write requests to the disk, wherein the restored user space file system discards changes to the user space file system attributable to the runtime activity that occurred between the first point in time and the second point in time.

38. The method of claim 36 , wherein the monitoring engine uses the one or more timestamps that describe when the virtual machine read the data associated with the one or more read requests from the disk and the one or more timestamps that describe when the virtual machine wrote the data associated with the one or more write requests to the disk to construct the first version associated with the user space file system at the first point in time and the second version associated with the user space file system at the second point in time.

Assignments (19)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME - 042388/0386 AND REEL/FRAME - 044183/0577 Recorded Mar 18, 2019
From: JPMORGAN CHASE BANK, N.A.
To: SUSE LLC
Reel/Frame 048628/0221 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME - : 044183/0718 Recorded Mar 18, 2019
From: JPMORGAN CHASE BANK, N.A.
To: SUSE LLC
Reel/Frame 048628/0436 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2019
From: MICRO FOCUS SOFTWARE INC.
To: SUSE LLC
Reel/Frame 048379/0548 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2009
From: FRIEDMAN, NATHANIEL; DE ICAZA, MIGUEL
To: NOVELL, INC.
Reel/Frame 022762/0626 →