IP Library Granted Patent US 9,836,347
Granted Patent B2
US 9,836,347 · App. 15/085,397 · Granted Dec 5, 2017

Apparatuses, methods and systems for determining a virtual machine state

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 9,836,347
App. No.
15/085,397
Granted
Dec 5, 2017
Kind
B2
Abstract

APPARATUSES, METHODS AND SYSTEMS FOR DETERMINING A VIRTUAL MACHINE STATE (“CRV”) (transforms register retrieval requests, via CRV components, into boot success messages and screenshot capture command invocation outputs. A method comprises determining when to capture a screenshot of a virtual machine's display output by observing the values of a virtual CPU's registers, or the entropy of the virtual CPU's register values, obtained from a hypervisor in communication with the virtual machine's virtual CPU. The method further comprises determining when the virtual machine is at a boot success state and capturing a screenshot of the virtual machine display output.

Claims (256)

1. A method for verifying a status of an operating system running on a virtual machine, the method comprising:

obtaining, by a server, a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determining, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmitting a message indicating the status of the operating system;

wherein:

obtaining the plurality of virtual CPU register values comprises obtaining the plurality of virtual CPU register values in a time-ordered sequence, and

determining the status of the operating system is based at least in part on the time-ordered sequence.

2. The method of claim 1 , wherein determining the status of the operating system comprises:

estimating an entropy of the at least one virtual CPU register based at least in part on the plurality of virtual CPU register values, and

determining the status of the operating system is based at least in part on the entropy of the at least one virtual CPU register.

3. The method of claim 1 , wherein:

determining the status of the operating system comprises determining that the operating system of the virtual machine has booted successfully.

4. The method of claim 3 , wherein determining the status of the operating system comprises:

determining if an application is running on the virtual machine.

5. The method of claim 1 , wherein determining the status of the operating system comprises:

determining that the operating system is booting, and

checking the status of the operating system after a predetermined period of time in response to determining that the operating system is booting.

6. The method of claim 1 , wherein determining the status of the operating system comprises:

determining that the operating system has booted unsuccessfully.

7. The method of claim 1 , the method further comprising:

acquiring a representation of a display output of the virtual machine so as to verify the status of the operating system.

8. The method of claim 7 , further comprising:

automatically recognizing text in the display output of the virtual machine;

generating a report based at least in part on the text; and

transmitting the report to an administrator user as an indication of the status of the operating system.

9. An apparatus for verifying a status of an operating system of a virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determines, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmits a message indicating the status of the operating system,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains the plurality of virtual CPU register values in a time-ordered sequence, and

determines the status of the operating system based at least in part on the time-ordered sequence.

10. The apparatus of claim 9 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

estimates an entropy of the at least one virtual CPU register based at least in part on the plurality of virtual CPU register values, and

determines the status of the operating system based at least in part on the entropy of the at least one virtual CPU register.

11. The apparatus of claim 9 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted successfully, and

acquires a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

12. The apparatus of claim 11 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines if an application is running on the virtual machine.

13. The apparatus of claim 9 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system is booting, and

checks the status of the operating system of the virtual machine after a predetermined period of time in response to determining that the operating system is booting.

14. The apparatus of claim 9 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted unsuccessfully.

15. The apparatus of claim 9 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine.

16. The apparatus of claim 15 , upon execution of the processor-executable instructions by the at least one processor, the apparatus:

automatically recognizes text in the display output of the virtual machine;

generates a report indicative of the text; and

transmits the report to an administrator user as an indication of the status of the operating system.

17. A method for verifying a status of an operating system of a virtual machine via a hypervisor providing a virtual central processing unit (CPU) to the virtual machine, the method comprising:

obtaining, by a server, a plurality of time-ordered virtual CPU register values associated with at least one virtual CPU register of the virtual CPU on the hypervisor;

determining, based at least in part on the plurality of time-ordered virtual CPU register values, a boot state value of the operating system of the virtual machine, the boot state value indicating that the operating system of the virtual machine (i) is still booting, (ii) has booted successfully, or (iii) has booted unsuccessfully; and

transmitting a message indicating the boot state value of the operating system of the virtual machine if the boot state value indicates that the operating system of the virtual machine has booted successfully or has booted unsuccessfully.

18. The method of claim 17 , further comprising:

acquiring a representation of a display output of the virtual machine; and

if the operating system of the virtual machine has booted unsuccessfully, determining an error message based at least in part on the representation of the display output of the virtual machine.

19. An apparatus for verifying a status of an operating system of a virtual machine via a hypervisor providing a virtual central processing unit (CPU) to the virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions, wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of time-ordered virtual CPU register values associated with at least one virtual CPU register of the virtual CPU on the hypervisor;

determines based at least in part on the plurality of time-ordered virtual CPU register values, a boot state value of the operating system of the virtual machine, the boot state value indicating that the operating system of the virtual machine (i) is still booting, (ii) has booted successfully, or (iii) has booted unsuccessfully; and

transmits a message indicating the boot state value of the operating system of the virtual machine if the boot state value indicates that the operating system of the virtual machine has booted successfully or has booted unsuccessfully.

20. The apparatus of claim 19 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine; and

determines an error message based at least in part on the representation of the display output of the virtual machine, when the operating system of the virtual machine has booted unsuccessfully.

21. A method for verifying a status of an operating system running on a virtual machine, the method comprising:

obtaining, by a server, a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determining, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmitting a message indicating the status of the operating system,

wherein determining the status of the operating system comprises:

estimating an entropy of the at least one virtual CPU register based at least in part on the plurality of virtual CPU register values, and

determining the status of the operating system is based at least in part on the entropy of the at least one virtual CPU register.

22. The method of claim 21 , wherein:

determining the status of the operating system comprises determining that the operating system of the virtual machine has booted successfully, and

the method further comprises acquiring a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

23. The method of claim 22 , wherein determining the status of the operating system comprises:

determining if an application is running on the virtual machine.

24. The method of claim 21 , wherein determining the status of the operating system comprises:

determining that the operating system is booting, and

checking the status of the operating system after a predetermined period of time in response to determining that the operating system is booting.

25. The method of claim 21 , wherein determining the status of the operating system comprises:

determining that the operating system has booted unsuccessfully.

26. The method of claim 21 , the method further comprising:

acquiring a representation of a display output of the virtual machine so as to verify the status of the operating system.

27. The method of claim 26 , further comprising:

automatically recognizing text in the display output of the virtual machine;

generating a report based at least in part on the text; and

transmitting the report to an administrator user as an indication of the status of the operating system.

28. An apparatus for verifying a status of an operating system of a virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determines, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmits a message indicating the status of the operating system,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

estimates an entropy of the at least one virtual CPU register based at least in part on the plurality of virtual CPU register values, and

determines the status of the operating system based at least in part on the entropy of the at least one virtual CPU register.

29. The apparatus of claim 28 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted successfully, and

acquires a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

30. The apparatus of claim 29 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines if an application is running on the virtual machine.

31. The apparatus of claim 28 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system is booting, and

checks the status of the operating system of the virtual machine after a predetermined period of time in response to determining that the operating system is booting.

32. The apparatus of claim 28 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted unsuccessfully.

33. The apparatus of claim 28 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine.

34. The apparatus of claim 33 , upon execution of the processor-executable instructions by the at least one processor, the apparatus:

automatically recognizes text in the display output of the virtual machine;

generates a report indicative of the text; and

transmits the report to an administrator user as an indication of the status of the operating system.

35. A method for verifying a status of an operating system running on a virtual machine, the method comprising:

obtaining, by a server, a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determining, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmitting a message indicating the status of the operating system,

wherein:

determining the status of the operating system comprises determining that the operating system of the virtual machine has booted successfully, and

wherein determining the status of the operating system comprises:

determining if an application is running on the virtual machine.

36. The method of claim 35 , wherein determining the status of the operating system comprises:

determining that the operating system is booting, and

checking the status of the operating system after a predetermined period of time in response to determining that the operating system is booting.

37. The method of claim 35 , wherein determining the status of the operating system comprises:

determining that the operating system has booted unsuccessfully.

38. The method of claim 35 , the method further comprising acquiring a representation of a display output of the virtual machine.

39. The method of claim 38 , further comprising:

automatically recognizing text in the display output of the virtual machine;

generating a report based at least in part on the text; and

transmitting the report to an administrator user as an indication of the status of the operating system.

40. An apparatus for verifying a status of an operating system of a virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determines, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmits a message indicating the status of the operating system,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted successfully,

determines if an application is running on the virtual machine.

41. The apparatus of claim 40 wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system is booting, and

checks the status of the operating system of the virtual machine after a predetermined period of time in response to determining that the operating system is booting.

42. The apparatus of claim 40 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted unsuccessfully.

43. The apparatus of claim 40 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine.

44. The apparatus of claim 43 , upon execution of the processor-executable instructions by the at least one processor, the apparatus:

automatically recognizes text in the display output of the virtual machine;

generates a report indicative of the text; and

transmits the report to an administrator user as an indication of the status of the operating system.

45. A method for verifying a status of an operating system running on a virtual machine, the method comprising:

obtaining, by a server, a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determining, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmitting a message indicating the status of the operating system,

wherein determining the status of the operating system comprises:

determining that the operating system is booting, and

checking the status of the operating system after a predetermined period of time in response to determining that the operating system is booting.

46. The method of claim 45 , wherein:

determining the status of the operating system comprises determining that the operating system of the virtual machine has booted successfully, and

the method further comprises acquiring a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

47. The method of claim 45 , wherein determining the status of the operating system comprises:

determining that the operating system has booted unsuccessfully.

48. The method of claim 45 , the method further comprising acquiring a representation of a display output of the virtual machine.

49. The method of claim 48 , further comprising:

automatically recognizing text in the display output of the virtual machine;

generating a report based at least in part on the text; and

transmitting the report to an administrator user as an indication of the status of the operating system.

50. An apparatus for verifying a status of an operating system of a virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determines, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmits a message indicating the status of the operating system,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system is booting, and

checks the status of the operating system of the virtual machine after a predetermined period of time in response to determining that the operating system is booting.

51. The apparatus of claim 50 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted successfully, and

acquires a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

52. The apparatus of claim 50 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted unsuccessfully.

53. The apparatus of claim 50 wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine.

54. The apparatus of claim 53 , upon execution of the processor-executable instructions by the at least one processor, the apparatus:

automatically recognizes text in the display output of the virtual machine;

generates a report indicative of the text; and

transmits the report to an administrator user as an indication of the status of the operating system.

55. A method for verifying a status of an operating system running on a virtual machine, the method comprising:

obtaining, by a server, a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determining, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmitting a message indicating the status of the operating system,

wherein determining the status of the operating system comprises:

determining that the operating system has booted unsuccessfully.

56. The method of claim 55 , wherein:

determining the status of the operating system comprises determining that the operating system of the virtual machine has booted successfully, and

the method further comprises acquiring a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

57. The method of claim 55 , the method further comprising acquiring a representation of a display output of the virtual machine.

58. The method of claim 57 , further comprising:

automatically recognizing text in the display output of the virtual machine;

generating a report based at least in part on the text; and

transmitting the report to an administrator user as an indication of the status of the operating system.

59. An apparatus for verifying a status of an operating system of a virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determines, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmits a message indicating the status of the operating system,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted unsuccessfully.

60. The apparatus of claim 59 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted successfully, and

acquires a representation of a display output of the virtual machine, the representation indicating successful booting of the virtual machine.

61. The apparatus of claim 59 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine.

62. The apparatus of claim 61 , upon execution of the processor-executable instructions by the at least one processor, the apparatus:

automatically recognizes text in the display output of the virtual machine;

generates a report indicative of the text; and

transmits the report to an administrator user as an indication of the status of the operating system.

63. A method for verifying a status of an operating system running on a virtual machine, the method comprising:

obtaining, by a server, a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determining, based at least in part on the plurality of virtual CPU register values, the status of the operating system;

transmitting a message indicating the status of the operating system; and

acquiring a representation of a display output of the virtual machine.

64. The method of claim 63 , wherein:

determining the status of the operating system comprises determining that the operating system of the virtual machine has booted successfully, and

the representation of the display output of the virtual machine indicates successful booting of the virtual machine.

65. The method of claim 63 , further comprising:

automatically recognizing text in the display output of the virtual machine;

generating a report based at least in part on the text; and

transmitting the report to an administrator user as an indication of the status of the operating system.

66. An apparatus for verifying a status of an operating system of a virtual machine, the apparatus comprising:

a memory to store processor-executable instructions; and

at least one processor, operably coupled to the memory, to execute the processor executable instructions,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

obtains a plurality of virtual central processing unit (CPU) register values associated with at least one virtual CPU register of a virtual CPU on a hypervisor, the hypervisor providing virtualization services to the virtual machine;

determines, based at least in part on the plurality of virtual CPU register values, the status of the operating system; and

transmits a message indicating the status of the operating system,

wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

acquires a representation of a display output of the virtual machine.

67. The apparatus of claim 66 , wherein, upon execution of the processor-executable instructions by the at least one processor, the apparatus:

determines that the operating system has booted successfully, and

wherein the display output of the virtual machine indicates successful booting of the virtual machine.

68. The apparatus of claim 66 , upon execution of the processor-executable instructions by the at least one processor, the apparatus:

automatically recognizes text in the display output of the virtual machine;

generates a report indicative of the text; and

transmits the report to an administrator user as an indication of the status of the operating system.

Assignments (14)
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Mar 24, 2025
From: DATTO, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS SECOND LIEN COLLATERAL AGENT
Reel/Frame 070609/0599 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Mar 21, 2025
From: DATTO, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 070586/0681 →
RELEASE OF SECURITY INTEREST (PATENTS) Recorded Mar 20, 2025
From: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
To: DATTO, INC.
Reel/Frame 070583/0566 →
CHANGE OF NAME Recorded Oct 27, 2023
From: DATTO, INC.
To: DATTO, LLC
Reel/Frame 065385/0256 →
NOTICE OF GRANT OF SECURITY INTEREST IN PATENTS Recorded Aug 9, 2022
From: DATTO, INC.
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 061129/0839 →
RELEASE OF SECURITY INTEREST Recorded Jun 23, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: DATTO, INC.; AUTOTASK CORPORATION; OPEN MESH, INC.; SOONR, INC.
Reel/Frame 060293/0565 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: DATTO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 054191/0984 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 48776/0282 Recorded Oct 23, 2020
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: DATTO, INC.
Reel/Frame 054191/0913 →
RELEASE OF SECURITY INTEREST Recorded Apr 3, 2019
From: GOLDMAN SACHS PRIVATE MIDDLE MARKET CREDIT LLC, AS COLLATERAL AGENT
To: DATTO, INC.
Reel/Frame 048786/0521 →
PATENT SECURITY AGREEMENT Recorded Apr 2, 2019
From: DATTO, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 048776/0282 →
PATENT SECURITY AGREEMENT Recorded Dec 12, 2017
From: DATTO, INC.
To: GOLDMAN SACHS PRIVATE MIDDLE MARKET CREDIT LLC, AS COLLATERAL AGENT
Reel/Frame 044833/0923 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY COLLATERAL AT REEL/FRAME NO. 42510/0073 Recorded Dec 11, 2017
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: DATTO, INC.
Reel/Frame 044830/0231 →
SECURITY INTEREST Recorded May 25, 2017
From: DATTO, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 042510/0073 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2016
From: MCCHORD, AUSTIN; COLEMAN, MATTHEW
To: DATTO, INC.
Reel/Frame 038182/0414 →