U.S. patent application number 14/464637 was filed with the patent office on 2015-03-05 for modeling storage environments.
The applicant listed for this patent is NetApp, Inc.. Invention is credited to Craig Fulmer Everhart, Siddhartha Nandi, Thirumale Niranjan, Sai Rama Krishna Susarla, Jim Voll, Kaladhar Voruganti.
Application Number | 20150066471 14/464637 |
Document ID | / |
Family ID | 41257665 |
Filed Date | 2015-03-05 |
United States Patent
Application |
20150066471 |
Kind Code |
A1 |
Susarla; Sai Rama Krishna ;
et al. |
March 5, 2015 |
MODELING STORAGE ENVIRONMENTS
Abstract
Example embodiments provide various techniques for modeling
network storage environments. To model a particular storage
environment, component models that are associated with the
components of the storage environment are loaded. Each component
model is programmed to mathematically simulate one or more
components of the storage environment. A system model is then
composed from the component models and this system model is
configured to simulate the storage environment.
Inventors: |
Susarla; Sai Rama Krishna;
(Bangalore, IN) ; Niranjan; Thirumale; (Bangalore,
IN) ; Nandi; Siddhartha; (Bangalore, IN) ;
Everhart; Craig Fulmer; (Chapel Hill, NC) ;
Voruganti; Kaladhar; (San Jose, CA) ; Voll; Jim;
(Palo Alto, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
NetApp, Inc. |
Sunnyvale |
CA |
US |
|
|
Family ID: |
41257665 |
Appl. No.: |
14/464637 |
Filed: |
August 20, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12112000 |
Apr 30, 2008 |
8868400 |
|
|
14464637 |
|
|
|
|
Current U.S.
Class: |
703/21 |
Current CPC
Class: |
G06F 11/3414 20130101;
G06F 11/3485 20130101; G06F 11/3495 20130101; G06F 11/3447
20130101; H04L 41/145 20130101 |
Class at
Publication: |
703/21 |
International
Class: |
G06F 11/34 20060101
G06F011/34 |
Claims
1. A method of modeling a storage environment having a component,
the method comprising: loading a component model that is configured
to simulate the component of the storage environment; composing a
system model from the component model, the system model configured
to simulate the storage environment; and applying a simulated
workload to the system model, the system model configured to
simulate an impact of the simulated workload on the storage
environment.
Description
RELATED APPLICATION
[0001] This application is a Continuation of U.S. patent
application Ser. No. 12/112,000, entitled "MODELING STORAGE
ENVIRONMENTS", filed Apr. 30, 2008; the aforementioned priority
application being hereby incorporated by reference in its entirety
for all purposes.
FIELD
[0002] The present disclosure relates generally to computer
modeling. In an example embodiment, the disclosure relates to the
modeling of storage environments.
BACKGROUND
[0003] A storage environment can be a complex system because of the
numerous components included in the storage environment. Examples
of components may include network pipes, caches, storage servers,
switches, storage controllers, and other components. As a result,
the maintenance and design of such a complex storage environment
are time-consuming tasks. For example, administrators currently
troubleshoot problems of a deployed storage environment manually.
The manual process of troubleshooting the storage environment can
be labor intensive and time consuming. Further, the process of
troubleshooting the storage environment may require the storage
environment to be temporarily shutdown, which therefore also
renders software applications that rely on the storage environment
inoperable.
SUMMARY
[0004] Generally, a computer model is a computer program that is
programmed to mathematically simulate a variety of systems, such as
natural systems, biological systems, and computer systems. Example
embodiments of the present invention provide various techniques for
modeling a storage environment. In general, a storage environment
is a system of computing devices and storage devices where data is
stored on the storage devices such that the data can be made
available to a variety of client computing devices on a network. It
should be appreciated that the storage environment may include a
variety of hardware and/or software components, such as computers,
memories, hard drives, operating systems, software applications,
and other components.
[0005] To model a particular storage environment, component models
associated with the components of the storage environment are
loaded. Similar to the system model of the storage environment,
each component model is programmed to mathematically simulate one
or more components of the storage environment. A system model is
then composed from the component models. In effect, the system
model is constructed from the component models. In an example, the
system model may be constructed by connecting the component models
with each other based on functional relationships between the
component models. The structure of the composed system model may be
in the form of or resemble a directed graph. Accordingly, the
system model may be represented as a directed graph. In general, a
directed graph includes nodes with lines and/or arrows connecting
the nodes. The directed graph may therefore illustrate an
architecture of the storage environment. It should be appreciated
that the system model may also be depicted by a variety of other
representations or diagrams.
[0006] With the system model, a simulated workload may then be
applied to the system model and the directed graph (or other
representations) may be used to illustrate the simulated impact of
the simulated workload on the storage environment. In effect, the
directed graph can be used to illustrate the simulated behavior of
a storage environment when, for example, subjected to various
workloads. As a result, for example, a user can use such impact
information to analyze, troubleshoot, maintain, and/or design the
storage environment.
BRIEF DESCRIPTION OF DRAWINGS
[0007] The present disclosure is illustrated by way of example and
not limitation in the figures of the accompanying drawings, in
which like references indicate similar elements and in which:
[0008] FIG. 1 depicts a representation of a system model of a
storage environment, in accordance with an example embodiment;
[0009] FIG. 2 depicts a simplified block diagram of a storage
system analytics module, in accordance with an example embodiment,
included in computing device;
[0010] FIG. 3 depicts a flow diagram of a general overview of a
method, in accordance with an example embodiment, for modeling a
storage environment;
[0011] FIG. 4 depicts a simplified block diagram of a storage
environment, in accordance with an example embodiment;
[0012] FIG. 5 depicts a simplified block diagram of another example
of a storage environment and software applications associated with
the storage environment, in accordance with an example embodiment,
that may be modeled;
[0013] FIG. 6 depicts a flow diagram of detailed methods, in
accordance with an example embodiment, for modeling a storage
environment;
[0014] FIG. 7 depicts a flow diagram of detailed methods, in
accordance with an example embodiment, for composing a system model
from component models;
[0015] FIG. 8 depicts another directed graph representation of a
system model, in accordance with an example embodiment; and
[0016] FIG. 9 depicts a simplified block diagram of a machine in
the example form of a computing system within which a set of
instructions, for causing the machine to perform any one or more of
the methodologies discussed herein, may be executed.
DESCRIPTION OF EXAMPLE EMBODIMENTS
[0017] The description that follows includes illustrative systems,
methods, techniques, instruction sequences, and computing machine
program products that embody the present invention. In the
following description, for purposes of explanation, numerous
specific details are set forth in order to provide an understanding
of various embodiments of the inventive subject matter. It will be
evident, however, to one skilled in the art that embodiments of the
inventive subject matter may be practiced without these specific
details. In general, well-known instruction instances, protocols,
structures and techniques have not been shown in detail.
[0018] A computer model is a computer program that can be
programmed to simulate a variety of systems, such as computer
systems. In an example, a computer model can be used to
mathematically predict the behavior of a system without access to
the actual system that is being simulated. In effect, a computer
model is actually a mathematical model carried out by a computing
device, such as a computer. The mathematical model may be
constructed to find analytical solutions to various types of
problems, such as prediction of weather and physics simulation.
[0019] In an example, a computer model can be used to predict the
behavior of a storage environment. A storage environment is a
system of computing devices and storage devices where data is
stored on the storage devices such that the data can be made
available to a variety of client computing devices on a network. As
explained in more detail below, a computer model of the storage
environment may be constructed and this computer model uses a
mathematical model of the storage environment to mathematically
analyze and/or simulate the storage environment. Such simulation
may be used to facilitate the design and management of storage
environments by allowing a user, for example, to assess and/or test
impacts of simulated workloads on computer models of the storage
environments.
[0020] FIG. 1 depicts a representation of a system model 100 of a
storage environment, in accordance with an example embodiment. In
general, a storage environment is a system of computing devices and
storage devices where data is stored on the storage devices such
that the data can be made available to a variety of client
computing devices on a network. The storage environment is
network-based data storage and, as explained in more detail below,
the storage environment can utilize a Storage Area Network (SAN)
and/or a Network Attached Storage (NAS) device. The system model
100 is a computer model that is configured to simulate a storage
environment. In effect, system model 100 is a functional
representation of the storage environment.
[0021] A storage environment is comprised of a variety of
components. As explained in more detail below, the components of a
storage environment may include software applications, hardware,
and services. The components of a storage environment may be
depicted by a variety of representations or diagrams. For example,
as depicted in FIG. 1, each component of the storage environment
may be represented as a node in the directed graph of system model
100. Here, the directed graph of system model 100 shows or defines
the components of an example storage environment, such as storage
devices 108, storage server 102, and clients 104. Additionally, the
directed graph defines the functional relationships between the
components of the storage environment with arrows between the
components. It should be appreciated that a directed graph (or
digraph) is a graph whose edges are ordered pairs of nodes. That
is, each edge can be followed from one node to another node. An
arrow or line that connects one node to another node may, for
example, illustrate that the nodes are operatively associated with
each other. The direction of the arrows may, for example,
illustrate the input/output of data between the nodes. In an
example embodiment, the directed graph is non-hierarchical such
that the directed graph does not depict a ranking of a node
relative to another node. For example, FIG. 1 does not define that
a node representing, for example, storage server 102, is ranked
relative to nodes representing storage devices 108. Furthermore,
each node in a directed graph may be functionally related (or
connected) to multiple nodes.
[0022] In addition to representing the system model 100 of the
storage environment with the directed graph, other representations
may be used to depict the components and functional relationships.
Another example of a representation may include a mixed graph
having directed and undirected edges. In still yet another example,
the system model 100 may be represented by a table that lists the
components and the functional relationships between the components.
Other example representations include flowcharts, weighted graphs,
map diagrams, and other representations.
[0023] The embodiments described herein provide the modeling of a
storage environment. As will be explained in more detail below, to
model the storage environment, system model 100 of the storage
environment is initially composed. A representation (e.g., a
directed graph) can then be constructed based on system model 100.
Such a representation may be used to illustrate the simulated
behavior of a storage environment when, for example, subjected to
various simulated workloads.
[0024] FIG. 2 depicts a simplified block diagram of a storage
system analytics module 203, in accordance with an example
embodiment, included in computing device 202. The computing device
202 is configured to host or execute the storage system analytics
module 203. The computing device 202 may be included in a storage
environment (e.g., a client computing device in communication with
a storage system) or a stand-alone computing device independent of
the storage environment. The storage system analytics module 202 is
configured to model a storage environment. As depicted in FIG. 2,
storage system analytics module 202 may include provisioning
manager module 204, hypothetical analyzer model 206, and library
module 208. The provisioning manager module 204 and hypothetical
analyzer model 206 are operatively associated with library module
208. For example, provisioning manager module 204 and hypothetical
analyzer module 206 are in communication with library module 208.
It should be appreciated that storage system analytics module 203
may be deployed in a variety of computing devices. For example,
computing device 202 may include a personal computer, a server
computer or other computing devices.
[0025] The library module 208 is a data structure that is
configured to store component models 210. In general, a data
structure provides context for the organization of data. Examples
of data structures include tables, arrays, linked lists, databases,
and other data structures. A component model 210 is configured to
simulate one or more components associated with a storage
environment. In effect, a component model 210 is a functional
representation of one or more components associated with a storage
environment. Components may include hardware, software, and/or
services. The components may be included within a storage
environment. Alternately, the components may be configured to work
with or communicate with the storage environment. Examples of
hardware components associated with a storage environment include
storage servers, storage controllers, client computers, hard disk
drives, optical disk drives, processors, random access memories,
non-volatile memories, tape drives, controllers (e.g., Redundant
Array of Independent Disks (RAID) controllers), switches (e.g.,
Fibre Channel switches), adaptors (e.g., Storage Area Network (SAN)
adaptors, Computer System Interface (SCSI) tape adaptors, network
adaptors, and other adaptors), power supplies, network pipes,
computer buses (Peripheral Component Interconnect (PCI) buses, SCSI
buses, and other computer buses), and other hardware components.
Examples of software components include operating systems, data
replication software, data classification and management software,
device drivers, databases, volume managers, file systems,
multipathing software, backup and recovery software, antivirus
software, networking software, data security or protection
software, data search engines, file storage resource management
software, data retention software, system management software,
performance software, end-user application software, and other
software components.
[0026] In addition to component models 210 that simulate hardware
and software components of a storage environment, the component
models may also simulate one or more services, in accordance to an
example embodiment. Generally, a service is an act performed by a
user. Examples of acts by a user include deploying software,
accessing software, and a variety of other acts. In effect, this
component model may be a functional representation of a component
associated with a service rendered by a user. A component model
from component models 210 that simulates a service may be defined
by time. For example, a component model may define that a user may
take fifty five minutes to deploy a software. In another example, a
component model may define that a user may take three minutes to
login an operating system.
[0027] The component models 210 may be created by a user for use
with storage system analytics module 203. For example, component
models 210 may be supplied by the manufacturers of the hardware and
software components. The component models 210 may include
interfaces, code that simulates the components, and rules. The
creation of component models 210 may be based on a set of common
interfaces to create the system model. Generally, an interface
defines a communication boundary between components, such as
hardware components, software components, and service components.
The rules define, for example, standard methods or procedures. For
example, a rule may prohibit one type of hardware component to be
interfaced with another type of hardware component. In another
example, as explained in more detail below, a rule may specify that
component models 210 need particular resources. The rules may also
define the functional relationships between component models
210.
[0028] In an example embodiment, one or more component models 210
may also include an error associated with the component models. The
error may be the accuracy (e.g., as defined by a numerical value)
associated with the simulation of the component. For example, a
component model configured to simulate a NAS device may show that
the NAS device is 90% utilized in simulation. However, in
actuality, the NAS device is 60% utilized. Accordingly, an error of
30% may be associated with the component model. This error may then
be used for correcting the component model during simulation.
[0029] The component models 210 are configured to be plugged into
or stored within library module 208. As explained in more detail
below, with a given storage environment to be modeled, provisioning
manager module 204 may select a portion of component models 210
associated with the storage environment from library module 208.
Provisioning manager module 204 can then compose a system model
from a portion of component models 210 that is configured to
simulate the storage environment. Hypothetical analyzer module 206
may then apply one or more simulated workloads to the system model
to identify or define impacts on the storage environment.
[0030] It should be appreciated that in other example embodiments,
storage system analytics module 203 may include fewer or more
modules apart from those shown in FIG. 2. For example, provisioning
manager module 204 may be integrated with hypothetical analyzer
module 206 to form one module. In another example, provisioning
manager module 204 and hypothetical analyzer module 206 may be
executed on computing device 202 while library module 208 may be
hosted on a separate server.
[0031] FIG. 3 depicts a flow diagram of a general overview of a
method 300, in accordance with an example embodiment, for modeling
a storage environment. In an example embodiment, method 300 may be
implemented by storage system analytics module 203 of FIG. 2 and
employed in computing device 202. As depicted in FIG. 3, a storage
environment to be modeled is defined at 302. A user or a software
application may define the storage environment to be modeled. The
storage environment is comprised of a variety of components and
each component may be simulated by one or more component models. At
304, the component models associated with the storage environment
are loaded. The loading of component models is to transfer the
portion of the component models into the system model. For example,
a library module may include a variety of component models
associated with a variety of storage environments. A portion of the
component models that are associated with the defined storage
environment is transferred from the library module to a system
model.
[0032] After the component models are loaded, the system model is
composed from the component models at 306. In general, as explained
in more detail below, the system model may be composed or
constructed by associating (e.g., connecting) the component models
with each other based on functional relationships between the
component models. In an example embodiment, the structure of the
composed system model may be in the form of or resemble a directed
graph. Accordingly, the composed system model can be represented by
a directed graph that defines component models and functional
relationships between the component models. In addition to the
directed graph, as discussed above, the component models may also
be depicted by a variety of other representations, such as tables,
flowcharts, and other representations.
[0033] One or more simulated workloads may then be applied to the
system model at 308. A simulated workload is a measure of
processing performed by a component model and the application of
the simulated workload is the assignment of the simulated workload
to the component model. Assignment of the simulated workload may
include providing the simulated workload as an input into the
component model or defining the simulated workload within the
component model. For example, a simulated workload may define a
number of files to be processed by the system model. Here, for
example, a component model simulating a storage server included in
the system model may be assigned a number of files to be processed.
In another example, the simulated workload may define a flow of
data to a particular component model included in the system model.
Here, for example, a component model may be assigned to receive 631
kilobytes/second of data. In still another example, the simulated
workload may be a ratio (e.g., ratio from 0 to 1) describing the
character of the loading of a component model.
[0034] The system model is configured to simulate an impact of the
simulated workload on the storage environment. The impact is the
effect of the simulated workload. The impact of the simulated
workload on the storage environment may be depicted or defined in a
directed graph or other representations. In an example, the
directed graph may show the behavior of the storage environment
under the simulated workload. As a result, for example, a user can
use such impact information to troubleshoot the storage
environment. In another example, a user can use such impact
information to design the storage environment. In yet another
example, a user can use the impact information to assess the
performance of a given application that is designed to make use of
the storage environment.
[0035] FIG. 4 depicts a simplified block diagram of a storage
environment 400, in accordance with an example embodiment. It
should be appreciated that a variety of storage environments may be
modeled by the storage system analytics module. An example of
storage environment 400 that may be modeled is depicted in FIG. 4.
The storage environment 400 includes clients 402, storage system
406, and storage devices 410. The storage system 406 is one or more
computing devices that provide a storage service related to the
organization of information on writable, persistent storage devices
410, such as non-volatile memories, tapes, hard drives, optical
media, and other storage devices. The storage system 406 can be
deployed within a SAN environment or a NAS environment.
[0036] When used within a NAS environment, for example, storage
system 406 may be embodied as a storage server that is configured
to operate according to a client/server model of information
delivery to thereby allow multiple client computing devices (e.g.,
clients 402) to access shared resources, such as files, stored on
the storage server. The storage of data on a NAS environment can be
deployed over a computer network that includes a geographically
distributed collection on interconnected communication links, such
as Ethernet, that allow clients 402 to remotely access the data
(e.g., files) on the storage server. The clients 402 can
communicate with the storage server by exchanging discrete frames
or packets of data according to predefined protocols, such as
Transmission Control/Internet Protocol (TCP/IP).
[0037] A SAN is a high-speed network that enables establishment of
direct connections between storage system 406 and its storage
devices 410. The SAN may thus be viewed as an extension to a
storage bus and, as such, an operating system of storage system 406
enables access to stored data using block-based access protocols
over an extended bus. In this context, the extended bus can be
embodied as Fibre Channel, Computer System Interface (SCSI),
Internet SCSI (iSCSI), and other network technologies.
[0038] FIG. 5 depicts a simplified block diagram of another example
of a storage environment 500 and software applications associated
with the storage environment, in accordance with an example
embodiment, that may be modeled. Components of storage environment
500 include storage server 502 in communication with client
computing devices 402. Storage server 502 and client computing
devices 402 may be in communication by way of a network, which may
include one or more Local Area Networks (LANs) and/or Wide Area
Networks (WANs), such as the Internet. The Internet is an example
of a WAN that connects disparate networks to provide communication
between points on various networks. The points communicate by
exchanging discrete frames or packets of data according to
pre-defined protocols, such as Transmission Control
Protocol/Internet Protocol (TCP/IP). It should be appreciated that
various protocols can be used to transmit storage data over TCP/IP,
such as iSCSI, NFS, CIFS, and other protocols. In the example
illustrated in FIG. 5, storage server 502 also is in communication
with storage devices 208 (e.g., hard disks and tapes).
[0039] The client computing devices 402 may access various services
and functions supported by storage server 502. Generally, storage
server 502 is a computing device that provides file services
relating to the storage, organization, and access of data stored in
storage devices 406. Storage server 502 may, for example, be a NAS
server. The storage server 502 includes operating system 504 that,
for example, manages the software processes and/or services
executing on the storage server. For example, operating system 504
may implement a write anywhere file system 514 that organizes data
stored in storage devices 406 as a hierarchical structure of named
directories and files.
[0040] As shown in FIG. 5, operating system 504 may support a
variety of software layers 506, 508, 510, 512, 514, and 516
organized to form a mufti-protocol engine that provides data paths
for client computing devices 402 to access data stored in storage
devices 406. The Redundant Array of Independent Disks (RAID) layer
516 provides the interface to RAID controllers. In general, a RAID
controller can distribute data that storage server 502 writes to a
virtual hard disk over several storage devices 406. The file system
514 forms an intermediate layer between storage devices 406 and
software applications. It should be appreciated that storage
devices 406 may be block-oriented storage medias and file system
514 is configured to manage the blocks used by the storage devices.
In addition, file system 514 provides client computing devices 402
access to data organized in blocks by way of example directories
and files. The NFS layer 506, CIFS layer 520, and iSCSI layer 512
provide support for NFS, CIFS and iSCSI protocols, respectively.
Additionally included is application layer 508 that interfaces to
and performs common application services for application processes,
such as backup and recovery software, data retention software, and
other software applications.
[0041] FIG. 6 depicts a flow diagram of detailed methods, in
accordance with an example embodiment, for modeling a storage
environment. In an example embodiment, method 600 may be
implemented by storage system analytics module 203 of FIG. 2 and
employed in computing device 202. Initially, a storage environment
to be modeled is defined. To define a storage environment, a user
may specify the various components included within the storage
environment and the functional relationships between the
components. The user may also define the functional relationships
between the components. Alternatively, a program application may
automatically detect the various components (and their functional
relationships) within a storage environment. These detected
components (and their relationships) define the storage
environment. This defined storage environment is comprised of a
variety of components and each component may be simulated by one or
more component models, which may be stored in a library module. As
depicted in FIG. 6, component models associated with the defined
storage environment are selected from the library module at
602.
[0042] Each component model may define a resource needed by the
component model. A resource is an input and/or support needed by
the component model to function. An example of a resource is an
input variable or data needed by a component model to make a
particular calculation. In another example, a component model may
need support component models to function. The resources are the
support component models. As an example, an operating system needs
to be hosted on a computing device, such as a storage server.
Accordingly, a component model that simulates an operating system
may define a computing device as a needed resource. At 604,
component models from the library module that provide the resources
are identified and loaded (or retrieved) from the library module at
606.
[0043] A system model is then composed from the loaded component
models at 608. The component models when combined simulate the
defined storage environment. As explained in more detail below, the
composition of the system model may include associating the
component models with each other based on the functional
relationships defined by the component models.
[0044] Still referring to FIG. 6, a representation of the system
model may then be constructed at 610. In an example, the structure
of the composed system model may be in the form of or resemble a
directed graph. Accordingly, the system model may be represented as
a directed graph. As explained in more detail below, the directed
graph may depict the component models and the functional
relationships between the component models. A simulated workload
may then be applied to the system model at 612 and, as explained in
more detail below, the directed graph can be configured to define
the impact of the simulated workload on the storage
environment.
[0045] FIG. 7 depicts a flow diagram of detailed methods, in
accordance with an example embodiment, for composing a system model
from component models. In an example embodiment, method 700 may be
implemented by storage system analytics module 203 of FIG. 2 and
employed in computing device 202. Here, a storage environment to be
modeled is initially defined. This defined storage environment is
comprised of a variety of components and each of the components may
be simulated by one or more component models, which are stored in a
library module. As depicted in FIG. 7, a component model associated
with the defined storage environment is loaded from a library
module at 702. The component model may include or define one or
more functional relationships with other component models and the
functional relationships are identified from the component model at
704. Generally, a functional relationship describes a connection or
association of a component model with another component model. For
example, a functional relationship may define that a component
model is in communication with another component model. In this
example, the functional relationship may further define that an
input of the component model is in communication with an output of
another component model or vice versa. In another example, the
functional relationship may also define that the component model
provides its service by making use of the service provided by one
or more component models.
[0046] In addition to the functional relationships, each component
model may define one or more needed resources, which are also
identified from the component model at 704. The resources needed by
the component model are then loaded (or retrieved) from the library
module at 708. As discussed above, the library module is a data
structure that is configured to store component models. The
component models are loaded by transferring the component models
from the library to the system model. A determination is made at
709 whether the component model loaded is the last component model
associated with the storage environment. If there are additional
component models associated with the storage environment, then
another component model associated with the storage environment is
identified at 712 and this component model is loaded at 702. The
methods repeat until all the component models associated with the
storage environment are loaded.
[0047] If a determination is made that the component model is the
last component model associated with the storage environment (or
that all the component models have been loaded), then the component
models are associated with each other at 710 based on the
functional relationships. The determination may be made by
identifying whether all the component models associated with the
storage environment have been loaded. An example of the
determination may include comparing the particular component model
against a list of loaded component models. The component models may
then be associated by, for example, connecting the component models
together according to the defined functional relationships. It
should be appreciated that the associations do not need to be made
once all the component models are loaded into the system model. In
another embodiment, the associations can be made when each
component model is loaded into the system model. Since the
associations are made as each component model is loaded, the system
model is complete once the last component model associated with the
storage environment is loaded.
[0048] FIG. 8 depicts another directed graph representation of a
system model 800, in accordance with an example embodiment. The
structure of the composed system model 800 may be in the form of or
resemble a directed graph. Accordingly, a representation of system
model 800 may be constructed with a directed graph. In effect,
composed system model 800 can be represented by a directed graph.
As depicted in FIG. 8, a directed graph of an example system model
800 defines component models represented as nodes and functional
relationships between the component models that are represented as
lines or edges between the component models.
[0049] The directed graph shows that system model 800 includes
software components such as email messaging software 802, file
caching software 804, and backup software 806. The nodes represent
the component models that simulate the software components. The
system model 800 also includes hardware component models that
simulate storage server 808 and storage devices 810 and 811.
Generally, the email messaging software hosts emails and makes the
emails available or accessible to other client software by way of,
for example, Post Office Protocol version 3 (POP3) or Internet
Message Access Protocol (IMAP). The file caching software, which is
in communication with email messaging software and associated with
storage server, implements file caching by automatically
replicating, storing, and serving data requested over, for example,
NFS. Backup software 806, which is associated with storage server
808, backups data in the storage environment by mirroring the data
to one or more storage devices.
[0050] In an example embodiment, the directed graph (or other
representations of system model 800) may be provided in a graphical
user interface. A user may interact with the directed graph through
the graphical user interface. Examples of interactions may include
moving the component models, connecting component models, adding
component models, applying simulated workloads, and other user
interactions. It should be noted that any suitable number of
suitable layouts can be designed for graphical depiction of system
model 800, as FIG. 8 (and FIG. 1) does not represent all possible
layout options available. The displayable appearance of the regions
(e.g., regions representing component models) can be defined by any
suitable geometric shape, alphanumeric character, symbol, shading,
pattern, and color. Furthermore, the computing devices that provide
the graphical user interface may have a fixed set of layouts,
utilize a defined protocol or language to define a layout, or an
external structure can be reported to the computing device that
defines a layout.
[0051] Still referring to FIG. 8, a simulated workload 820 may be
applied to the system model, and the directed graph can visually
define the impact of the simulated workload on the storage
environment. For example, simulated workload 820 (e.g., a number of
emails) is applied to the component model of email messaging
software 802. The directed graph may illustrate the simulated
impact of simulated workload 820 on the storage environment. For
example, directed graph illustrates that simulated workload 820
results in data being transferred to both component models of
storage devices 810 and 811, which is illustrated by the two arrows
pointing from storage server 808 to storage devices 810. If
simulated workload 820 is reduced, for example, the directed graph
may alternatively illustrate that data is transferred to only one
storage device 810 or 811, which can be illustrated by one arrow
pointing from storage server 808 to one of the storage devices.
Accordingly, the directed graph can be used to illustrate the
simulated behavior of a storage environment when, for example,
subjected to various simulated workloads. A user may therefore
analyze the simulated impacts to hardware and software components
as well as to the underlying architecture of the storage
environment with various hypothetical changes to simulated
workloads. For example, a user may use such simulated impact
information to troubleshoot the storage environment without access
to or testing on an actual storage environment. The user may also
use such simulated impact information to design a storage
environment.
[0052] FIG. 9 depicts a simplified block diagram of a machine in
the example form of a computing system within which a set of
instructions, for causing the machine to perform any one or more of
the methodologies discussed herein, may be executed. Computing
system 900 may also be referred to as a computing device and, as
used herein, the terms "computing system" and "computing device"
may be used interchangeably. In alternative embodiments, the
machine may be connected (e.g., networked) to other machines. In a
networked deployment, the machine may operate in the capacity of a
server or a client machine in client-server network environment, or
as a peer machine in a peer-to-peer (or distributed) network
environment. The machine may be a personal computer (PC), a tablet
PC, a Personal Digital Assistant (PDA), a web appliance or any
machine capable of executing a set of instructions (sequential or
otherwise) that specify actions to be taken by that machine.
Further, while only a single machine is illustrated, the term
"machine" shall also be taken to include any collection of machines
that individually or jointly execute a set (or multiple sets) of
instructions to perform any one or more of the methodologies
discussed herein.
[0053] Example computing system 900 includes processor 902 (e.g., a
central processing unit (CPU), a graphics processing unit (GPU) or
both), main memory 904 and static memory 906, which communicate
with each other via bus 908. Computing system 900 may further
include video display unit 910 (e.g., a plasma display, a liquid
crystal display (LCD) or a cathode ray tube (CRT)). Computing
system 900 also includes alphanumeric input device 912 (e.g., a
keyboard), user interface (UI) navigation device 914 (e.g., a
mouse), disk drive unit 916, signal generation device 918 (e.g., a
speaker) and network interface device 920.
[0054] Disk drive unit 916 includes machine-readable medium 922 on
which is stored one or more sets of instructions and data
structures (e.g., software 924) embodying or utilized by any one or
more of the methodologies or functions described herein. Software
924 may also reside, completely or at least partially, within main
memory 904 and/or within processor 902 during execution thereof by
computing system 900, with main memory 904 and processor 902 also
constituting machine-readable, tangible media. Software 924 may
further be transmitted or received over network 926 via network
interface device 920 utilizing any one of a number of well-known
transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)).
[0055] While machine-readable medium 922 is shown in an example
embodiment to be a single medium, the term "machine-readable
medium" should be taken to include a single medium or multiple
media (e.g., a centralized or distributed database, and/or
associated caches) that store the one or more sets of instructions.
The term "machine-readable medium" shall also be taken to include
any medium that is capable of storing, encoding or carrying a set
of instructions for execution by the machine and that cause the
machine to perform any one or more of the methodologies of the
present application, or that is capable of storing, encoding or
carrying data structures utilized by or associated with such a set
of instructions. The term "machine-readable medium" shall
accordingly be taken to include, but not be limited to, solid-state
memories, optical and magnetic media, and carrier wave signals.
[0056] While the invention(s) is (are) described with reference to
various implementations and exploitations, it will be understood
that these embodiments are illustrative and that the scope of the
invention(s) is not limited to them. In general, techniques for
modeling storage environments may be implemented with facilities
consistent with any hardware system or hardware systems defined
herein. Many variations, modifications, additions, and improvements
are possible.
[0057] Plural instances may be provided for components, operations
or structures described herein as a single instance. Finally,
boundaries between various components, operations, and data stores
are somewhat arbitrary, and particular operations are illustrated
in the context of specific illustrative configurations. Other
allocations of functionality are envisioned and may fall within the
scope of the invention(s). In general, structures and functionality
presented as separate components in the exemplary configurations
may be implemented as a combined structure or component. Similarly,
structures and functionality presented as a single component may be
implemented as separate components. These and other variations,
modifications, additions, and improvements fall within the scope of
the invention(s).
* * * * *