Systems and methods for disk sharing in cloud content storage

By sharing local storage devices with multiple managed devices and utilizing multiple ports and channels to enable multiple managed devices to access the storage devices simultaneously, the problem of insufficient utilization of local storage devices on managed devices is solved, the utilization rate of storage devices is improved and the system cost is reduced.

CN114095517BActive Publication Date: 2025-10-31SAMSUNG ELECTRONICS CO LTD
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202110178491.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-08-06
Filing Date
2021-02-07
Publication Date
2025-10-31
Estimated Expiration
2041-02-07

AI Technical Summary

Technical Problem

In cloud gaming services, the saturation of the local processors of hosted devices leads to underutilization of local storage devices, limiting the full utilization of storage devices for additional hosted devices.

Method used

By sharing local storage devices with multiple managed devices, and utilizing multiple ports and channels to enable multiple managed devices to access the storage devices simultaneously, the utilization rate of the storage devices is improved.

Benefits of technology

It improves the utilization of local storage devices, reduces system costs, and enables efficient sharing of storage resources across multiple managed devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114095517B_ABST
    Figure CN114095517B_ABST
Patent Text Reader

Abstract

A content provider system and method are provided. The content provider system includes: a repository for storing a content catalog; a storage device including at least a first port and a second port; a first hosting device connected to the first port via a first storage interface to access the storage device and execute content stored on the storage device to provide the content to a first user device; a second hosting device connected to the second port via a second storage interface to access the storage device and execute content stored on the storage device to provide the content to a second user device; and one or more processing circuits for controlling the access of the first and second hosting devices to the storage device from the first and second ports.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims priority and benefit to U.S. Provisional Application 63 / 050,051, filed July 9, 2020, entitled “Local Disk Sharing for Cloud Gaming Storage,” the entire contents of which are incorporated herein by reference. Technical Field

[0003] Aspects of one or more example embodiments of this disclosure relate to local disk sharing, and more specifically, to systems and methods for local disk sharing for cloud content storage. Background Technology

[0004] With the development of the information technology society, more and more data is being remotely stored and served, such as from data centers and cloud storage systems. For example, data centers and cloud storage systems typically include networks of computing and storage resources. Computing resources can process the data stored in storage resources to provide the processed data to users. However, due to limitations in data processing, the effective use of storage resources may be restricted.

[0005] The information disclosed above in this background section is intended to enhance the understanding of the background art of this disclosure, and therefore may contain information that does not constitute prior art. Summary of the Invention

[0006] One or more example embodiments of this disclosure relate to a cloud gaming storage system and method for local disk sharing.

[0007] According to one or more example embodiments of this disclosure, a content provider system includes: a repository configured to store a content catalog; a storage device including at least a first port and a second port; a first hosting device connected to the first port via a first storage interface to access the storage device and configured to execute content stored in the storage device to provide the content to a first user device; a second hosting device connected to the second port via a second storage interface to access the storage device and configured to execute content stored in the storage device to provide the content to a second user device; and one or more processing circuits configured to control the first and second hosting devices to access the storage device from the first and second ports.

[0008] In one embodiment, the first storage interface may correspond to a first peripheral component interconnect fast (PCIe) channel, and the second storage interface may correspond to a second PCIe channel.

[0009] In one embodiment, the storage device may include: a first private namespace associated with a first port and including user data and operating system information corresponding to a first managed device; a second private namespace associated with a second port and including user data and operating system information corresponding to a second managed device; and one or more shared namespaces associated with one or more contents stored in the storage device and including partition information and logical unit numbers (LUNs) corresponding to one or more contents stored in the storage device.

[0010] In one embodiment, one or more processing circuits may be configured to: receive a request for requested content from at least one of the first and second devices; identify one of the available shared namespaces for storing the requested content; and load the requested content from the repository into one of the available shared namespaces.

[0011] In one embodiment, one or more processing circuits may be configured to: identify one of the inactive shared namespaces as one of the available shared namespaces; and resize one of the inactive shared namespaces according to the size of the requested content to store the requested content.

[0012] In one embodiment, one or more processing circuits may be configured to: identify one of the inactive shared namespaces as one of the available shared namespaces; and remove content currently associated with one of the inactive shared namespaces to store the requested content.

[0013] In one embodiment, in response to loading the requested content from the repository into one of the available shared namespaces, the one or more processing circuits may be configured to associate one of the available shared namespaces with at least one of the first and second private namespaces.

[0014] In one embodiment, in response to associating one of the available shared namespaces with at least one of the first and second private namespaces, the one or more processing circuits may be configured to provide the first or second private namespace to the local file system of at least one of the first or second hosting devices.

[0015] In one embodiment, the requested content may correspond to a first request from a first hosting device and a second request from a second hosting device, and one or more processing circuits may be configured to: load the requested content from the repository to the storage device in response to the first request; and register a second request notification corresponding to the completion of loading of the first request.

[0016] According to one or more example embodiments of this disclosure, a method for local disk sharing in a content provider system includes: a storage device including at least a first port and a second port; a first hosting device connected to the first port via a storage interface to execute content stored in the storage device; and a second hosting device connected to the second port via a storage interface to execute content stored in the storage device, the method comprising:

[0017] One or more processing circuits receive a request for requested content from at least one of the first or second hosting devices via at least one of the first or second ports; and one or more processing circuits control the loading of the requested content from the repository to the storage device.

[0018] In one embodiment, the storage interface may include at least a first peripheral component interconnect fast (PCIe) channel corresponding to the first port and a second PCIe channel corresponding to the second port.

[0019] In one embodiment, the storage device may include: a first private namespace associated with a first port and including user data and operating system information corresponding to a first managed device; a second private namespace associated with a second port and including user data and operating system information corresponding to a second managed device; and one or more shared namespaces associated with one or more contents stored in the storage device and including partition information and logical unit numbers (LUNs) corresponding to one or more contents stored in the storage device.

[0020] In one embodiment, the method may further include: identifying one of the available shared namespaces for storing the requested content by one or more processing circuits; and loading the requested content from the repository into one of the available shared namespaces by one or more processing circuits.

[0021] In one embodiment, the method may further include: identifying one of the inactive shared namespaces as one of the available shared namespaces by one or more processing circuits; and resizing one of the inactive shared namespaces according to the size of the requested content to store the requested content.

[0022] In one embodiment, the method may further include: one or more processing circuits identifying one of the inactive shared namespaces as one of the available shared namespaces; and one or more processing circuits processing the content currently associated with one of the inactive shared namespaces to store the requested content.

[0023] In one embodiment, in response to loading the requested content from the repository into one of the available shared namespaces, the method may further include: associating one of the available shared namespaces with at least one of the first and second private namespaces by one or more processing circuits.

[0024] In one embodiment, in response to associating one of the available shared namespaces with at least one of the first and second private namespaces, the method may further include: providing the first or second private namespace to the local file system of at least one of the first or second hosting devices by one or more processing circuits.

[0025] In one embodiment, the requested content may correspond to a first request from a first hosting device and a second request from a second hosting device, and the method may further include: in response to the first request, loading the requested content from a repository to a storage device by one or more processing circuits; and registering a second notification request by one or more processing circuits, the notification corresponding to the completion of loading of the first request.

[0026] According to one or more example embodiments of this disclosure, a system includes: a storage device including a first port; a second port; a first private namespace associated with the first port; a second private namespace associated with the second port; and one or more shared namespaces associated with content stored on the storage device; a first hosting device connected to the first port via a first peripheral component interconnect Express (PCIe) channel to access the storage device and configured to execute content stored on the storage device to stream the content to a first user device; a second hosting device connected to the second port via a second PCIe channel to access the storage device and configured to execute content stored on the storage device to stream the content to a second user device; and one or more processing circuitry configured to: receive a request for requested content from at least one of the first and second hosting devices; identify one of the available shared namespaces for storing the requested content; and load the requested content from a repository of a content catalog into one of the available shared namespaces.

[0027] In one embodiment, in response to loading the requested content from the repository into one of the available shared namespaces, the one or more processing circuits may be further configured to: associate one of the available shared namespaces with at least one of the first and second private namespaces; and provide the first or second private namespace to the local file system of at least one of the first or second hosting devices. Attached Figure Description

[0028] The above and other aspects and features of this disclosure will become more apparent to those skilled in the art from the following detailed description of exemplary embodiments with reference to the accompanying drawings.

[0029] Figure 1 A block diagram of a content provider system according to one or more example embodiments of the present disclosure is shown.

[0030] Figure 2 A block diagram of a content provider platform according to one or more example embodiments of the present disclosure is shown.

[0031] Figure 3 One or more example embodiments according to this disclosure are shown. Figure 2 The diagram shown is a block diagram of the data storage manager for the game server.

[0032] Figure 4 A block diagram illustrating a storage device configuration according to one or more example embodiments of the present disclosure is shown.

[0033] Figures 5A-5C This is a flowchart of a method for local disk storage sharing according to one or more example embodiments of the present disclosure. Detailed Implementation

[0034] In the following description, exemplary embodiments will be illustrated in more detail with reference to the accompanying drawings, in which the same reference numerals consistently denote the same elements. However, this disclosure may be embodied in a variety of different forms and should not be construed as being limited to the embodiments shown herein. Rather, these embodiments are provided as examples so that this disclosure will be thorough and complete, and will fully convey to those skilled in the art various aspects and features of this disclosure. Therefore, processes, elements, and techniques that are not essential for a person of ordinary skill in the art to a full understanding of the aspects and features of this disclosure may not be described. Unless otherwise stated, the same reference numerals denote the same elements throughout the drawings and written description, and therefore their description need not be repeated.

[0035] Typically, cloud gaming services for console-based gaming platforms enable users of such platforms to remotely run and play games stored in the cloud. For example, these cloud gaming services may host multiple physical console devices in a rack server, allowing each hosted device to directly load, execute, and stream the game to the user's personal device. In other words, each physical console device hosted by a rack server can load a game stored in the cloud, execute the game locally, and stream the game directly to the user's personal device, allowing the user to play the game remotely. There is no need to directly download the game (e.g., the entire game or a portion of the game) onto the user's personal device.

[0036] For example, each rack server can host multiple physical console devices, and each hosted device can have its own local processor, local disk storage, etc., allowing users to remotely load, access, and play games on one of the specific hosted devices on their personal devices. However, in this scenario, the local processor of the hosted device may become saturated, leading to insufficient use of the hosted device's local disk storage.

[0037] For example, each hosting device for a cloud gaming service using a console-based gaming platform can correspond to a physical console device of the console-based gaming platform, such that each hosting device can have a local processor, such as a central processing unit (e.g., CPU), a graphics processing unit (e.g., GPU), or an application processing unit (e.g., APU) that can correspond to a combination of CPU / GPU, or a local storage device such as a solid-state drive (SSD). However, in this case, for example, during gameplay, the local processor of each hosting device may become saturated, so that even if the local storage device has bandwidth and / or capacity, the local storage device of each hosting device may not be fully utilized, for example, to serve other users. Therefore, although adding additional hosting devices can expand the local processor of the cloud gaming service, for example, by adding additional local processors, the local storage device of the additional hosting devices may still be underutilized because the utilization of the additional local storage device may be limited by the saturation of its local processor.

[0038] According to one or more example embodiments of this disclosure, instead of having a local storage device for each managed device, the local storage device can be shared by multiple managed devices, for example, such that each local storage device can be used by multiple managed devices simultaneously (e.g., concurrently or at the same time). For example, each local storage device may include multiple ports (e.g., multiple channels), and each port may be dedicated to a corresponding one of the multiple managed devices. In this case, for example, when a game is loaded into the local storage device, one of the multiple managed devices can write to the local storage device at a time through its dedicated port (e.g., its dedicated channel), and for example, when the game currently stored in the local storage device is executed, each of the multiple managed devices can read from the local storage device simultaneously (e.g., concurrently or at the same time) through its dedicated port (e.g., its dedicated channel). Therefore, the utilization of the local storage device can be improved, and system costs can be reduced.

[0039] Figure 1 A block diagram of a content provider system according to one or more example embodiments of the present disclosure is shown.

[0040] Reference Figure 1Content provider system 100 may include content provider platform 102 and one or more user devices 104 to 106. One or more user devices 104 to 106 may access content provider platform 102 via communication network 108 (e.g., wide area network (WAN), local area network (LAN), Internet, cellular network, etc.) to access content served by content provider platform 102. For example, in some embodiments, content provider platform 102 may provide video content, game content, etc., which may be streamed by one or more user devices 104 to 106 via communication network 108. Hereinafter, for convenience, content provider system 100 may be described in the context of cloud gaming services for console-based gaming platforms, such that content provider platform corresponds to cloud gaming provider platform; however, this disclosure is not limited thereto, and in various embodiments, content provider system 100 may provide user devices with any suitable type of content, such as video streaming content, audio streaming content, data search content, etc.

[0041] Each of one or more user devices 104 to 106 may correspond to a suitable computing device to enable a user of the user device (e.g., 104 or 106) to receive (e.g., stream) content (e.g., game content) from the content provider platform 102 and to provide control signals to the content provider platform 102 to control the content (e.g., control content in a game). For example, in some embodiments, each of one or more user devices 104 to 106 may include a console device corresponding to a console-based game platform associated with the content provider platform 102, but this disclosure is not limited thereto. For example, each of user devices 104 to 106 may include any suitable computing device on which at least a shell application or emulator application is installed to receive and control content served by the content provider platform 102, such as a mobile phone, smartphone, tablet, PC, laptop computer, smart wearable device, etc. In other examples, each of user devices 104 to 106 may include a smart TV, media streaming device, media streaming dongle, etc., to enable a user to stream media served by the content provider platform 102. In some embodiments, each user device 104 to 106 may communicate with the content provider platform 102 via the communication network 108, enabling its user to remotely select, load, and / or execute (e.g., run) games stored on the content provider platform 102.

[0042] Figure 2 A block diagram of a content provider platform according to one or more example embodiments of the present disclosure is shown.

[0043] Reference Figure 2In one or more example embodiments of this disclosure, the content provider platform 102 may include a game server 202 and a cloud storage 204. The game server 202 may include one or more rack servers 206 and one or more processing circuits 208. Each of the one or more rack servers 206 may include multiple device boards 210 and 212 and a local storage device 214. Each of the device boards 210 and 212 may correspond to a device board of a console device, such that each device board 210 and 212 can execute (e.g., run) a game on the console device. For example, each of the device boards 210 and 212 may include the console device's operating system 213, a local file system 216, and one or more processing circuits 218 (e.g., CPU, GPU, APU, etc.).

[0044] In one or more example embodiments of this disclosure, each device board 210 and 212 of rack server 206 may share the same local storage device 214. For example, each device board 210 and 212 of rack server 206 may be connected to local storage device 214 via dedicated ports (e.g., dedicated channels) 220 and 222 to write to and / or read from local storage device 214. Figure 2 In the non-limiting example shown, local storage device 214 can be a dual-port storage device, and therefore may include a first port 220 and a second port 222. In this case, rack server 206 may include two device boards 210 and 212, the first device board 210 being connected to local storage device 214 via the first port 220, and the second device board 212 being connected to local storage device 214 via the second port 222. Although Figure 2 The local storage device 214 is shown to be a dual-port storage device; therefore, the rack server 206 includes two device boards 210 and 212 corresponding to the number of ports on the local storage device 214, but the invention is not limited thereto. Furthermore, the local storage device 214 may include any suitable number of available ports (e.g., available access channels) such that the rack server 206 may include any suitable number of device boards corresponding to the number of available ports on the local storage device 214.

[0045] In some embodiments, local storage device 214 may be considered as secondary storage that persistently stores data (e.g., game data) accessible by each device board 210 and 212 of the respective rack server 206. For example, in some embodiments, local storage device 214 may be any suitable persistent storage device, such as an SSD. However, this disclosure is not limited thereto, and in other embodiments, local storage device 214 may include (or may be) any suitable storage device, such as non-volatile memory (e.g., PCM (phase-change memory)), RRAM or ReRAM (resistive random access memory), magnetic storage devices (e.g., hard disk drives (HDDs), etc.), other types of flash memory devices (e.g., USB flash drives, etc.).

[0046] In various embodiments, local storage device 214 may conform to large form factor standards (e.g., 3.5-inch hard disk drive form factor), small form factor standards (e.g., 2.5-inch hard disk drive form factor), M.2 form factor, E1.S form factor, etc. In other embodiments, local storage device 214 may conform to any suitable or desired derivative of these forms. For convenience, local storage device 214 may be described below in the context of SSDs, but this disclosure is not limited thereto.

[0047] Local storage device 214 can be communicatively connected to device boards 210 and 212 via storage interface 224. Storage interface 224 can facilitate communication between device boards 210 and 212 (e.g., using connectors and protocols). In some embodiments, storage interface 224 can facilitate the exchange of storage requests and responses between device boards 210 and 212 and local storage device 214. In some embodiments, storage interface 224 can facilitate data transfers between local storage device 214 and device boards 210 and 212.

[0048] For example, in one embodiment, storage interface 224 (e.g., connector and its protocol) may include (or may conform to) Peripheral Component Interconnect Fast (PCIe), etc. However, this disclosure is not limited thereto, and in other embodiments, storage interface 224 (e.g., connector and its protocol) may conform to other suitable storage interfaces, such as Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Remote Direct Memory Access over Ethernet (RDMA), Serial Advanced Technology Attachment (SATA), Fibre Channel, High-Speed ​​Non-Volatile Memory (NVMe), Fibre-based NVMe (NVMe-oF), etc. In other embodiments, storage interface 224 (e.g., connector and its protocol) may include (or may conform to) various general-purpose interfaces, such as Ethernet, Universal Serial Bus (USB), etc. For convenience, storage interface 224 may be described below in the context of a PCIe interface, but this disclosure is not limited thereto.

