IP Library Granted Patent US 9,100,283
Granted Patent B2
US 9,100,283 · App. 13/856,089 · Granted Aug 4, 2015

Method and system for simplifying distributed server management

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,100,283
App. No.
13/856,089
Granted
Aug 4, 2015
Kind
B2
Abstract

A method and system for managing a large number of servers and their server components distributed throughout a heterogeneous computing environment is provided. In one embodiment, an authenticated user, such as a IT system administrator, can securely and simultaneously control and configure multiple servers, supporting different operating systems, through a “virtual server.” A virtual server is an abstract model representing a collection of actual target servers. To represent multiple physical servers as one virtual server, abstract system calls that extend execution of operating-system-specific system calls to multiple servers, regardless of their supported operating systems, are used. A virtual server is implemented by a virtual server client and a collection of virtual server agents associated with a collection of actual servers.

Claims (62)

1. A method for receiving and executing, on one of a plurality of servers, a system command from a software application program, the method comprising:

receiving a system command from a command-line interface of a server management system, the server management system including the command-line interface, a virtual server client, and virtual server agents, each virtual server agent running on a respective server;

translating the system command to an abstract system command, the abstract system command being indifferent to operating systems used by the servers running the virtual server agents;

receiving, at the virtual server client, the abstract system command; and

instantiating the abstract system command by:

identifying, by the virtual server client, a target server to receive the abstract system command and a corresponding virtual server agent associated with the target server,

transmitting the abstract system command to the corresponding virtual agent for translation of the abstract system command into an operating system-specific system command for execution on the target server,

executing the operating system-specific system command under permissions determined as a function of the target server, an identity of a user of the command-line interface, and a role assigned to the identity, and

receiving execution results from the corresponding virtual server agent.

2. The method of claim 1 , wherein at least two of the plurality of servers have different operating systems.

3. The method of claim 1 further comprising aggregating the abstract system command and a second abstract system command into a high-level abstract system command.

4. The method of claim 3 further comprising:

receiving, by the virtual server client, the high-level abstract system command;

disintegrating, by the virtual server client, the high-level abstract system command into the abstract system command and the second abstract system command; and

instantiating each of the abstract system command and the second abstract system command.

5. The method of claim 3 further comprising:

receiving, by the virtual server client, the high-level abstract system command; and

instantiating the high-level abstract system command.

6. The method of claim 1 , wherein instantiating the abstract system command further includes:

identifying at least two target servers to receive the abstract system command, each with a corresponding virtual server agent;

transmitting the abstract system command to the corresponding virtual server agents, the abstract system command being translated into operating-system specific commands appropriate for respective target servers; and

receiving execution results from the virtual server agents.

7. The method of claim 6 , wherein the permissions used to execute the respective operating-system specific commands differ between a first server and a second server.

8. The method of claim 1 wherein identifying the target server includes identifying the target virtual server agent to receive the abstract system command in response to a server identifier included in the abstract system command.

9. The method of claim 1 , wherein the target server is a group of physical servers represented by the virtual server agent.

10. The method of claim 1 further comprising executing, by the target server, the operating system specific system command in a thread-safe manner.

11. The method of claim 1 further comprising:

maintaining an audit log to record the name of the user and the abstract system command executed on the target server.

12. The method of claim 1 , further comprising:

encrypting, by the virtual server client, the abstract system command; and

decrypting, by the virtual server agent, the encrypted abstract system command.

13. The method of claim 1 further comprising modifying an existing non-distributed application to function as a network-aware application by substituting a non network-aware system command with the abstract system command.

14. The method of claim 13 , wherein the modifying includes modifying a non-distributed Unix shell to function as the network-aware application.

15. The method of claim 13 , wherein the modifying includes modifying a non-distributed scripting language to function as the network-aware application.

16. A system comprising:

a first server running a server management system, the server management system including a command-line interface and a virtual server client, and

a plurality of servers communicatively connected with the first server, each server running a respective virtual server agent,

wherein the first server includes instructions that, when executed by the first server, cause the first server to perform operations including:

receiving a system command from the command-line interface of the server management system,

translating the system command to an abstract system command, the abstract system command being indifferent to operating systems used by the plurality of servers running the virtual server agents,

receiving, at the virtual server client, the abstract system command, and

instantiating the abstract system command by:

identifying, by the virtual server client, a target server of the plurality of servers to receive the abstract system command and a corresponding virtual server agent associated with the target server,

transmitting the abstract system command to the corresponding virtual agent for translation of the abstract system command into an operating system-specific system command for execution on the target server,

executing the operating system-specific system command under permissions determined as a function of the target server, an identity of a user of the command-line interface, and a role assigned to the identity, and

receiving execution results from the corresponding virtual server agent.

17. The system of claim 16 , wherein at least two of the plurality of servers have different operating systems.

18. The system of claim 16 , wherein the first server further includes instructions that, when executed by the first server, cause the first server to further perform operations including:

aggregating the abstract system command and a second abstract system command into a high-level abstract system command;

receiving, by the virtual server client, the high-level abstract system command;

disintegrating, by the virtual server client, the high-level abstract system command into the abstract system command and the second abstract system command; and

instantiating each of the abstract system command and the second abstract system command.

19. The system of claim 16 , wherein the first server further includes instructions that, when executed by the first server, cause the first server to further perform operations including:

aggregating the abstract system command and a second abstract system command into a high-level abstract system command;

receiving, by the virtual server client, the high-level abstract system command; and

instantiating the high-level abstract system command.

20. The system of claim 16 , wherein instantiating the abstract system command further includes:

identifying at least two target servers of the plurality of servers to receive the abstract system command, each with a respective virtual server agent;

transmitting the abstract system command to the respective virtual server agents, the abstract system command being translated into operating-system specific commands appropriate for respective target servers; and

receiving execution results from the virtual server agents.

21. The system of claim 16 , wherein the target server is a group of physical servers represented by the respective virtual server agent.

22. The system of claim 16 wherein the first server further includes instructions that, when executed by the first server, cause the first server to further perform operations including modifying an existing non-distributed application to function as a network-aware application by substituting a non network-aware system command with the abstract system command.

Assignments (13)
CHANGE OF NAME Recorded Jan 10, 2025
From: BLADELOGIC, INC.
To: BMC HELIX, INC.
Reel/Frame 069870/0796 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY INTEREST Recorded Jul 27, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043351/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2014
From: KRAUS, THOMAS MARTIN; MANWANI, VIJAY G.; MUDDANA, SEKHAR
To: BLADELOGIC, INC.
Reel/Frame 032842/0493 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →