单元剧是什么意思| 葡萄籽有什么功效和作用| 什么动物可以贴在墙上| 梦见吃红薯是什么意思| 肝不好吃什么中成药| 为什么海螺里有大海的声音| 片状低回声区什么意思| 肝火旺盛吃什么药效果最好| 粉色裤子配什么上衣好看| 黄精是什么东西| 污蔑是什么意思| 相向而行是什么意思| lcp是什么意思| 小孩眼屎多是什么原因引起的| 康熙是乾隆的什么人| 阑珊处是什么意思| 圆周率是什么| 甲亢食疗吃什么| 吃什么补气养血最快| 开门是什么意思| 女人腰上有痣代表什么| 什么是职业病| 悱恻是什么意思| 恭候是什么意思| 三虫念什么| 头油是什么原因引起的| 薄熙来为什么被抓| 刺激什么意思| 封建迷信是什么| 逸五行属什么| 东倒西歪是什么意思| 小鸭子吃什么| 腺样体挂什么科| 两个a型血的人生的孩子什么血型| ctc是什么意思| 锦鲤可以和什么鱼混养| 地球为什么是圆的| 肾钙化灶是什么意思| 胎盘成熟度2级是什么意思| 曙光什么意思| 结节性红斑吃什么药| 脾虚吃什么药效果最好| 怀孕什么不能吃| 什么病不能吃绿豆| 世界上最多笔画的字是什么字| 狗消化不良吃什么药| EXP什么意思| 孕早期胎停有什么症状或征兆吗| 脑鸣挂什么科| 10月11号是什么星座| 丝绦是什么意思| 宫缩是什么感觉| 88年出生属什么生肖| 经常发烧是什么原因| 虎的偏旁是什么| 米黄是什么颜色| 什么为力| 沉疴是什么意思| 石斛是什么| 馋肉是身体里缺什么| 什么三什么四| 线下培训是什么意思| 凯字五行属什么| 宋朝后面是什么朝代| 智齿拔了有什么影响| 吃什么都是苦的是怎么回事| 脖子后面正中间有痣代表什么| 什么是diy| 什么好像什么| 增生期子宫内膜是什么意思| 兔肉和什么相克| 8月19号是什么星座| 舌头边缘有齿痕是什么原因| 凌晨两点多是什么时辰| 夫妻分床睡意味着什么| 肛门裂口是用什么药膏| o型血为什么招蚊子| 辣椒什么时候传入中国| 蛇怕什么家禽| 鱼腥草有什么功效| 什么是食品安全| 检查怀孕要做什么检查| 头发秃一块是什么原因| 06属什么生肖| 撰文是什么意思| 飞蚊症吃什么药| 多五行属性是什么| 今年85岁属什么生肖| 什么叫白癜风| 年上年下是什么意思| 轶字五行属什么| 扁桃体结石有什么危害| 纹银是什么意思| 夏天种什么水果| 下午三点多是什么时辰| 什么时间段买机票最便宜| 湾仔码头水饺为什么贵| 6月30号什么星座| exp是什么日期| 独一无二是什么生肖| 什么的莲蓬| 熊猫尾巴什么颜色| 天明是什么意思| 科举制什么时候废除| hp阳性是什么意思| 巴扎是什么意思| 什么是川崎病是什么病| 10周年结婚是什么婚| pr医学上什么意思| 戴银镯子对身体有什么好处| 高硼硅玻璃是什么材质| 孕妇吃什么鱼对胎儿好| 右肺小结节是什么意思| 湿热吃什么水果| 喉咙有痰咳嗽是什么原因| 量贩式ktv是什么意思| 前白蛋白低是什么原因| faye是什么意思| 打玻尿酸有什么副作用吗| 天天喝白酒对身体有什么危害| 十二指肠霜斑样溃疡是什么意思| 失落是什么意思| 经常喝蜂蜜水有什么好处和坏处| 鬼打墙什么意思| 黑豆熟地水功效是什么| 多动症看什么科室| 排骨炖什么汤好喝| 奇点是什么意思| 历经是什么意思| 乳酪是什么东西| 领导喜欢什么样的员工| 属猪男和什么属相最配| 超敏c反应蛋白高说明什么| 师傅和师父有什么区别| 巴宝莉是什么牌子| 咳嗽白痰吃什么药| 为什么有的女人欲太强| 为什么牛肝便宜没人吃| 股长是什么级别| 血液病是什么| 数字7五行属什么| 孕妇应该吃什么蔬菜| 婧五行属什么| 中午吃什么饭家常菜| 元武道是什么| 男性内分泌科检查什么| 昆仑玉是什么玉| 长期尿黄可能是什么病| 尿蛋白是什么症状| 罡什么意思| 冒虚汗是什么原因| 香港特首是什么级别| 无名指戴戒指什么意思| 胃息肉是什么症状| 贫血要做什么检查| 近视是什么意思| 做糖耐前一天需要注意什么| 空调吹感冒吃什么药| 男人都喜欢什么样的女人| 制服是什么意思| 宽慰是什么意思| 骨裂吃什么药| 桐字五行属什么| 打氨基酸点滴有什么好处和害处| 软脚虾是什么意思| EV是什么| 痛风吃什么药效果好| 注意是什么意思| 前列腺炎吃什么好| 精力是什么意思| 为什么夏天容易掉头发| 晚上七八点是什么时辰| 博士的学位是什么| 非布司他片是什么药| 长期熬夜有什么危害| dc是什么牌子| 鲁智深的绰号是什么| 心不在焉是什么意思| 什么是时装| 刚刚邹城出什么大事了| 肩周炎有什么症状| 鹌鹑吃什么食物| 屁股出汗多是什么原因| 贫血吃什么最好| 田螺小子是什么意思| 脉络膜裂囊肿是什么病| 面瘫是什么引起的| gamma什么意思| 右眉上方有痣代表什么| 远香近臭什么意思| 芋头什么时候种植最好| 鸡的祖先是什么动物| vr眼镜是什么| 什么的荷花| 波子是什么车| 万事大吉是什么意思| 烧仙草粉是什么做的| 胃疼想吐是什么原因| 什么叫细胞| 什么水果含糖低| 输卵管堵塞什么症状| 什么的梦境| 扳机是什么意思| 尿酸高什么意思| 12月13号是什么星座| 花中隐士是什么花| 利字五行属什么| 痛风什么原因引起| 索性是什么意思| 什么人不能吃蜂蜜| 为什么会得纤维瘤| 什么名字最霸气| 基友什么意思| 疝气吃什么药| pornhub是什么| 9月28是什么星座| 喉咙痒是什么原因引起的| 忘带洗面奶用什么代替| 毛鸡蛋是什么| 血栓弹力图是查什么的| 悠悠岁月什么意思| 为什么会有口腔溃疡| 张飞的武器是什么| 鄙视你是什么意思| 什么是矿泉水| 更年期吃什么| 阿苯达唑片是什么药| 整天犯困没精神想睡觉是什么原因| 什么水没有鱼| 藏红花不能和什么一起吃| white是什么意思颜色| bmi什么意思| 镜检红细胞是什么意思| 口臭喝什么茶效果最好| 风团是什么原因引起的| 年轻人血压高是什么原因引起的| 汗疱疹涂什么药| 眼睛痛吃什么药好得快| 2月16日什么星座| 爱琴海在什么地方| 病毒性肠炎吃什么药| 厄警失痣是什么意思| 赛治是什么药| 眼下长斑是什么原因| 皮肤癣用什么药| 保险公司最怕什么投诉| 躺尸是什么意思| 实证是什么意思| 内分泌是什么| 25周岁属什么生肖| 记忆力不好是什么原因| 多巴胺是什么意思| 不完全性右束支传导阻滞是什么意思| 什么争什么斗| 名侦探柯南什么时候完结| 三个又是什么字| 胳膊肘往外拐是什么意思| 吃避孕药会有什么副作用| 不排卵是什么原因| 10.21是什么星座| 声音嘶哑是什么原因| omega3是什么| 女人眉心有痣代表什么| 婴儿喝什么奶粉| 百度

白岩松撒贝宁等获评"央视十佳" 董卿朱军榜上无名

Metadata-based virtual machine configuration Download PDF

Info

Publication number
US9170834B2
US9170834B2 US13/665,890 US201213665890A US9170834B2 US 9170834 B2 US9170834 B2 US 9170834B2 US 201213665890 A US201213665890 A US 201213665890A US 9170834 B2 US9170834 B2 US 9170834B2
Authority
US
United States
Prior art keywords
metadata
identifier
key
value
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US13/665,890
Other versions
US20140123136A1 (en
Inventor
Joseph S. Beda
Craig I. McLuckie
Christopher L. Eck
Martin R. Gannholm
Evan K. Anderson
Mathew A. Mills
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to US13/665,890 priority Critical patent/US9170834B2/en
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ANDERSON, EVAN K., BEDA, JOSEPH S, III, ECK, CHRISTOPHER L., GANNHOLM, MARTIN R., MCLUCKIE, CRAIG I., MILLS, MATHEW A.
Priority to DE202013012495.4U priority patent/DE202013012495U1/en
Priority to EP13789937.3A priority patent/EP2915042B1/en
Priority to CN201811268712.6A priority patent/CN109375986B/en
Priority to CN201380063264.5A priority patent/CN104823163B/en
Priority to PCT/US2013/067507 priority patent/WO2014070891A2/en
Publication of US20140123136A1 publication Critical patent/US20140123136A1/en
Priority to US14/921,824 priority patent/US9798566B2/en
Publication of US9170834B2 publication Critical patent/US9170834B2/en
Application granted granted Critical
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GOOGLE INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/144Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/156Query results presentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F17/30103
    • G06F17/30112
    • G06F17/30525
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Definitions

  • This specification relates to cloud computing.
  • Cloud computing is network-based computing in which typically large collections of servers housed in data centers or “server farms” provide computational resources and data storage as needed to end users.
  • Some cloud computing services provide access to software applications such as word processors and other commonly used applications to end users who interface with the applications through web browsers or other client-side software. Users' electronic data files are usually stored in the server farm rather than on the users' computing devices. Maintaining software applications and user data on a server farm simplifies management of end user computing devices.
  • Some cloud computing services allow end users to execute software applications in virtual machines.
  • Each metadata key-value pair can be associated with one or more identifiers.
  • the identifiers can include, for example, a project identifier that references a particular project with which one or more virtual machine instances are associated, an instance identifier that references a particular virtual machine instance, or a tag identifier that references a particular tag with which one or more virtual machine instances are associated.
  • Each metadata key-value pair is stored in a metadata collection that is identified by a particular identifier.
  • a metadata key-value pair that is associated with a project identifier P 1 and a tag identifier T 1 is stored in both a first metadata collection that is identified by the project identifier P 1 and a second metadata collection that is identified by the tag identifier T 1 .
  • each virtual machine instance can associate with one or more identifiers, e.g., a project identifier, an instance identifier, or a tag identifier, as described above.
  • Each virtual machine instance can obtain metadata, for example, from a metadata server.
  • a virtual machine instance that is associated with particular identifiers can obtain metadata that is also associated with the particular identifiers.
  • Each virtual machine instance can apply the obtained metadata key-value pairs to configure various settings associated with the respective virtual machine instance.
  • one aspect of the subject matter described in this specification can be embodied in methods that include the actions of associating one or more of a plurality of metadata collections with one or more respective identifiers, wherein each metadata collection includes one or more pairings of metadata attributes with metadata values, and wherein each identifier is one of a project identifier, a tag identifier or an instance identifier; identifying, based on identifier information associated with a virtual machine instance, one or more metadata values to be provided to the virtual machine instance, wherein the identifier information specifies one or more of a project identifier, a tag identifier and an instance identifier, and wherein each identified metadata value belongs to a metadata collection associated with an identifier that is specified in the identifier information; and providing, to the virtual machine instance, the identified one or more metadata values.
  • Other embodiments of this aspect include corresponding systems, apparatus, and computer program products.
  • the method further includes receiving, from the virtual machine instance, a metadata query that includes the identifier information; and identifying the one or more metadata values in response to receipt of the metadata query.
  • the metadata query is communicated using a Hanging GET operation.
  • the method further includes receiving data that includes one or more user specified identifiers and one or more user specified pairings of metadata values with metadata attributes; generating a metadata collection that includes the one or more user-specified pairings; and associating the generated metadata collection with the user specified identifier.
  • the metadata collections include a first metadata collection and a second metadata collection, the first metadata collection being associated with a first identifier and including a pairing of a first metadata attribute with a first metadata value, and the second metadata collection being associated with a second identifier and including a pairing of the first metadata attribute with a second metadata value, the first metadata value being different from the second metadata value.
  • the method further includes providing both the first metadata value and the second metadata value to the virtual machine instance.
  • the method further includes determining that the first metadata collection has a higher priority level than the second metadata collection based on an evaluation of the first identifier and the second identifier; and providing the first metadata value and not the second metadata value to the virtual machine instance.
  • the first identifier is an instance identifier or a tag identifier and the second identifier is a project identifier or the first identifier is an instance identifier and the second identifier is a tag identifier or a project identifier.
  • the method further includes receiving data specifying an identifier and a new pairing of a metadata attribute with a metadata value and updating the metadata collection associated with the identifier specified in the data to include the new pairing.
  • Virtual machine roles can be defined based on their respective tag identifiers. Users can specify metadata key-value pairs and the specified metadata key-value pairs can be used to collectively configure settings for one or more virtual machine instances. Settings and roles of virtual machine instances can be dynamically updated upon updating. Metadata can be associated with project identifiers or tag identifiers to simplify enforcement of common configurations and properties across multiple virtual machine instances. In cases when virtual machine instances do not access metadata associated with an instance identifier, or if access to the metadata is prohibited by policy, the auditing of virtual machine instances that use a standard configuration can be simplified.
  • FIG. 1 is a schematic illustration of an example virtual machine system.
  • FIG. 2 is a swim lane diagram illustrating configuration of a virtual machine instance using pairings of metadata attributes with metadata values.
  • FIG. 3 is a flow diagram of an example process for configuring a virtual machine instance using pairings of metadata attributes with metadata values.
  • FIG. 4 is a schematic diagram of an example host machine.
  • FIG. 1 is a schematic illustration of an example virtual machine system 100 .
  • the system 100 includes one or more host machines such as, for example, host machine 102 and host machine 104 .
  • a host machine is one or more data processing apparatus such as rack mounted servers or other computing devices.
  • the data processing apparatus can be in different physical locations and can have different capabilities and computer architectures.
  • Host machines can communicate with each other through an internal data communications network 116 .
  • the internal network can include one or more wired, e.g., Ethernet, or wireless, e.g., WI-FI, networks, for example.
  • the internal network 116 is an intranet.
  • Host machines can also communicate with devices on external networks, such as the Internet 122 , through one or more gateways 120 which are data processing apparatus responsible for routing data communication traffic between the internal network 116 and the external network 122 . Other types of external networks are possible.
  • Each host machine 102 , 104 executes a host operating system 106 , 108 .
  • a host operating system 106 , 108 manages host machine resources.
  • host operating systems 106 , 108 run software, e.g. a virtual machine monitor (“VMM”) or a hypervisor, that virtualizes the underlying host machine hardware and manages concurrent execution of one or more virtual machine (“VMs”) instances.
  • VMM virtual machine monitor
  • VMs virtual machine
  • the host operating system 106 manages two VM instances, VM 110 and VM 112
  • a different host operating system 108 manages a single VM 114 .
  • VM instances can be migrated from one host machine to another host machine.
  • a single VM instance can be managed by multiple host machines.
  • a host machine can, in general, manage multiple virtual machines, however, the quantity may be limited based on physical resources of the host machine.
  • Each VM instance provides an emulation of a physical hardware system which may, but need not, be based on the host machine hardware architecture.
  • the simulated version of the hardware is referred to as virtual hardware, e.g., virtual hardware 110 a , 112 a , and 114 a .
  • Software that is executed by the virtual hardware is referred to as guest software.
  • guest software cannot determine if it is being executed by virtual hardware or by a physical host machine. If guest software executing in a VM instance, or the VM instance itself, is compromised, malfunctions, or aborts, other VM instances executing on the host machine may not be affected.
  • a host machine's microprocessor(s) can include processor-level mechanisms to enable virtual hardware to execute software applications efficiently by allowing guest software instructions to be executed directly on the host machine's microprocessor without requiring code-rewriting, recompilation, or instruction emulation.
  • Each VM instance e.g., VMs 110 , 112 , and 114
  • VMs 110 , 112 , and 114 is allocated a set of virtual memory pages from the virtual memory of the underlying host operating system and is allocated virtual disk blocks from one or more virtual disk drives for use by the guest software executing on the VM instance.
  • host operating 106 allocates memory pages and disk blocks to VM 110 and VM 112
  • host operating system 108 does the same for VM 114 .
  • a given VM instance cannot access the virtual memory pages assigned to other VMs.
  • VM 110 cannot access memory pages that have been assigned to VM 112 .
  • a virtual disk drive can be persisted across VM instance restarts.
  • Virtual disk blocks are allocated on physical disk drives coupled to host machines or available over the internal network 116 , for example.
  • VM instances can be allocated network addresses through which their respective guest software can communicate with other processes reachable through the internal network 116 or the Internet 122 .
  • guest software executing on VM 110 can communicate with guest software executing on VM 112 or VM 114 .
  • each VM instance is allocated one or more unique Internet Protocol (IP) version 4 or version 6 addresses. Other address schemes are possible.
  • IP Internet Protocol
  • the VM instance IP addresses are addressable on the internal network 116 and, in some implementations, are addressable on the Internet 122 if the addresses are advertised using a suitable routing protocol, for instance.
  • a VM instance's guest software can include a guest operating system, e.g., guest operating systems 110 b , 112 b , and 114 b , which is software that controls the execution of respective guest software applications, e.g., guest applications 110 c , 112 c , and 114 c , within the VM instance and provides services to those applications.
  • a guest operating system could be a variant of the UNIX operating system.
  • Other operating systems, e.g., Microsoft Windows, and different versions of these operating systems can be used as the guest operating system.
  • Each VM instance can execute the same guest operating system or different guest operating systems.
  • a VM instance does not require a guest operating system in order to execute guest software applications.
  • a guest operating system's access to resources such as networks and virtual disk storage is controlled by the underlying host operating system.
  • the guest application 110 c or guest operating system 110 b attempts to perform an input/output operation on a virtual disk, initiate network communication, or perform a privileged operation, for example, the virtual hardware 110 a is interrupted so that the host operating system 106 can perform the action on behalf of the virtual machine 110 .
  • the host operating system 106 can perform these actions with a process that executes in kernel process space 106 b , user process space 106 a , or both.
  • the kernel process space 106 b is virtual memory reserved for the host operating system 106 's kernel 106 d which can include kernel extensions and device drivers, for instance.
  • the kernel process space has elevated privileges, sometimes referred to as “supervisor mode”; that is, the kernel 106 d can perform certain privileged operations that are off limits to processes running in the user process space 106 a . Examples of privileged operations include access to different address spaces, access to special functional processor units in the host machine such as memory management units, and so on.
  • the user process space 106 a is a separate portion of virtual memory reserved for user mode processes. User mode processes cannot perform privileged operations directly.
  • a portion of VM instance network communication functionality is implemented in a communication process, e.g., communication process 106 c .
  • the communication process executes in the user process space, e.g., user process space 106 a , of a host operating system, e.g., host operating system 106 .
  • the communication process can execute in the kernel process space, e.g., kernel process space 106 d of the host operating system.
  • some portion of the communication process executes in the user process space and another portion executes in the kernel process space.
  • the system 100 includes a metadata server 130 that manages and provides access to metadata for VM instances in the system 100 .
  • the metadata server 130 can be implemented as one or more computer programs installed on one or more computers in system 100 .
  • the metadata server 130 can, for example, be installed on a particular host machine.
  • the metadata server 130 can also be implemented as a VM instance in the system 100 .
  • the metadata server 130 is located in the same datacenter as VM instances that the metadata server 130 services, although the metadata server 130 can also be located elsewhere and be, for example, accessible over the Internet.
  • Metadata can be written to and read from the metadata server 130 using any appropriate network communications protocol.
  • the read and write commands are implemented using conventional hypertext transfer protocol (HTTP) “GET” and “PUT” commands.
  • HTTP hypertext transfer protocol
  • users can provide custom metadata to the metadata server 130 using an Application Programming Interface (API).
  • API Application Programming Interface
  • Each element of metadata is a key-value pair.
  • the key, or attribute uniquely identifies a type of metadata.
  • the value can be one or more pieces of data, for example, text strings.
  • a user can specify a metadata key “hostname” and a corresponding metadata value “myinst.myproject.mydomain.internal.” Users can also associate each key-value pair with one or more respective identifiers.
  • the one or more identifiers include a project identifier, an instance identifier, or a tag identifier.
  • a project identifier can reference a particular project that was created by a user.
  • An instance identifier can reference a particular virtual machine instance.
  • a tag identifier can reference a particular tag, e.g., “front-end webserver” or “sql server” with which one or more virtual machines instances are associated.
  • users can specify custom identifiers that can be associated with key-value pairs.
  • a user can specify a machine-type identifier that can be associated with metadata key “hostname.”
  • access to metadata that is associated with one or more identifiers is restricted to VM instances that are also associated with the one or more identifiers.
  • a VM instance that is associated with a project identifier P 1 can access metadata associated with the project identifier P 1 but not metadata associated with a project identifier P 2 .
  • similar tag identifiers can be associated with different project identifiers.
  • a first tag identifier “front-end webserver” can be associated with a project identifier P 1 while a second tag identifier “front-end webserver” can be associated with a project identifier P 2 .
  • metadata associated with the first tag identifier “front-end webserver” in the project P 1 has no relation to metadata associated with the second tag identifier “front-end webserver” in the project P 2 .
  • VM instances that are associated with the project identifier P 1 cannot access metadata that is associated with the project identifier P 2 .
  • VM instances that are associated with the project identifier P 2 cannot access metadata that is associated with the project identifier P 1 . This is a useful property for a multi-tenant system, as it ensures metadata remains confidential and is not visible to VM instances that are not associated with the proper identifiers.
  • the metadata server 130 is configured to receive user specified key-value pairs and their corresponding identifiers. In some implementations, the metadata server 130 categorizes and stores received key-value pairs in one or more metadata collections based on their respective identifiers. For example, a key-value pair that is associated with a project identifier P 1 and a tag identifier T 1 can be stored in a first metadata collection that corresponds to the project identifier P 1 and a second metadata collection that corresponds to the tag identifier T 1 .
  • the metadata server 130 is also configured to receive queries from VM instances requesting metadata. Users can customize the configuration of VM instances running in the system 100 by associating the VM instances with one or more respective identifiers, e.g., a project identifier, an instance identifier, or a tag identifier, as described above. For example, a user can specify that a VM instance be associated with a project identifier P 1 , an instance identifier M 1 , and tag identifiers “sql server” and “front-end webserver.” In some implementations, each VM instance can be associated with only one project identifier.
  • the VM instance can query the metadata server 130 to obtain metadata that is associated with the same identifiers that are associated with the VM instance.
  • a VM instance associated with a project identifier P 1 , an instance identifier M 1 , and tag identifiers “sql server” and “front-end webserver” can query the metadata server 130 to obtain metadata that is also associated with the project identifier P 1 , the instance identifier M 1 , and the tag identifiers “sql server” and “front-end webserver.”
  • the metadata server 130 can identify metadata collections that respectively correspond to the project identifier P 1 , the instance identifier M 1 , and the tag identifiers “sql server” and “front-end webserver.”
  • the metadata server 130 can provide metadata that was categorized in the identified metadata collections to the VM instance.
  • the VM instance can apply the received metadata to configure various settings associated with the VM instance.
  • a user can associate a first metadata key “sshKeys” and corresponding value, e.g., “joe:ssh-rsa ? SSH key>,” that describes user accounts and corresponding public SSH keys, with a project identifier P 1 .
  • the user can also associate a second metadata key “allowedHosts” and corresponding value, e.g., “192.0.2.24/30,” that describes Internet Protocol (IP) addresses that are allowed to connect to a VM instance, with the project identifier P 1 .
  • IP Internet Protocol
  • the user can then associate a third metadata key “startupScript” and corresponding value, e.g., a shell script that configures and starts a webserver, with a tag identifier “web.”
  • a fourth metadata key “allowedHosts” and corresponding value e.g., “0.0.0.0/0” that describes IP addresses that are allowed to connect to a VM instance, with an instance identifier “shell.”
  • users can specify particular identifiers to be associated with one or more VM instances using an Application Programming Interface (API).
  • API Application Programming Interface
  • a system component in each VM instance is configured to obtain the user specified identifiers, and to associate the identifiers with the respective VM instance.
  • a user can initialize a VM instance and can associate the VM instance with a project identifier P 1 and an instance identifier “shell.”
  • the VM instance can query the metadata server 130 to obtain metadata that is associated with the project identifier P 1 and the instance identifier “shell.”
  • the metadata server 130 can provide the VM instance with metadata associated with the project identifier P 1 , e.g., the first and second metadata key-value pairs, and metadata associated with the instance identifier “shell,” e.g., the fourth metadata key-value pair.
  • the metadata server 130 provides the VM instance with respective Uniform Resource Locator (URL) paths that reference the requested metadata.
  • URL Uniform Resource Locator
  • the metadata server 130 can provide a first URL, e.g., “/v1beta/computemetadata/project/attributes/sshKeys,” that references the “sshKeys” key-value pair associated with the project identifier P 1 , a second URL, e.g., “/v1beta/computemetadata/project/attributes/allowedHosts,” that references the “allowedHosts” key-value pair associated with the project identifier P 1 , and a third URL, e.g., “/v1beta/computemetadata/instance/attributes/allowedHosts,” that references the “allowedHosts” key-value pair associated with the instance identifier “shell.”
  • the VM instance can then process the received metadata to configure the VM instance.
  • the metadata server 130 would also provide the VM instance with a fourth URL, e.g., “/v1beta/computemetadata/tags/web/attributes/startupScript,” that references the “startupScript” key-value pair associated with the tag identifier “web.”
  • a metadata conflict may arise when different values are specified for a metadata key that is associated with more than one metadata collection, e.g., with more than one identifier, and when a VM instance is associated with those identifiers.
  • the second metadata key “allowedHosts,” which is associated with the project identifier P 1 has a corresponding value “192.0.2.24/30”
  • the fourth metadata key “allowedHosts,” which is associated with the instance identifier “shell” has a corresponding value “0.0.0.0/0.”
  • the VM instance is associated with the project identifier P 1 and the instance identifier “shell,” there is a conflict as to whether the metadata value corresponding to the second metadata key “allowedHosts,” e.g., “192.0.2.24/30,” or the fourth metadata key “allowedHosts,” e.g., “0.0.0.0/0,” is used to configure the VM instance.
  • the metadata server 130 provides all conflicting metadata to the VM instance, and the VM instance itself determines which metadata value is used to configure the VM instance. In some implementations, the metadata server 130 determines which metadata key-value pair has a higher priority level by evaluating respective identifiers associated with the metadata key-value pairs, and provides to the VM instance the metadata key-value pair that is associated with the higher priority level. In some implementations, instance identifiers and tag identifiers are prioritized higher than project identifiers. In some implementations, instance identifiers are prioritized higher than both tag identifiers and project identifiers.
  • users can dynamically reconfigure VM instances by updating metadata collections. For example, a user can specify new metadata key-value pairs or the user can update metadata values for existing metadata keys.
  • VM instances can be configured to automatically query the metadata server 130 to obtain the new or updated metadata, as described below in reference to FIG. 2 . The VM instances can use the obtained metadata to reconfigure various settings associated with the VM instance.
  • each VM instance e.g., VM 110 , 112 , or 114
  • a distinct metadata server e.g., the metadata server 130
  • each host machine e.g., host machines 102 or 104
  • a distinct metadata server e.g., the metadata server 130
  • the metadata server e.g., the metadata server 130
  • the metadata server is configured as a distributed system.
  • FIG. 2 is a swim lane diagram illustrating configuration of a virtual machine instance using pairings of metadata attributes with metadata values.
  • a user operating a user device provides metadata, e.g., key-value pairs, and one or more corresponding identifiers, to a metadata server, as described above ( 202 ).
  • users can provide values for a metadata key, e.g., “attached-disks,” to specify a list of ephemeral and persistent disks, and can associate the metadata with one or more identifiers to configure VM instances that are also associated with the one or more identifiers to use the identified ephemeral and persistent disks.
  • Metadata for which users can provide customized values include a metadata key, e.g., “description,” to specify a description of an instance, a metadata key, e.g., “domain,” to specify a domain of a VM instance hostname, a metadata key, e.g., “hostname,” to specify a host name for an instance, a metadata key, e.g., “image,” to specify an image to be used for initializing a VM instance.
  • a metadata key e.g., “description,” to specify a description of an instance
  • a metadata key e.g., “domain” to specify a domain of a VM instance hostname
  • a metadata key e.g., “hostname”
  • image to specify an image to be used for initializing a VM instance.
  • users can provide customized values for a metadata key, e.g., “machine-type,” that identifies a machine type, e.g., a machine having a particular number of Central Processing Units (CPUs) and memory configuration, a metadata key, e.g., “network,” to specify network information, a metadata key, e.g., “zone,” to specify a zone, e.g., time zone.
  • a metadata key e.g., “machine-type” that identifies a machine type, e.g., a machine having a particular number of Central Processing Units (CPUs) and memory configuration
  • a metadata key e.g., “network”
  • a metadata key e.g., “zone”
  • zone e.g., time zone
  • users can provide customized values for a metadata key, e.g., “sshKeys,” to specify a list of Secure Shell (SSH) keys that can be used to connect to an instance, a metadata key, e.g., “startup-script,” to specify a startup script to execute when an instance starts, a metadata key, e.g., “startup-script-url,” to specify a URL (Uniform Resource Locator) of a startup script to execute when an instance starts.
  • SSH Secure Shell
  • the metadata server associates one or more metadata collections with respective identifiers ( 204 ).
  • the metadata server categorizes and stores the received metadata into one or more respective metadata collections based on the identifiers corresponding to the received metadata.
  • the metadata server can categorize and store all received metadata that is associated with a particular project identifier, e.g., P 1 , into a first metadata collection, and can associate the first metadata collection with the particular project identifier, e.g., P 1 .
  • the metadata server can categorize and store all received metadata that is associated with a particular tag identifier, e.g., T 1 , into a second metadata collection, and can associate the second metadata collection with the particular tag identifier, e.g., T 1 .
  • a VM instance that is associated with particular identifiers sends a metadata query to the metadata server to obtain metadata that is also associated with the particular identifiers ( 206 ).
  • a VM instance is configured to query the metadata server for metadata when the VM instance is initialized, e.g., at startup.
  • a VM instance is configured to query the metadata server for metadata at specified time intervals, for example, as specified in a cron job.
  • a VM instance is configured to query the metadata server using a “Hanging GET” operation.
  • the VM instance can use the conventional hypertext transfer protocol (HTTP) “GET” operation to request metadata.
  • HTTP hypertext transfer protocol
  • the VM instance can “hang,” or maintain the HTTP “GET” connection, to continue waiting until the metadata server has new or updated metadata to provide the VM instance.
  • the HTTP “GET” connection is closed due to inactivity, e.g., a time out, the VM instance can be configured to re-establish the connection and continue waiting for new or updated metadata.
  • the metadata server receives the query requesting metadata associated with particular identifiers, as described above ( 208 ).
  • the metadata server can communicate data, e.g., queries and metadata, using any appropriate network communications protocol or using conventional hypertext transfer protocol (HTTP) “GET” and “PUT” commands.
  • HTTP hypertext transfer protocol
  • the metadata server identifies metadata responsive to the metadata query ( 210 ).
  • the metadata server can identify one or more metadata collections that respectively correspond to the particular identifiers, as described above in reference to FIG. 1 .
  • the metadata server provides the metadata responsive to the query to the VM instance ( 212 ).
  • the metadata server can provide metadata that was categorized and stored in the identified metadata collections to the VM instance, as described above.
  • the VM instance receives and applies the metadata to configure the VM instance ( 214 ).
  • the VM instance configures itself by updating a particular setting associated with the VM instance, for example, by updating data in a particular file.
  • the VM instance can receive a metadata key “hostname” and its corresponding value “example.com.” Based on the key “hostname,” the VM instance can be configured to update a particular file, e.g., “/etc/hostname,” with the value “example.com.”
  • the VM instance Upon updating the file “/etc/hostname,” the VM instance can reinitialize its networking configuration so that the VM instance domain corresponds to “example.com.”
  • FIG. 3 is a flow diagram of an example process 300 for configuring a virtual machine instance using pairings of metadata attributes with metadata values.
  • the process 300 will be described with respect to a system, e.g., the metadata server 130 , including one or more computing devices that performs the process 300 .
  • the system associates one or more metadata collections with respective identifiers, as described above ( 302 ).
  • the system receives a metadata query requesting metadata associated with particular identifiers, as described above ( 304 ). For example, the system can receive the query from a VM instance that is also associated with the particular identifiers.
  • the system identifies metadata responsive to the metadata query, as described above ( 306 ).
  • FIG. 4 is a schematic diagram of an example host machine.
  • the host machine 400 generally consists of a data processing apparatus 402 .
  • the data processing apparatus 402 can optionally communicate with one or more other computers 490 through a network 480 . While only one data processing apparatus 402 is shown in FIG. 4 , multiple data processing apparatus can be used in one or more locations.
  • the data processing apparatus 402 includes various modules, e.g. executable software programs. One of the modules is the kernel 406 of a host operating system (e.g., host operating system 106 ).
  • a virtual machine module 408 (e.g., virtual machine 110 ) includes virtual hardware (e.g., virtual hardware 110 a ), a guest operating system (e.g., guest operating system 110 b ), and guest applications (guest applications 110 c ).
  • virtual hardware e.g., virtual hardware 110 a
  • guest operating system e.g., guest operating system 110 b
  • guest applications guest applications 110 c
  • the software modules can be distributed on one or more data processing apparatus connected by one or more networks or other suitable communication mediums.
  • the data processing apparatus 402 also includes hardware or firmware devices including one or more processors 412 , one or more additional devices 414 , a computer-readable storage medium 416 , a communication interface 418 , and optionally one or more user interface devices 420 .
  • Each processor 412 is capable of processing instructions for execution within the data processing apparatus 402 .
  • the processor 412 is a single or multi-threaded processor.
  • Each processor 412 is capable of processing instructions stored on the computer-readable storage medium 416 or on a storage device such as one of the additional devices 414 .
  • the data processing apparatus 402 uses its communication interface 418 to communicate with one or more computers 490 , for example, over a network 480 .
  • Examples of user interface devices 420 include a display, a camera, a speaker, a microphone, a tactile feedback device, a keyboard, and a mouse.
  • the data processing apparatus 402 can store instructions that implement operations associated with the modules described above, for example, on the computer-readable storage medium 416 or one or more additional devices 414 , for example, one or more of a floppy disk device, a hard disk device, an optical disk device, or a tape device.
  • FIG. 4 is also a schematic diagram of an example metadata server.
  • the metadata server generally consists of one or more data processing apparatus in one or more locations.
  • the data processing apparatus includes hardware or firmware devices including one or more processors, a computer readable storage medium, and a communication interface.
  • Each processor is capable of processing instructions for execution within the data processing apparatus.
  • the processor is a single or multi-threaded processor.
  • Each processor is capable of processing instructions stored on the computer readable storage medium or on a storage device such as one of the additional devices.
  • the data processing apparatus uses its communication interface to communicate with one or more computers, for example, over a network.
  • Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
  • Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non-transitory program carrier for execution by, or to control the operation of, data processing apparatus.
  • the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
  • the computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
  • data processing apparatus encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers.
  • the apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • the apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
  • a computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
  • a computer program may, but need not, correspond to a file in a file system.
  • a program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub-programs, or portions of code.
  • a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
  • the processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output.
  • the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • special purpose logic circuitry e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
  • Computers suitable for the execution of a computer program include, by way of example, can be based on general or special purpose microprocessors or both, or any other kind of central processing unit.
  • a central processing unit will receive instructions and data from a read-only memory or a random access memory or both.
  • the essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data.
  • a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks.
  • mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks.
  • a computer need not have such devices.
  • a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
  • PDA personal digital assistant
  • GPS Global Positioning System
  • USB universal serial bus
  • Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
  • semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
  • magnetic disks e.g., internal hard disks or removable disks
  • magneto-optical disks e.g., CD-ROM and DVD-ROM disks.
  • the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
  • a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
  • a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
  • keyboard and a pointing device e.g., a mouse or a trackball
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a
  • Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components.
  • the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
  • LAN local area network
  • WAN wide area network
  • the computing system can include clients and servers.
  • a client and server are generally remote from each other and typically interact through a communication network.
  • the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for associating one or more of a plurality of metadata collections with one or more respective identifiers, wherein each metadata collection includes one or more pairings of metadata attributes with metadata values, and wherein each identifier is one of a project identifier, a tag identifier or an instance identifier; identifying, based on identifier information associated with a virtual machine instance, one or more metadata values to be provided to the virtual machine instance, wherein the identifier information specifies one or more of a project identifier, a tag identifier and an instance identifier, and wherein each identified metadata value belongs to a metadata collection associated with an identifier that is specified in the identifier information; and providing, to the virtual machine instance, the identified one or more metadata values.

Description

BACKGROUND
This specification relates to cloud computing.
Cloud computing is network-based computing in which typically large collections of servers housed in data centers or “server farms” provide computational resources and data storage as needed to end users. Some cloud computing services provide access to software applications such as word processors and other commonly used applications to end users who interface with the applications through web browsers or other client-side software. Users' electronic data files are usually stored in the server farm rather than on the users' computing devices. Maintaining software applications and user data on a server farm simplifies management of end user computing devices. Some cloud computing services allow end users to execute software applications in virtual machines.
SUMMARY
Users can define metadata, e.g., pairings of metadata attributes and metadata values, to be used in configuring virtual machine instances. As used in this specification, the terms pairings of metadata attributes with metadata values and metadata key-value pairs are used interchangeably. Each metadata key-value pair can be associated with one or more identifiers. The identifiers can include, for example, a project identifier that references a particular project with which one or more virtual machine instances are associated, an instance identifier that references a particular virtual machine instance, or a tag identifier that references a particular tag with which one or more virtual machine instances are associated. Each metadata key-value pair is stored in a metadata collection that is identified by a particular identifier. For example, a metadata key-value pair that is associated with a project identifier P1 and a tag identifier T1 is stored in both a first metadata collection that is identified by the project identifier P1 and a second metadata collection that is identified by the tag identifier T1.
When initializing virtual machine instances, users can associate each virtual machine instance with one or more identifiers, e.g., a project identifier, an instance identifier, or a tag identifier, as described above. Each virtual machine instance can obtain metadata, for example, from a metadata server. In some implementations, a virtual machine instance that is associated with particular identifiers can obtain metadata that is also associated with the particular identifiers. Each virtual machine instance can apply the obtained metadata key-value pairs to configure various settings associated with the respective virtual machine instance.
In general, one aspect of the subject matter described in this specification can be embodied in methods that include the actions of associating one or more of a plurality of metadata collections with one or more respective identifiers, wherein each metadata collection includes one or more pairings of metadata attributes with metadata values, and wherein each identifier is one of a project identifier, a tag identifier or an instance identifier; identifying, based on identifier information associated with a virtual machine instance, one or more metadata values to be provided to the virtual machine instance, wherein the identifier information specifies one or more of a project identifier, a tag identifier and an instance identifier, and wherein each identified metadata value belongs to a metadata collection associated with an identifier that is specified in the identifier information; and providing, to the virtual machine instance, the identified one or more metadata values. Other embodiments of this aspect include corresponding systems, apparatus, and computer program products.
These and other embodiments can optionally include one or more of the following features. The method further includes receiving, from the virtual machine instance, a metadata query that includes the identifier information; and identifying the one or more metadata values in response to receipt of the metadata query. The metadata query is communicated using a Hanging GET operation. The method further includes receiving data that includes one or more user specified identifiers and one or more user specified pairings of metadata values with metadata attributes; generating a metadata collection that includes the one or more user-specified pairings; and associating the generated metadata collection with the user specified identifier. The metadata collections include a first metadata collection and a second metadata collection, the first metadata collection being associated with a first identifier and including a pairing of a first metadata attribute with a first metadata value, and the second metadata collection being associated with a second identifier and including a pairing of the first metadata attribute with a second metadata value, the first metadata value being different from the second metadata value.
The method further includes providing both the first metadata value and the second metadata value to the virtual machine instance. The method further includes determining that the first metadata collection has a higher priority level than the second metadata collection based on an evaluation of the first identifier and the second identifier; and providing the first metadata value and not the second metadata value to the virtual machine instance. The first identifier is an instance identifier or a tag identifier and the second identifier is a project identifier or the first identifier is an instance identifier and the second identifier is a tag identifier or a project identifier. The method further includes receiving data specifying an identifier and a new pairing of a metadata attribute with a metadata value and updating the metadata collection associated with the identifier specified in the data to include the new pairing.
Particular embodiments of the subject matter described in this specification can be implemented so as to realize one or more of the following advantages. Virtual machine roles can be defined based on their respective tag identifiers. Users can specify metadata key-value pairs and the specified metadata key-value pairs can be used to collectively configure settings for one or more virtual machine instances. Settings and roles of virtual machine instances can be dynamically updated upon updating. Metadata can be associated with project identifiers or tag identifiers to simplify enforcement of common configurations and properties across multiple virtual machine instances. In cases when virtual machine instances do not access metadata associated with an instance identifier, or if access to the metadata is prohibited by policy, the auditing of virtual machine instances that use a standard configuration can be simplified.
The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a schematic illustration of an example virtual machine system.
FIG. 2 is a swim lane diagram illustrating configuration of a virtual machine instance using pairings of metadata attributes with metadata values.
FIG. 3 is a flow diagram of an example process for configuring a virtual machine instance using pairings of metadata attributes with metadata values.
FIG. 4 is a schematic diagram of an example host machine.
Like reference numbers and designations in the various drawings indicate like elements.
DETAILED DESCRIPTION
FIG. 1 is a schematic illustration of an example virtual machine system 100. The system 100 includes one or more host machines such as, for example, host machine 102 and host machine 104. Generally speaking, a host machine is one or more data processing apparatus such as rack mounted servers or other computing devices. The data processing apparatus can be in different physical locations and can have different capabilities and computer architectures. Host machines can communicate with each other through an internal data communications network 116. The internal network can include one or more wired, e.g., Ethernet, or wireless, e.g., WI-FI, networks, for example. In some implementations the internal network 116 is an intranet. Host machines can also communicate with devices on external networks, such as the Internet 122, through one or more gateways 120 which are data processing apparatus responsible for routing data communication traffic between the internal network 116 and the external network 122. Other types of external networks are possible.
Each host machine 102, 104, executes a host operating system 106, 108. A host operating system 106, 108, manages host machine resources. In this example, host operating systems 106, 108, run software, e.g. a virtual machine monitor (“VMM”) or a hypervisor, that virtualizes the underlying host machine hardware and manages concurrent execution of one or more virtual machine (“VMs”) instances. In this example, the host operating system 106 manages two VM instances, VM 110 and VM 112, while a different host operating system 108 manages a single VM 114. VM instances can be migrated from one host machine to another host machine. In addition, a single VM instance can be managed by multiple host machines. A host machine can, in general, manage multiple virtual machines, however, the quantity may be limited based on physical resources of the host machine.
Each VM instance provides an emulation of a physical hardware system which may, but need not, be based on the host machine hardware architecture. The simulated version of the hardware is referred to as virtual hardware, e.g., virtual hardware 110 a, 112 a, and 114 a. Software that is executed by the virtual hardware is referred to as guest software. In some implementations, guest software cannot determine if it is being executed by virtual hardware or by a physical host machine. If guest software executing in a VM instance, or the VM instance itself, is compromised, malfunctions, or aborts, other VM instances executing on the host machine may not be affected. A host machine's microprocessor(s) can include processor-level mechanisms to enable virtual hardware to execute software applications efficiently by allowing guest software instructions to be executed directly on the host machine's microprocessor without requiring code-rewriting, recompilation, or instruction emulation.
Each VM instance, e.g., VMs 110, 112, and 114, is allocated a set of virtual memory pages from the virtual memory of the underlying host operating system and is allocated virtual disk blocks from one or more virtual disk drives for use by the guest software executing on the VM instance. For example, host operating 106 allocates memory pages and disk blocks to VM 110 and VM 112, and host operating system 108 does the same for VM 114. In some implementations, a given VM instance cannot access the virtual memory pages assigned to other VMs. For example, VM 110 cannot access memory pages that have been assigned to VM 112. A virtual disk drive can be persisted across VM instance restarts. Virtual disk blocks are allocated on physical disk drives coupled to host machines or available over the internal network 116, for example. In addition to virtual memory and disk resources, VM instances can be allocated network addresses through which their respective guest software can communicate with other processes reachable through the internal network 116 or the Internet 122. For example, guest software executing on VM 110 can communicate with guest software executing on VM 112 or VM 114. In some implementations, each VM instance is allocated one or more unique Internet Protocol (IP) version 4 or version 6 addresses. Other address schemes are possible. The VM instance IP addresses are addressable on the internal network 116 and, in some implementations, are addressable on the Internet 122 if the addresses are advertised using a suitable routing protocol, for instance.
A VM instance's guest software can include a guest operating system, e.g., guest operating systems 110 b, 112 b, and 114 b, which is software that controls the execution of respective guest software applications, e.g., guest applications 110 c, 112 c, and 114 c, within the VM instance and provides services to those applications. For example, a guest operating system could be a variant of the UNIX operating system. Other operating systems, e.g., Microsoft Windows, and different versions of these operating systems can be used as the guest operating system. Each VM instance can execute the same guest operating system or different guest operating systems. In further implementations, a VM instance does not require a guest operating system in order to execute guest software applications. A guest operating system's access to resources such as networks and virtual disk storage is controlled by the underlying host operating system.
By way of illustration, and with reference to virtual machine 110, when the guest application 110 c or guest operating system 110 b attempts to perform an input/output operation on a virtual disk, initiate network communication, or perform a privileged operation, for example, the virtual hardware 110 a is interrupted so that the host operating system 106 can perform the action on behalf of the virtual machine 110. The host operating system 106 can perform these actions with a process that executes in kernel process space 106 b, user process space 106 a, or both.
The kernel process space 106 b is virtual memory reserved for the host operating system 106's kernel 106 d which can include kernel extensions and device drivers, for instance. The kernel process space has elevated privileges, sometimes referred to as “supervisor mode”; that is, the kernel 106 d can perform certain privileged operations that are off limits to processes running in the user process space 106 a. Examples of privileged operations include access to different address spaces, access to special functional processor units in the host machine such as memory management units, and so on. The user process space 106 a is a separate portion of virtual memory reserved for user mode processes. User mode processes cannot perform privileged operations directly.
In various implementations, a portion of VM instance network communication functionality is implemented in a communication process, e.g., communication process 106 c. In some implementations, the communication process executes in the user process space, e.g., user process space 106 a, of a host operating system, e.g., host operating system 106. In other implementations, the communication process can execute in the kernel process space, e.g., kernel process space 106 d of the host operating system. In yet further implementations, some portion of the communication process executes in the user process space and another portion executes in the kernel process space.
The system 100 includes a metadata server 130 that manages and provides access to metadata for VM instances in the system 100. The metadata server 130 can be implemented as one or more computer programs installed on one or more computers in system 100. The metadata server 130 can, for example, be installed on a particular host machine. The metadata server 130 can also be implemented as a VM instance in the system 100. Generally, the metadata server 130 is located in the same datacenter as VM instances that the metadata server 130 services, although the metadata server 130 can also be located elsewhere and be, for example, accessible over the Internet.
Metadata can be written to and read from the metadata server 130 using any appropriate network communications protocol. In some implementations, the read and write commands are implemented using conventional hypertext transfer protocol (HTTP) “GET” and “PUT” commands. In some implementations, users can provide custom metadata to the metadata server 130 using an Application Programming Interface (API).
Each element of metadata is a key-value pair. The key, or attribute, uniquely identifies a type of metadata. The value can be one or more pieces of data, for example, text strings. For example, a user can specify a metadata key “hostname” and a corresponding metadata value “myinst.myproject.mydomain.internal.” Users can also associate each key-value pair with one or more respective identifiers. In some implementations, the one or more identifiers include a project identifier, an instance identifier, or a tag identifier. For example, a project identifier can reference a particular project that was created by a user. An instance identifier can reference a particular virtual machine instance. A tag identifier can reference a particular tag, e.g., “front-end webserver” or “sql server” with which one or more virtual machines instances are associated. In some implementations, users can specify custom identifiers that can be associated with key-value pairs. For example, a user can specify a machine-type identifier that can be associated with metadata key “hostname.”
In some implementations, access to metadata that is associated with one or more identifiers is restricted to VM instances that are also associated with the one or more identifiers. For example, a VM instance that is associated with a project identifier P1 can access metadata associated with the project identifier P1 but not metadata associated with a project identifier P2. Similarly, similar tag identifiers can be associated with different project identifiers. Thus, for example, a first tag identifier “front-end webserver” can be associated with a project identifier P1 while a second tag identifier “front-end webserver” can be associated with a project identifier P2. In this example, metadata associated with the first tag identifier “front-end webserver” in the project P1 has no relation to metadata associated with the second tag identifier “front-end webserver” in the project P2. Thus, VM instances that are associated with the project identifier P1 cannot access metadata that is associated with the project identifier P2. Similarly, VM instances that are associated with the project identifier P2 cannot access metadata that is associated with the project identifier P1. This is a useful property for a multi-tenant system, as it ensures metadata remains confidential and is not visible to VM instances that are not associated with the proper identifiers.
The metadata server 130 is configured to receive user specified key-value pairs and their corresponding identifiers. In some implementations, the metadata server 130 categorizes and stores received key-value pairs in one or more metadata collections based on their respective identifiers. For example, a key-value pair that is associated with a project identifier P1 and a tag identifier T1 can be stored in a first metadata collection that corresponds to the project identifier P1 and a second metadata collection that corresponds to the tag identifier T1.
The metadata server 130 is also configured to receive queries from VM instances requesting metadata. Users can customize the configuration of VM instances running in the system 100 by associating the VM instances with one or more respective identifiers, e.g., a project identifier, an instance identifier, or a tag identifier, as described above. For example, a user can specify that a VM instance be associated with a project identifier P1, an instance identifier M1, and tag identifiers “sql server” and “front-end webserver.” In some implementations, each VM instance can be associated with only one project identifier.
At startup, the VM instance can query the metadata server 130 to obtain metadata that is associated with the same identifiers that are associated with the VM instance. Thus, for example, a VM instance associated with a project identifier P1, an instance identifier M1, and tag identifiers “sql server” and “front-end webserver” can query the metadata server 130 to obtain metadata that is also associated with the project identifier P1, the instance identifier M1, and the tag identifiers “sql server” and “front-end webserver.” In response to receiving the query, the metadata server 130 can identify metadata collections that respectively correspond to the project identifier P1, the instance identifier M1, and the tag identifiers “sql server” and “front-end webserver.” The metadata server 130 can provide metadata that was categorized in the identified metadata collections to the VM instance. The VM instance can apply the received metadata to configure various settings associated with the VM instance.
For example, a user can associate a first metadata key “sshKeys” and corresponding value, e.g., “joe:ssh-rsa <SSH key>,” that describes user accounts and corresponding public SSH keys, with a project identifier P1. The user can also associate a second metadata key “allowedHosts” and corresponding value, e.g., “192.0.2.24/30,” that describes Internet Protocol (IP) addresses that are allowed to connect to a VM instance, with the project identifier P1. The user can then associate a third metadata key “startupScript” and corresponding value, e.g., a shell script that configures and starts a webserver, with a tag identifier “web.” Finally, the user can associate a fourth metadata key “allowedHosts” and corresponding value, e.g., “0.0.0.0/0” that describes IP addresses that are allowed to connect to a VM instance, with an instance identifier “shell.”
In some implementations, users can specify particular identifiers to be associated with one or more VM instances using an Application Programming Interface (API). A system component in each VM instance is configured to obtain the user specified identifiers, and to associate the identifiers with the respective VM instance.
A user can initialize a VM instance and can associate the VM instance with a project identifier P1 and an instance identifier “shell.” At startup, the VM instance can query the metadata server 130 to obtain metadata that is associated with the project identifier P1 and the instance identifier “shell.” In response to the query, the metadata server 130 can provide the VM instance with metadata associated with the project identifier P1, e.g., the first and second metadata key-value pairs, and metadata associated with the instance identifier “shell,” e.g., the fourth metadata key-value pair. In some implementations, the metadata server 130 provides the VM instance with respective Uniform Resource Locator (URL) paths that reference the requested metadata. For example, the metadata server 130 can provide a first URL, e.g., “/v1beta/computemetadata/project/attributes/sshKeys,” that references the “sshKeys” key-value pair associated with the project identifier P1, a second URL, e.g., “/v1beta/computemetadata/project/attributes/allowedHosts,” that references the “allowedHosts” key-value pair associated with the project identifier P1, and a third URL, e.g., “/v1beta/computemetadata/instance/attributes/allowedHosts,” that references the “allowedHosts” key-value pair associated with the instance identifier “shell.” The VM instance can then process the received metadata to configure the VM instance. In this example, if the user had associated the VM instance with a tag identifier “web,” then the metadata server 130 would also provide the VM instance with a fourth URL, e.g., “/v1beta/computemetadata/tags/web/attributes/startupScript,” that references the “startupScript” key-value pair associated with the tag identifier “web.”
In some instances, a metadata conflict may arise when different values are specified for a metadata key that is associated with more than one metadata collection, e.g., with more than one identifier, and when a VM instance is associated with those identifiers. As described in the example above, the second metadata key “allowedHosts,” which is associated with the project identifier P1, has a corresponding value “192.0.2.24/30” while the fourth metadata key “allowedHosts,” which is associated with the instance identifier “shell,” has a corresponding value “0.0.0.0/0.” In this example, since the VM instance is associated with the project identifier P1 and the instance identifier “shell,” there is a conflict as to whether the metadata value corresponding to the second metadata key “allowedHosts,” e.g., “192.0.2.24/30,” or the fourth metadata key “allowedHosts,” e.g., “0.0.0.0/0,” is used to configure the VM instance.
In some implementations, the metadata server 130 provides all conflicting metadata to the VM instance, and the VM instance itself determines which metadata value is used to configure the VM instance. In some implementations, the metadata server 130 determines which metadata key-value pair has a higher priority level by evaluating respective identifiers associated with the metadata key-value pairs, and provides to the VM instance the metadata key-value pair that is associated with the higher priority level. In some implementations, instance identifiers and tag identifiers are prioritized higher than project identifiers. In some implementations, instance identifiers are prioritized higher than both tag identifiers and project identifiers.
In some implementations, users can dynamically reconfigure VM instances by updating metadata collections. For example, a user can specify new metadata key-value pairs or the user can update metadata values for existing metadata keys. VM instances can be configured to automatically query the metadata server 130 to obtain the new or updated metadata, as described below in reference to FIG. 2. The VM instances can use the obtained metadata to reconfigure various settings associated with the VM instance.
In some implementations, each VM instance, e.g., VM 110, 112, or 114, is paired with a distinct metadata server, e.g., the metadata server 130. In some implementations, each host machine, e.g., host machines 102 or 104, is paired with a distinct metadata server, e.g., the metadata server 130. In some implementations, the metadata server, e.g., the metadata server 130, is configured as a distributed system.
FIG. 2 is a swim lane diagram illustrating configuration of a virtual machine instance using pairings of metadata attributes with metadata values.
A user operating a user device provides metadata, e.g., key-value pairs, and one or more corresponding identifiers, to a metadata server, as described above (202). In some implementations, users can provide values for a metadata key, e.g., “attached-disks,” to specify a list of ephemeral and persistent disks, and can associate the metadata with one or more identifiers to configure VM instances that are also associated with the one or more identifiers to use the identified ephemeral and persistent disks. Other examples of metadata for which users can provide customized values include a metadata key, e.g., “description,” to specify a description of an instance, a metadata key, e.g., “domain,” to specify a domain of a VM instance hostname, a metadata key, e.g., “hostname,” to specify a host name for an instance, a metadata key, e.g., “image,” to specify an image to be used for initializing a VM instance.
Additionally, users can provide customized values for a metadata key, e.g., “machine-type,” that identifies a machine type, e.g., a machine having a particular number of Central Processing Units (CPUs) and memory configuration, a metadata key, e.g., “network,” to specify network information, a metadata key, e.g., “zone,” to specify a zone, e.g., time zone. Further, users can provide customized values for a metadata key, e.g., “sshKeys,” to specify a list of Secure Shell (SSH) keys that can be used to connect to an instance, a metadata key, e.g., “startup-script,” to specify a startup script to execute when an instance starts, a metadata key, e.g., “startup-script-url,” to specify a URL (Uniform Resource Locator) of a startup script to execute when an instance starts.
The metadata server associates one or more metadata collections with respective identifiers (204). As described above, in some implementations, the metadata server categorizes and stores the received metadata into one or more respective metadata collections based on the identifiers corresponding to the received metadata. Thus, for example, the metadata server can categorize and store all received metadata that is associated with a particular project identifier, e.g., P1, into a first metadata collection, and can associate the first metadata collection with the particular project identifier, e.g., P1. Similarly, the metadata server can categorize and store all received metadata that is associated with a particular tag identifier, e.g., T1, into a second metadata collection, and can associate the second metadata collection with the particular tag identifier, e.g., T1.
A VM instance that is associated with particular identifiers sends a metadata query to the metadata server to obtain metadata that is also associated with the particular identifiers (206). In some implementations, a VM instance is configured to query the metadata server for metadata when the VM instance is initialized, e.g., at startup. In some implementations, a VM instance is configured to query the metadata server for metadata at specified time intervals, for example, as specified in a cron job.
In some implementations, a VM instance is configured to query the metadata server using a “Hanging GET” operation. For example, the VM instance can use the conventional hypertext transfer protocol (HTTP) “GET” operation to request metadata. In situations where the metadata server has already provided the VM instance with metadata, the VM instance can “hang,” or maintain the HTTP “GET” connection, to continue waiting until the metadata server has new or updated metadata to provide the VM instance. In such implementations, if the HTTP “GET” connection is closed due to inactivity, e.g., a time out, the VM instance can be configured to re-establish the connection and continue waiting for new or updated metadata.
The metadata server receives the query requesting metadata associated with particular identifiers, as described above (208). The metadata server can communicate data, e.g., queries and metadata, using any appropriate network communications protocol or using conventional hypertext transfer protocol (HTTP) “GET” and “PUT” commands.
The metadata server identifies metadata responsive to the metadata query (210). The metadata server can identify one or more metadata collections that respectively correspond to the particular identifiers, as described above in reference to FIG. 1.
The metadata server provides the metadata responsive to the query to the VM instance (212). The metadata server can provide metadata that was categorized and stored in the identified metadata collections to the VM instance, as described above.
The VM instance receives and applies the metadata to configure the VM instance (214). In some implementations, the VM instance configures itself by updating a particular setting associated with the VM instance, for example, by updating data in a particular file. For example, the VM instance can receive a metadata key “hostname” and its corresponding value “example.com.” Based on the key “hostname,” the VM instance can be configured to update a particular file, e.g., “/etc/hostname,” with the value “example.com.” Upon updating the file “/etc/hostname,” the VM instance can reinitialize its networking configuration so that the VM instance domain corresponds to “example.com.”
FIG. 3 is a flow diagram of an example process 300 for configuring a virtual machine instance using pairings of metadata attributes with metadata values. For convenience, the process 300 will be described with respect to a system, e.g., the metadata server 130, including one or more computing devices that performs the process 300.
The system associates one or more metadata collections with respective identifiers, as described above (302).
The system receives a metadata query requesting metadata associated with particular identifiers, as described above (304). For example, the system can receive the query from a VM instance that is also associated with the particular identifiers.
The system identifies metadata responsive to the metadata query, as described above (306).
They system provides the metadata to the VM instance, as described above (308).
FIG. 4 is a schematic diagram of an example host machine. The host machine 400 generally consists of a data processing apparatus 402. The data processing apparatus 402 can optionally communicate with one or more other computers 490 through a network 480. While only one data processing apparatus 402 is shown in FIG. 4, multiple data processing apparatus can be used in one or more locations. The data processing apparatus 402 includes various modules, e.g. executable software programs. One of the modules is the kernel 406 of a host operating system (e.g., host operating system 106). A virtual machine module 408 (e.g., virtual machine 110) includes virtual hardware (e.g., virtual hardware 110 a), a guest operating system (e.g., guest operating system 110 b), and guest applications (guest applications 110 c). Although several software modules are illustrated, there may be fewer or more software modules. Moreover, the software modules can be distributed on one or more data processing apparatus connected by one or more networks or other suitable communication mediums.
The data processing apparatus 402 also includes hardware or firmware devices including one or more processors 412, one or more additional devices 414, a computer-readable storage medium 416, a communication interface 418, and optionally one or more user interface devices 420. Each processor 412 is capable of processing instructions for execution within the data processing apparatus 402. In some implementations, the processor 412 is a single or multi-threaded processor. Each processor 412 is capable of processing instructions stored on the computer-readable storage medium 416 or on a storage device such as one of the additional devices 414. The data processing apparatus 402 uses its communication interface 418 to communicate with one or more computers 490, for example, over a network 480. Examples of user interface devices 420 include a display, a camera, a speaker, a microphone, a tactile feedback device, a keyboard, and a mouse. The data processing apparatus 402 can store instructions that implement operations associated with the modules described above, for example, on the computer-readable storage medium 416 or one or more additional devices 414, for example, one or more of a floppy disk device, a hard disk device, an optical disk device, or a tape device.
FIG. 4 is also a schematic diagram of an example metadata server. The metadata server generally consists of one or more data processing apparatus in one or more locations. The data processing apparatus includes hardware or firmware devices including one or more processors, a computer readable storage medium, and a communication interface. Each processor is capable of processing instructions for execution within the data processing apparatus. In some implementations, the processor is a single or multi-threaded processor. Each processor is capable of processing instructions stored on the computer readable storage medium or on a storage device such as one of the additional devices. The data processing apparatus uses its communication interface to communicate with one or more computers, for example, over a network.
Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non-transitory program carrier for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them.
The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
A computer program (which may also be referred to or described as a program, software, a software application, a module, a software module, a script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub-programs, or portions of code. A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Computers suitable for the execution of a computer program include, by way of example, can be based on general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.

Claims (27)

What is claimed is:
1. A method performed by one or more computing devices, the method comprising:
associating each of a plurality of user-specified metadata key-value pairs with one or more respective identifiers of a plurality of identifiers, wherein each identifier is one of a project identifier, a tag identifier, or an instance identifier;
receiving, by a metadata service from a virtual machine instance, a metadata query;
obtaining identifier information associated with the virtual machine instance, wherein the identifier information specifies two or more identifiers of the plurality of identifiers;
identifying, based on the identifier information associated with the virtual machine instance, one or more of the user-specified metadata key-value pairs that are each associated with at least one of the two or more identifiers specified by the identifier information associated with the virtual machine instance, the one or more metadata key-value pairs being key-value pairs to be provided to the virtual machine instance, and wherein the virtual machine instance is associated with all of the two or more identifiers that are specified in the identifier information; and
providing, to the virtual machine instance, the identified one or more metadata key-value pairs in response to receiving the metadata query.
2. The method of claim 1, further comprising:
receiving, from a user, the two or more identifiers for the virtual machine instance; and
associating the virtual machine instance with each of the two or more identifiers received from the user.
3. The method of claim 2, wherein the metadata query is communicated using a Hanging GET operation.
4. The method of claim 1, further comprising:
receiving data that includes one or more user-specified identifiers and one or more user-specified metadata key-value pairs; and
associating the metadata key-value pairs with the one or more user-specified identifiers.
5. The method of claim 1, wherein each identifier corresponds to a collection of metadata key-value pairs.
6. The method of claim 1, further comprising:
determining that the identified metadata key-value pairs include two conflicting metadata key-value pairs, the conflicting metadata key-value pairs including a first metadata key that is identical to a second metadata key, and a first metadata value that is different than a second metadata value, the first metadata key being paired with the first metadata value, and the second metadata key being paired with the second metadata value; and
providing both the first metadata value and the second metadata value to the virtual machine instance, wherein the virtual machine instance resolves two conflicting metadata key-value pairs by selecting a value of one of the conflicting metadata key-value pairs.
7. The method of claim 1, further comprising:
determining that the identified metadata key-value pairs include two conflicting metadata key-value pairs, the conflicting metadata key-value pairs including a first metadata key that is identical to a second metadata key, and a first metadata value being different than a second metadata value, the first metadata key being paired with the first metadata value and the second metadata key being paired with the second metadata value; and
determining that the first metadata key is associated with a first identifier that has a higher priority level than a second identifier associated with the second metadata key; and
in response to the determining, providing the first metadata value and not the second metadata value to the virtual machine instance.
8. The method of claim 7, wherein:
the first identifier is an instance identifier or a tag identifier, and the second identifier is a project identifier; or
the first identifier is an instance identifier, and the second identifier is a tag identifier or a project identifier.
9. The method of claim 1, wherein the virtual machine instance provides the metadata query to the metadata service upon startup of the virtual machine instance and configures one or more settings of the virtual machine instance according to the one or more received metadata key-value pairs.
10. A non-transitory computer storage medium encoded with instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:
associating each of a plurality of user-specified metadata key-value pairs with one or more respective identifiers of a plurality of identifiers, wherein each identifier is one of a project identifier, a tag identifier, or an instance identifier;
receiving, by a metadata service from a virtual machine instance, a metadata query;
obtaining identifier information associated with the virtual machine instance, wherein the identifier information specifies two or more identifiers of the plurality of identifiers;
identifying, based on the identifier information associated with the virtual machine instance, one or more of the user-specified metadata key-value pairs that are each associated with at least one of the two or more identifiers specified by the identifier information associated with the virtual machine instance, the one or more metadata key-value pairs being key-value pairs to be provided to the virtual machine instance, and wherein the virtual machine instance is associated with all of the two or more identifiers that are specified in the identifier information; and
providing, to the virtual machine instance, the identified one or more metadata key-value pairs in response to receiving the metadata query.
11. The computer storage medium of claim 10, further comprising:
receiving, from a user, the two or more identifiers for the virtual machine instance; and
associating the virtual machine instance with each of the two or more identifiers received from the user.
12. The computer storage medium of claim 11, wherein the metadata query is communicated using a Hanging GET operation.
13. The computer storage medium of claim 10, further comprising:
receiving data that includes one or more user-specified identifiers and one or more user-specified key-value pairs; and
associating the metadata key-value pairs with the one or more user-specified identifiers.
14. The computer storage medium of claim 10, wherein each identifier corresponds to a collection of metadata key-value pairs.
15. The computer storage medium of claim 10, wherein the operations further comprise:
determining that the identified metadata key-value pairs include two conflicting metadata key-value pairs, the conflicting metadata key-value pairs including a first metadata key that is identical to a second metadata key, and a first metadata value that is different than a second metadata value, the first metadata key being paired with the first metadata value, and the second metadata key being paired with the second metadata value; and
providing both the first metadata value and the second metadata value to the virtual machine instance, wherein the virtual machine instance resolves two conflicting metadata key-value pairs by selecting a value of one of the conflicting metadata key-value pairs.
16. The computer storage medium of claim 10, wherein the operations further comprise:
determining that the identified metadata key-value pairs include two conflicting metadata key-value pairs, the conflicting metadata key-value pairs including a first metadata key that is identical to a second metadata key, and a first metadata value being different than a second metadata value, the first metadata key being paired with the first metadata value and the second metadata key being paired with the second metadata value; and
determining that the first metadata key is associated with a first identifier that has a higher priority level than a second identifier associated with the second metadata key; and
in response to the determining, providing the first metadata value and not the second metadata value to the virtual machine instance.
17. The computer storage medium of claim 16, wherein:
the first identifier is an instance identifier or a tag identifier, and the second identifier is a project identifier; or
the first identifier is an instance identifier, and the second identifier is a tag identifier or a project identifier.
18. The computer storage medium of claim 10, wherein the virtual machine instance provides the metadata query to the metadata service upon startup of the virtual machine instance and configures one or more settings of the virtual machine instance according to the one or more received metadata key-value pairs.
19. A system comprising:
one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:
associating each of a plurality of user-specified metadata key-value pairs with one or more respective identifiers of a plurality of identifiers, wherein each identifier is one of a project identifier, a tag identifier, or an instance identifier;
receiving, by a metadata service from a virtual machine instance, a metadata query;
obtaining identifier information associated with the virtual machine instance, wherein the identifier information specifies two or more identifiers of the plurality of identifiers;
identifying, based on the identifier information associated with the virtual machine instance, one or more of the user-specified metadata key-value pairs that are each associated with at least one of the two or more identifiers specified by the identifier information associated with the virtual machine instance, the one or more metadata key-value pairs being key-value pairs to be provided to the virtual machine instance, and wherein the virtual machine instance is associated with all of the two or more identifiers that are specified in the identifier information; and
providing, to the virtual machine instance, the identified one or more metadata key-value pairs in response to receiving the metadata query.
20. The system of claim 19, further comprising:
receiving, from a user, two or more identifiers for the virtual machine instance; and
associating the virtual machine instance with each of the two or more identifiers received from the user.
21. The system of claim 20, wherein the metadata query is communicated using a Hanging GET operation.
22. The system of claim 19, further comprising:
receiving data that includes one or more user-specified identifiers and one or more user-specified key-value pairs; and
associating the metadata key-value pairs with the one or more user-specified identifiers.
23. The system of claim 19, wherein each identifier corresponds to a collection of metadata key-value pairs.
24. The system of claim 19, wherein the operations further comprise:
determining that the identified metadata key-value pairs include two conflicting metadata key-value pairs, the conflicting metadata key-value pairs including a first metadata key that is identical to a second metadata key, and a first metadata value that is different than a second metadata value, the first metadata key being paired with the first metadata value, and the second metadata key being paired with the second metadata value; and
providing both the first metadata value and the second metadata value to the virtual machine instance, wherein the virtual machine instance resolves two conflicting metadata key-value pairs by selecting a value of one of the conflicting metadata key-value pairs.
25. The system of claim 19, wherein the operations further comprise:
determining that the identified metadata key-value pairs include two conflicting metadata key-value pairs, the conflicting metadata key-value pairs including a first metadata key that is identical to a second metadata key, and a first metadata value being different than a second metadata value, the first metadata key being paired with the first metadata value and the second metadata key being paired with the second metadata value; and
determining that the first metadata key is associated with a first identifier that has a higher priority level than a second identifier associated with the second metadata key; and
in response to the determining, providing the first metadata value and not the second metadata value to the virtual machine instance.
26. The system of claim 25, wherein:
the first identifier is an instance identifier or a tag identifier and the second identifier is a project identifier; or
the first identifier is an instance identifier and the second identifier is a tag identifier or a project identifier.
27. The system of claim 19, wherein the virtual machine instance provides the metadata query to the metadata service upon startup of the virtual machine instance and configures one or more settings of the virtual machine instance according to the one or more received metadata key-value pairs.
US13/665,890 2025-08-04 2025-08-04 Metadata-based virtual machine configuration Active 2025-08-04 US9170834B2 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
US13/665,890 US9170834B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration
CN201380063264.5A CN104823163B (en) 2025-08-04 2025-08-04 Virtual machine configuration based on metadata
EP13789937.3A EP2915042B1 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration
CN201811268712.6A CN109375986B (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration
DE202013012495.4U DE202013012495U1 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration
PCT/US2013/067507 WO2014070891A2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration
US14/921,824 US9798566B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/665,890 US9170834B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/921,824 Continuation US9798566B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration

Publications (2)

Publication Number Publication Date
US20140123136A1 US20140123136A1 (en) 2025-08-04
US9170834B2 true US9170834B2 (en) 2025-08-04

Family

ID=49582818

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/665,890 Active 2025-08-04 US9170834B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration
US14/921,824 Active 2025-08-04 US9798566B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration

Family Applications After (1)

Application Number Title Priority Date Filing Date
US14/921,824 Active 2025-08-04 US9798566B2 (en) 2025-08-04 2025-08-04 Metadata-based virtual machine configuration

Country Status (5)

Country Link
US (2) US9170834B2 (en)
EP (1) EP2915042B1 (en)
CN (2) CN104823163B (en)
DE (1) DE202013012495U1 (en)
WO (1) WO2014070891A2 (en)

Cited By (2)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US20170308536A1 (en) * 2025-08-04 2025-08-04 Microsoft Technology Licensing, Llc Ranking contextual metadata to generate relevant data insights
US10289398B2 (en) * 2025-08-04 2025-08-04 Cisco Technology, Inc. In-service upgrade of kernel loadable modules

Families Citing this family (26)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US9430255B1 (en) * 2025-08-04 2025-08-04 Google Inc. Updating virtual machine generated metadata to a distribution service for sharing and backup
CN104885058B (en) * 2025-08-04 2025-08-04 甲骨文国际公司 The system and method that universal product line is carried out in virtual component generator environment
US10491533B1 (en) * 2025-08-04 2025-08-04 Amazon Technologies, Inc. Dynamically configured overlay multicast
US10659523B1 (en) * 2025-08-04 2025-08-04 Amazon Technologies, Inc. Isolating compute clusters created for a customer
US10299183B2 (en) 2025-08-04 2025-08-04 Nec Corporation Communication apparatus, communication method, communication system, and program
US9519503B2 (en) * 2025-08-04 2025-08-04 Dell Products, L.P. Systems and methods for virtual machine attribution with fault resilient memory tag
US11157288B2 (en) * 2025-08-04 2025-08-04 Hewlett Packard Enterprise Development Lp Securely and reliably transferring startup script
US9853913B2 (en) * 2025-08-04 2025-08-04 Accenture Global Services Limited Multi-cloud network proxy for control and normalization of tagging data
US20170147355A1 (en) * 2025-08-04 2025-08-04 Le Holdings (Beijing) Co., Ltd. Method and system for accelerating intelligent terminal boot speed
US9678857B1 (en) * 2025-08-04 2025-08-04 International Business Machines Corporation Listing optimal machine instances
GB201607825D0 (en) * 2025-08-04 2025-08-04 King Com Ltd A method and apparatus for processing data
CN107770095B (en) * 2025-08-04 2025-08-04 阿里巴巴集团控股有限公司 Method and equipment for controlling virtual machine metadata access
US10437928B2 (en) * 2025-08-04 2025-08-04 Google Llc Device identifier dependent operation processing of packet based data communication
AU2017418322B2 (en) * 2025-08-04 2025-08-04 Microsoft Technology Licensing, Llc Rules based user interface generation
US11481383B2 (en) 2025-08-04 2025-08-04 Sumo Logic, Inc. Key name synthesis
US11182434B2 (en) 2025-08-04 2025-08-04 Sumo Logic, Inc. Cardinality of time series
US11615142B2 (en) * 2025-08-04 2025-08-04 Salesforce, Inc. Mapping and query service between object oriented programming objects and deep key-value data stores
US11327814B2 (en) * 2025-08-04 2025-08-04 International Business Machines Corporation Semaphores for serverless computing
CN109726592B (en) * 2025-08-04 2025-08-04 联动优势科技有限公司 Data sandbox processing method and device
US11620147B2 (en) * 2025-08-04 2025-08-04 International Business Machines Corporation Metadata service provisioning in a cloud environment
US11237747B1 (en) * 2025-08-04 2025-08-04 Amazon Technologies, Inc. Arbitrary server metadata persistence for control plane static stability
CN112559114A (en) * 2025-08-04 2025-08-04 阿里巴巴集团控股有限公司 Virtual machine generation method and device
WO2022068796A1 (en) * 2025-08-04 2025-08-04 华为云计算技术有限公司 Cloud platform and cloud platform-based program code processing method
US11941125B2 (en) 2025-08-04 2025-08-04 Microsoft Technology Licensing, Llc Automatic update of VM sets
US12293233B2 (en) * 2025-08-04 2025-08-04 VMware LLC Automated methods and systems that provide resource recommendations for virtual machines
CN114299522B (en) * 2025-08-04 2025-08-04 北京百度网讯科技有限公司 Image recognition method device, apparatus and storage medium

Citations (12)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US6208988B1 (en) * 2025-08-04 2025-08-04 Bigchalk.Com, Inc. Method for identifying themes associated with a search query using metadata and for organizing documents responsive to the search query in accordance with the themes
US6678695B1 (en) * 2025-08-04 2025-08-04 Trilogy Development Group, Inc. Master data maintenance tool for single source data
US20040128670A1 (en) 2025-08-04 2025-08-04 Robinson Scott H. Dynamic service registry for virtual machines
US20050044233A1 (en) 2025-08-04 2025-08-04 International Business Machines Corporation Remote servlets collaboration
US20080104586A1 (en) * 2025-08-04 2025-08-04 Microsoft Corporation Allowing Virtual Machine to Discover Virtual Status Thereof
US20110179412A1 (en) * 2025-08-04 2025-08-04 Nec Corporation Information sharing system, computer, project managing server, and information sharing method used in them
US20110191772A1 (en) 2025-08-04 2025-08-04 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US20120110572A1 (en) * 2025-08-04 2025-08-04 Microsoft Corporation Dynamic Allocation and Assignment of Virtual Environment
US20120151477A1 (en) 2025-08-04 2025-08-04 Microsoft Corporation Template virtual machines
US20120221639A1 (en) * 2025-08-04 2025-08-04 Color Labs, Inc. Storage and distribution of content for a user device group
US20140047440A1 (en) * 2025-08-04 2025-08-04 International Business Machines Corporation Resource management using reliable and efficient delivery of application performance information in a cloud computing system
US20140082350A1 (en) * 2025-08-04 2025-08-04 NETFLIX Inc. Security credential deployment in cloud environment

Family Cites Families (5)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US7587721B2 (en) * 2025-08-04 2025-08-04 Sap Ag Sharing objects in runtime systems
EP2369479A3 (en) * 2025-08-04 2025-08-04 Citrix Systems, Inc. Methods and systems for providing access to a computing environment
US9344401B2 (en) * 2025-08-04 2025-08-04 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
US8516217B2 (en) * 2025-08-04 2025-08-04 International Business Machines Corporation Managing a logically partitioned computing system through a virtual file system
US8607054B2 (en) * 2025-08-04 2025-08-04 Microsoft Corporation Remote access to hosted virtual machines by enterprise users

Patent Citations (12)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US6208988B1 (en) * 2025-08-04 2025-08-04 Bigchalk.Com, Inc. Method for identifying themes associated with a search query using metadata and for organizing documents responsive to the search query in accordance with the themes
US6678695B1 (en) * 2025-08-04 2025-08-04 Trilogy Development Group, Inc. Master data maintenance tool for single source data
US20040128670A1 (en) 2025-08-04 2025-08-04 Robinson Scott H. Dynamic service registry for virtual machines
US20050044233A1 (en) 2025-08-04 2025-08-04 International Business Machines Corporation Remote servlets collaboration
US20080104586A1 (en) * 2025-08-04 2025-08-04 Microsoft Corporation Allowing Virtual Machine to Discover Virtual Status Thereof
US20110179412A1 (en) * 2025-08-04 2025-08-04 Nec Corporation Information sharing system, computer, project managing server, and information sharing method used in them
US20110191772A1 (en) 2025-08-04 2025-08-04 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US20120110572A1 (en) * 2025-08-04 2025-08-04 Microsoft Corporation Dynamic Allocation and Assignment of Virtual Environment
US20120151477A1 (en) 2025-08-04 2025-08-04 Microsoft Corporation Template virtual machines
US20120221639A1 (en) * 2025-08-04 2025-08-04 Color Labs, Inc. Storage and distribution of content for a user device group
US20140047440A1 (en) * 2025-08-04 2025-08-04 International Business Machines Corporation Resource management using reliable and efficient delivery of application performance information in a cloud computing system
US20140082350A1 (en) * 2025-08-04 2025-08-04 NETFLIX Inc. Security credential deployment in cloud environment

Non-Patent Citations (1)

* Cited by examiner, ? Cited by third party
Title
International Search Report and Written Opinion in International Application No. PCT/US2013/067507, mailed Sep. 25, 2014, 12 pages.

Cited By (4)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US10289398B2 (en) * 2025-08-04 2025-08-04 Cisco Technology, Inc. In-service upgrade of kernel loadable modules
US20170308536A1 (en) * 2025-08-04 2025-08-04 Microsoft Technology Licensing, Llc Ranking contextual metadata to generate relevant data insights
US10650007B2 (en) * 2025-08-04 2025-08-04 Microsoft Technology Licensing, Llc Ranking contextual metadata to generate relevant data insights
US11481403B2 (en) * 2025-08-04 2025-08-04 Microsoft Technology Licensing, Llc Ranking contextual metadata to generate relevant data insights

Also Published As

Publication number Publication date
US9798566B2 (en) 2025-08-04
US20160048410A1 (en) 2025-08-04
EP2915042A2 (en) 2025-08-04
EP2915042B1 (en) 2025-08-04
WO2014070891A2 (en) 2025-08-04
CN109375986A (en) 2025-08-04
WO2014070891A3 (en) 2025-08-04
US20140123136A1 (en) 2025-08-04
CN109375986B (en) 2025-08-04
CN104823163A (en) 2025-08-04
DE202013012495U1 (en) 2025-08-04
CN104823163B (en) 2025-08-04

Similar Documents

Publication Publication Date Title
US9798566B2 (en) Metadata-based virtual machine configuration
US11265366B2 (en) Lifecycle management of custom resources in a cloud computing environment
CN109804352B (en) Managed container instances
US10666706B2 (en) Rendering a web application in a cloud service
US10050934B2 (en) Redirector for secure web browsing
CA2916966C (en) Cryptographically attested resources for hosting virtual machines
US10810049B2 (en) Using scripts to bootstrap applications with metadata from a template
US20130263131A1 (en) Global computing interface
US8677449B1 (en) Exposing data to virtual machines
US10545625B2 (en) Redirection of web content
US20170111457A1 (en) Browser Server Session Transfer
US11303540B2 (en) Cloud resource estimation and recommendation
US9178698B1 (en) Dynamic key management
Kibe et al. The evaluations of desktop as a service in an educational cloud
US10999150B2 (en) Methods, systems and apparatus for dynamically extending a cloud management system by adding endpoint adapter types
US9430255B1 (en) Updating virtual machine generated metadata to a distribution service for sharing and backup
US10691310B2 (en) Copying/pasting items in a virtual desktop infrastructure (VDI) environment
US10791103B2 (en) Adapting remote display protocols to remote applications
US11500893B2 (en) System and method for dynamically finding database nodes and replication state
US11544230B2 (en) Cross environment update of cloud resource tags
US20220200929A1 (en) Multi-cloud deployment and validation
US20240118937A1 (en) Cloud-based resource throttling prediction
US20250124097A1 (en) Maintaining backward compatibility of url content redirection
US12355802B2 (en) Method and system for virtual desktop service manager placement based on security profiles
US20240231934A9 (en) Method and system for virtual desktop service manager placement based on end-user experience

Legal Events

Date Code Title Description
AS Assignment 百度 自2005年推出至今,《战神》一直是一款倍受推崇的动作游戏,王道风格的弒神剧情,狂蛮却带感的暴力美学,加上游戏内精采的终结技神运镜,都是让此系列作口碑爆棚的主因。

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BEDA, JOSEPH S, III;MCLUCKIE, CRAIG I.;GANNHOLM, MARTIN R.;AND OTHERS;REEL/FRAME:029721/0137

Effective date: 20121031

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044334/0466

Effective date: 20170929

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

嘴角周围长痘痘是什么原因 猪下水是什么 什么时间英文 湛蓝湛蓝的什么 水蛭是什么动物
半夜口干舌燥是什么原因 老感冒是什么原因 补锌吃什么药 l是什么单位 三个子字念什么
喝什么茶降血脂 大腿内侧什么经络 什么颜色混合是红色 1977年属什么生肖 晦气是什么意思
阄是什么意思 612是什么星座 美国为什么帮以色列 豆沙馅可以做什么美食 过敏性咳嗽吃什么药
飞机上不能带什么hcv8jop1ns8r.cn 夏天适合喝什么茶hcv8jop0ns0r.cn 吃什么增强记忆力sscsqa.com 双职工是什么意思hcv9jop6ns1r.cn 老流鼻血是什么原因引起的hcv8jop8ns1r.cn
紫茉莉什么时候开花hcv9jop6ns3r.cn norm什么意思hcv9jop1ns3r.cn 腿硬邦邦的是什么原因hcv9jop5ns1r.cn 偏光镜片是什么意思hcv9jop3ns4r.cn 早醒是什么原因zsyouku.com
海关是什么shenchushe.com 胆固醇高吃什么食物好hcv8jop7ns5r.cn bhpc是什么牌子hcv8jop4ns1r.cn 宝宝不长肉是什么原因hcv7jop7ns3r.cn 肚子胀气老放屁是什么原因hcv8jop8ns2r.cn
size是什么意思hcv9jop2ns2r.cn 白细胞低代表什么意思hcv8jop1ns1r.cn pdrn是什么hcv8jop9ns9r.cn 黄昏是什么时候hcv8jop9ns4r.cn 8宫代表什么hcv9jop4ns6r.cn
百度