[0049] Cloud storage 204 can be communicatively connected to game server 202 via cloud storage interface 226 and can correspond to the repository of content provider platform 102 to store a directory of content served by game server 202 (e.g., a directory of game content). For example, cloud storage 204 can store a copy of each game in the content directory, so that each game stored in cloud storage 204 can be read (e.g., retrieved) from cloud storage 204 and written (e.g., loaded) to local storage device 214 as needed or desired. In one or more example embodiments of this disclosure, cloud storage 204 can be implemented as external storage for game server 202, but this disclosure is not limited thereto, and cloud storage 204 can be implemented within game server 202 as its internal storage. For example, in various embodiments, cloud storage 204 can be distributed across multiple servers or computers (e.g., it can exist in a distributed location), or it can be implemented within a single computer (e.g., a server, a shell, etc.).

[0050] Although Figure 2 Content provider platform 102 is illustrated, but although cloud storage 204 is included as a content repository, this disclosure is not limited thereto, and content provider platform 102 may include any suitable storage resource pool for storing content served by content provider platform 102. For example, in various embodiments, content provider platform 102 may include any suitable external or internal storage resources as a repository, such as data centers, edge data centers, 5G-enabled edge data centers, etc., for storing various content (e.g., games, videos, audio, data, etc.) served by content provider platform 102.

[0051] The processing circuitry 218 of each device board 210 and 212 can control various operations of its respective device board 210 and 212. For example, the processing circuitry 218 of each device board 210 and 212 can issue commands to the local storage device 214 and can retrieve data from the local storage device 214. The processing circuitry 218 of each device board 210 and 212 can execute (e.g., run) game content stored in the local storage device 214 and can receive control signals from the corresponding user device (e.g., 104 or 106) to control the game content (e.g., to control in-game content).

[0052] The processing circuitry 208 of the game server 202 can control various operations of the game server 202. For example, the processing circuitry 208 can facilitate communication via a communication interface 228 between a user device (e.g., 104 or 106) and a corresponding device board 210 or 212 assigned to the user device to provide game content. The processing circuitry 208 can communicate with the processing circuitry 218 of the corresponding device board 210 or 212 to stream game content executed on the corresponding device board 210 or 212 to the user device and to provide control signals from the user device to the corresponding device board 210 or 212 to control the game content.

[0053] In some embodiments, game server 202 may include cloud storage interface 226 and communication interface 228. Cloud storage interface 226 may facilitate communication between cloud storage 204 and game server 202. Communication interface 228 may facilitate communication between one or more user devices 104 and 106 and game server 202 (e.g., via communication network 108). Each of interfaces 226 and 228 may be or may include a wired or wireless communication interface (e.g., jack, antenna, transmitter, receiver, transceiver, wired terminal, etc.) for data communication with user devices 104 and 106 or cloud storage 204. In various embodiments, communication via interfaces 226 and 228 may be direct (e.g., via local wired or wireless communication) or via communication network 108 (e.g., WAN, LAN, Internet, cellular network, etc.). For example, interfaces 226 and 228 may include Ethernet cards and ports for sending and receiving data via Ethernet-based communication links or networks. In another example, interfaces 226 and 228 may include Wi-Fi transceivers for communication via wireless communication networks. In another example, one or both of interfaces 226 and 228 may include a cellular or mobile phone communication transceiver.

[0054] According to one or more example embodiments of this disclosure, as will be referred to Figure 3In a more detailed description, the game server 202 may further include a data manager 302. The data manager 302 ensures access control and concurrency control between device boards 210 and 212 and the local storage device 214. For example, the ports of a multi-port storage device are typically used for redundancy purposes, such as in the event of a failover if one port fails. In this case, if the storage device receives write requests simultaneously (e.g., at the same or substantially the same time) from two or more ports, the storage device may not be able to guarantee how the data will be written.

[0055] Therefore, in one or more example embodiments of this disclosure, the game server 202 may include a data manager 302 (e.g., see...). Figure 3 This is to control access between device boards 210 and 212 and the shared local storage device 214. For example, in some embodiments, at least one of the processing circuitry 218 of the first device board 210, the processing circuitry 218 of the second device board 212, the processing circuitry 208 of the game server 202, and / or the processing circuitry (e.g., a storage controller or storage processor) of the local storage device 214 may include a data manager 302 (or a suitable portion thereof). In some embodiments, the data manager 302 may be distributed such that each rack server 206 or each device board 210 and 212 includes a data manager 302, thus simplifying the implementation of the data manager 302. For example, by assigning the data manager 302 to each rack server 206 or each device board 210 and 212, the data manager 302 may only need to control access to the corresponding local storage device 214 of the rack server 206. However, this disclosure is not limited thereto, and in other embodiments, the data manager 302 may be centralized, for example, to control access to multiple local storage devices 214 of multiple rack servers 206.

[0056] Figure 3 One or more example embodiments according to this disclosure are shown. Figure 2 The diagram shown is a block diagram of the data storage manager for the game server. Figure 4 A block diagram illustrating a storage device configuration according to one or more example embodiments of the present disclosure is shown.

[0057] In one or more example embodiments of this disclosure, the game server 202 may further include a data manager 302. Briefly, the data manager 302 may control access to local storage device 214 by the corresponding device boards 210 and 212. In some embodiments, the data manager 302 may track game loading requests from users and may determine whether a game has already been loaded onto local storage device 214, or should be loaded onto local storage device 214 from cloud storage 204. In some embodiments, the data manager 302 may determine whether a game can be loaded onto local storage device 214 from cloud storage 204 and the space (e.g., available logical block addressing (LBA)) of local storage device 214 that can be used to load the game. In some embodiments, the data manager 302 may track updates to local storage device 214 by either the first device board 210 or the second device board 212 to ensure, for example, that when a new game is loaded onto local storage device 214, the local file system 216 of each of the first device board 210 and the second device board 212 is synchronized with each other.

