U.S. patent application number 12/846363 was filed with the patent office on 2012-02-02 for dynamic migration within a network storage system.
This patent application is currently assigned to Apple Inc.. Invention is credited to Scott Ryder.
Application Number | 20120030343 12/846363 |
Document ID | / |
Family ID | 44511524 |
Filed Date | 2012-02-02 |
United States Patent
Application |
20120030343 |
Kind Code |
A1 |
Ryder; Scott |
February 2, 2012 |
DYNAMIC MIGRATION WITHIN A NETWORK STORAGE SYSTEM
Abstract
This is directed to providing access to content stored on a
personal cloud. In particular, a personal cloud can be constructed
by sharing the resources of several devices owned by a user and by
other users trusted by the user. To add a device to a personal
cloud, the device can identify its owner to a librarian, which can
provide addressing information for other devices forming a cloud on
behalf of the owner. The new device can establish a communications
path with the other devices, and configure itself based on the
services or data required for the personal cloud (e.g., as
determined from communications with the other devices). Services
operating on individual devices of the personal cloud can migrate
dynamically and automatically to ensure that a user can remove a
device from the personal cloud at will without adversely affecting
the operation of the personal cloud.
Inventors: |
Ryder; Scott; (Los Altos,
CA) |
Assignee: |
Apple Inc.
Cupertino
CA
|
Family ID: |
44511524 |
Appl. No.: |
12/846363 |
Filed: |
July 29, 2010 |
Current U.S.
Class: |
709/224 ;
709/226 |
Current CPC
Class: |
G06F 9/4856 20130101;
H04L 43/08 20130101; H04L 41/12 20130101; H04L 67/104 20130101;
H04L 67/1095 20130101; G06F 9/5072 20130101; H04L 67/1074
20130101 |
Class at
Publication: |
709/224 ;
709/226 |
International
Class: |
G06F 15/16 20060101
G06F015/16; G06F 15/173 20060101 G06F015/173 |
Claims
1. An electronic device dynamically migrating a personal cloud
service in a personal cloud, the device comprising control
circuitry and communications circuitry, the control circuitry
operative to: receive an instruction to disconnect from the
personal cloud a device forming a node in the personal cloud;
identify a personal cloud service provided the node; determine that
another node is shadowing the identified personal cloud service;
and direct the other node to activate the shadowing identified
personal cloud service.
2. The electronic device of claim 1, wherein the control circuitry
is further operative to: determine that no other node is shadowing
the identified personal cloud service; identify an available node
in the personal cloud with available resources for providing the
identified personal cloud service; and transfer the identified
personal cloud service to the available node.
3. The electronic device of claim 2, wherein the control circuitry
is further operative to: retrieve metadata used by the identified
personal cloud service; and transfer the retrieved metadata to the
available node.
4. The electronic device of claim 1, wherein the identified
personal cloud service comprises at least one of: a coordinating
service; a catalog service; a data service; a healing service; and
a backup service.
5. The electronic device of claim 1, wherein the control circuitry
is further operative to: provide an indication to a coordinating
service that the personal cloud service will no longer be provided
by the node.
6. The electronic device of claim 1, wherein the control circuitry
is further operative to: disconnect the node from the personal
cloud.
7. A method for dynamically migrating active services between nodes
of a personal cloud, comprising: detecting that the operation of a
personal cloud can improve by migrating an active service provided
by a first node to a second node; determining that the second node
has sufficient resources to implement the active service;
transferring data required for the operation of the active service
from the first node to the second node; and directing the first
node to cease providing the active service while directing the
second node to start providing the active service.
8. The method of claim 7, wherein detecting further comprises:
detecting that the first node is no longer available to the
personal cloud.
9. The method of claim 7, wherein detecting further comprises:
detecting that a communications path between end users making use
of the active service and the second node is faster than a
communications path between the end users and the first node.
10. The method of claim 7, wherein detecting further comprises:
monitoring historical availability of each of the first and second
nodes; defining the probability that each node will be available at
different moments in time; and determining that the first node is
likely to be less available than the second node based on the
defined probability at a particular moment in time.
11. The method of claim 7, further comprising: shadowing data
stored by the first node for use by the active service using the
second node; and wherein transferring further comprises directing
the active service provided by the second node to make use of the
shadowing data stored on the second node.
12. The method of claim 7, further comprising: providing a
coordinating service to coordinate the migration of the active
service from the first node to the second node.
13. The method of claim 12, wherein: the coordinating service is
operative to identify the availability of the second node for the
active service.
14. The method of claim 7, further comprising: identifying a third
node having available resources for implementing the active
service; and transferring at least one of instructions for
executing the service and metadata used by the active service to
the third node.
15. The method of claim 7, wherein the active service comprises at
least one of: a coordinating service; a catalog service; a data
service; a healing service; and a backup service.
16. A service implemented on an electronic device providing a node
of a personal cloud, the electronic device comprising control
circuitry operative to: receive an indication that a first device
providing a first service for a personal cloud will no longer
provide the first service; identify a second device implementing a
second service, wherein the second device has resources available
to implement the first service in addition to the second service;
transfer the metadata corresponding to the implementation of the
first service to the second device; and direct the second device to
implement the first service using the transferred metadata.
17. The service of claim 16, wherein the control circuitry is
further operative to: attempt to establish a communications path
with the first device; detect that the communications path with the
first device cannot be established; and deduce that the first
device is no longer providing the first service in response to
detecting that the communications path cannot be established.
18. The service of claim 16, wherein the control circuitry is
further operative to: detect that the second device stores the
metadata corresponding to the implementation of the first service
to back up the first service; and direct the second device to
implement the first service using the metadata stored by the second
device corresponding to the implementation of the first
service.
19. The service of claim 16, wherein the resources of the second
device comprise at least one of: storage; and processing.
20. Computer readable media for dynamically migrating active
services between nodes of a personal cloud, comprising computer
readable code recorded thereon for: detecting that the operation of
a personal cloud can improve by migrating an active service
provided by a first node to a second node; determining that the
second node has sufficient resources to implement the active
service; transferring data required for the operation of the active
service from the first node to the second node; and directing the
first node to cease providing the active service while directing
the second node to start providing the active service.
Description
FIELD
[0001] This is directed to configuring components of a personal
network storage system. In particular, this is directed to managing
the seamless addition and removal of devices in a personal network
storage system.
BACKGROUND
[0002] With the increased availability of high speed Internet
connections, many devices have the ability to connect to remote
services or sources. In addition, as the cost of high speed
Internet connections decreases, many users may maintain a constant
or near constant connection to the Internet. Furthermore, as
wireless communications systems expand, users can connect to remote
sources at many different locations, including far from the user's
work, home or other areas where the user typically can access the
Internet. For example, wireless communications networks have
expanded to the point where a device can connect to the Internet on
a mountaintop in nature (e.g., while skiing or hiking).
[0003] Because of the enhanced ability of devices to connect to the
Internet as a user moves or travels, a user can make an increased
use of remote storage. In particular, a user can store information
in one or more remote locations, while knowing that the information
can remain accessible so long as the user has an Internet
connection available. This can allow a user to expand the amount of
storage available to the user beyond the actual storage within the
device (e.g., the storage of a hard drive or solid state drive in a
device).
[0004] A device can connect to any suitable remote storage source
to store or access content including, for example, using one or
more cloud storage solutions. A cloud storage solution can
typically include one or more racks of storage devices
geographically located in one or more locations and connected to
each other and to the Internet. The storage devices can be managed
by a system administrator, who can perform various tasks to ensure
that the cloud operates properly. In particular, a system
administrator can define and set profiles for different devices,
perform periodic checks, replace or maintain devices, and in some
cases manage some or all of the data stored in the cloud. While
such cloud storage may be of use to a user, it may also come at a
cost. In particular, the cloud provider can charge a monthly or
other recurring fee in exchange for use of the cloud storage (and
the recurring fees can be charged whether or not the user is using
the storage). In addition, the cost of operating a cloud storage
system can include not only material costs (e.g., storage devices)
but also network administration costs. In particular, each time a
new device is added to the cloud, or each time a device is removed
from the cloud, administrative action may be required to configure
the new device or migrate data, services, or both among remaining
devices of the cloud. This can require both time and administrator
resources.
SUMMARY
[0005] This is directed to systems, methods and computer-readable
media for enabling an individual user to create personal or private
network storage systems, such as personal clouds, where the cloud
can auto-configure itself to reduce or eliminate management duties
on behalf of the user.
[0006] A user can define a personal cloud by selecting a list of
devices controlled by the user to include in the cloud. The devices
in the list can identify themselves and their owner to a librarian,
which can allocate resources of the identified devices for the
personal cloud. In addition, the user can elect to trust one or
more other users, whose devices can also be made available for use
by the cloud. The librarian can then select a set of devices to
combine to form the personal cloud, where the devices are owned by
one or more users.
[0007] The particular devices to be included as part of a cloud,
however, can change over time. For example, a computer owned by a
user can be connected or disconnected from an available network
connection on an ad hoc basis (e.g., when a notebook device is
disconnected from the Internet while in transit). As another
example, a computer owned by a user can be turned off at any time.
As still another example, a user can allocate or remove resources
of a remote storage device (e.g., an external hard drive) to or
from a device or network. As the availability of a device changes,
the device may need to be configured to be used by the personal
cloud.
[0008] A user can define a personal cloud using any suitable
approach. In some embodiments, a user can identify one or more
devices owned by the user to a librarian. The user can also
identify other users that the user trusts, whose devices can be
included in a personal cloud used by the user. When a user needs
access to a personal cloud, the user can provide a request to the
librarian. The request can include, for example, a cloud size, one
or more particular trusted users, or other criteria. In response to
receiving the request, the librarian can identify one or more
devices owned by the user or by trusted other users having
resources available for the personal cloud. The librarian can
provide information for locating some or all of the identified
devices, and can enable the identified devices to communicate
amongst themselves to establish a network storage system (e.g., a
personal cloud) constructed from the resources of each of the
identified devices.
[0009] As the user makes use of the personal cloud, the resources
of the different devices can be used. At some point, the personal
cloud may have no resources remaining for storing new data, or for
providing services to a user. The user may then be required to add
a new device (e.g., purchase a new external hard drive) for the
personal cloud, or allocate additional resources from a connected
device. As another example, a device owned by the user can be
turned off or disconnected from a network connection, and later
turned back on or re-connected. As these devices become available
again, or available for the first time to the personal network, the
devices may need to be configured or re-configured to be usable by
the personal cloud.
[0010] Each new device can be owned by a particular user (e.g., the
device owner). For example, each device can include an application
operating on or accessing the device, where the application is
controlled by the particular user. The new device, upon connecting
to the network, can identify itself to the librarian, and identify
the particular user or owner of the device. In response to
receiving the identification, the librarian can identify other
devices forming an appropriate personal cloud (e.g., a local cloud
for the particular user, or a private cloud for a user trusting the
particular user). The new device can then communicate with the
other devices to indicate its availability (for example, the amount
of space on the device that is being made available to the cloud),
and provide its resources to the personal cloud that includes the
other devices. In some cases, one or more of the other devices of
the personal cloud can, instead or in addition, request from the
librarian, a list of available devices for the personal cloud. In
response to receiving the request, the librarian can provide a
listing of devices that includes the new device (which previously
identified itself to the librarian, and is therefore known to the
librarian).
[0011] Each device forming part of a personal cloud can have a
different purpose, or provide different services to the personal
cloud. For example, some devices can provide processing resources,
and other devices can provide data storage resources. As another
example, devices can provide services for storing data, operating
catalogs, or other operations that ensure that a user can
seamlessly interact with the personal cloud. When a device is added
to a personal cloud, one or more services can be selected to
operate on the new device. For example, a data service or a catalog
service (e.g., a data distribution and management service that
manages or coordinates a data service) can be implemented on the
new device. The particular service or use of the new device can be
selected using any suitable approach. For example, different
devices forming the cloud can coordinate to ensure that all of the
necessary services are made available. As another example, the
devices can coordinate with each other to ensure that backups and
redundancy is secured. In some cases, the catalog service can
assign the particular service to the new device.
[0012] The particular service or operation provided by each device
can change dynamically. For example, one or more devices can be
removed from the network, and their services transferred to other
devices. To ensure that a user's experience remains seamless, the
services provided by different devices can be redundantly stored
and synchronized across several devices (e.g., backup metadata used
by a service). Some of the services may be disabled based on
services provided by the available devices to avoid conflicts
between the same services operating on different devices. The
disabled services can shadow an active service to ensure that they
are accurate and current, should they need to become active (e.g.,
to ensure that a catalog service includes the most recent
interactions of users with data stored in the personal cloud). When
a device having an active service is removed from the personal
cloud, another device operating the same service, but inactively,
can be activated. Alternatively, the service can be dynamically
transferred to another device (that may or may not bee shadowing an
active service) in the cloud prior to disconnecting the removed
device.
[0013] In some cases, a personal cloud can dynamically adjust the
distribution of services in devices based on other criteria. For
example, a personal cloud can select to assign a particular service
to a device based on geographic location relative to end user
needs, device failure, backup or replication considerations, energy
saving, growth or device capacity, expected availability of device
resources, or combinations of these. This approach can allow the
personal cloud to seamlessly and non-disruptively move data and
services while maintaining the availability of the personal cloud
services and allowing individual users to arbitrarily remove device
resources from the personal cloud.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] The above and other features of the present invention, its
nature and various advantages will be more apparent upon
consideration of the following detailed description, taken in
conjunction with the accompanying drawings in which:
[0015] FIG. 1 is a schematic view of an illustrative electronic
device for use in a network storage system in accordance with one
embodiment of the invention;
[0016] FIG. 2 is a schematic view of an illustrative network
storage system in accordance with one embodiment of the
invention;
[0017] FIG. 3 is a schematic display of an interface for providing
information regarding trusted devices and available device
resources to a librarian in accordance with one embodiment of the
invention;
[0018] FIG. 4 is a schematic view of an illustrative display for
directing a user to add new resources to a personal cloud in
accordance with one embodiment of the invention;
[0019] FIG. 5 is a flowchart of an illustrative process for
providing addressing information to a new device contacting a
librarian in accordance with one embodiment of the invention;
[0020] FIG. 6 is a flowchart of an illustrative process for
configuring a device added to a personal cloud in accordance with
one embodiment of the invention;
[0021] FIG. 7A is a schematic view of an illustrative personal
cloud from which a node can be removed in accordance with one
embodiment of the invention;
[0022] FIG. 7B is a schematic view of an illustrative personal
cloud in which a node operation and service is migrated to allow
the removal of the node in accordance with one embodiment of the
invention; and
[0023] FIG. 8 is a flowchart of an illustrative process for
seamlessly migrating services between nodes of a personal cloud in
accordance with one embodiment of the invention.
DETAILED DESCRIPTION
[0024] This is directed to configuring devices added to a personal
network storage system. In addition, this is directed to managing
the distribution and migration of data and services in the personal
network storage system without requiring an administrator.
[0025] FIG. 1 is a schematic view of an illustrative electronic
device for use in a network storage system in accordance with one
embodiment of the invention. Electronic device 100 can include any
suitable type of electronic device operative to connect to a
network storage system or to be used as part of a network storage
system. For example, electronic device 100 can include a media
player such as an iPod.RTM. available by Apple Inc., of Cupertino,
Calif., a cellular telephone, a personal e-mail or messaging
device, an iPhone.RTM. available from Apple Inc., pocket-sized
personal computers, personal digital assistants (PDAs), a laptop
computer, a music recorder, a video recorder, a gaming device, a
camera, a storage device, and any other electronic device having
resources that can be allocated to a personal cloud.
[0026] Electronic device 100 can include a processor or control
circuitry 102, storage 104, memory 106, input/output circuitry 108,
and communications circuitry 110 as typically found in an
electronic device. The electronic device components can be
operative to enable any of the uses expected from the electronic
(e.g., connect to a personal network storage system, or provide
resources to a personal network storage system). In some
embodiments, one or more of electronic device components 100 can be
combined or omitted (e.g., one could combine together storage 104
and memory 106, or either could be omitted). Electronic device 100
can include other components not combined or included in those
shown in FIG. 1 (e.g., a sensor array or positioning circuitry), or
electronic device 100 can include several instances of the
components shown in FIG. 1. For the sake of simplicity, only one of
each of the components is shown in FIG. 1.
[0027] Control circuitry 102 can include any processing circuitry
or processor operative to control the operations and performance of
electronic device 100. Storage 104 can include, for example, one or
more storage mediums including a hard-drive, solid state drive,
flash memory, permanent memory such as ROM, any other suitable type
of storage component, or any combination thereof. Memory 106 can
include cache memory, semi-permanent memory such as RAM, and/or one
or more different types of memory used for temporarily storing
data. In some embodiments, memory 106 and storage 104 can be
combined as a single storage medium.
[0028] Input/output interface 108 can convert (and encode/decode,
if necessary) analog signals and other signals into digital data.
For example, input/output interface 108 may receive and convert
physical contact inputs (e.g., from a multi-touch screen or a
button press), physical movements (e.g., from a mouse or sensor),
analog audio signals (e.g., from a microphone), or any other input
provided by a user. Although input/output interface 108 is
illustrated in FIG. 1 as a single component of electronic device
100, several instances of input/output interface 108 can be
included in electronic device 100.
[0029] Electronic device 100 can include any suitable mechanism,
circuitry or component for allowing a user to provide inputs to
input/output interface 108. For example, electronic device 100 may
include a button, keypad, dial, a click wheel, or a touch interface
(e.g., a capacitive touch screen), or combination of these. In some
embodiments, input/output information 108 can, instead or in
addition, include circuitry, software, firmware, or other
components for detecting and processing voice inputs or other audio
inputs. In some cases, input/output interface 108 can be operative
to detect and process inputs received from gestures of the device
(e.g., inputs detected from movements of the device, such as
shaking, twisting or spinning).
[0030] Electronic device 100 can include specialized output
interfaces associated with output signals such as, for example, one
or more audio or visual outputs. An audio output may include one or
more speakers (e.g., mono or stereo speakers) built into electronic
device 100, or an audio component that is remotely coupled to
electronic device 100 (e.g., a headset, headphones or earbuds that
may be coupled to communications device with a wire or wirelessly).
A visual output can include display circuitry (e.g., a screen or
projection system) for providing a display visible to the user. For
example, the display circuitry can include a screen (e.g., an LCD
screen) that is incorporated in electronics device 100, a movable
display or a projecting system for providing a display of content
on a surface remote from electronic device 100 (e.g., a video
projector), or combinations of these. In some embodiments,
input/output interface 108 can include a coder/decoder (Codec) to
convert digital media data into analog signals such as, for
example, video Codecs, audio Codecs, or any other suitable type of
Codec.
[0031] Communications circuitry 110 may be operative to communicate
with other devices or with one or more servers using any suitable
communications protocol. Electronic device 100 may include one more
instances of communications circuitry for simultaneously performing
several communications operations using different communications
networks. For example, communications circuitry may support Wi-Fi
(e.g., a 802.11 protocol), Ethernet, Bluetooth.TM. (which is a
trademark owned by Bluetooth Sig, Inc.), radio frequency systems,
cellular networks (e.g., GSM, AMPS, GPRS, CDMA, EV-DO, EDGE, 1GSM,
DECT, IS-136/TDMA, iDen, LTE or any other suitable cellular network
or protocol), infrared, TCP/IP (e.g., any of the protocols used in
each of the TCP/IP layers), HTTP, FTP, RTP, RTSP, SSH, Voice over
IP (VOIP), any other communications protocol, or any combination
thereof. In some embodiments, communications circuitry 110 may
include one or more communications ports operative to provide a
wired communications link between electronic device 100 and a host
device. For example, a portable electronic device may include one
or more connectors (e.g., 10 pin connectors or USB connectors)
operative to receive a cable coupling the portable electronic
device to a host computer. Using software on the host computer
(e.g. iTunes available from Apple Inc.), the portable electronic
device may communicate with the host computer.
[0032] In some embodiments, electronic device 100 can include a
device having a limited interface. For example, electronic device
100 can serve as a storage node for a network storage system. In
particular, electronic device 100 can be limited to a device having
storage capabilities, and communications circuitry to connect the
electronic device to a communications network. The device may not
include an integrated input interface, but may instead be remotely
accessed by another device (e.g., over a wired or wireless
communications path).
[0033] Several electronic devices, including electronic devices
having some or all of the same features, can be connected to each
other to form a sub-network over which information can be shared.
In particular, a user may own several devices that are
interconnected to share information or to store information that
can be accessed from any of the devices. FIG. 2 is a schematic view
of an illustrative network storage system in accordance with one
embodiment of the invention. System 200 can include electronic
devices 212, 214 and 216 associated with a first user (e.g., a
first owner), devices 222, 224, 226 and 228 associated with a
second user (e.g., a second owner), and devices 232, 234 and 236
associated with a third user (e.g., a third owner). It will be
understood, however, that system 200 can include any suitable
number of devices associated with any suitable number of users.
Each of the devices associated with particular users can be
connected in a personal sub-network owned by the corresponding user
or owner. For example, sub-network 210 can include the devices
associated with the first user, sub-network 220 can include the
devices associated with the second user, and sub-network 230 can
include the devices associated with the third user. Each of the
sub-networks can be secured, such that information can be shared
between devices on a sub-network, but not accessed from other
devices outside of the sub-network. In other words, the
sub-networks can be limited to devices owned by the same owner.
[0034] In some embodiments, some or all of the devices can be
connected to a communications network that allows the
interconnection of all of the devices. For example, the devices
shown in FIG. 2 can be connected to global communications network
202 (e.g., the Internet). Each device can connect directly to the
communications network (e.g., via communications circuitry
connected to an access point for the communications network), or
via an intermediary device (e.g., connect to the communications
network by connecting to a device having an access point for the
communications network). Using communications network 202, devices
that are part of individual communications networks can communicate
across individual networks.
[0035] In some embodiments, different users can elect to share
resources to form a communications network that spans several
individual sub-networks. For example, the first user can elect to
trust the second user, and vice versa. Each user can allocate some
of the user's devices for the shared communications network. For
example, the first and second users can connect devices 212, 222,
224 and 226 together to form communications network 240. The
devices can communicate over communications network 202, using one
or more authentication and encryption protocols. Some or all of the
users providing devices or specific resources of devices to a
local, private, or personal cloud can have different levels of
access to the personal cloud. For example, the first and second
users can define a cloud having both of their devices, and to which
the first and second users have read and write access.
Alternatively, one of the users can define a cloud that includes
devices from both users, but that does not provide read access or
write access to the other of the first and second users providing
devices to the personal network.
[0036] Any suitable number of personal clouds can be constructed
using the devices connected to the communications network. For
example, each of several users trusting other users can create a
personal cloud, where the personal cloud includes devices owned by
users other than the one requesting the cloud. In some cases, one
device can be used in several personal clouds, where different
resources or different portions of a same resource (e.g., different
amounts of storage) are made available by the device to each of the
clouds.
[0037] The personal network system, and the formation and
administration of personal clouds, can be managed or administered,
at least partially or summarily, by a control system. For example,
the system can include a librarian service operating on a master
device of network 202. The master device can include any suitable
feature or component including, for example, one or more components
described in connection with device 100 (FIG. 1). In some
embodiments, network 202 can include a server 204 on which a
librarian service is operating. Server 204 can be provided by any
suitable entity including, for example, a cloud service provider,
an Internet Service Provider, or any other provider of services
over network 202. In some embodiments one or more end users can
instead or in addition provide server 204. The librarian service
can manage any suitable number of personal networks, or any
suitable number of owners identifying devices available for
personal networks. In some cases, a librarian service can
coordinate an arbitrary number of personal networks built out of
devices owned by different users, and connected by any suitable
means.
[0038] While the nodes of a personal cloud can communicate amongst
themselves to configure and operate services including data storage
on the personal cloud, the different nodes may need an anchor to
serve as a reference for addressing information. In some
embodiments, the librarian process can serve as an anchor for
providing location information for nodes of different personal
clouds (e.g., the librarian knows the addresses for different
nodes, as node addresses can change when individual devices are
disconnected and reconnected to the communications network). For
example, the librarian can initially provide addressing information
for nodes of the personal cloud to a new device added to the
cloud.
[0039] To ensure that a user can trust the devices in a personal
cloud, users of personal clouds can rely on a web of trust. The web
of trust can be defined by a sequence of one or two-direction
connections between different users. Each time a first user elects
to trust a second user, a new trust connection can be established
between the first user and the second user. When the second user
trusts the first user, a new trust connection can be established
between the second user and the first user, or the initial
connection between the first user and the second user can be
modified to indicate bi-directional trusting. In a system with a
large number of users trusting each other, the resulting trust
connections can form a lattice or web (e.g., a web of trust). The
web of trust can be maintained and guaranteed by the librarian,
such that the librarian can provide trust information to any user
or device requesting the identity of trusted owners. The trust
information can include, for example, listings of other users
trusted by a particular user (e.g., the trust information can
describe trust relationships corresponding to the particular
user).
[0040] To form a personal cloud, a user may first identify to the
librarian the one or more devices owned by the user. For example,
the user can install a personal network client application on
devices owned by the user, where the application can identify the
user for the devices. As another example, one or more of the
devices known to be owned by the user can identify other devices
connected to a personal network of the user (and therefore assumed
to also be owned by the user), and provide identifying information
for those devices to the librarian.
[0041] The user can elect to contribute any resources of the user's
devices to a personal network. For example, the user can select to
contribute storage, processing, or other device resources. In
particular, the user can assign a particular amount of storage, or
a particular level of processing to a personal cloud (e.g., 40% of
RAM or CPU). In some cases, the user can condition the availability
of resources. For example, the user can reduce the resources
provided to a personal cloud when a process on the user's device
requires the resources. As another example, the user can provide
resources based on the time of day. As still another example, the
user can provide resources based on cost considerations (e.g.,
allow resources to be provided so long as the power costs of
providing the resources are less than a threshold).
[0042] In addition to identifying devices, and specific resources
of devices to contribute to the librarian, a user can identify
other users whose devices are trusted by the user. In particular,
the user can identify friends, family members, co-workers, or other
people that the user knows and trusts with the user's data. The
user can identify the other users using any suitable approach
including, for example, using an e-mail address. In particular, the
user can select contact information for several users, and provide
the contact information to the librarian.
[0043] Each user can identify the device resources that the user
wishes to make available for personal clouds, as well as the other
users or owners that are trusted to the librarian using any
suitable approach. In some embodiments, a device of the user can
include an interface for identifying device resources, and
selecting other users to trust.
[0044] FIG. 3 is a schematic display of an interface for providing
information regarding trusted devices and available device
resources to a librarian in accordance with one embodiment of the
invention. Display 300 can include title 302 indicating that the
display corresponds to a personal cloud setup page. In particular,
display 300 shows devices and resources available for a personal
cloud. Display 300 can provide an interface for identifying one or
more specific other users that the user trusts, and with which the
user agrees to share resources. For example, display 300 can
include identifying label 310 corresponding to field 312 into which
the user can identify trusted other users. The other users can be
identified using any suitable approach including, for example, from
an e-mail address or other identifying information provided or
known to the librarian. In some embodiments, the identity of the
user of the device providing display 300 (e.g., as known by the
librarian) can be displayed, for example in the vicinity of title
302.
[0045] In some embodiments, the user can (e.g., using display 300)
select the specific resources 320 that the user is willing to
dedicate to a personal cloud. For example, the user can list, in
field 322, the individual devices associated with that user. In
some embodiments, one or more of the devices can be automatically
identified by the librarian, or by the device providing display
300. For example, the device used by the user can detect the other
devices in the personal network associated with the user's devices.
The user can select a particular device using highlight region 324,
and provide, in box 326, device resources for the selected
particular device to make available to the personal cloud. The user
can select any suitable resource including, for example, storage
(e.g., in a percentage or numerical amount), processing resources
(e.g., percentage of clock cycles), or combinations of these. In
some embodiments, the user can define one or more limitations to
the shared resources, such as time constraints, restrictions based
on the resources used or required by a user, connection speed,
resource cost, or combinations of these. Once a user has specified
one or more trusted users and allocated device resources, the user
can provide an instruction to transmit the information to the
librarian (e.g., select submit option 330).
[0046] A user can form a personal network storage system (e.g., a
local, personal, or private cloud) using any suitable approach. In
some embodiments, a user can provide a request to the librarian for
a personal cloud. The user request can include any suitable
criteria or requirement including, for example, a storage
requirement (e.g., at least 1 TB). In response to receiving a
request, the librarian can identify a collection of devices having
resources satisfying the request's criteria, where the devices are
selected from devices owned by the user, and from devices owned by
other users trusted by the user.
[0047] The librarian can identify the particular devices to use in
the personal cloud using any criteria. For example, the librarian
can identify devices that meet the resource requirements. As
another example, the librarian can identify devices located in
geographic proximity of the user. As still another example, the
librarian can select devices based on their historic or expected
availability and connectivity to the communications network (e.g.,
the connection speed of a device). Once the librarian has
identified the particular devices to use in the personal cloud, the
librarian can provide addressing or identification information for
those devices to the requesting user or requesting device. The
requesting device can then contact the identified other devices and
configure a personal cloud in consort with the other devices.
[0048] Each device used in a personal cloud can be configured for
use in the cloud using any suitable approach. In some embodiments,
the librarian can configure the devices. Alternatively, and to
reduce the burden on the librarian and more efficiently manage each
personal cloud, the devices of the personal cloud can communicate
and distribute services (and data managed or used by the services)
in an appropriate fashion. To operate properly, several different
services may need to be provided by devices in the personal cloud.
For example, a catalog service can be used to provide cards
corresponding to stored data so that users can interact with cards
instead of actual underlying data. As another example, a data
service can be used for storing and managing data stored in the
personal cloud. The data service can ensure that data is stored and
distributed in different devices, is adequately backed up, and made
available to a user upon a corresponding request. As still another
example, a repair or healing service can be provided to ensure that
data is not lost, and that devices remain operable for the personal
cloud. In addition to determining which services should be stored
on different nodes, the devices may need to coordinate, under the
instruction of a data service, to determine where to store data
used by the services, or stored by a user. In particular, different
data can be distributed across different nodes of the personal
cloud.
[0049] Any suitable approach can be used to distribute services and
data among the devices of a personal cloud. In some embodiments,
the device providing the initial request to a librarian to form a
personal cloud can establish communication paths with the other
devices forming the cloud, and assign particular tasks or services
to each device. Alternatively, the devices can consult and
distribute tasks based on the available resources and suitability
of each device for the tasks or services. As still another example,
one device of the cloud can implement a coordinating service to
ensure that the proper services (and their respective data or
metadata) are assigned to particular devices of the personal
cloud.
[0050] As a user makes use of the cloud, the user may use up the
available resources of the individual devices forming the cloud.
For example, the user can store enough data to fill the storage
resources allocated by devices of the cloud. As another example,
processing operations requested by a catalog service or other
service operating on the personal cloud can take up the available
processing resources of the cloud devices. When one or more devices
of the personal cloud (e.g., a device providing the coordinating
service, or a device having no available storage resources
remaining) determine that additional resources are not available,
the devices can provide a corresponding request for resources to
the librarian. The personal cloud can then be deemed to be a
"calling" personal cloud (e.g., calling for additional resources).
In some embodiments, the librarian can, instead or in addition,
monitor the resource use of different devices of personal clouds,
and detect when resources become scarce without requiring
individual devices to provide a request for additional
resources.
[0051] In response to determining that additional resources are
required, or to receiving a request for additional resources, the
librarian can identify other devices owned by the user, or by
trusted users that can be used for the personal cloud.
Alternatively, the librarian can direct a device used by the user
to prompt the user to add new devices or resources to the calling
personal cloud. FIG. 4 is a schematic view of an illustrative
display for directing a user to add new resources to a personal
cloud in accordance with one embodiment of the invention. Display
400 can be provided as a standalone display, pop-up window, or any
other type of display or interface provided to the user. Display
400 can include title 402 corresponding to controlling the cloud.
Display 400 can include message 410 instructing the user to add new
resources for a calling personal cloud, or remove data currently
stored on the cloud, to continue to use the cloud. To enable the
user to respond to message 410, display 400 can include options 420
for identifying existing devices owned by the user, or for
identifying a new device owned by the user having available
resources. In particular, options 420 can include devices 422,
which can be selected by highlight region 424. In response to
receiving a selection of a particular device, options 420 can
include resources 426 of the device that the user can contribute to
a personal cloud. In the example of display 400, the resources
provided can include storage space (e.g., 1 TB from a USB hard
drive).
[0052] In some embodiments, the device or librarian can recommend
particular devices to add to the calling cloud, or particular
resources of devices to add to the calling cloud. For example, the
device or librarian can automatically add a particular device or
resource in options 420. The particular device or resource can be
selected based on any suitable criteria including, for example, by
monitoring the use of resources of devices owned by the user,
receiving an indication from the other devices of available
resources, identifying new devices owned by the user on a personal
network (e.g., within a subnet), or combinations of these. Once the
new device or resources have been selected for the personal cloud,
the user can provide an approval instruction (e.g., select submit
option 440).
[0053] In some embodiments, a user may not be required to add a new
device to the personal network. Instead, it may be sufficient for a
user to simply re-connect a previously available device, or
re-allocate device resources that were removed to the calling
cloud. In such cases, a user can re-connect the device or
re-allocate the resources such that the device and resources appear
in option 420 of display 400. Alternatively, when the device or
resources become available again, the personal cloud can detect the
device or resources and determine that additional resources are no
longer necessary. The calling cloud can then direct the device
providing display 400 to automatically remove the display (and can
indicate to the librarian service that additional resources are no
longer necessary).
[0054] When new devices are identified for a personal cloud, the
new devices may need to be configured prior to being available for
use. Similarly, previously connected devices may need to be
reconfigured before they can be used by the cloud, as their
previous function (e.g., the services and data that were previously
stored) may no longer be relevant or useful to the cloud. In
addition, addressing information previously used to contact
different devices or nodes in the personal cloud may be different,
as devices may have disconnected and reconnected to the network. A
device connecting to a personal cloud (e.g., connecting for the
first time or re-connecting) can retrieve addressing information
for the nodes of the personal cloud using any suitable approach. In
some embodiments, the device can retrieve addressing information
from the librarian.
[0055] Because different devices of a personal cloud can change
addresses in the communications network when they are disconnected
and reconnected, the librarian may be necessary to provide an
anchor that knows how to contact each device. In particular,
whenever a device reconnects to the communications network, the
device can identify itself and its address to the librarian, and
request addressing information for other devices used in a cloud
requested by the same user, or used in a personal cloud requested
by other trusted users. In some cases, the device can, instead or
in addition, identify its owner, which may be known from a setup
operation of the device. The librarian can maintain a current
directory of all connected devices and their addresses so as to
respond to addressing quarries.
[0056] The librarian can identify the particular users trusted by
the owner of a new device using any suitable approach. In some
embodiments, the new device may know, as part of an initial
installation or ongoing operation of an application used to connect
to the personal cloud, the other users trusted by the owner. In
some cases, the device can receive a listing of trusted users from
other devices belonging to the owner (e.g., other devices on a same
personal area network, or other devices having same identification
or authorization credentials). The device can then provide the
listing of trusted users to the librarian, which can in turn
retrieve a listing of devices owned by the trusted users, and
provide addressing information for those devices. In some
embodiments, the new device can, instead or in addition, not know
the particular users trusted by the owner of the new device.
Instead, the device can rely on the librarian to provide a web of
trust in which the trust relationships are stored and maintained.
In particular, each time a user elects to trust another user, or
cease trusting another user (e.g., by providing a trust
instruction, for example by using display 300 as shown in FIG. 3),
the device receiving the trust information can provide a revised
listing of trusted users to the librarian. Using the received
listing, the librarian can update and revise its collection of
trust information. When the new device identifies itself and its
owner to the librarian, the librarian can then retrieve the listing
of users trusted by the owner of the device, identify addressing
information for the devices owned by the trusted users, and provide
the addressing information to the device. In some embodiments, the
librarian can, instead or in addition, identify one or more
particular personal clouds in need of additional resources, and
provide addressing information for the devices of those personal
clouds.
[0057] FIG. 5 is a flowchart of an illustrative process for
providing addressing information to a new device contacting a
librarian in accordance with one embodiment of the invention.
Process 500 can begin at step 502. At step 504, a device that was
previously unconnected can be connected to a communications
network. For example, a newly added device can be connected to a
communications network. As another example, a device connected to a
communications network, but that was never used in a personal cloud
can be made available for a personal cloud. As still another
example, a device previously connected to a communications network
and used in a personal cloud can be reconnected. Once connected to
the communications network, the device can contact a librarian. At
step 506, the librarian can determine whether the device is known.
For example, the librarian can determine whether a device having
the same owner and same properties has previously contacted the
librarian. As another example, the librarian can determine whether
a device with the same identifying information (e.g., a serial
number or static address) has previously contacted the librarian.
If the librarian determines that the device is known, process 500
can move to step 508. At step 508, the librarian can retrieve the
owner of the device from stored records. Process 500 can then move
to step 512, described below.
[0058] If, at step 506, the librarian instead determines that the
device is not known to the librarian, process 500 can move to step
510. At step 510, the librarian can identify the owner of the
device. For example, the librarian can retrieve ownership
information from a communication of the device. In some
embodiments, steps 506 and 508 can be skipped, and process 500 can
automatically move from step 504 to step 510. At step 512, the
librarian can retrieve a list of users trusted by the owner of the
device. For example, the librarian can retrieve web of trust
information associated with the owner, and identify other users
trusted by the owner. At step 514, the librarian can identify
personal clouds created for the owner, or personal clouds created
for users trusted by the owner that require additional resources.
For example, the librarian can identify a particular personal cloud
associated with the owner, where the personal cloud prompted the
owner to add addition resources to the personal cloud. In some
embodiments, the librarian can instead not identify particular
personal clouds requiring additional resources, but simply direct
the device to be included in a personal cloud associated with the
owner of the device. At step 516, the librarian can retrieve
addressing information of devices in the identified personal cloud.
In particular, the librarian can retrieve records from devices
checking in with the librarian, where the devices checking in are
associated with the trusted users or with the owner. Devices can
check in regularly with the librarian so that the librarian can
update mapping information that enables devices used in personal
clouds to communicate with one another. At step 518, the librarian
can provide the retrieved addressing information to the device.
Using the addressing information, the device can communicate with
the devices forming the personal cloud, and become integrated in
the personal cloud. For example, the electronic device can
implement one or more services used by the personal cloud. Process
500 can then end at step 520.
[0059] Once a newly available device has received addressing
information for particular nodes of a personal cloud, the device
can communicate with the nodes to join the personal cloud and
provide an appropriate service (e.g., a catalog service, or a data
service). The device can determine which service or services to
provide using any suitable approach. In some embodiments, the
device can identify the particular node providing the coordinating
service, and request instructions from the coordinating service. In
response to receiving an indication from the device, the
coordinating service can review the services or operations provided
by the existing nodes of the personal cloud, and determine which
services need to be implemented by the new device (e.g., by
comparing the identified existing services to a list of expected
services). For example, the coordinating service can determine
whether a service required for the proper operation of the personal
cloud is missing, or is provided by too few nodes (e.g., whether a
coordinating service needs to be provided by a node located
geographically closer to an end user making use of the service). As
another example, the coordinating service can determine whether
data storage is required for storing new data on the cloud (e.g.,
whether a data service should implemented). As still another
example, the coordinating service can determine whether a service
should be shadowed to back up the cloud and to ensure seamless
cloud operation. Based on the determination, the coordinating
service can direct the new device to operate a particular service
(e.g., to store particular data or perform another operation). The
device can retrieve instructions (e.g., software, code, or input
values) for operating the service from any suitable source
including, for example, from an application loaded onto the device
by a user, from the librarian, from the coordinating service, from
other devices, from templates pre-installed in the device's
software image, or a combination of these.
[0060] In some embodiments, the device newly added to the personal
cloud can, instead or in addition, monitor the services provided by
different nodes of the personal cloud, review the resources
remaining on each of the nodes, and select a particular service or
data storage activity based on the monitored use. In particular,
the newly added device can determine whether potential problems
exist so that the proper selection of a service can be made. For
example, the device can determine that no device is shadowing an
existing service operating on a particular node. As another
example, the device can determine that existing nodes of the
personal cloud have insufficient storage capabilities to store data
provided by a user. As still another example, the device can
determine that the distribution of services among the topology of
the personal cloud nodes could be improved by implementing one or
more particular services on the device. The device can then
implement the selected service or activity.
[0061] FIG. 6 is a flowchart of an illustrative process for
configuring a device added to a personal cloud in accordance with
one embodiment of the invention. Process 600 can begin at step 602.
At step 604, a device can establish a communications path with at
least one node of a personal cloud, where each node is formed by a
device. For example, the device can receive at least one address
from a librarian, and establish a communications path with a device
at the received address. At step 606, the device can determine
whether a coordinating service was found on one of the nodes with
which a communications path was established. For example, the
device can determine whether one of nodes operates an active
coordinating service. As another example, the device can determine
whether one of the nodes is shadowing an active coordinating
service. If the device determines that a coordinating service is
found, process 600 can move to step 608.
[0062] At step 608, the device can receive an instruction from the
coordinating service defining a service or operation to perform
form the personal cloud. For example, the coordinating service can
identify a particular service that is underprovided by the personal
cloud. At step 610, the device can implement the service or
operation identified in the received instruction. For example, the
device can implement a service retrieved from a locally stored
application, from the coordinating service, or from the librarian.
Process 600 can then end at step 612.
[0063] If, at step 606, the device instead determines that no
coordinating service is found, process 600 can move to step 614. At
step 614, the device can identify the services implemented on each
node of the cloud. For example, the device can identify the
services and operations implemented by the nodes with which
communications paths have been established. In some cases, the
device can, instead or in addition, retrieve, from the nodes with
which the device communicates, address information for other nodes
of the personal cloud. The device can then establish additional
communications paths with those nodes to more completely map the
services and operations provided by nodes of the cloud. At step
616, the device can identify a particular service or operation to
implement in light of the services and operations implemented in
the other nodes of the personal cloud. For example, the device can
implement a coordinating service if none was implemented. As
another example, the device can implement a different service
(e.g., a data storage or catalog service) if no coordinating
service is necessary, or if there is a coordinating service that is
unavailable to provide a specific instruction to the device (e.g.,
as in step 608). At step 618, the device can implement the
identified service or operation. Process 600 can then end at step
612.
[0064] In some cases, a particular device can be used in several
personal clouds. For example, a device can be used by a personal
cloud of the device owner, as well as in one or more personal
clouds of users trusted by the device owner. A newly connected
device can be used in any of the personal clouds. For example, a
librarian can initially determine whether a personal cloud
associated with the owner of a newly connected device requires the
device. If so, the librarian can direct the device to be included
the owner's personal cloud. Alternatively, if the librarian
determines that a personal cloud of one of the owner's trusted
users requires the resources of the device, the librarian can
direct the device to establish a communications path with the
trusted user's personal cloud.
[0065] In some embodiments, a device that serves as a node in
several personal clouds can, instead or in addition, direct the
newly connected device to connect to a particular one of the
several personal clouds. For example, the newly connected device
can establish a communications path with the device in the context
of a first personal cloud (e.g., a personal cloud associated with
the owner of the newly connected device). The device can receive
the indication that the newly connected device is available, and
determine whether the personal cloud associated with the owner of
the newly connected device needs the newly connected device's
resources. If the device determines that the owner's personal cloud
does not require additional resources, the device can determine
whether another personal cloud for which the device serves as a
node requires additional resources. If another personal cloud
requires the resources, the device can direct the newly connected
device to integrate with the other personal cloud, provided it is
associated with a user trusted by the owner of the newly connected
device.
[0066] During use, the particular devices available to serve as
nodes for a personal cloud can change. In particular, because nodes
can be constructed from individual electronic devices used by users
(e.g., as opposed to mass storage components), users may wish to
limit or restrict the resources provided to a personal cloud by a
particular network. For example, a user may disconnect a mobile
device from the network while travelling. As another example, a
user may limit access to processing resources during times when the
user makes use of the device. As still another example, the user
may reclaim storage resources to conduct a project (e.g., a media
processing project), and later return some or all of the resources
to the personal cloud. In some cases, however, the personal cloud
can prevent a user from removing a device from the cloud because
the cloud requires data or services provided by the device. This
may lead to user frustration, as the user may feel that the user
cannot control the use of the user's own device.
[0067] FIG. 7A is a schematic view of an illustrative personal
cloud from which a node can be removed in accordance with one
embodiment of the invention. System 700 can include personal cloud
710 within communications network 705. Personal cloud 710 can be
constructed from any suitable number of nodes, each formed by
distinct electronic devices. For example, personal cloud 710 can be
constructed from nodes 712, 714 and 716. Each node can perform an
operation or provide a service for the proper functioning of the
personal cloud. For example, node 712 can be used to store data D
(e.g., as part of a data service), node 714 can be used to store
data D and operate service M (requiring corresponding metadata),
and node 716 can be used to operate service M. The particular data
and services provided by each of the nodes can be the same or
different. For example, a service of a first node can shadow the
operation of a service of a second mode, or data stored on a first
node can complement and back up data stored on a second node.
[0068] In some cases, the owner of a device may wish to remove the
device from the personal network. For example, the owner of the
device that defines node 714 may wish to retrieve the resources of
the device. FIG. 7B is a schematic view of an illustrative personal
cloud in which a node operation and service is migrated to allow
the removal of the node in accordance with one embodiment of the
invention. System 750 can include personal cloud 760 within
communications network 755, having some or all of the features of
system 700 (FIG. 7A) described above. Personal cloud 760 can
initially be constructed from nodes 762, 764 and 766. The nodes can
perform any suitable operation or provide any suitable service for
the personal cloud. When a user wishes to remove a device providing
a node from the personal cloud, the operation and services of the
personal cloud may need to be migrated to another device forming a
different node. For example, if a user wishes to remove the device
corresponding to node 764, the particular data D and service M may
need to be provided by other nodes for the personal cloud to
continue to operate properly.
[0069] Personal cloud 760 can use any suitable approach to transfer
the operations of a particular node to other nodes. In one
implementation, a user can provide an instruction to node 764 to
remove itself from the personal cloud. In response to receiving the
instruction, node 764 can identify other available nodes of the
personal cloud, and transfer services to the other nodes. For
example, node 764 can provide an instruction for another node to
activate a particular service, and can provide up to date metadata
necessary for the proper operation of the service. As another
example, node 764 can transfer data stored as part of a data
service, or metadata used by a service, to a different node. In the
particular example of system 750, node 764 can transfer data (e.g.,
a data service) to node 762 (transfer 770) and metadata (e.g., for
a catalog service) or a service as well as data (e.g., a data
service) to node 766 (transfer 772), such that node 766 provides
both a service and stores data after the transfer (instead of
providing only a service, like node 716, FIG. 7A). Node 764 can
prevent the user from disconnecting the device from the personal
cloud until some or all of the data or service has been
transferred, or ask the user for confirmation to remove the device
if a transfer is not yet complete. This approach, however, may
prevent a user from fully using the device of node 764 until data
has been transferred in the personal cloud, which may take
substantial time.
[0070] In some cases, the data and services provided by the
personal cloud can be redundantly stored in other nodes. For
example, data stored on node 764 may be backed up by data stored on
node 762, and metadata corresponding to a service provided by node
764 can be shadowed or mirrored by node 766. In response to
receiving an instruction to remove node 764 from the personal
cloud, node 764 can provide instruction 770 to node 762 directing
the node to become an active source for all of the data previously
stored by node 764 (e.g., node 762 implements an active data
service, or node 762 is notified that node 764 will no longer be
backing up the data of node 762). Similarly, node 764 can provide
instruction 772 directing node 766 to provide the service
previously provided by node 764 (e.g., direct node 766 to activate
a previously shadowing service, or notify node 766 that node 764 is
no longer shadowing node 766). In some cases, instruction 772 can,
instead or in addition, include data for node 766 to store. In some
embodiments, node 764 can provide an indication to a coordinating
service that its resources are being removed. In some cases, node
764 can indicate to the coordinating service which other nodes are
taking over for the services provided by node 764. By redundantly
storing services and data, a user can seamlessly remove a device
from a personal cloud without affecting the operation of either the
device or the personal cloud.
[0071] The personal cloud can determine how to transfer services or
data used by a service using any suitable approach. In some
embodiments, the individual node being removed can communicate with
other nodes of the personal cloud to determine how to transfer a
service. For example, the individual node can identify a device
shadowing the service, or a device with sufficient resources to
implement the service. In some embodiments, the individual node
can, instead or in addition, indicate to a coordinating service
that it is being removed. The coordinating service can then
identify another node of the personal cloud for the service. In
some cases, a remaining node (e.g., a node implementing a
coordinating service) can detect that the individual node is no
longer available by attempting and failing to establish a
communications path with the individual node, and can reassign
personal cloud services in response to the detected absence.
[0072] A personal cloud can dynamically migrate data and services
between different nodes of a personal cloud for any suitable
reason. For example, a personal cloud can migrate node operations
based on a user request to remove a device providing a node, as
described above. As another example, a personal cloud can migrate
operations of a node when a node fails. The cloud can then operate
in a manner similar to when a device is removed, where the
particular data and services provided by the failed node can be
migrated to other, healthy nodes.
[0073] In some embodiments, a personal cloud can migrate services
to take advantage of additional resources available in one or more
nodes. For example, a personal cloud can migrate services to nodes
having additional resources to back up stored data or metadata
corresponding to an active service. The nodes having additional
resources can dynamically change the data or metadata stored to
match the data or metadata of an active node, such that an active
service can be shadowed in real time or in near-real time, thus
ensuring a seamless transition of services between nodes should the
active node fail or be removed. Similarly, devices added to grow or
increase the capacity of the personal cloud can be used to store
additional data, or to back up existing data or shadow a
service.
[0074] In some embodiments, a personal cloud can dynamically
migrate services to improve the performance of the personal cloud.
For example, a personal cloud can selectively activate the same
service provided by different nodes based on the geographic
proximity of a node to an end user or connection speed between
nodes and an end user. The nodes with inactive services can then
mirror or shadow the active node until the geographic proximity of
the user changes. In particular, the geographic disposition of
users using a personal cloud can change over time (e.g., based on
time zones, where users in Japan and users on the U.S. east coast
do not use the personal cloud at the same time). As another
example, a personal cloud can dynamically migrate services based on
an expected or historical use of a service. In particular, if
historically a particular power user makes use of the personal
cloud at a particular day and time, services, data or both can be
migrated to cater to the power user.
[0075] In some embodiments, a personal cloud can migrate services
and data based on performance or energy considerations of
individual nodes. For example, nodes having low power consumption
can be activated and used more intensively than less power
efficient nodes. The less power efficient nodes can be used for
less power intense operations (e.g., data storage), or activated in
response to detecting larger loads on the personal cloud. As
another example, the personal cloud can monitor device performance
over time. For example, the personal cloud can determine the
processor type, storage type and read speed (e.g., HDD or SDD),
connection type (e.g., wired or wireless, and network type),
connection speed, or other properties of each device. The personal
cloud can then select the particular devices having more performing
components for active nodes in the personal cloud (e.g., nodes
providing services with which a user can interact).
[0076] In some embodiments, a personal cloud can migrate services
and data based on known or expected availability of individual
devices. In particular, the personal cloud can monitor device
availability over time, and establish a probability map of device
availability on different days or at different times. For example,
a personal cloud can detect that a device corresponding to an
external storage device is almost always available, but has limited
processing abilities, while a device corresponding to a desktop
computer is available during weekday work hours, but not over the
weekend. Similarly, a personal cloud can detect that a device
corresponding to a notebook computer is generally available, but
occasionally disconnects at times corresponding to meetings and to
transit between locations. Based on the determined historic
availability, the personal cloud can dynamically migrate services
and data between the devices to ensure that the services and data
are provided by available devices.
[0077] FIG. 8 is a flowchart of an illustrative process for
seamlessly migrating services between nodes of a personal cloud in
accordance with one embodiment of the invention. Process 800 can
begin at step 802. At step 804, the personal cloud can determine
whether to migrate a service from a node. For example, the personal
cloud can determine whether a reason or criteria for migrating a
service has been met (e.g., failure, request to remove a device,
performance, replication or backup, energy use, or growth). If the
personal cloud determines that no service is to be migrated,
process 800 can return to step 804. If, at step 804, the personal
cloud instead determines that a service is to be migrated, process
800 can move to step 806. At step 806, the personal cloud can
identify a particular service to migrate from the node. For
example, the personal cloud can identify a catalog service, data
service, healing or repair service, backup service, coordinating
service, or other service provided to the personal cloud. In some
embodiments, data used by a particular service (e.g., metadata or
store data) can be migrated.
[0078] At step 808, the personal cloud can identify at least one
other node to which the identified service can be migrated. For
example, the personal cloud can identify a node having available
resources (e.g., storage or processing) to receive the migrated
service. As another example, the personal cloud can identify
another node that has an active service or is shadowing the
service. At step 810, the personal cloud can determine whether the
service is active on the other node. For example, the personal
cloud can determine whether the service is a shadow of an active
service on the other node identified at step 808. If the personal
cloud determines that the service is active on another node,
process 800 can move to step 812. At step 812, the personal cloud
(e.g., the node) can indicate to the other node that the service is
no longer shadowed by the node from which the service is migrated.
This can ensure that the other node identifies or requests that a
different node shadow the service. Process 800 can then move to
step 816.
[0079] If, at step 810, the personal cloud instead determines that
the service is not active on the other node, process 800 can move
to step 814. At step 814, the personal cloud can direct the other
node to activate the service. For example, the node can instruct
the other node identified at step 808 to implement the service. At
step 816, the node can cease operation of the identified service.
For example, the node can stop receiving and sending data that
corresponds to the service to other nodes of the personal cloud. As
another example, the node can release or remove stored data that
corresponds to the identified service. At step 818, the personal
cloud can determine whether all services of the node have been
migrated. For example, the personal cloud can determine whether
several services need to be migrated. If the personal cloud
determines additional services need to be migrated, process 800 can
return to step 806 and identify another service. If, at step 818,
the personal cloud instead determines that no additional services
need to be migrated, process 800 can move to step 820 and end.
[0080] Although many of the embodiments of the present invention
are described herein with respect to personal computing devices, it
should be understood that the present invention is not limited to
personal computing applications, but is generally applicable to
other applications.
[0081] The invention is preferably implemented by software, but can
also be implemented in hardware or a combination of hardware and
software. The invention can also be embodied as computer readable
code on a computer readable medium. The computer readable medium
can be any data storage device that can store data that can
thereafter be read by a computer system. Examples of the computer
readable medium include read-only memory, random-access memory,
CD-ROMs, DVDs, magnetic tape, and optical data storage devices. The
computer readable medium can also be distributed over
network-coupled computer systems so that the computer readable code
can be stored and executed in a distributed fashion.
[0082] Insubstantial changes from the claimed subject matter as
viewed by a person with ordinary skill in the art, now known or
later devised, are expressly contemplated as being equivalently
within the scope of the claims.
[0083] The above described embodiments of the invention are
presented for purposes of illustration and not of limitation.
* * * * *