[0058] For more details, see [link to relevant documentation]. Figure 3 In some embodiments, the data manager 302 may include processing circuitry 304, which includes a processor 306 and a memory 308. For example, in one embodiment, processing circuitry 304 may correspond to processing circuitry 218 of each of the first and second device boards 210 and 212, but this disclosure is not limited thereto. Processing circuitry 304 may be communicatively connected to storage interface 224 to facilitate communication with local storage device 214, and may be communicatively connected to device board interface 314 to facilitate communication with each device board 210 and 212 (e.g., to facilitate communication between data managers 302 of each device board 210 and 212). Processor 306 may be implemented as a general-purpose processor, application-specific integrated circuit (ASIC), one or more field-programmable gate arrays (FPGAs), a set of processing components, or other suitable electronic processing components.

[0059] Memory 308 may include one or more devices (e.g., RAM, ROM, flash memory, hard disk storage, SCM (storage class memory), etc.) for storing data and / or computer code to perform or facilitate the various processes described herein. Memory 308 may be or may include volatile or non-volatile memory. Memory 308 may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described herein. According to an example embodiment, memory 308 is communicatively connected to processor 306 via processing circuitry 304 and includes computer code for (e.g., via processing circuitry 304 and / or processor 306) performing one or more processes described herein.

[0060] According to one or more example embodiments of this disclosure, memory 308 may include a directory manager 310 and a data coordinator 312. Each of the directory manager 310 and the data coordinator 312 may be implemented in software and / or firmware, for example, as instructions stored in memory 308 and executed by processor 306 (or processing circuitry 304).

[0061] Directory manager 310 can control access to and from local storage device 214 from the first device board 210 and the second device board 212. Directory manager 310 can determine the location of the requested game and whether the requested game is currently stored on local storage device 214, or may need to be loaded onto local storage device 214 from a repository (e.g., from cloud storage 204). For example, in some embodiments, directory manager 310 can ensure that only a single copy of a particular game is stored on local storage device 214, for example, to increase the capacity of local storage device 214, and thus can determine whether local storage device 214 already has the particular game stored thereon (e.g., cached thereon), or whether the particular game needs to be loaded from cloud storage 204 onto local storage device 214. However, this disclosure is not limited thereto, and in other embodiments, local storage device 214 may store multiple copies of a particular game based on user needs, applications, the number of device boards connected to local storage device 214, storage capacity, etc. In some embodiments, the directory manager 310 can track the loading status of the requested game in the local storage device 214, and can determine the owner of the loading request by exchanging control messages, even in the case of concurrent loading requests.

[0062] For example, Figure 3 and Figure 4As shown, in some embodiments, the local storage device 214 may be divided into a private namespace 318 and a shared namespace 320. The private namespace 318 may include a plurality of private namespaces 402 and 404, each private namespace 402 and 404 corresponding to a port of the local storage device 214, such that each private namespace 402 and 404 corresponds to one of the first and second device boards 210 and 212 connected to the first and second ports 220 and 222 of the local storage device 214. As a non-limiting example, when the first port 220 of the local storage device 214 is dedicated to the first device board 210, the first private namespace 402 may correspond to the first device board 210, and when the second port 222 of the local storage device 214 is dedicated to the second device board 212, the second private namespace 404 may correspond to the second device board 212. For example, in some embodiments, each dedicated namespace 402 and 404 may include OS information of a corresponding one of the first device board 210 and the second device board 212, user game data currently stored on the corresponding device board 210 or 212 (e.g., user profile data, saved game data, etc.), and games currently loaded or requested to be loaded (e.g., attached or streamed) on the corresponding device board 210 or 212 for each user (e.g., up to 8 users) (e.g., one game per user and a shared namespace), etc.

[0063] Shared namespace 320 may include multiple shared namespaces 406 to 414, each corresponding to one or more games currently stored on local storage device 214. In some embodiments, shared namespaces 406 to 414 may have a static size, in which case each of shared namespaces 406 to 414 may store only one game (e.g., depending on the size of the game). In other embodiments, the size of shared namespaces 406 to 414 may be adjusted as needed or desired (e.g., according to resizing commands from data coordinator 312 or directory manager 310) such that each shared namespace 406 to 414 may store one or more games (e.g., depending on the size of the game and the size of the shared namespace). In some embodiments, each of shared namespaces 406 to 414 may allow simultaneous reading of games from it, but may allow only one load request per game at a time. Although Figure 4 Sixteen shared namespaces 406-414 are shown, but this disclosure is not limited thereto, and the local storage device 214 may have any suitable number of shared namespaces depending on its resources (e.g., capacity, resizing capabilities, etc.).

[0064] Directory manager 310 can use (e.g., can access) each of private namespace 318 and shared namespace 320 to determine various states of games stored on or loaded on local storage device 214. For example, directory manager 310 can use private namespace 318 to determine whether a user associated with one of the device boards has received or is currently executing the game. Directory manager 310 can use shared namespace 320 to determine whether a requested game is currently stored on local storage device 214. Directory manager 310 can monitor updates to private namespace 318 and / or shared namespace 320 (e.g., via data coordinator 312) to determine whether a game has been loaded and / or provided to the device board for execution.

[0065] Data coordinator 312 can configure local storage device 214 and control writes to (e.g., loads) and reads from local storage device 214. For example, when directory manager 310 determines that a requested game should be loaded on local storage device 214, data coordinator 312 can read the requested game (e.g., the requested game title) from cloud storage 204 and load (e.g., write) the requested game to an appropriate space on local storage device 214 (e.g., one of the shared namespaces 320). In some embodiments, data coordinator 312 can update the directory state (e.g., update the shared namespace) and can (e.g., via a private namespace) attach the location of the requested game (e.g., the shared namespace) to the device board on which the game is requested to be loaded.

[0066] In some embodiments, when the data coordinator loads a game from cloud storage 204 to local storage device 214, the data coordinator 312 can configure one of the available shared namespaces 406-414 to store the game. For example, once loading is complete, the data coordinator 312 can update the available shared namespaces with the partition and logical unit number (LUN) associated with the loaded game. The data coordinator can then attach the shared namespace (e.g., partition and LUN) to the corresponding one of device boards 210 or 212. For example, the data coordinator 312 can update the dedicated namespace of the corresponding device board with the shared namespace (e.g., partition and LUN) corresponding to the loaded game.

[0067] In some embodiments, the data coordinator 312 may mount a game (e.g., a shared namespace) to a directory (e.g., a local file system 216) so that a user can run (e.g., execute) the game via the corresponding device board 210 or 212. For example, in some embodiments, the data coordinator may communicate with the local file system 216 of each device board 210 and 212 to ensure that the local file system 216 of each device board 210 and 212 has the latest updates to the local storage device 214 (e.g., updates to private and / or shared namespaces). Therefore, in some embodiments, instead of using a distributed file system, such as a digital file system that may increase latency, complexity, and cost, the data coordinator 312 may remount namespaces (e.g., private and shared namespaces) to the local file system 216 of each of the first and second device boards 210 and 212 as needed or desired (e.g., when updates exist for any private and / or shared namespaces).

[0068] Figures 5A-5C This is a flowchart of a method for local disk storage sharing according to one or more example embodiments of the present disclosure.

[0069] However, this disclosure is not limited to Figures 5A-5C The order or number of operations of method 500 shown can be altered to any desired order or number of operations recognized by those skilled in the art. For example, in some embodiments, the order may vary, or the method may include fewer or more operations. Furthermore, the operations shown in method 500 can be performed by any suitable component of those components of one or more of the example embodiments described above, or any suitable combination of such components.

[0070] Reference Figure 5A At box 502, method 500 begins and receives a selection of a game from a user device associated with the device board. For example, in some embodiments, the user may use a user device (e.g., 104 or 106) to communicate with one of device boards 210 or 212 to select a game from a game catalog served by content provider platform 102. At box 504, the location of the game is requested. For example, the device board may request the location of the game device from catalog manager 310, and method 500 may continue at box 516, which will be referenced below. Figure 5B To describe in more detail.

[0071] Still refer to Figure 5AAt box 506, it is determined whether a valid location has been received. For example, in some embodiments, the device board may determine at box 506 whether a valid location has been received from the catalog manager 310, and if not (e.g., no at box 506), then at box 508, it is determined whether a loading completion notification has been returned from the catalog manager 310. For example, in some embodiments, at box 506, the device board may determine whether the catalog manager 310 has returned the game location and timestamp (e.g., see...). Figure 5B In box 518), and in box 508, the device board can determine whether the catalog manager 310 returns a load completion notification with the game location and timestamp (see, for example, see...). Figure 5B (See box 542 in the diagram). If no (for example, no at 508), the device board may continue to wait until a load completion notification is received at box 508.

[0072] On the other hand, if the device board receives a location and timestamp (e.g., yes in 506 or 508), then at box 510 it can be determined whether the device board's local file system 216 is available. For example, in some embodiments, the device board may request at box 510 to the data coordinator 312 to check whether its local file system 216 has an updated game location, and method 500 may continue at box 544, which will be referenced below. Figure 5C To describe in more detail.

[0073] Still refer to Figure 5A At box 512, it can be determined whether the game is available on the local file system. For example, in some embodiments, the device board may wait for a notification indicating that its local file system 216 has been updated (e.g., see...). Figure 5C (See box 552). If no notification has been received (e.g., no at box 512), the device board can continue to wait for the local file system 216 to be mounted (e.g., see box 552). Figure 5C (See box 546 in the image) or is reinstalled (e.g., see [link]). Figure 5C (See box 550 in the diagram). On the other hand, if a notification is received (e.g., yes at box 512), then at box 514, the device board can load the game into its internal memory via its local file system 216 to run (e.g., execute) the game, and method 500 can end.

[0074] Reference Figure 5B When the device board requests the game's location from the directory manager at box 504, method 500 can do so as follows: Figure 5BContinuing as shown, at box 516 it can be determined whether the game is already stored in local storage device 214 (e.g., has been cached). For example, in some embodiments, directory manager 310 can check the game status in a directory of shared namespace 320 to determine whether the game is already loaded in local storage device 214. If so (e.g., yes at box 516), directory manager 310 can return the game location and timestamp at box 518, and method 500 can continue at box 506, causing the device board to request an available local file system at box 510.

[0075] On the other hand, if the game is not already stored on local storage device 214 (e.g., no at box 516), it can be determined at box 520 whether the game is being loaded by another device board associated with local storage device 214. For example, directory manager 310 can check the game status in the directory (e.g., the game status is "loading") to determine if another device board has requested to load the game into local storage device 214. If so (e.g., yes at box 520), the user can be registered as a server for the game in the directory at box 522 for a loading completion notification, and a waiting message can be returned at box 524. In this case, because no valid location was received at box 506 (e.g., see...), Figure 5A Therefore, the device board can continue to wait for the loading completion notification at box 508, and method 500 can continue at box 534 to allow the game to load successfully.

[0076] If the game is not loaded by another device board (e.g., no at box 520), then at box 526, it can be determined whether there is sufficient space in local storage device 214 for loading the game. For example, in some embodiments, directory manager 310 (or data coordinator 312) can determine whether there is an available shared namespace 320 with sufficient capacity to store the game. If no (e.g., no at box 526), ​​space can be freed up for the game. For example, in some embodiments, directory manager 310 (or data coordinator 312) can remove the game from shared namespace 320 to make shared namespace 320 available for storing the game.

[0077] If there is sufficient space in local storage device 214 for the game (e.g., yes at box 526), ​​the game status in the directory can be changed to "Loading" at box 530, and the loaded game can be launched at box 532. For example, in some embodiments, directory manager 310 can instruct data coordinator 312 to load the game from cloud storage 204 into the available shared namespace 320. In this case, data coordinator 312 can read the game from cloud storage 204 to load the game into the available namespace 320 via the local file system, and can update the available namespace 320 using the partitions and LUNs associated with the loaded game.

[0078] At box 534, it can be determined whether the game has been successfully loaded. For example, in some embodiments, directory manager 310 can monitor the game status in the directory to determine whether data coordinator 312 has updated the available namespace 320 with the loaded game information (e.g., partitions and LUNs). If not (e.g., no at box 534), the directory manager can continue to wait for updates at box 534. On the other hand, if the game has been successfully loaded (e.g., yes at box 534), then at box 536, the status of the game in the directory can be changed to "cached," and at box 538, it can be determined whether any users are waiting for the game to finish loading. For example, in some embodiments, directory manager 310 can determine whether the user who requested to load the game is still online, and / or determine whether there are any pending wait messages for users waiting for the game to load.

[0079] If no (e.g., no at box 538), an error state may occur, and method 500 can terminate. On the other hand, if a user is waiting for loading to complete at box 538, a notification with the game position and timestamp (e.g., a loading completion notification) can be returned at box 542, and the method can continue at box 510 (e.g., see [link]). Figure 5A For example, in some embodiments, at block 510, directory manager 310 may send a notification to device board, and device board may request the availability of local file system for the loaded game.

[0080] Reference Figure 5C When the device board requests an available local file system for the loaded game at box 510, method 500 can proceed as follows: Figure 5CContinuing as shown, at box 544, it can be determined whether the game location (e.g., namespace, partition, LUN, etc.) should be mounted to the local file system 216. For example, in some embodiments, the data coordinator 312 may communicate with the local file system 216 associated with the device board to determine whether the local file system 216 has updated namespace information corresponding to the loaded game. In this case, because each device board (e.g., device board) may have its own local file system 216, and the game can be loaded onto the shared local storage device 214 at any time when one of the device boards updates the local storage device 214, another device board may not be aware of the update because its local file system 216 may have outdated namespace information. Therefore, in some embodiments, the data coordinator 312 may mount or remount the updated namespace information corresponding to the loaded game to the local file system 216.

[0081] For example, in some embodiments, if the game location (e.g., namespace, partition, LUN, etc.) is not mounted to local file system 216 (e.g., no at box 544), then at box 546, the game location can be mounted to the local file system, and a notification that the local file system is available is returned at operation 552. For example, in some embodiments, data coordinator 312 can communicate with the directory manager to determine that local file system 216 has the current game location, and if not (e.g., no at operation 544), then data coordinator 312 can mount the namespace (e.g., partition and LUN) corresponding to the game location to local file system 216.

[0082] On the other hand, if the game location is already mounted on the local file system (e.g., yes at box 544), it can be determined whether the mount point of the game location is outdated. For example, because shared storage device 214 can be accessed at any time by any device board connected to its port, the game location can change, and a game location mounted on local file system 216 may include outdated game location information.

[0083] If the game location mounted on local file system 216 is not stale (e.g., no at box 548), a notification about the availability of local file system 216 can be returned at box 552, and the method can continue at box 514 (e.g., see...). Figure 5AThis allows the game to be loaded into the internal memory of the device board (e.g., the corresponding device board) via the local file system 216 for execution. Alternatively, if the mount point is obsolete (e.g., yes at box 548), the game location can be remounted to the local file system 216, and a notification can be returned so that method 500 can continue at box 514 (e.g., see [link to relevant documentation]). Figure 5A ).

[0084] In the accompanying drawings, for clarity, the relative dimensions of elements, layers, and regions may be enlarged and / or simplified. For ease of illustration, spatial relative terms such as “below,” “below,” “under,” “lower,” “below,” “above,” “above,” etc., may be used herein to readily describe the relationship between one element or feature as shown and one or more other elements or features. It will be understood that, in addition to the orientations depicted in the drawings, spatial relative terms are also intended to cover different orientations of the device in use or operation. For example, if the device in the drawings is flipped, an element described as “below,” “below,” or “lower” of other elements or features will be oriented “above” of other elements or features. Thus, the example terms “below” and “below” can include both above and below orientations. The device may be oriented in other ways (e.g., rotated 90 degrees or otherwise), and the spatial relative descriptive terms used herein should be interpreted accordingly.

[0085] It will be understood that although the terms “first,” “second,” “third,” etc., may be used herein to describe various elements, components, regions, layers, and / or portions, these elements, components, regions, layers, and / or portions should not be limited by these terms. These terms are used to distinguish one element, component, region, layer, or portion from another element, component, region, layer, or portion. Therefore, without departing from the spirit and scope of this disclosure, the first element, component, region, layer, or portion described below may be referred to as the second element, component, region, layer, or portion.

[0086] It will be understood that when a component or layer is referred to as being "on," "connected to," or "coupled to" another component or layer, it can be directly on, connected to, or coupled to the other component or layer. Other components or layers may be present, or one or more intermediate components or layers may be present. Additionally, it will be understood that when a component or layer is referred to as being "between" two components or layers, it can be the only component or layer between the two components or layers, or one or more intermediate components or layers may also be present.

[0087] The terminology used herein is for the purpose of describing particular embodiments and is not intended to limit this disclosure. As used herein, the singular forms “a” and “an” are also intended to include the plural forms unless the context clearly indicates otherwise. It will be further understood that, when used in this specification, the terms “comprising,” “including,” “containing,” “with,” “having,” “owning,” and “all” specify the presence of features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or combinations thereof. As used herein, the term “and / or” includes any and all combinations of one or more associated listed items. When an expression such as “at least one” precedes a list of elements, it modifies the entire list of elements and not the individual elements within the list.

[0088] As used herein, the terms “substantially,” “approximately,” and similar terms are used as approximate terms rather than terms of degree and are intended to account for inherent variations in measured or calculated values ​​that will be recognized by those skilled in the art. Furthermore, when describing embodiments of this disclosure, the use of “may” refers to “one or more embodiments of this disclosure.” As used herein, the terms “use,” “adopt,” and “has been used” may be considered synonymous with the terms “utilize,” “apply,” and “has been exploited,” respectively. Similarly, the term “exemplary” is intended to indicate or illustrate.

[0089] Unless otherwise defined, all terms used herein (including technical and scientific terms) shall have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. It will also be understood that terms such as those defined in common dictionaries shall be interpreted as having a meaning consistent with their meaning in the relevant field and / or the context of this specification, and shall not be interpreted as having an idealized or overly formal meaning unless expressly defined herein.

[0090] Although some exemplary embodiments have been described, it will be readily understood by those skilled in the art that various modifications can be made to the exemplary embodiments without departing from the spirit and scope of this disclosure. It will be understood that, unless otherwise described, the description of features or aspects in each embodiment should generally be considered applicable to other similar features or aspects in other embodiments. Therefore, it will be apparent to those skilled in the art that features, characteristics, and / or elements described in connection with particular embodiments can be used alone or in combination with features, characteristics, and / or elements described in connection with other embodiments, unless otherwise specifically indicated. Therefore, it should be understood that the foregoing is illustrative of various exemplary embodiments and should not be construed as limiting to the specific exemplary embodiments disclosed herein, and various modifications to the disclosed exemplary embodiments and other exemplary embodiments are intended to be included within the spirit and scope of this disclosure as defined by the appended claims and their equivalents.

Claims

1. A content provider system, comprising: The repository is configured as a directory for storing content. Storage device, including at least a first port and a second port, The storage device further includes: a first private namespace associated with the first port, a second private namespace associated with the second port, and one or more shared namespaces associated with one or more contents stored in the storage device. The first private namespace includes user data and operating system information corresponding to the first hosted device. The second private namespace includes user data and operating system information corresponding to the second hosted device, and One or more shared namespaces include partition information and logical unit number (LUN) corresponding to one or more contents stored in the storage device; A first hosting device is connected to a first port via a first storage interface to access the storage device and is configured to execute content stored in the storage device to provide the content to a first user device; A second hosting device, which connects to a second port via a second storage interface to access the storage device, and is configured to execute content stored in the storage device to provide the content to a second user device; and One or more processing circuits are configured to: Control the access of the first and second managed devices to the storage device from the first and second ports. Receive a request for the requested content from at least one of the first hosting device and the second hosting device; Identify one of the available shared namespaces for storing the requested content; and Load the requested content from the repository into one of the available shared namespaces.

2. The system according to claim 1, wherein, The first storage interface corresponds to a first peripheral component interconnect fast PCIe channel, and the second storage interface corresponds to a second PCIe channel.

3. The system according to claim 1, wherein, The one or more processing circuits are configured to: Identify an inactive one of the shared namespaces as an available one; and Resize an inactive member of the shared namespace based on the size of the requested content to store the requested content.

4. The system according to claim 1, wherein, The one or more processing circuits are configured to: Identify an inactive instance of a shared namespace as an available instance of that shared namespace; and Remove currently inactive content associated with a shared namespace to store the requested content.

5. The system according to claim 1, wherein, In response to loading the requested content from the repository into one of the available shared namespaces, the one or more processing circuits are configured to: One of the available shared namespaces is associated with at least one of the first and second private namespaces.

6. The system according to claim 5, wherein, In response to associating one of the available shared namespaces with at least one of a first private namespace and a second private namespace, the one or more processing circuits are configured to: Provide a first private namespace or a second private namespace to the local file system of at least one of the first or second managed devices.

7. The system according to claim 1, wherein, The requested content corresponds to a first request from a first hosted device and a second request from a second hosted device, and the one or more processing circuits are configured to: In response to the first request, the requested content is loaded from the repository to the storage device; and Register a second request for a notification, which corresponds to the completion of loading of the first request.

8. A method for local disk sharing in a content provider system, the content provider system comprising: A storage device includes at least a first port and a second port, wherein the storage device further includes a first private namespace associated with the first port, a second private namespace associated with the second port, and one or more shared namespaces associated with one or more contents stored in the storage device, wherein the first private namespace includes user data and operating system information corresponding to a first managed device, wherein the second private namespace includes user data and operating system information corresponding to a second managed device, and wherein the one or more shared namespaces include partition information and logical unit numbers (LUNs) corresponding to one or more contents stored in the storage device; a first managed device is connected to the first port via a storage interface to execute the contents stored in the storage device; a second managed device is connected to the second port via a storage interface to execute the contents stored in the storage device, the method comprising: One or more processing circuits receive a request for the requested content from at least one of the first hosting device or the second hosting device through at least one of the first port or the second port; One or more processing circuits identify one of the available shared namespaces for storing the requested content; and One or more processing circuits load the requested content from the repository into one of the available shared namespaces.

9. The method according to claim 8, wherein, The storage interface includes at least a first peripheral component interconnect fast PCIe channel corresponding to the first port and a second PCIe channel corresponding to the second port.

10. The method of claim 8, further comprising: One or more processing circuits can identify an inactive one of the shared namespaces as an available one of the shared namespaces; and One or more processing circuits may resize an inactive member of a shared namespace based on the size of the requested content in order to store the requested content.

11. The method of claim 8, further comprising: One or more processing circuits can identify an inactive one of the shared namespaces as an available one of the shared namespaces; and One or more processing circuits remove the content associated with an inactive element in the shared namespace to store the requested content.

12. The method according to claim 8, wherein, In response to loading the requested content from the repository into one of the available shared namespaces, the method further includes: One or more processing circuits associate one of the available shared namespaces with at least one of a first private namespace and a second private namespace.

13. The method according to claim 12, wherein, In response to associating one of the available shared namespaces with at least one of a first private namespace and a second private namespace, the method further includes: One or more processing circuits provide a first private namespace or a second private namespace to the local file system of at least one of the first or second managed devices.

14. The method according to claim 8, wherein, The requested content corresponds to a first request from a first hosting device and a second request from a second hosting device, and the method further includes: In response to the first request, one or more processing circuits load the requested content from the repository into the storage device; and A second request for a notification is registered by one or more processing circuits, the notification corresponding to the completion of loading of the first request.

Citation Information

Patent Citations

  • Leveraging microservice containers to provide tenant isolation in a multi-tenant API gateway

    US20190102206A1

  • Methods for Using High-Speed Data Communication Fabric to Enable Cross-System Command Buffer Writing for Data Retrieval in Cloud Gaming

    US20210042255A1

  • Continuum architecture for cloud gaming

    US20210245047A1