CN110268379A - 文件系统数据层次结构的云迁移 - Google Patents
文件系统数据层次结构的云迁移 Download PDFInfo
- Publication number
- CN110268379A CN110268379A CN201880010821.XA CN201880010821A CN110268379A CN 110268379 A CN110268379 A CN 110268379A CN 201880010821 A CN201880010821 A CN 201880010821A CN 110268379 A CN110268379 A CN 110268379A
- Authority
- CN
- China
- Prior art keywords
- cloud
- data
- storage
- stored
- repository
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 claims abstract description 424
- 238000000034 method Methods 0.000 claims abstract description 97
- 230000015654 memory Effects 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 7
- 241000406668 Loxodonta cyclotis Species 0.000 claims description 6
- 230000033001 locomotion Effects 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 46
- 238000013507 mapping Methods 0.000 abstract description 40
- 238000013500 data storage Methods 0.000 abstract description 15
- 230000008520 organization Effects 0.000 abstract description 7
- 230000002085 persistent effect Effects 0.000 abstract description 3
- 238000012795 verification Methods 0.000 description 60
- 238000002156 mixing Methods 0.000 description 56
- 239000010410 layer Substances 0.000 description 51
- 230000001360 synchronised effect Effects 0.000 description 37
- 230000008569 process Effects 0.000 description 34
- 238000004891 communication Methods 0.000 description 33
- 238000007726 management method Methods 0.000 description 32
- 238000012986 modification Methods 0.000 description 28
- 230000004048 modification Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 26
- 230000008859 change Effects 0.000 description 22
- 238000013508 migration Methods 0.000 description 21
- 230000005012 migration Effects 0.000 description 21
- 230000004044 response Effects 0.000 description 21
- 230000005540 biological transmission Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 238000013519 translation Methods 0.000 description 13
- 230000014616 translation Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 11
- 230000006835 compression Effects 0.000 description 11
- 230000000977 initiatory effect Effects 0.000 description 11
- 230000007704 transition Effects 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000007689 inspection Methods 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 7
- 238000000151 deposition Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000005067 remediation Methods 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000001816 cooling Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000000246 remedial effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 208000000044 Amnesia Diseases 0.000 description 2
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 208000026139 Memory disease Diseases 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000006984 memory degeneration Effects 0.000 description 2
- 208000023060 memory loss Diseases 0.000 description 2
- 238000012806 monitoring device Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000006116 polymerization reaction Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000002600 positron emission tomography Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/328—Computer systems status display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/185—Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/43—Querying
- G06F16/432—Query formulation
- G06F16/434—Query formulation using image data, e.g. images, photos, pictures taken by a user
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Power Engineering (AREA)
- Hardware Redundancy (AREA)
- Storage Device Security (AREA)
Abstract
本文描述的技术涉及数据存储的系统和方法,更特别地,涉及在对象接口上提供文件系统功能的分层。在某些实施例中,文件系统功能可以在云对象接口上被分层以提供基于云的存储,同时允许从遗留应用预期的功能。例如,POSIX接口和语义可以在基于云的存储上被分层,同时以随着在名称层次结构中组织数据与基于文件的访问一致的方式提供对数据的访问。各种实施例还可以提供数据的存储器映射,使得存储器映射改变被反映在持久存储装置中,同时确保存储器映射改变和写入之间的一致性。例如,通过将ZFS文件系统基于盘的存储变换为ZFS基于云的存储,ZFS文件系统获得了云存储的弹性本质。
Description
相关申请的交叉引用
本申请是于2017年1月6日提交的标题为“FILE SYSTEM HIERARCHIES ANDFUNCTIONALITY WITH CLOUD OBJECT STORAGE”的美国临时申请No.62/443,391的非临时申请,并依据35 U.S.C 119(e)要求其权益和优先权,该美国临时申请的全部内容通过引用并入本文,用于所有目的。
技术领域
本公开一般而言涉及数据存储的系统和方法,并且更特别地涉及在对象接口上将文件系统功能分层。
背景技术
互联网的不断扩展以及计算网络和系统的扩展和复杂化已经导致通过互联网存储和可访问的内容的激增。这进而推动了对大型复杂数据存储系统的需求。随着对数据存储的需求不断增加,正在设计和部署更大和更复杂的存储系统。许多大规模数据存储系统利用包括物理存储介质阵列的存储装备(appliance)。这些存储装备能够存储难以置信的大量数据。例如,在这个时候,Oracle的SUN ZFS Storage ZS5-4装备可以存储高达6.9拍字节的数据。而且,多个存储装备可以联网在一起以形成存储池,这可以进一步增加存储的数据的量。
通常,诸如这些存储系统之类的大型存储系统可以包括用于存储和访问文件的文件系统。除了存储系统文件(操作系统文件、设备驱动程序文件等)之外,文件系统还提供用户数据文件的存储和访问。如果这些文件中的任何文件(系统文件和/或用户文件)包含关键数据,那么采用备份存储方案以确保在文件存储设备发生故障时不会丢失关键数据变得有利。
常规上,基于云的存储是基于对象的,并供应弹性和规模。但是,云对象存储存在许多问题。云对象存储供应基于取出和放置整个对象的接口。云对象存储提供有限的搜索能力,并且通常具有高时延。有限的基于云的接口与本地文件系统应用的需求不一致。将遗留应用转换成使用对象接口将是昂贵的并且可能不实际或甚至不可能。
因此,需要解决前述问题的系统和方法,以便在对象接口上提供文件系统功能的分层。本公开解决了这个和其它需求。
发明内容
本公开的某些实施例一般而言涉及数据存储的系统和方法,并且更特别地涉及用于在对象接口上将文件系统功能分层的系统和方法。
本文描述了用于在对象接口上提供文件系统功能的分层的各种技术(例如,系统、方法、在非瞬态机器可读存储介质中有形地实施的计算机程序产品等)。在某些实施例中,文件系统功能可以在云对象接口上被分层以提供基于云的存储,同时允许从遗留应用预期的功能。例如,POSIX接口和语义可以在基于云的存储上被分层,同时以随着在名称层次结构中组织数据与基于文件的访问一致的方式提供对数据的访问。各种实施例还可以提供数据的存储器映射,使得存储器映射改变被反映在持久存储装置中,同时确保存储器映射改变和写入之间的一致性。例如,通过将ZFS文件系统基于盘的存储变换成ZFS基于云的存储,ZFS文件系统获得了云存储的弹性本质。
根据下文提供的详细描述,本公开的其它应用领域将变得明显。应当理解的是,详细描述和具体示例在指示各种实施例的时候仅旨在用于说明的目的,而不旨在必然限制本公开的范围。
附图说明
通过结合以下附图参考说明书的其余部分,可以实现对根据本公开的实施例的本质和优点的进一步理解。
图1图示了可以根据本公开的某些实施例使用的一个示例存储网络。
图2图示了根据本公开的某些实施例的可以在存储环境中执行的文件系统的实例。
图3A-图3D图示了根据本公开的某些实施例的用于文件系统的写时拷贝(copy-on-write)处理。
图4是图示根据本公开的某些实施例的混合云存储系统的示例的高级别图。
图5图示了根据本公开的某些实施例的混合云存储系统的示例网络文件系统的实例。
图6是图示根据本公开的某些实施例的混合云存储系统的云接口装备的附加方面的图。
图7是图示根据本公开的某些实施例的涉及用于混合云存储系统的COW处理的某些特征的示例方法的框图。
图8是图示根据本公开的某些实施例的处理增量修改的云接口装备的示例的高级别图。
图9是图示根据本公开的某些实施例的涉及混合云存储系统的某些特征的示例方法的框图,其中这些特征确保云中的完整性以及来自最终一致的对象模型的始终一致的语义。
图10是图示根据本公开的某些实施例的处理检查的云接口装备的示例的高级别图。
图11是进一步图示根据本公开的某些实施例的混合云存储系统的特征的简化示例的图。
图12是进一步图示根据本公开的某些实施例的混合云存储系统的特征的简化示例的图。
图13是图示根据本公开的某些实施例的示例方法的框图,该方法涉及混合云存储系统的用于高速缓存管理和云时延掩盖的某些特征。
图14图示了根据本公开的某些实施例的促进同步镜像的混合云存储系统的示例网络文件系统的实例。
图15是图示根据本公开的某些实施例的示例方法的框图,该方法涉及混合云存储系统的用于同步镜像和云时延掩盖的某些特征。
图16图示了根据本公开的某些实施例的被配置为促进跨多个云数据对象存储库的同步镜像的示例网络文件系统的某些层的实例。
图17图示了根据本公开的某些实施例的被配置为促进跨多个云数据对象存储库和/或本地数据对象存储库的同步镜像的示例网络文件系统的某些层的实例。
图18是图示根据本公开的某些实施例的涉及跨多个云数据对象存储库的来自网络文件系统的数据的同步镜像的示例方法的框图。
图19是图示根据本公开的某些实施例的涉及由网络文件系统接收和处理请求的示例方法的框图,该网络文件系统被配置为支持跨多个云数据对象存储库和/或本地数据对象存储库的来自文件系统的数据的同步镜像。
图20描绘了用于实现根据本公开的某些实施例的分布式系统的简化图。
图21是根据本公开的某些实施例的系统环境的一个或多个组件的简化框图,通过该系统环境,由系统的一个或多个组件提供的服务可以作为云服务供应。
图22图示了示例性计算机系统,其中可以实现本发明的各种实施例。
在附图中,类似的组件和/或特征可以具有相同的附图标记。另外,相同类型的各种组件可以通过在附图标记后面有短划线和在相似组件间区分的第二标签来被区分。如果在说明书中仅使用第一附图标记,那么该描述适用于具有相同第一附图标记的类似组件中的任何一个组件,而不论第二附图标记。
具体实施方式
随后的描述仅提供优选的(一个或多个)示例性实施例,并且不旨在限制本公开的范围、适用性或配置。而是,对优选的(一个或多个)示例性实施例的随后描述将为本领域技术人员提供用于实现本公开的优选示例性实施例的使能描述。应该理解的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可以在元素的功能和布置方面进行各种改变。
如上所述,基于云的存储供应弹性和规模,但存在许多问题。云对象存储装置供应基于取出和放置整个对象的接口。云对象存储提供有限的搜索能力,并且通常具有高时延。有限的基于云的接口与本地文件系统应用的需求不一致。将遗留应用转换成使用对象接口将是昂贵的并且可能不实际或甚至不可能。因此,需要解决方案使得不必改变文件系统应用来直接访问云对象存储装置,因为改变文件系统应用肯定复杂且昂贵。
解决方案应当允许保持本机(native)应用接口,而不引入各种类型的适配层以将本地存储系统的数据映射到云中的对象存储装置。因而,根据本公开的某些实施例可以在云对象接口上将文件系统功能分层以提供基于云的存储,同时允许从遗留应用预期的功能。例如,非基于云的遗留应用可以主要如同文件那样地访问数据,并且可以被配置用于POSIX接口和语义。从遗留应用的角度来看,预期能够在不重写文件的情况下修改文件内容。同样,预期能够在名称层次结构中组织数据。
为了适应这种预期,某些实施例可以在基于云的存储上对POSIX接口和语义分层,同时以从用户的角度来看随着在名称层次结构中组织数据与基于文件的访问一致的方式提供对数据的访问。另外,某些实施例可以提供数据的存储器映射,使得存储器映射改变被反映在持久存储装置中,同时确保存储器映射改变和写入之间的一致性。通过将ZFS文件系统基于盘的存储变换成ZFS基于云的存储,ZFS文件系统获得了云存储的弹性本质。通过将“盘块”映射到云对象,ZFS文件系统的存储要求只是实际使用的“块”。系统可以始终是自动精简配置的,没有后备存储被耗尽的风险。相反,云存储得到ZFS文件系统语义和服务。可以向云客户端提供完整的POSIX语义,以及由ZFS文件系统提供的任何附加数据服务(诸如压缩、加密、快照等)。
某些实施例可以提供将数据迁移到云和从云迁移的能力,并且可以通过混合云存储系统提供本地数据以与云中的数据共存,混合云存储系统提供存储弹性和规模,同时在云存储装置上将ZFS文件系统功能分层。通过扩展ZFS文件系统以允许在云对象存储库中存储对象,可以向传统对象存储装置提供桥接,同时除了保持所有ZFS文件系统数据服务之外还保持ZFS文件系统功能。桥接传统本地文件系统之间的间隙和在各种云对象存储库中存储数据的能力有助于显著改善性能。
此外,本发明的实施例使得能够结合混合云存储来使用传统的ZFS数据服务。作为示例,压缩、加密、重复删除(deduplication)、快照和克隆各自在本发明的某些实施例中可用,并且在下面紧接着简单详细描述。在本发明中,当将存储扩展到云时,用户可以继续无缝地使用由ZFS文件系统提供的所有数据服务。例如,Oracle密钥管理器或等同物管理用户本地密钥,从而允许在存储到云时使用本地管理的密钥进行端到端安全加密。用于压缩、加密、重复删除、拍摄快照以及在盘存储装置上创建克隆的相同命令用于到云的存储。因此,用户继续受益于由ZFS压缩、加密、重复删除、快照和克隆提供的效率和安全性。
压缩通常被开启,因为它减少存储和传送数据所需的资源。计算资源在压缩处理中以及通常在该处理的逆转(解压缩)中被消耗。数据压缩受到空间-时间复杂度权衡的影响。例如,压缩方案可以要求密集处理解压缩足够快以便在它正被解压缩时被消耗。数据压缩方案的设计涉及各种因素之间的权衡,包括压缩程度以及压缩和解压缩数据所要求的计算资源。
ZFS加密利用本地保存的加密密钥提供附加安全层来实现端到端的安全数据块系统。ZFS加密本身并不阻止数据块被盗用,但会拒绝到拦截器的消息内容。在加密方案中,使用加密算法加密期望数据块,从而生成只有在解密时才能被读取的密文。出于技术原因,加密方案通常使用由算法生成的伪随机加密密钥。原则上有可能在不拥有密钥的情况下解密消息,但是,对于精心设计的加密方案,要求大的计算资源和技能。ZFS数据块使用AES(高级加密标准)加密,密钥长度为128、192和256。
数据块重复是一种用于消除重复数据块的重复副本的专门的数据压缩技术。数据块重复删除用于提高存储装置利用率,并且也可以应用于网络数据传输,以减少必须发送到存储器存储的数据块的数量。在重复删除处理中,在分析处理期间识别并存储唯一数据块。随着分析的继续,将其它数据块与存储的副本比较,并且每当匹配发生时,冗余的数据块就被替换为指向所存储的数据块的小引用。鉴于相同的数据块模式可能会发生数十次、数百次或甚至数千次,使用重复删除大幅减少了必须存储或传输的数据块的数量。
ZFS存储装置到云对象存储库的快照在ZFS系统中无缝地创建。快照冻结某些数据和元数据块,以便在需要备份到快照的情况下他们不会被改写。树层次结构可以具有许多快照,并且每个快照都将被保存,直到被删除为止。快照可以存储在本地或存储在云对象存储库中。并且快照在ZFS系统中是“自由的(free)”,因为它们不要求除创建快照指向的根块以外的任何额外的存储能力。当从对根块的快照引用被访问时,根块和从根块开始的所有后续块不可用于写时拷贝操作。在拍摄快照后的下一进展中——新的根块成为活动的根块。
克隆是从快照创建的,并且与快照不同,使用对根块的克隆引用访问的块可用于写时拷贝操作。克隆允许在系统上进行开发和故障排除,而不会损坏活动的根块和树。克隆被链接到快照,如果链接到快照块的克隆继续存在,那么就无法删除快照。在一些情况下,克隆可以被提升为活动的分层树。
现在将参考附图更详细地讨论各种实施例,从图1开始。
图1图示了可以用于实现根据本公开的某些实施例的一个示例存储网络100。图1中描绘的硬件设备的选择和/或布置仅作为示例示出,并不意味着限制。图1提供了通过一个或多个交换电路122连接的多个存储装备120。交换电路122可以将多个存储装备120连接到多个I/O服务器136,这些I/O服务器136进而可以为客户端设备(诸如本地计算机系统130、通过网络132可用的计算机系统和/或云计算系统134)提供对多个存储装备120的访问。
每个I/O服务器136可以执行多个独立的文件系统实例,每个文件系统实例可以负责管理整个存储容量的一部分。如下面将更详细描述的,这些文件系统实例可以包括Oracle ZFS文件系统。I/O服务器136可以包括刀片和/或独立服务器,其包括主机端口124以通过接收读取和/或写入数据访问请求与客户端设备通信。主机端口124可以与外部接口提供器126通信,外部接口提供器126识别正确的数据存储控制器128以服务每个I/O请求。数据存储控制器128可以各自专门管理下面描述的存储装备120中的一个或多个存储装备中的数据内容的一部分。因此,每个数据存储控制器128可以访问存储池的逻辑部分并通过访问它们自己的数据内容来满足从外部接口提供器126接收的数据请求。通过数据存储控制器128的重定向可以包括将每个I/O请求从主机端口124重定向到在I/O服务器136上执行并负责所请求的块的文件系统实例(例如,ZFS实例)。例如,这可以包括从一个I/O服务器136-1上的主机端口124-1到另一个I/O服务器136-n上的ZFS实例的重定向。这种重定向可以允许从任何主机端口124到达可用存储容量的任何部分。然后,ZFS实例可以向存储池中的任何存储设备发出必要的直接I/O事务以完成请求。然后,确认和/或数据可以通过起源主机端口124被转发回客户端设备。
低时延的存储器映射的网络可以将主机端口124、任何文件系统实例和存储装备120绑定在一起。这个网络可以使用一个或多个交换电路122(诸如Oracle的Sun数据中心InfiniBand交换机36)来实现以提供可扩展的高性能集群。总线协议(诸如PCI Express总线)可以在存储网络内路由信号。I/O服务器136和存储装备120可以作为对等体通信。重定向流量和ZFS存储器流量两者可以使用相同的交换架构。
在各种实施例中,存储装备120的许多不同配置可以用在图1的网络中。在一些实施例中,可以使用Oracle ZFS存储装备系列。ZFS存储装备用下面描述的Oracle的ZFS文件系统(“ZFS”)提供基于Oracle Solaris内核的存储。处理核114处理实现任何所选择的数据保护(例如,镜像、RAID-Z等)、数据减少(例如,内联压缩、重复等)以及任何其它实现的数据服务(例如,远程复制等)所要求的任何操作。在一些实施例中,处理核可以包括2.8GHz 处理器的8x15核。处理核还处理所存储的数据在DRAM和Flash 112两者中的高速缓存。在一些实施例中,DRAM/闪存高速缓存可以包括3TB DRAM高速缓存。
在一些配置中,存储装备120可以包括I/O端口116以从数据存储控制器128接收I/O请求。每个存储装备120可以包括整体的机架安装的单元,该单元具有其自己的内部冗余电源和冷却系统。集中器板110或其它类似的硬件设备可以用于互连多个存储设备。诸如存储器板、集中器板110、电源和冷却设备之类的有源组件可以是热可抽换的(hotswappable)。例如,存储装备120可以包括闪存102、非易失性RAM(NVRAM)104、各种配置的硬盘驱动器105、带驱动器、盘驱动器的RAID阵列108等。这些存储单元可以被设计用于高可用性,同时具有存储卡、电源、冷却和互连的热抽换和内部冗余。在一些实施例中,可以通过在断电时将RAM备份到专用闪存而使RAM变为非易失性的。闪存和NVRAM卡的混合可以是可配置的,并且两者可以使用相同的连接器和板简档。
虽然没有明确示出,但是每个I/O服务器136可以执行全局管理处理或数据存储系统管理器,该全局管理处理或数据存储系统管理器可以以伪静态“低接触”方式监督存储系统的操作,当必须在ZFS实例之间重新分配容量时进行干预,以用于全局闪存耗损均衡(wear leveling)、用于配置改变和/或用于故障恢复。在各个ZFS实例之间划分容量的“分而治之”策略可以实现性能、连接性和容量的高度可扩展性。通过水平添加更多I/O服务器136,并且然后为每个ZFS实例指派更少的容量和/或为每个I/O服务器136指派更少的ZFS实例,可以实现附加性能。还可以使用更快的服务器垂直地扩展性能。可以通过在I/O服务器136中填充可用插槽并且然后添加附加服务器来添加附加主机端口。还可以通过添加附加存储装备120并将新容量分配给新的或现有的ZFS实例来实现附加容量。
图2图示了根据本公开的某些实施例的可以在包括图1的存储环境的存储环境中执行的示例网络文件系统200的实例。例如,文件系统200可以包括Oracle ZFS文件系统(“ZFS”),Oracle ZFS文件系统提供非常大的容量(128位)、数据完整性、始终一致、盘上格式、自优化性能以及实时远程复制。除了其它方式之外,ZFS至少通过消除对分开的卷(volume)管理器的需要而与传统的文件系统不同。代替地,ZFS文件系统共享存储设备的公用存储池,并充当卷管理器和文件系统两者。因此,ZFS完全了解物理盘和卷两者(包括它们的状况、状态和卷中的逻辑排列,以及存储在其上的所有文件)。设备可以随着文件系统容量要求随时间改变而被添加或从池中移除,以根据需要动态增长和缩小,而无需对底层存储池进行重新分区。
在某些实施例中,系统200可以通过操作系统与应用202交互。操作系统可以包括与文件系统交互的功能,文件系统进而与存储池接口连接。操作系统通常经由系统调用接口208与文件系统200接口连接。系统调用接口208提供传统的文件读取、写入、打开、关闭等操作,以及特定于VFS架构的VNODE操作和VFS操作。系统调用接口208可以充当用于与作为文件系统的ZFS交互的主要接口。这一层位于数据管理单元(DMU)218之间,并呈现存储在其中的文件和目录的文件系统抽象。系统调用接口208可以负责桥接文件系统接口和底层DMU218接口之间的间隙。
除了系统调用接口208的POSIX层之外,文件系统200的接口层还可以提供分布式文件系统接口210,用于与集群/云计算设备204交互。例如,可以提供接口以提供用于计算机集群的文件系统,计算机集群的大小的范围从小工作组集群到大规模多站点集群。卷模拟器212还可以提供用于创建可以用作块/字符设备的逻辑卷的机制。卷模拟器212不仅允许客户端系统在块与字符之间区分,还允许客户端系统指定期望的块大小,从而在称为“自动精简配置”(“thin provisioning”)的处理中创建较小的稀疏卷。卷模拟器212为外部设备提供原始访问206。
接口层下面是事务对象层。这一层提供被配置为记录可以在系统崩溃时被重放的每数据集的事务历史的意图日志214。在ZFS中,意图日志214用足够的信息在存储器中保存改变文件系统的系统调用的事务记录,以便能够重放系统调用。这些事务记录存储在存储器中,直到DMU 218将它们提交到存储池且它们可以被丢弃或者它们被刷新。在电源故障和/或盘故障的情况下,可以重放意图日志214事务以使存储池保持最新和一致。
事务对象层还提供属性处理器216,该属性处理器216可以用于通过在对象内进行任意{键,值}关联来实现系统调用接口208的POSIX层内的目录。属性处理器216可以包括位于DMU 218顶部的模块并且可以对在ZFS中被称为“ZAP对象”的对象进行操作。ZAP对象可以用于存储数据集的性质、导航文件系统对象和/或对存储池性质进行存储。ZAP对象可以有两种形式:“microzap”对象和“fatzap”对象。Microzap对象可以是fatzap对象的轻量级版本,并且可以为少量属性条目提供简单且快速的查找机制。Fatzap对象可能更适合包含诸如更大的目录、更长的键、更长的值等之类的大量属性的ZAP对象。
事务对象层还提供在分层命名空间中聚合DMU对象的数据集和快照层220,并提供用于描述和管理对象集的性质之间的关系的机制。这允许性质的继承,以及存储池中的配额和预留强制。DMU对象可以包括ZFS文件系统对象、克隆对象、CFS卷对象和快照对象。因此,数据和快照层220可以管理快照和克隆对象集。快照可以对应于特定时间点处的文件系统、克隆和/或卷的只读版本。克隆源自快照,并且克隆的初始内容与它们所源自的快照的内容相同。除克隆的起源之外,克隆可以与文件系统相同。在ZFS中,快照跨系统重新启动持续存在,并且不需要使用分开的存储池。替代地,快照直接从与从中创建它们的文件系统或卷相同的存储池消耗盘空间。快照可以作为一个原子表达式被快速递归创建。快照可以被克隆、备份、回滚等等。通常,快照提供了一种在执行诸如软件安装或系统升级之类的有风险动作之前备份当前的稳定文件系统的快速高效的方法。
DMU 218呈现在由存储池呈现的平坦地址空间的顶部上构建的事务对象模型。上述模块经由对象集、对象和事务与DMU 218交互,其中对象是来自存储池的存储的片段,诸如数据块的集合。通过DMU 218的每个事务包括作为组被提交给存储池的一系列操作。这是借以在文件系统内维护盘上一致性的机制。换句话说,DMU 218从接口层取得指令并将它们翻译成事务批次。作为请求数据块和发送单个读取/写入请求的替代,DMU 218可以将这些请求组合成可以在任何盘活动发生之前被优化的基于对象的事务的批次。一旦完成此操作,就将事务的批次移交给存储池层,以调度和聚合检索/写入所请求的数据块所要求的原始I/O事务。如下面将描述的,这些事务是在写时拷贝(COW)的基础上被写入的,这消除了对事务日志记录的需要。
存储池层或简称为“存储池”可以被称为存储池分配器(SPA)。SPA提供公共接口来操纵存储池配置。这些接口可以创建、销毁、导入、导出和池化各种存储介质,并管理存储池的命名空间。在一些实施例中,SPA可以包括自适应替换高速缓存(ARC)222,ARC 222充当用于SPA的存储器管理的中心点。传统上,ARC为高速缓存管理提供基本的最近最少使用(LRU)对象替换算法。在ZFS中,ARC 222包括可以基于I/O工作负载而调整的自校正高速缓存。此外,ARC 222定义由DMU 218使用的数据虚拟地址(DVA)。在一些实施例中,ARC 222具有由于存储器压力而从高速缓存中驱逐存储器缓冲器以维持高吞吐量的能力。
SPA还可以包括I/O流水线224或“I/O管理器”,I/O流水线224或“I/O管理器”将来自ARC 222的DVA翻译成下面描述的每个虚拟设备(VDEV)226中的逻辑位置。I/O流水线224驱动跨活动的VDEV的动态条带化(striping)、压缩、校验和能力以及数据冗余。虽然未在图2中明确示出,但I/O流水线224可以包括可以由SPA用于从存储池读取数据和/或将数据写入存储池的其它模块。例如,I/O流水线224可以包括但不限于压缩模块、加密模块、校验和模块和metaslab分配器。压缩模块可以将较大的逻辑块压缩到较小的段中,其中段是物理盘空间的区域。加密模块可以提供可以用于防止未授权访问的各种数据加密算法。校验和模块可以计算存储池层次结构内的数据和元数据的校验和,如下面更详细描述的。例如,可以使用校验和来确保数据没有被损坏。在一些实施例中,SPA可以使用metaslab分配器来管理存储池中的存储空间的分配。
在ZFS中,存储池可以由VDEV的集合组成。在某些实施例中,存储池的至少一部分可以被表示为自描述的Merkle树,自描述的Merkle树是其中数据和元数据两者由逻辑树的VDEV存储的逻辑树。有两种类型的虚拟设备:称为叶子VDEV的物理虚拟设备、以及称为内部VDEV的逻辑虚拟设备。物理VDEV可以包括可写入的介质块设备,诸如硬盘或闪存驱动器。逻辑VDEV是物理VDEV的概念分组。VDEV可以布置在树中,其中物理VDEV作为树的叶子存在。存储池可以具有称为“根VDEV”的特殊逻辑VDEV,“根VDEV”是树的根。根VDEV的所有直接孩子(物理的或逻辑的)都被称为“顶级”VDEV。一般而言,VDEV实现数据复制、镜像和架构,诸如RAID-Z和RAID-Z2。每个叶子VDEV表示实际存储由文件系统提供的数据的一个或多个物理存储设备228。
在一些实施例中,文件系统200可以包括基于对象的文件系统,其中数据和元数据两者被存储为对象。更具体而言,文件系统200可以包括将数据和对应的元数据两者存储在存储池中的功能。对执行特定操作(即事务)的请求从操作系统经由系统调用接口208被转发到DMU 218,DMU 218将对针对对象执行操作的请求直接翻译成对在存储池内的物理位置处执行读取或写入操作的请求(即I/O请求)。SPA从DMU 218接收请求,并使用COW过程将块写入存储池。可以针对对于文件的数据写入请求执行COW事务。写入请求不是在写入操作上重写现有块,而是使得新片段被分配给修改后的数据。因此,检索到的数据块和对应的元数据永远不会被重写,直到数据块和元数据的修改版本被提交。因此,DMU 218将所有修改后的数据块写入存储池内未使用的片段,并且随后将对应的块指针写入存储池内未使用的片段。为了完成COW事务,SPA发出I/O请求以引用修改后的数据块。
图3A-图3D图示了根据本公开的某些实施例的用于文件系统(诸如文件系统200)的COW处理。例如,上述ZFS系统使用COW事务模型,其中文件系统内的所有块指针可以包含目标块的256位校验和,该校验和在块被读取时被核实。如上所述,包含活动的数据的块不会被就地重写。而是分配新块,将修改后的数据写入新块中,然后简单地读取、重新分配和重写引用它的任何元数据块。当新数据被写入时,包含旧数据的块可以被保留,从而允许文件系统的快照版本被维护。由于快照中的所有数据已存储,因此可以快速创建快照。快照也非常空间高效,因为任何未改变的数据在文件系统及其快照之间被共享。
图3A图示了根据一些实施例的作为逻辑树300的与一个或多个文件对应的数据和元数据的文件系统存储的简化快照。逻辑树300以及本文描述的其它逻辑树可以是自描述的Merkle树,其中数据和元数据被存储为逻辑树300的块。根块302可以表示逻辑树300的根或“超级块”(“uberblock”)。可以通过导航通过根302的每个孩子节点304、306通过文件和目录来遍历逻辑树300。每个非叶子节点表示目录或文件,诸如节点308、310、312和314。在一些实施例中,可以为每个非叶子节点指派其孩子节点的值的散列。每个叶子节点316、318、320、322表示文件的数据块。
图3B图示了在写入操作的初始阶段之后的逻辑树300-1的快照。在这个示例中,由节点324和326表示的数据块已由文件系统200写入。不是重写节点316和318中的数据,而是为节点324和326分配新的数据块。因此,在这个操作之后,节点316和318中的旧数据与节点324和326中的新数据一起在存储器中继续存在。
图3C图示了随着写入操作继续的逻辑树300-2的快照。为了引用节点324和326中新写入的数据块,文件系统200确定引用旧节点316和318的节点308和310。分配新节点328和330以引用节点324、326中的新数据块。在文件系统层次结构中递归地向上重复相同的处理,直到引用已改变的节点的每个节点被重新分配以指向新节点。
当指针块在层次结构中的新节点中被分配时,每个节点中的地址指针被更新以指向所分配的孩子节点在存储器中的新位置。此外,每个数据块包括校验和,该校验和由地址指针所引用的数据块计算。例如,使用节点324中的数据块计算节点328中的校验和。这种布置意味着校验和与计算校验和所根据的数据块是分开存储的。这防止所谓的“代笔”(“ghost write”),其中新数据永远不会被写入,但是与数据块一起存储的校验和会指示该块是正确的。可以通过遍历逻辑树300并基于孩子节点在每个级别计算校验和来快速检查逻辑树300的完整性。
为了最终确定写入操作,可以重新分配和更新根302。图3D图示了当写入操作结束时逻辑树300-3的快照。当根302准备好被更新时,新的超级块根336可以被分配并被初始化以指向新分配的孩子节点332和334。然后,根336可以在原子操作中成为逻辑树300-3的根,以最终确定逻辑树300-3的状态。
本文描述的实施例可以在上面在图1-图3中描述的系统中实现。例如,该系统可以包括图1的各种服务器、存储装备和/或交换电路的一个或多个处理器。指令可以存储在系统的一个或多个存储器设备中,这些指令使得一个或多个处理器执行影响文件系统的功能的各种操作。各种方法的步骤可以由图1-图2中的系统的处理器、存储器设备、接口和/或电路执行。
现在转到图4,图4是图示根据本公开的某些实施例的混合云存储系统400的示例的高级别图。混合云存储系统400可以将网络文件系统(诸如ZFS文件系统)变换为支持云的文件系统,其中文件系统的功能(包括文件系统数据服务)在远离文件系统的云对象存储库上被分层。如在所描绘的图中,混合云存储系统400可以包括网络文件系统200(在本文也称为“本地文件系统200”)。本地文件系统200可以通信地耦接到云对象存储装置404。在一些实施例中,云对象存储装置404可以与图2中指示的集群/云204对应。本地文件系统200可以通过云接口装备402通信地耦接到云对象存储装置404。云接口装备402可以由本地文件系统200用作云对象存储库404的接入点。
混合云存储系统400提供克服云对象存储的传统限制的解决方案。传统的云对象协议限于受限的数据/对象访问语义。传统上,云对象存储库具有有限的接口和原语,并且不是POSIX兼容的。例如,一旦对象被写入,它之后就不能被修改;它只能被删除和用新创建的对象来替换。作为另一个示例,传统云对象存储具有命名空间限制,使得命名空间被简化并且仅限于顶级容器。但是,混合云存储系统400不仅可以将数据迁移到云对象存储库404和从云对象存储库404迁移数据,而且云存储系统400还可以将本地文件系统200的文件系统功能在云对象存储装置404的云对象接口上分层,以提供基于云的存储。
本地文件系统200可以被配置用于POSIX接口和语义。例如,本地文件系统200可以向用户提供如同文件那样的对数据的访问,从而允许在不重写文件的情况下修改文件的内容。本地文件系统200还可以提供在名称层次结构中的数据的组织,这对于ZFS文件系统是典型的。ZFS文件系统的所有功能可以对本地文件系统200的用户可用。云接口装备402可以允许在云对象协议的顶部上对文件系统语义进行分层——例如,以提供构造命名空间、创建文件、创建目录等的能力——并且相对于迁移到云对象存储装置404和从云对象存储装置404迁移的数据扩展这样的能力。云接口装备402可以促进即插即用对象存储解决方案,以改进本地文件系统200,同时支持ZFS文件系统数据服务。
云接口装备402可以被配置为提供对象API(应用编程接口)。在一些实施例中,云接口装备402可以被配置为使用多个API翻译简档。根据某些实施例,API翻译简档可以集成模块和功能(例如,数据服务和模块)、POSIX接口和语义、以及可以不被本机设计为与云存储装置交互的其它组件。在一些实施例中,API翻译简档可以翻译文件系统200的协议、格式和例程(例如,通过API调用)以允许与云数据存储库404的交互。用于这种集成的信息可以存储在API翻译数据存储库中,该API翻译数据存储库可以与云接口装备402共同定位或以其它方式通信地耦接到云接口装备402。云接口装备402可以利用该信息来内聚地集成POSIX接口和语义以与云数据存储库404接口连接,同时保持语义。
混合云存储系统400可以允许本地文件系统200将云对象存储装置404用作“驱动器”。在各种情况下,文件410都可以存储为具有元数据对象的数据对象和/或存储为具有相关联的元数据的数据块。云接口装备402可以从本地文件系统200接收文件410和将文件410传输到本地文件系统200。在各种实施例中,本地文件系统200可以经由NFS(网络文件系统)协议、SMB(服务器消息块协议)等接收和/或传送文件410。在一些实施例中,云接口装备402可以将文件410翻译成对象412。文件410的翻译可以包括翻译数据块和与元数据对象相关联的数据对象和/或关联元数据,其中任何一个可以与文件410对应。在一些实施例中,翻译可以包括云接口装备402利用多个API翻译简档执行API翻译。根据一些实施例,翻译可以包括云接口装备402从文件410、对象和/或块提取数据和/或元数据。云接口装备402可以至少部分地通过使用提取出的数据将文件410、对象和/或块转换成云存储对象。在一些实施例中,云接口装备402可以创建对应的云存储对象,其中提取出的数据嵌入在指向云对象存储库404的放置(put)请求中。同样,利用由向外接口连接到云数据存储库404的云接口装备402实现的任何翻译,在一些实施例中,云接口装备402可以逆转翻译处理以与本地文件系统200的本地组件接口连接。
云接口装备402可以向云对象存储装置404传输对象412和从云对象存储装置404接收对象412。在一些实施例中,云接口装备402可以经由HTTPS等接收和/或传送对象412。在一些实施例中,云接口装备402可以与本地文件系统200共同定位。在其它实施例中,云接口装备402可以远离本地文件系统200定位,诸如,其中至少一些装备促进云对象存储库404或在某个其它通信地耦接的站点。
如本文进一步公开的,本地文件系统200中的文件可以被存储为“盘块”,“盘块”是其中与文件对应的数据对象和元数据被存储为逻辑树300(例如,自描述的Merkle树,其中数据和元数据被存储为块)的虚拟存储块。云接口装备402可以创建数据的树300中的每个逻辑块直接到云对象存储库404中的云对象414的映射406。一些实施例可以采用一对一的块到对象映射。附加地或可替代地,其它实施例可以采用块到云对象的任何其它合适的比率,例如,将多个块映射到一个云对象。在此类实施例的一些实例中,可以将块的整个逻辑树映射到单个云对象。在其它情况下,仅块的逻辑树的一部分可以被映射到单个云对象。
在一些实施例中,当块被转换成云对象时,更新地址指针。当用一对一的块到对象转换方案将块转换成云对象时,可以更新地址指针,使得层次结构中的非叶子云对象指向云对象存储库404中的孩子云对象。举例来说,地址指针可以与孩子云对象的对象名称和路径规范对应,其可以包括诸如对象名称、桶规范等参数。因而,一些实施例可以将逻辑树300的块翻译成逻辑树300A的云对象。利用一些实施例,这种翻译可以使云接口装备402能够利用云对象的地址指针遍历云对象的逻辑树300A。
在一些实施例中,当用多对一的块到对象转换方案将块转换成云对象,以使得逻辑树300的一部分被转换成一个云对象时,包括逻辑300A的云对象的地址指针可以类似地被更新,但是在更小粒度程度上被更新,使得层次结构中的非叶子云对象指向云对象存储库404中的孩子云对象。这种翻译可以使云接口装备402能够以比通过一对一的块到对象转换方案促进的遍历粒度更小但更快的方式,利用云对象的地址指针遍历云对象的逻辑树300A。此外,在一些实施例中,可以利用转换处理来更新校验和。用于各个云对象的校验和可以被更新并分开存储在父云对象中。在采用多对一的块到对象转换方案的转换中,可以针对与块集合对应的云对象来计算单个校验和。
因而,映射406的实现允许通过一个或多个网络到云对象存储库404的通信,并且与云对象存储库404的接口可以是基于对象的而不是基于块的。如本文进一步公开的,利用本地文件系统200和云对象存储库404之间的云接口装备402,混合云存储系统400可以拥有与传统ZFS文件系统不同的特性和故障模式。云接口装备402可以在客户端侧翻译本地文件系统202的文件系统接口,并且可以能够经由向外到云对象存储库404的对象协议来协调以读取和写入数据。通过云接口装备402,云对象414可以保持可以由本地文件系统200通过NFS、SMB等访问。
利用作为逻辑块的云对象414的映射406,可以将云对象414的集合分组以形成将ZFS存储池托管为自包含集合的驱动器。驱动器内容可以是弹性的,使得可以仅为已经被分配的逻辑块创建云对象。在一些实施例中,云接口装备402可以具有(例如,针对不同数据类型)指派可变对象大小的能力,以允许更大的存储灵活性。数据不必限于具体的字节大小。可以通过修改元数据来根据需要扩展存储装置大小。在一些实施例中,可以在任何服务器上导入基于云的池。一旦导入,基于云的池可以作为本地存储装置出现,并且针对基于云的池支持所有ZFS服务。可以将基于云的池指示为新类型的存储池。但是,从用户的角度来看,来自基于云的池的数据可以看起来与本机池无法区分。
图5图示了根据本公开的某些实施例的混合云存储系统400的示例网络文件系统200-1的实例。文件系统200-1可以与文件系统200对应,但是云设备管理直接集成到ZFS控制栈中。除了关于文件系统200公开的内容之外,文件系统200-1还可以包括云接口设备502,云接口设备502促进充分利用云对象存储库404作为文件系统200-1的存储介质。云接口设备502可以至少部分地通过将云存储装置映射到设备抽象来促进云驱动器。
在一些实施例中,云接口设备502可以与ZFS文件系统架构内的另一种VDEV类型的设备驱动程序接口的一个或多个VDEV对应。ZFS可以直接与云接口设备502通信。云接口设备502可以位于直接在文件系统200-1的驱动器层上方的虚拟设备层处。云接口设备502的一些实施例可以与ZFS架构内的设备驱动程序接口的抽象对应。文件系统200-1的其它组件可以与云接口设备502通信,就好像它是另一种设备类型的另一个VDEV(诸如VDEV 226)一样。为了使得能够通过云接口设备502相对于通过其它VDEV 226传递更大量的信息,与云接口设备502相关联的接口可以更宽以通过I/O流水线224和云接口设备502向外向云对象数据存储库404传递更多信息。
在一些实施例中,云接口设备502可以翻译客户端上的文件系统接口。在一些实施例中,为了提供完整的POSIX文件系统语义,云接口设备502可以将文件系统接口请求转换成针对云对象存储库404的对象接口请求。在一些实施例中,云接口设备502可以能够经由对象协议向外与云对象存储库404通信以读取和写入数据。
图6是图示根据本公开的某些实施例的混合云存储系统400-1的云接口装备402-1的附加方面的图。如所描绘的示例中所指示的,云接口装备402的一些实施例可以包括虚拟存储池602和云接口守护进程604。虚拟存储池602可以位于文件系统200-1的内核,并且云接口守护进程604可以位于文件系统200-1的用户空间上。在各种实施例中,云接口守护进程604可以与图5中指示的应用202和/或集群/云204的云接口组件对应。
在一些实施例中,虚拟存储池602可以包括至少一个云接口设备502、意图日志214-2和高速缓存222-1。上面关于图1-图2以及下面关于图7描述意图日志214-2和高速缓存222-1。云接口设备502可以与云接口守护进程604交互,以至少部分地基于映射406来协调关于云对象数据存储库404的操作。云接口守护进程604可以包括云客户端接口608,以与云对象数据存储库404接口连接。在一些实现中,云客户端接口608可以包括提供与云对象数据存储库404的Swift/S3兼容性的端点。云客户端接口608的操作可以至少部分地基于取出和放置整个数据对象412以便促进对云对象数据存储库404的读取和写入访问。
返回去参考图4和图5,在根据一些实施例的操作中,可以在文件系统200-1的应用层处从应用202并且通过文件系统200-1的接口层的系统调用接口208接收对关于一个或多个文件执行一个或多个事务的请求。请求可以是POSIX兼容的,并且可以由文件系统200-1的一个或多个组件转换成一个或多个对象接口请求,以关于存储在云对象存储库404中的逻辑树300的基于云的实例化300A执行一个或多个操作。例如,在一些实施例中,云接口装备402可以将POSIX兼容请求或由POSIX兼容请求造成的中间请求转换成对应的对象接口请求。在一些实施例中,DMU 218可以将POSIX兼容请求翻译成I/O请求以执行I/O操作,并且云接口装备402可以将I/O请求翻译成对应的对象接口请求,从而使用映射406来协调对象接口请求。
在一些实例中,事务可以与操作对应以使得文件在本地存储。在一些实例中,文件系统200-1可以将数据对象和对应的元数据存储在由VDEV 226中的一个或多个VDEV和一个或多个物理存储设备228提供的系统存储池416中。数据对象可以与一个或多个文件对应。如上面所讨论的,与一个或多个文件对应的数据对象和元数据可以存储为逻辑树300。因此,逻辑树300的存储可以本地存储在系统存储池416中。
在根据一些实施例的进一步操作中,文件系统200-1可以使得在云对象存储库404中存储逻辑树300的数据对象和对应的元数据。虽然在一些实施例中逻辑树300可以在迁移到云存储装置之前首先存储在本地存储池中,但是在其它实施例中,逻辑树300可以在存储在云对象存储库404中之前不存储在本地存储池中。例如,一些实施例可以在高速缓存中创建逻辑树300的至少一部分,然后将其迁移到云对象存储库404。因此,应当认识到的是,各种实施例都是可能的。
为了将逻辑树300的数据对象和对应的元数据存储在云对象存储库404中,云接口设备502可以创建逻辑树300中的每个逻辑块到云对象存储库404中相应的云对象414的映射406。在一些实施例中,DMU 218可以从系统存储池416(例如,从本地池的RAIDZ或RAIDZ2)读取数据以将数据提供给云接口设备502,作为创建映射406的基础。在一些实施例中,云接口设备502可以直接或间接地与另一个VDEV 226通信,以读取数据作为映射406的基础。在一些实施例中,映射406可以将对象直接映射到物理驱动器中表示的块。映射406可以比将文件部分映射到对象更精细;它可以在更低的级别映射。因而,映射406可以是每个对象的映射406。映射406可以将虚拟存储块映射到云对象存储库404中的对象,使得逻辑树300在云对象存储库404中表示,如逻辑树300A所示。当本地文件系统200-1与云对象存储库404中的数据对象416接口连接时,逻辑树300A符合本地文件系统200-1能够与之通信的新设备类型。
可以利用对云对象存储库404的每个I/O操作或者仅利用对云对象存储库404的写入操作来更新映射406。在一些实施例中,映射406可以包括索引所有云对象414的对象目录。云对象状态可以保持在索引、表、索引组织的表和/或可以基于每个对象被索引的类似物当中。在一些实施例中,映射406可以包括仅索引云对象414中的一些云对象的对象目录。例如,此类实施例可以仅索引与超级块对应的云对象414。在一些实施例中,可以索引相对于每个叶子路径的每个对象的云对象状态。在一些实施例中,对象目录可以通过可以与对象名称和路径规范对应的地址指针来引用云对象414。在一些实施例中,对象目录可以通过URL引用云对象414。
在映射406中被索引的云对象状态可以用于路由对象请求。利用索引,云接口设备502可以至少部分地基于超级块来请求云对象。根据第一方法,此类请求可能需要请求与特定超级块相关联的云对象集合,以便整个逻辑树300A由响应于该请求而传输的云对象集合表示。根据第二方法,此类请求可能需要对与特定超级块相关联的云对象的子集的迭代请求,以便迭代地遍历整个逻辑树300A,直到从云对象存储库404读取期望的一个或多个云对象。对于某些实施例,云接口设备502可以至少部分地基于表示各种逻辑树300A的云对象的大小来选择性地使用两种方法中的一种。例如,当云对象的大小小于聚合大小阈值时,云接口设备502可以使用一种方法,而当云对象的大小满足或超过聚合大小阈值时,可以过渡到另一种方法。
一些实施例可以采用另一种方法,其中对象目录可以基于每个对象来索引云对象并且可以用于直接请求云对象而无需在云级别进行树遍历。一些实施例可以保留逻辑树300A的元数据的本地快照。此类实施例可以利用本地快照直接或间接地请求云对象。此外,一些实施例可以在对象目录或本地快照中保留逻辑树300A的校验和,这些校验和可以用于验证从云数据存储库404检索到的云对象。
因此,文件系统200-1可以维护数据的树并将那个树映射到云对象存储库404上。树300A的命名空间可以与存储在树300A的节点内的元数据对应。文件系统200-1可以继续使用分层树表示,但是将分层树表示映射到云对象存储库中作为存储数据的方式。
再次参考图6,为了实现关于云对象存储库404的I/O操作,云接口设备502可以向云接口守护进程604发送请求。例如,在一些实现中,云接口设备502可以通过文件系统200-1的事务对象层和接口层向云接口守护进程604发送请求。由云接口设备502发送的请求可以至少部分地基于经由应用202接收的POSIX兼容请求和/或至少部分地基于由DMU 218(例如,响应于POSIX兼容请求)创建的I/O请求,云接口设备502可以将其转换成用于云接口守护进程604的请求。
在一些实施例中,由云接口设备502发送到云接口守护进程604的请求可以被翻译成针对云客户端接口608的取出(get)请求和放置(put)请求。在一些实施例中,由云接口设备502发送的请求可以是取出请求和放置请求;在其它实施例中,云接口守护进程604可以将由云接口设备502发送的请求翻译成取出请求和放置请求。在任何情况下,响应于由云接口设备502发送的请求,云接口守护进程604可以经由对象协议通过一个或多个网络与云对象存储库404通信,以执行关于数据对象414的对应I/O操作。
例如,到云对象存储库404的通信可以包括至少部分地基于映射406来指定云对象存储库404中逻辑树300A的数据对象和对应元数据的存储。在一些实施例中,通信可以例如针对不同的数据类型指定不同的对象大小。因此,云接口设备402可以指定某个对象大小以存储被识别为具有一种数据类型的某些数据对象,并且可以指定不同的对象大小以存储被识别为具有不同数据类型的其它数据对象。
图7是图示根据本公开的某些实施例的涉及用于混合云存储系统400的COW处理的某些特征的示例方法700的框图。根据某些实施例,方法700可以如方框702所指示的那样开始。但是,本公开的教导可以以各种配置实现。照此,包括方法700和/或本文公开的其它方法的某些步骤的次序可以以任何合适的方式混洗或组合,并且可以取决于所选择的实现。而且,虽然为了描述可以分开以下步骤,但是应当理解的是,某些步骤可以同时或基本上同时进行。
如方框702所指示的,可以从应用202接收对执行(一个或多个)特定操作(即,(一个或多个)事务)的(一个或多个)POSIX兼容请求。这种操作可以与写入和/或修改数据对应。如方框704所指示的,(一个或多个)POSIX兼容请求可以经由系统调用接口208从操作系统被转发到DMU 218。在各种实施例中,通过DMU 218实现的事务可以包括作为一个组被提交给系统存储池416和云对象存储库404中的一个或两者的一系列操作。这些事务可以基于COW被写入。
如方框706所指示的,DMU 218可以将对于针对数据对象执行操作的请求直接翻译成对于针对系统存储池416和/或云对象存储库404内的物理位置执行写入操作的请求(即,I/O请求)。在一些模式中,可以首先对本地存储的数据对象执行操作,然后可以将对数据对象的改变传播到对应的云存储的数据对象,由DMU 218指引具体的改变或者由DMU 218指引云接口装备402直接或间接地利用另一个VDEV 226读取改变。在其它模式中,可以同时或基本上同时对本地存储的数据对象和对应的云存储的数据对象执行操作。在还有其它模式中,可以仅对云存储的数据对象执行操作。例如,一些实现可以不具有本地树300,并且可以仅具有逻辑树300A的基于云的版本。各种实施例可以被配置为允许用户选择一个或多个模式。
如方框708所指示的,SPA可以从DMU 218接收I/O请求。并且,响应于请求,SPA可以使用COW过程来发起将数据对象写入系统存储池416和/或云对象存储库404。如方框710所指示的,在数据对象写入云对象存储库404之前或同时对本地存储的数据对象执行数据对象的写入的模式中,上面公开的COW过程(例如,鉴于图3A-图3D)可以关于系统存储池416继续进行。
如方框712所指示的,云接口装备402可以接收I/O请求并识别对逻辑树300A的增量修改。增量修改可以与由COW处理产生的新树部分对应以实现写入请求。云接口装备402可以将I/O请求翻译成对应的对象接口请求。通过具有来自I/O请求或来自读取对本地存储的数据对象的改变的修改后的数据,云接口设备502可以使用云对象存储库404中的云存储对象414的映射406来协调对象接口请求。
例如,在一些实施例中,可以至少部分地基于对本地存储的数据对象的改变来确定增量修改,以反映对逻辑树300的改变。在一些实例中,云接口装备402可以读取逻辑树300或至少读取对逻辑树300的改变,以便确定增量修改。这种数据可以由文件系统的另一个组件(诸如DMU 218或镜像VDEV)传递到云接口装备402。对于一些实施例,增量修改可以被传输到云接口装备402。
但是,在一些实施例中,云接口装备402可以至少部分地基于将COW方法应用于逻辑树300的副本或快照和/或逻辑树300A的快照来确定增量修改。对于其中云接口装备402使用逻辑树300A的快照的实施例,快照可以保留在映射406中或以其它方式存储在存储器和/或物理层中。如本文所公开的,快照可以对应于快照捕获时的树映像(image)。快照可以包括元数据,该元数据可以保留在树遍历数据的数据实例内部。为了保留树的时间点映像,快照可以只存储最少量的数据。快照可以是数据的精简表示,该精简表示保留被引用的块的数据,这些被引用的块被指定/请求为被快照保留在其中。因此,给定写入请求和快照,可以根据本文描述的COW方法来确定增量修改。
图8是图示根据本公开的某些实施例的处理增量修改的云接口装备的示例的高级别图。如所绘出的,云接口装备402可以使用存储在云对象存储库404中的逻辑树300A的快照301来创建增量修改303。作为示例,增量修改303被用新的叶子节点324、326;新的非叶子节点328、330、332、334;以及新的根节点336来描绘。
再次更特别地参考图7,如方框714所指示的,增量修改的确定可以包括创建新的叶子节点(例如,叶子节点324、326)。在写入操作的初始阶段之后,已经在存储器中分配了新的数据块(即,叶子节点),并且每个写入操作的数据已经由云接口装备402写入新的数据块,而先前的数据和数据块也同样在存储器中继续存在。
如方框716所指示的,可以创建新的非叶子节点(例如,非叶子节点326、330)。随着写入操作继续,云接口装备402可以确定引用节点的先前版本的非叶子节点。为了引用新写入的数据,分配新的非叶子节点以引用叶子节点中的新数据块。可以在由快照301反映的逻辑树300A的层次结构中递归地向上重复相同处理,直到引用改变的节点的每个非叶子节点被重新分配以指向新节点。当指针块被分配在层次结构中的新节点中时,可以更新每个节点中的地址指针以指向所分配的孩子节点在存储器中的新位置。如方框718所指示的,为了最终确定写入操作,可以重新分配和更新根节点(例如,根节点336)。当准备好更新根节点时,可以分配和初始化新的根节点(超级块)以指向新的根节点下面的新分配的孩子节点。
作为写入操作的一部分,利用校验求和来更新事务写入操作中涉及的树的所有部分的元数据。创建的每个节点包括校验和,该校验和是使用由地址指针引用的节点计算的。这种布置意味着校验和与计算校验和所根据的节点是分开存储的。通过将每个节点的校验和存储在其父节点指针中而不存储在该节点本身中,树中的每个节点包含用于其所有孩子节点的校验和。关于图3A-图3D的示例进一步详细说明这一点。通过这样做,每个树都自动进行自验证,并且始终有可能检测与读取操作的不一致。
如方框720所指示的,与增量修改对应的数据对象和元数据可以存储在云对象存储库404中。在各种实施例中,云接口装备402可以创建、读取、转发、定义和/或以其它方式指定与增量修改对应的数据对象和元数据。如方框722所指示的,在一些实施例中,数据对象和元数据的存储可以至少部分地由云接口设备502向云接口守护进程604发送请求而造成。如方框724所指示的,由云接口设备502发送到云接口守护进程604的请求可以被翻译成对云客户端接口608的放置请求。在一些实施例中,由云接口设备502发送的请求可以是放置请求;在其它实施例中,云接口守护进程604可以将由云接口设备502发送的请求翻译成放置请求。
如方框726所指示的,响应于由云接口设备502发送的请求,云接口守护进程604可以经由对象协议通过一个或多个网络与云对象存储库404通信,以使得与增量修改对应的数据对象和元数据被存储为新的云对象。如方框728所指示的,云接口装备402可以鉴于存储在云对象存储库404中的与增量修改对应的数据对象和元数据来更新映射406。
再次更特别地参考图8,图示了与增量修改303对应的数据对象和元数据的存储。根据基于云的COW处理,为与增量修改303对应的数据对象和元数据分配新的云对象414A,其中增量修改303的基于云的实例化被指示为增量修改303A。然后,可以利用存储操作使新的根节点成为修改后的逻辑树300A-1的根,以最终确定修改后的逻辑树300A-1的状态。修改后的逻辑树300A-1可以与通过增量修改303A修改的逻辑树300A对应。因此,利用诸如示例性快照301之类的快照和诸如与根336、336-1对应的超级块之类的超级块,可以仅关于自上次快照以来改变的节点的子集来更新云对象存储库404。并且增量303A的更新可以经由根节点挂接(hook in)到云中的树300A的版本,使得可以访问整个修改后的逻辑树300A-1的任何部分。
通过存储增量修改303A,可以不就地重写包含活动的数据的逻辑树300A(被保存为云数据对象414)的块。可以分配新的云数据对象414A,并且可以将修改后的/新的数据和元数据写入云数据对象414A。可以保留数据的先前版本,从而允许维护逻辑树300A的快照版本。在一些实施例中,可以在修改后的逻辑树300A-1及其相关联的快照之间共享任何未改变的数据。
因此,除了从云中(在不应用多个增量更新的情况下)最佳地恢复的能力之外,某些实施例还可以提供非常高效的始终增量(也称为永久增量)备份能力。业界中的传统备份方法涉及将副本推送到云中。但是,根据本公开的某些实施例允许基于云的写时拷贝文件系统,其中仅将新数据对象写入云存储装置。其中仅需要发送新数据和修改后的数据的云存储装置为从云提供商进行备份和还原提供了极为有效的解决方案。不需要修改旧数据对象。这些实施例与使用事务组的一致性模型一起用永久增量备份来促进云存储,其中始终可以确认一致性。
在最初创建完整备份(例如,云数据对象414和逻辑树300A)之后,可以潜在无限地进行增量备份(例如,增量修改303A)。发送增量之后,每个增量可以合并到完整备份中,使得始终存在完整的当前备份。每次合并都会产生完整备份的单个数据实例。可以定期进行另一次完整备份,以避免不得不收集大量增量(如果这是不期望的)。对于一些实现,如果期望的话,则可以保留完整备份的多个版本。因此,某些实施例提供对间隔、快照和备份的完全控制。
将对象写入云并随后从云中读取对象的主要问题之一是不能保证读取对象的完整性。云存储存在当前数据的降级的风险(例如,存储丢失、传输失败、位衰减等等)。此外,由于涉及对象的多个版本,存在读取对象的不期望的版本的风险。例如,可以读取期望的对象的先前版本,诸如在对象的更新不完整的情况下的最近版本。
传统的对象存储库架构依赖于数据的副本,其中最初满足法定数量(即,2个副本)并且异步地更新附加副本(例如,第三副本)。这带来客户端可以在所有副本已被更新之前接收数据副本的可能性,从而得到数据的不一致视图。对象存储库一致性的典型解决方案是确保在数据可用之前制作所有副本,但是利用该解决方案确保一致性通常是不现实的或不可实现的。其中对象的校验和与对象一起存储在对象的元数据中或其它地方的参考数据库中的基于对象的方法将允许验证对象内容,但不会验证对象的正确版本。而且,可能使用对象版本控制并从单个位置进行检查的解决方案在某种程度上挫败云存储的目的和意图。
但是,根据本公开的某些实施例可以提供一致性模型,该一致性模型可以确保云中有保证的完整性并且可以确保来自最终一致的对象模型的始终一致的语义。例如,某些实施例可以通过使用本文公开的逻辑树来提供故障隔离和一致性。利用对云对象存储库的所有事务写入操作,可以更新自描述Merkle树的元数据中的校验和。如上所述,与计算校验和所根据的节点分开存储校验和确保每个树自动进行自验证。在每个树层,下面的节点由包括校验和的节点指针引用。因此,当从云中读取出对象时,可以确定该对象是否正确。
图9是图示根据本公开的某些实施例的涉及混合云存储系统400的某些特征的示例方法900的框图,混合云存储系统400的这些特征确保云中有保证的完整性以及来自最终一致的对象模型的始终一致的语义。根据某些实施例,方法900可以如方框902所指示的那样开始。但是,如上文所阐明的,本公开的教导可以以各种配置来实现,使得本文公开的方法的某些步骤的次序可以以任何合适的方式混洗或组合,并且可以取决于所选择的实现。而且,虽然为了描述可以分开以下步骤,但是应当理解的是,某些步骤可以同时或基本上同时执行。
如方框902所指示的,可以从应用202接收对执行一个或多个特定操作(即,一个或多个事务)的POSIX兼容请求。这种操作可以与读取或以其它方式访问数据对应。如方框904所指示的,POSIX兼容请求可以经由系统调用接口208从操作系统被转发到DMU 218。如方框906所指示的,DMU 218可以将对于针对数据对象执行操作的请求直接翻译成对于针对云对象存储库404执行一个或多个读取操作的请求(即,一个或多个I/O请求)。如方框908所指示的,SPA可以从DMU 218接收(一个或多个)I/O请求。响应于(一个或多个)请求,SPA可以发起从云对象存储库404读取一个或多个数据对象。
如方框910所指示的,云接口装备402可以接收(一个或多个)I/O请求,并且可以将对应的(一个或多个)云接口请求发送到云对象存储库404。在一些实施例中,云接口装备402可以将I/O请求翻译成对应的对象接口请求。云接口设备502可以使用云对象存储库404中的云存储对象414的映射406来协调对象接口请求。例如,云接口装备402可以根据逻辑树识别并请求存储为云数据对象的文件的全部或一部分。
如方框912所指示的,云接口装备402可以响应于对象接口请求而接收(一个或多个)数据对象。如方框914所指示的,可以利用来自逻辑树中的(一个或多个)父节点的(一个或多个)校验和来检查(一个或多个)数据对象。在各种实施例中,检查可以由云接口装备402和/或I/O流水线224执行。
图10是图示根据本公开的某些实施例的处理检查的云接口装备402的示例的高级别图。同样,在其它实施例中,系统400的另一个组件可以执行检查。但是,在图10中,云接口装备402被描绘为已经访问了云对象存储库404以读取根据逻辑树300A-1存储的数据。在所描绘的示例中,云存储装备402被示为已经访问了与逻辑树300A-1对应的云对象414A。云存储装备402通过非叶子节点326-2、334-2和根节点336-2的地址访问叶子节点324-2。
如本文所述,当从逻辑树中读取出节点时,使用逻辑树中较高级别的节点的指针来读取节点。那个指针包括预期要读取的数据的校验和,以便当从云中拉取出数据时,可以用校验和检查数据。可以计算数据的实际校验和,并将实际校验和与已经由云接口装备402和/或I/O流水线224获得的预期校验和进行比较。在所描绘的示例中,非叶子节点326-2包括叶子节点324-2的校验和。
在一些实施例中,可以利用一个对象从云数据存储库接收校验和,并且利用不同的对象接收要用校验和检查的数据。根据一些实施例,可以在接收具有要检查的数据的不同的对象之前,利用分开的对象从云数据存储库接收校验和。一些实施例可以采用迭代对象接口请求处理,使得响应于特定对象接口请求,接收具有校验和的对象,并且响应于后续对象接口请求,接收具有要检查的数据的对象。另外,对于一些实施例,后续对象接口请求可以使用随特定对象接口请求接收的寻址信息来做出并且指向具有要检查的数据的对象。对于一些实施例,代替迭代处理,从云数据存储库接收多个对象,之后可以对多个对象执行检查。通过遍历逻辑树并基于父节点在每个级别处计算孩子节点的校验和,可以快速检查逻辑树的完整性。在替代实施例中,云接口装备402和/或I/O流水线224可以在发起读取操作之前获得校验和和/或可以从另一个源获得校验和。例如,在这样的替代实施例中,校验和可以保留在映射406、逻辑树的快照和/或本地数据存储库中。
再次参考图9,如方框916所指示的,可以确定是否通过来自逻辑树中的(一个或多个)父节点的(一个或多个)校验和与(一个或多个)数据对象的(一个或多个)实际校验和来验证(一个或多个)数据对象。如方框918所指示的,在(一个或多个)数据对象被验证的情况下,系统400的读取和/或进一步处理操作可以继续进行,因为已经确定数据未被损坏并且不是不正确的版本。在必要时,检查可以针对其它对象继续,直到所有对象都由父对象指针元数据进行校验求和并验证。
在(一个或多个)数据对象的实际校验和与预期校验和不匹配的情况下,可以识别错误情况。这是图10中所示的情况,其中对象D'(其与叶子节点324-2对应)的实际校验和与由父节点326-2(其对应于对象C')指定的校验和不匹配。对于错误情况,图9的处理流程可以继续进行到方框920。实际校验和与预期校验和的不匹配可以与以下情况对应:得到不是最新的错误版本的数据、由于云存储故障、位衰减和/或传输损失导致的数据降级等。如方框920所指示的,可以发起补救。在一些实施例中,补救可以包括向云对象存储库404重新发出一个或多个云接口请求。响应于每个重新发出的请求,处理流程可以返回到方框912,在方框912中云接口装备402可以接收一个或多个数据对象,并且可以继续进行检查处理的另一次迭代。
重新发出一个或多个云接口请求可以与云对象存储库404更努力地尝试找到所请求对象的正确版本的请求对应。在一些实施例中,云接口装备402可以迭代地遍历云节点/设备,直到检索到正确的版本。一些实施例可以迭代地检查可以存储在云对象存储库404中的树部分的先前版本的快照。一些实施例可以采用阈值,使得云接口装备402可以在已经满足阈值之后继续进行其它补救措施。阈值可以与一个或多个云接口请求的多个重新发出对应。可替代地或附加地,阈值可以与对节点和/或快照的搜索范围的限制对应。例如,阈值可以决定在云接口装备402转向不同的补救措施之前要搜索多少节点和/或多少快照。
云接口装备402可以采用的另一个补救措施是在多云实现中从另一个云对象存储库请求正确版本的数据,如方框924所指示的。本文进一步描述了多云存储的某些实施例。可以核查第二云对象存储库的记录以确定数据的副本是否已经存储在第二云对象存储库中。在一些实施例中,记录可以与特定于第二云对象存储库的另一个映射406对应。在已经确定数据的副本已经存储在第二云对象存储库中以后,云接口装备402可以向第二云对象存储库发起一个或多个对象接口请求以便检索期望的数据。
对于这样的实施例,在已经满足对云对象存储库404的重新发出的请求的阈值而没有成功接收到正确版本之后,可以对第二云对象存储库做出对感兴趣对象的请求。可替代地,一些实现可以求助于第二云对象存储库作为第一默认值,而不是重新发出对云对象存储库404的请求。在任何情况下,响应于对第二云对象存储库的请求,处理流程可以返回到方框912,在方框912中云接口装备402可以接收一个或多个数据对象,并且可以继续进行检查处理的另一次迭代。在正确数据从第二云对象存储库被检索出并被验证的情况下,系统400的读取和/或进一步处理操作可以继续进行,如方框918所指示的。此外,在已经从第二云对象存储库接收到正确数据以后,系统400可以将正确数据写入云对象存储库404,如方框926所指示的。如关于图7所公开的,可以利用COW过程来应用增量修改来实现正确数据的写入。
在一些实施例中,如果通过补救处理不能检索到正确数据,那么可以返回错误消息和最近版本的数据,如方框928所指示的。对于一些情况,最近版本的数据可能不是可检索的。例如,应当指向数据的元数据可能被损坏,使得不能引用和检索最近版本的数据。在那些情况下,可以返回错误消息,而没有最近版本的数据。但是,当最近版本的数据是可检索的时,也可以返回它。因而,利用端到端校验和模型,某些实施例可以覆盖从客户端到云以及再返回的数据的端到端遍历。某些实施例不仅可以提供整个树的校验求和并检测错误,而且还具有通过重新同步(resilver)和数据清理来校正树的部分的能力。
图11是根据本公开的某些实施例的进一步图示混合云存储系统400-2的特征的简化示例的图。混合云存储系统400-2图示了混合存储池1100如何至少部分地由系统存储池416和虚拟存储池602-1形成。针对系统存储池416和虚拟存储池602-1中的每个图示了用于读取操作和写入操作的流程。
在一些实施例中,ARC 222可以包括ARC 222-2。可以由ARC 222-2和系统存储块228-1促进系统存储池416的读取操作。如所指示的,ARC 222-2的某些实施例可以用DRAM实现。如还指示的,系统存储块228-1的某些实施例可以具有基于SAS/SATA的实现。对于一些实施例,可以通过可以扩展高速缓存大小的L2ARC设备222-3来进一步促进系统存储池416的读取操作。对于一些实施例,ARC 222可以被引用为包括L2ARC设备222-3。如图11中所指示的,L2ARC设备222-3的某些实施例可以具有基于SSD的实现。可以由系统存储块228-1和意图日志214-3促进系统存储池416的写入操作。如所指示的,意图日志214-3的某些实施例可以具有基于SSD的实现。
对于本地系统,虚拟存储池602-1可以看起来像并且表现得像逻辑盘。类似于系统存储池416,可以由ARC 222-4和云存储对象块414-1促进虚拟存储池602-1的读取操作。对于一些实施例,ARC 222可以被引用为包括ARC 222-4,尽管ARC 222-4可以在一些实施例中用一个或多个分开的设备实现。如图11所指示的,ARC 222-4的某些实施例可以用DRAM实现。在一些实施例中,ARC 222-4可以是与ARC 222-2相同的高速缓存;在其它实施例中,ARC222-4可以是虚拟存储池602-1的不同于ARC 222-2的分开的高速缓存。如所指示的,促进云存储对象块414-1的某些实施例可以具有基于HTTP的实现。
对于一些实施例,还可以由L2ARC设备222-5促进虚拟存储池602-1的读取操作。对于一些实施例,ARC 222可以被引用为包括L2ARC设备222-5。在一些实施例中,LSARC设备222-5可以是与L2ARC设备222-3相同的高速缓存;在其它实施例中,LSARC设备222-5可以是虚拟存储池602-1的不同于L2ARC设备222-3的分开的高速缓存设备。如所指示的,L2ARC设备222-5的某些实施例可以具有基于SSD或基于HDD的实现。
可以由意图日志214-4来促进虚拟存储池602-1对云存储对象块414-1的写入操作。在一些实施例中,意图日志214-4可以与意图日志214-3相同;在其它实施例中,意图日志214-4可以与意图日志214-3分开且不同。如所指示的,意图日志214-4的某些实施例可以具有基于SSD或基于HDD的实现。
向云存储的过渡提供了若干优点(例如,成本、规模和地理位置),但是,当常规使用时,云存储具有一些限制。当应用客户端内部部署(on premise)定位而非共存于云中时,时延常常是常规技术的重要问题。但是,混合云存储系统400可以消除该问题。混合云存储系统400的某些实施例可以提供镜像特征,以促进性能、迁移和可用性。
利用混合云存储系统400,可以最小化系统存储池416的读取操作与虚拟存储池602-1的读取操作的时延之间的差异。在一些实施例中,两个池的ARC和L2ARC设备可以是本地的实现。两个池的ARC和L2ARC设备处的时延可以等同或基本等同。例如,ARC的读取操作的典型时延可以是0.01ms或更小,并且L2ARC的典型时延可以是0.10ms或更小。来自云存储对象块414-1的读取操作的时延可以更高,但是混合云存储系统400可以智能地管理两个池以最小化更高的时延。
某些实施例可以用文件系统语义提供低时延、直接云访问。某些实施例可以促进从云存储装置运行,同时保持应用语义。某些实施例可以实现本地存储读取性能,同时保留云中所有数据的复制副本。为了提供这些特征,某些实施例可以利用内部部署的高速缓存设备并充分利用混合存储池高速缓存算法。通过为云存储装置提供有效的高速缓存和文件系统语义,云存储装置可以不止被用于备份和恢复。混合存储系统可以“实时”使用云存储装置。换句话说,通过智能使用内部部署的高速缓存设备,可以向本地系统提供全部性能的益处,而不必在本地保持全部的或多个副本。
图12是根据本公开的某些实施例的进一步图示混合云存储系统400-2的特征的简化示例的图。利用有效的高速缓存设备和算法,混合云存储系统400-2可以在块级别而不是文件级别高速缓存,因此对大型对象(例如,大型数据库)的访问不需要高速缓存整个对象。在各种实施例中,所描绘的示例可以与虚拟存储池602-1和系统存储池416中的一个或组合对应。
混合云存储系统400-2可以采用自适应I/O分级来捕获系统操作所需的大多数对象。混合云存储系统400-2可以配置多个高速缓存设备以提供自适应I/O分级。在所描绘的示例中,自适应I/O分级是利用ARC 222-5实现的。但是,在各种实施例中,混合云存储系统400-2可以被配置为使用多个ARC 222和/或L2ARC 222来提供自适应I/O分级。虽然以下描述使用ARC 222作为示例,但是应当理解的是,各种实施例可以使用多个ARC 222以及一个或多个L2ARC 222来提供所公开的特征。
在一些实施例中,ARC 222-5可以是自校正的(self-tuning),使得ARC 222-5可以基于I/O工作负载而调整。举例来说,在混合云存储系统400-2在实时模式下使用云存储装置而不仅仅用于备份和迁移的实施例中,ARC 222-5可以提供根据优先次序对对象进行分级的高速缓存算法。用于高速缓存的优先次序可以与最近使用(MRU)对象、最常使用(MFU)对象、最不常使用(LFU)对象和最近最少使用(LRU)对象对应。利用每次I/O操作,ARC 222-5可以确定分级的数据对象的自调整是否必要。要注意的是,在某些实施例中,L2ARC 225-5可以与ARC 222-5共同工作以促进一个或多个级。举例来说,可以具有比ARC 222-5更高的时延的L2ARC 225-5可以用于排名较低的级中的一个或多个级,诸如LRU和/或LFU级。在一些实施例中,混合云存储系统400-2的另一个组件可以根据这些实施例引起高速缓存。举例来说,云存储装备402可以协调读取和写入请求的高速缓存和服务。另外,根据一些实施例,云存储装备402可以包括(一个或多个)ARC 222-5、(一个或多个)L2ARC 222-5和/或意图日志214-4。
利用每个I/O操作,ARC 222-5可以调整先前在某种程度上被分级的一个或多个对象的分级。至少,调整可以包括更新对至少一个对象的访问的跟踪。调整可能包括降到更低的级、驱逐、或升级到更高的级。用于升级和降级的过渡标准对于从当前级到另一个级或到驱逐的每个过渡可以是不同的。如本文所公开的,ARC 222-5可以具有由于存储器压力而从高速缓存驱逐存储器缓冲器的能力,以维持高吞吐量和/或满足使用率阈值。
利用给定的I/O操作,如果与I/O操作对应的一个或多个对象尚未被分级为MRU对象,那么可以将一个或多个对象新分级为MRU对象。但是,如果与I/O操作对应的一个或多个对象已经被分级为MRU对象,那么ARC 222-5可以将过渡标准应用于一个或多个对象以确定是否将一个或多个对象过渡到不同的级。如果未满足过渡标准,那么对于I/O操作的服务,分级的改变是不必要的。
图13是图示根据本公开的某些实施例的涉及混合云存储系统400-3的用于高速缓存管理和云时延掩盖的某些特征的示例方法1300的框图。根据某些实施例,方法1300可以如方框1302所指示的那样开始。但是,如上所述,本文公开的方法的某些步骤可以以任何合适的方式混洗、组合和/或同时或基本上同时执行,并且可取决于所选择的实现。
如方框1302所指示的,可以从应用202接收对执行(一个或多个)特定操作(即,(一个或多个)事务)的(一个或多个)POSIX兼容请求。这种操作可以与读取、写入和/或修改数据对应。如方框1304所指示的,(一个或多个)POSIX兼容请求可以经由系统调用接口208从操作系统被转发到DMU 218。如方框1306所指示的,DMU 218可以将对于针对对象执行操作的请求直接翻译成对针对云对象存储库404内的物理位置执行I/O操作的请求。DMU 218可以将I/O请求转发到SPA。
如方框1308所指示的,SPA可以从DMU 218接收I/O请求。并且,响应于请求,SPA可以发起执行I/O操作。如方框1310所指示的,在写入操作的情况下,SPA可以使用COW过程来发起将对象写入云对象存储库404。例如,云接口装备402可以关于云对象存储库404继续进行上面公开的COW过程(例如,鉴于图7)。如方框1312所指示的,在读取操作的情况下,SPA可以发起对象的读取。可以为一个或多个请求的对象检查ARC 222-5。在一些实施例中,如方框1314所指示的,可以确定与(一个或多个)I/O请求对应的一个或多个经验证的数据对象是否存在于ARC 222-5中。这可以包括SPA首先确定与(一个或多个)读取请求对应的一个或多个对象是否可从ARC 222-5中检索。然后,如果这样的一个或多个对象是可检索的,那么可以利用来自逻辑树中一个或多个父节点的一个或多个校验和来检查(一个或多个)对象。在各种实施例中,检查可以由ARC 222-5、云存储装备402和/或I/O流水线224执行。如方框1316所指示的,在(一个或多个)数据对象被验证的情况下(或者,在一些未采用验证的实施例中,在命中的简单情况下),系统400的读取和/或进一步处理操作可以继续进行。
在一些实施例中,如方框1318所指示的,在(一个或多个)数据对象未被验证的情况下(或者,在一些未采用验证的实施例中,在没有命中的简单情况下),SPA可以发起从本地存储装置228读取一个或多个对象。对于一些实施例,指向一个或多个对象的指针可以被高速缓存并用于从本地存储装置228读取一个或多个对象。如果这种指针没有被高速缓存,那么一些实现可以不为一个或多个对象而检查本地存储装置228。如果一个或多个对象是可检索的,那么可以用来自逻辑树中一个或多个父节点的一个或多个校验和来检查一个或多个对象。再次,在各种实施例中,检查可以由ARC 222-5、云存储装备402和/或I/O流水线224执行。在(一个或多个)对象被验证的情况下,处理流程可以过渡到方框1316,并且系统400的读取和/或进一步处理操作可以继续进行。
如方框1320所指示的,在(一个或多个)数据对象未被验证的情况下(或者,在一些未采用验证的实施例中,在没有命中的简单情况下),SPA可以发起从云对象存储库404读取一个或多个数据对象。在各种实施例中,可以通过DMU 218、ARC 222-5、I/O流水线224和/或云接口装备402中的一个或组合来执行读取的发起。从云对象存储库404读取一个或多个对象可以包括先前在本文(例如,关于图9)公开的步骤。此类步骤可以包括上面详细描述的向云接口装备402发出(一个或多个)I/O请求、使用云存储对象414的映射406向云对象存储库404发送对应的(一个或多个)云接口请求、响应于对象接口请求而接收(一个或多个)数据对象等中的一个或组合。如方框1324所指示的,可以确定是否已经从云对象存储库404检索到经验证的对象。再次,这可以涉及先前在本文(例如,关于图9)公开的步骤,其中确定是否通过来自逻辑树中的(一个或多个)父节点的(一个或多个)校验和来验证(一个或多个)数据对象。
在(一个或多个)数据对象的实际与预期校验和不匹配的情况下,处理流程可以过渡到方框1326,其中可以发起补救处理。这可以涉及先前在本文(例如,关于图9)公开的步骤,其中公开了补救处理。但是,在数据被验证的情况下,处理流程可以过渡到方框1316,并且系统400的读取和/或进一步处理操作可以继续进行。
如方框1328所指示的,在已检索到一个或多个对象之后,可以调整高速缓存分级。在某些情况下,高速缓存分级的调整可以包括将一个或多个对象新高速缓存为MRU对象,如方框1330所指示的。如果与给定I/O操作对应的一个或多个对象尚未被分级为MRU对象,那么可以将该一个或多个对象新分级为MRU对象。
然而,在某些情况下,当与I/O操作对应的一个或多个对象已经被分级为MRU、MFU、LFU或LRU对象时,ARC 222-5可以将过渡标准应用于该一个或多个对象,以确定是否将该一个或多个对象过渡到不同的级,如方框1332所指示的。但是,如果不满足过渡标准,那么对于I/O操作的服务,分级的改变可能是不必要的。
在一些实施例中,对象的分级可以至少部分地是对于对象的访问的新近度的函数。如方框1334所指示的,在一些实施例中,高速缓存分级的调整可以包括更新一个或多个新近度属性。ARC 222-5可以为该一个或多个新对象定义新近度属性,以便跟踪对该一个或多个对象的访问的新近度。新近度属性可以对应于(例如,通过绝对时间、系统时间、时间差等)指示与一个或多个对象对应的最后访问时间的时间参数和/或指示与该一个或多个对象对应的访问计数的顺序参数,其中其它对象的新近度属性可以与该一个或多个对象比较。
在各种实施例中,过渡标准可以包括为了使对象有资格从当前级过渡而定义的一个或多个新近度阈值。例如,ARC 222-5可以至少部分地基于指派给一个或多个对象的新近度属性的值来确定是否应当将该一个或多个对象过渡到LFU级或LRU级(或驱逐)。在一些实施例中,新近度阈值可以是动态阈值,该动态阈值作为为一个或多个级中的其它对象定义的新近度属性的函数来调整。例如,当为分级的对象定义的新近度属性的值按升序或降序排序时,新近度阈值可以是为已经被分级为MFU对象的任何对象定义的任何新近度属性的最低值的函数。
附加地或可替代地,在一些实施例中,对象的分级可以至少部分地是对于对象的访问的频率的函数。如方框1336所指示的,在一些实施例中,高速缓存分级的调整可以包括更新一个或多个频率属性。利用特定I/O操作,ARC 222-5可以增加为一个或多个对象定义的频率属性,以便跟踪对该一个或多个对象的访问的频率。频率属性可以指示在任何合适的时间段上的访问次数,该时间段可以是绝对时间段、基于活动的时间段(例如,用户会话,或者自从满足最小活动阈值的最后数量的访问活动以来的时间)等等。
在各种实施例中,过渡标准可以包括为了使对象有资格从当前级过渡而定义的一个或多个频率阈值。例如,在频率属性的值改变之后,ARC 222-5可以确定一个或多个对象是否应当被分级为MFU对象(或者被分级为另一级中的对象)。可以至少部分地基于将更新后的频率属性与频率阈值进行比较来做出这样的确定。在一些实施例中,频率阈值可以是动态阈值,该动态阈值作为为其它分级的对象(例如,被分级为MFU对象或另一级中的对象)定义的频率属性的函数来调整。例如,当为分级的对象定义的频率属性的值按升序或降序排序时,频率阈值可以是为已经被分级为MFU对象的任何对象定义的任何频率属性的最低值的函数。
如方框1338所指示的,附加地或可替代地,根据一些实施例,高速缓存分级的调整可以包括指定一个或多个其它分级属性。分级属性可以指示操作类型。对于一些实施例,对象的分级可以至少部分地是操作类型的函数。例如,分级算法可以采用写入操作相对于读取操作的鉴别,使得只有利用读取操作访问的对象可以被分级为MFU对象。在这样的实施例中,用写入操作引用的对象可以最初被维护为MRU对象,并且此后根据LFU分级标准经受降级。可替代地,在此类实施例中,用写入操作引用的对象可以最初被维护为MRU对象,并且此后根据LRU分级标准经受降级,然后经受驱逐,从而有效地跳过LFU分级。作为另一个替代方案,用写入操作引用的对象可以最初被维护为MRU对象并且此后经受驱逐,从而有效地跳过LFU分级和LRU分级。对于此类替代方案,ARC 222-5把将云对象提交到云对象存储库404的写入操作鉴别为不太可能被后续读取操作所需要,因此如果这种潜在操作出现,那么允许这种操作带来云访问时延。
分级属性可以指示数据类型。附加地或可替代地,在一些实施例中,对象的分级可以至少部分地是数据类型的函数。例如,一些实施例可以相对于数据给予元数据更高的优先级。更高的优先级可以包括保留所有元数据对象,以及使数据对象分级。可替代地,较高的优先级可以包括相对于数据对象向元数据对象应用用于分级过渡(从当前级的升级和/或降级)的不同标准。例如,为数据对象有资格降级而定义的阈值(例如,新近度、频率和/或类似阈值)可以比为元数据对象有资格降级而定义的阈值更低(并且因此更容易满足)。可替代地,其它实施例可以相对于元数据给予数据更高的优先级。对于一些实施例,可以将云对象的一部分定义为始终被高速缓存,而不管使用频率如何。
分级属性可以指示操作特性。附加地或可替代地,在一些实施例中,对象的分级可以至少部分地是读取操作特性的函数。例如,一些实施例可以给予具有使得读取的对象的大小满足大小阈值的大小特性的读取操作更高的优先级。附加地或可替代地,可以给予具有使得读取的对象的顺序满足顺序阈值的顺序特性的读取操作更高的优先级。因而,对于高速缓存,大的顺序流式读取操作可以被赋予比小的更加孤立的读取操作更高的优先级。以这种方式,避免了大的顺序流式读取操作的更高的云访问时延。
ARC 222-5的某些实施例可以针对每个级采用不同的函数、过渡标准和/或阈值。在一些实施例中,ARC 222-5可以采用分级评分系统。一些实施例可以用数字表达式(例如,分级得分)对对象评分。分级得分可以反映对象相对于任何合适标准(诸如过渡标准)的资格。例如,对象的给定分级得分可以是根据诸如访问频率、访问新近度、操作类型、数据类型、操作特性、对象大小等标准的累积评分。可以针对每个标准对给定对象评分。例如,诸如频率属性、新近度属性等的属性的相对较大的值可以被给予更大的得分。同样,可以鉴于其它标准和优先级指派得分。可以使用用于对象的累积分级得分以及存储在高速缓存中的其它对象的分级得分来根据优先次序对对象排序。再次,优先次序可以用于将对象过渡到不同的级和/或朝着驱逐过渡。
ARC 222-5可以使级和存储在其中的对象适应于满足一个或多个高速缓存使用率和容量约束。例如,给定比如说1TB的DRAM的高速缓存设备容量,ARC 222-5可以使级和存储在其中的对象适应于维持80%的最大高速缓存使用率。此外,一些实施例可以使级和存储在其中的对象适应于满足一个或多个速度约束。例如,ARC 222-5可以监视吞吐量以在给定本地访问和云访问两者的情况下维持可接受的访问时延(例如,平均访问时延)量,以便确定是否应当采用更多或更少的高速缓存来满足一个或多个时延容限。鉴于这种适应约束,级和存储在其中的对象的适应可以包括为每个级应用不同的函数和阈值,以便按优先次序对对象排序。可以由ARC 222-5利用优先次序将存储的对象朝着驱逐转移,以便满足适应约束。
如方框1340所指示的,在一些实施例中,高速缓存分级调整可以包括过渡到不同的高速缓存模式。一些实施例可以动态地改变操作模式,以便在满足使用率和时延约束的同时进行负载均衡。初始或默认操作模式可以与以实时方式从云操作对应,使得首先从高速缓存访问对象,然后如果必要的话从云访问对象。ARC 222-5的一些实施例可以最初(例如,在会话或时间段内)高速缓存利用I/O操作访问的所有对象,然后当高速缓存使用率满足一个或多个阈值时过渡到采用分级。过渡到分级可以是利用一个或多个辅助操作模式的增量式的。例如,分级可以最初降到MRU和MFU级,然后在满足一个或多个高速缓存使用率阈值(其可以在最大高速缓存使用率阈值前面并且低于最大高速缓存使用率阈值)时扩展到其它级中的一个或多个级。
鉴于高速缓存使用率接近使用率约束并且满足一个或多个使用率阈值,可以利用一个或多个附加操作模式增量地应用某些过渡标准。例如,最初可能不会鉴别与写入操作对应的对象。然而,当高速缓存使用率接近使用率约束时,可以在满足一个或多个使用率阈值之后应用该鉴别标准。
作为另一个示例,当高速缓存使用率进一步接近使用率约束并且满足一个或多个使用率阈值时,对于排名较低的级(例如,LRU和/或LFU级),混合云存储系统400-2可以开始利用具有一个或多个L2ARC设备的扩展高速缓存(其可以与一个或多个低时延侧对应)。作为又一个示例,当高速缓存使用率进一步接近使用率约束并满足一个或多个使用率阈值时,混合云存储系统400-2可以开始利用本地存储装置228以便利用一个或多个第三操作模式来符合时延容限。通过更具体的示例,不是驱逐大的顺序流式读取操作而不为未来低时延访问做准备,而是对应对象的访问频率和操作的扩展可以足以满足大小和频率阈值,使得对象要被过渡到本地存储装置228。通过这种方式,混合云存储系统400-2可以保持对象可用于本地时延读取操作,同时释放高速缓存容量用于其它低时延访问(这可能需要其它大的顺序读取操作),并且如果再次调用大的顺序读取操作则避免承担云时延。在对象级别对本地存储装置228和云存储装置的这种选择性利用还可以促进在大部分时间使用高速缓存的同时掩盖云时延,以及云存储装置和本地存储装置228之间的负载均衡以在时延容限内操作。在各种实施例中,这种三叉存储适应可以被发起为后退操作模式,或者用于某些类型的操作的初始默认具有某些特性。
因而,某些实施例可以至少部分地基于对象访问的特性来更改高速缓存模式和技术。某些实施例可以充分利用高速缓存特征、云存储装置和本地存储装置228来掩盖基于云的操作的时延。在此类实施例中,大多数操作可以从具有通常超过90%或更多的高速缓存命中率的高速缓存被服务,这大多数时间导致本地时延。如果任何本地对象丢失或损坏,那么对象的云副本可以被访问。对于一些实施例,从云对象存储库404读取可以只有当没有高速缓存命中并且不能从本地存储装置228来服务读取请求时才是必要的。
在一些实施例中,代替上面公开的ARC检查、本地存储装置检查和/或云对象存储库检查,映射406可以用于识别一个或多个感兴趣对象的位置。如上所述,映射406可以包括对象目录,并且可以维护用每个I/O操作更新的对象状态。云对象状态可以保持在索引、表、索引组织的表和/或可以基于每个对象被索引的类似物中。对象状态可以包括对象高速缓存状态。对象高速缓存状态可以指示ARC、L2ARC、自适应级、本地存储装置和/或云存储装置中的任何一个或组合中的对象的位置。通过利用映射406,云接口设备402可以直接识别一个或多个感兴趣对象的位置。在一些实施例中,云接口设备402可以仅在根据ARC检查没有命中的情况下才利用映射406。
在一些实施例中,作为高速缓存的附加或替代,智能池管理包括保持与云对象存储库404连续同步的镜像。至少部分地通过支持云对象数据存储库作为虚拟设备,某些实施例可以提供本地和云存储装置之间的镜像。利用本地存储装置来镜像云存储装置可以实现本地存储读取性能,同时在云中保留所有数据的复制副本。通过使用镜像,可以向本地系统提供全部性能的好处,而不必在本地保持多个副本。如果任何本地数据丢失或损坏,那么可以访问数据的云副本。同步镜像云和本地设备可以促进更高级别的性能。
为了促进这种同步镜像,某些实施例可以包括镜像VDEV。图14图示了根据本公开的某些实施例的用于促进同步镜像的混合云存储系统400的示例网络文件系统200-2的实例。文件系统200-2可以与文件系统200-1对应,但是镜像管理直接集成到ZFS控制栈中。除了关于文件系统200-1公开的内容之外,文件系统200-2还可以包括镜像VDEV 1402,镜像VDEV 1402促进数据的云拷贝,但是具有读取数据的本地访问时间/速度。
在一些实施例中,镜像VDEV 1402可以与ZFS文件系统架构内的另一个VDEV类型的设备驱动程序接口的一个或多个VDEV对应。ZFS可以直接与镜像VDEV 1402通信,镜像VDEV1402可以处于直接在文件系统200-2的驱动器层上方的虚拟设备层,并且在一些实施例中,与ZFS架构内的设备驱动程序接口的抽象对应。文件系统200-2可以将镜像VDEV 1402创建为用于I/O操作的漏斗。在一些实施例中,镜像VDEV 1402可以是文件系统200-2的其它组件可以主要与之通信的点。例如,在一些实施例中,来自事务对象层的通信可以通过镜像VDEV1402到达物理层。更具体而言,来自DMU 218的通信可以被指引到I/O流水线224和镜像VDEV1402。响应于此类通信,镜像VDEV 1402可以将通信指引到其它VDEV(诸如VDEV 226)和云接口设备502。照此,镜像VDEV 1402可以协调关于本地存储装置228和云对象存储装置404的I/O操作。
在一些实施例中,镜像VDEV 1402可以仅协调关于本地存储装置228和云对象存储装置404的写入操作,使得读取操作不需要通过镜像VDEV 1402。对于此类实施例,诸如VDEV226之类的其它VDEV和云接口设备502可以绕过镜像VDEV 1402以进行读取操作。在替代实施例中,镜像VDEV 1402可以协调所有I/O操作。
有利地,镜像VDEV 1402可以协调写入操作,使得经由一个或多个VDEV 226关于本地存储装置228以及经由云接口设备502关于云对象存储库404同步地执行每个写入操作。每个I/O操作的这种同步镜像是在对象级别而不是文件级别执行的。每个I/O操作的数据复制使得混合云存储系统400能够实现掩盖云访问的时延的本地存储读取性能。作为默认,混合云存储系统400可以从本地存储装置228读取,以避免为绝大多数读取操作承担云时延。仅当混合云存储系统400确定本地数据丢失或损坏时,混合云存储系统400才需要访问云对象存储库404以读取期望数据的云副本。可以基于对象执行此类例外,以便最小化云访问的时延。
图15是图示根据本公开的某些实施例的涉及混合云存储系统400的用于同步镜像和云时延掩盖的某些特征的示例方法1500的框图。根据某些实施例,方法1500可以如方框1502所指示的那样开始。但是,如上所述,本文公开的方法的某些步骤可以以任何合适的方式混洗、组合和/或同时或基本上同时执行,并且可以取决于所选择的实现。
如方框1502所指示的,可以从应用202接收执行(一个或多个)特定操作(即,(一个或多个)事务)的(一个或多个)POSIX兼容请求。这种操作可以与写入和/或修改数据对应。如方框1504所指示的,(一个或多个)POSIX兼容请求可以经由系统调用接口208从操作系统被转发到DMU 218。如方框1506所指示的,DMU 218可以将对于针对数据对象执行操作的请求直接翻译成对针对系统存储池416和云对象存储库404内的物理位置执行写入操作的请求(即,I/O请求)。DMU 218可以将I/O请求转发到SPA。
SPA的镜像VDEV 1402可以(例如,通过ARC 222和I/O流水线224)接收I/O请求。如方框1508所指示的,镜像VDEV 1402可以发起基于每I/O操作利用同步复制写入数据对象。镜像VDEV 1402的一部分可以指向本地存储装置,并且镜像VDEV 1402的一部分可以指向云存储装备402的云接口设备502。如方框1510所指示的,镜像VDEV 1402可以将写入操作的第一实例指引到VDEV 226中的一个或多个。在一些实施例中,如方框1514所指示的,上面公开的COW过程(例如,鉴于图3A-图3D)可以继续进行,以便将数据对象写入本地系统存储装置。
如方框1512所指示的,镜像VDEV 1402可以将写入操作的第二实例指引到云存储装备402的云接口设备502。在一些实施例中,如方框1516所指示的,上面公开的COW过程可以继续进行,以便将数据对象写入本地系统存储装置。例如,方法1500可以过渡到方法700的方框712或另一个步骤。
对于关于本地存储装置228和关于云对象存储库404同步执行的每个写入操作,混合云存储系统400此后可以智能地协调读取操作,以便实现掩盖云访问的时延的本地存储读取性能。在完成了复制数据存储之后的任何合适的时间,混合云存储系统400可以协调此类读取操作。再次参考图15,如方框1518所指示的,可以从应用202接收执行一个或多个特定操作(即,一个或多个事务)的POSIX兼容请求。这种操作可以与读取或以其它方式访问数据对应。如方框1520所指示的,POSIX兼容请求可以经由系统调用接口208从操作系统被转发到DMU 218。如方框1522所指示的,DMU 218可以将对于针对数据对象执行操作的请求直接翻译成对针对本地存储装置228执行一个或多个读取操作的请求(即,一个或多个I/O请求)。SPA可以从DMU 218接收(一个或多个)I/O请求。如方框1524所指示的,响应于(一个或多个)请求,SPA可以发起从本地存储装置228读取一个或多个数据对象。在一些实施例中,可以针对一个或多个数据对象的高速缓存的版本而首先检查ARC 222,并且,如果没有找到高速缓存的版本,那么可以进行从本地存储装置228读取一个或多个数据对象的尝试。
如方框1526所指示的,可以确定是否存在与(一个或多个)I/O请求对应的一个或多个经验证的数据对象。这可以包括SPA首先确定与一个或多个I/O请求对应的一个或多个对象是否是从本地存储装置228可检索的。然后,如果这样的一个或多个对象是可检索的,那么可以使用来自逻辑树中的(一个或多个)父节点的(一个或多个)校验和来检查(一个或多个)对象。在各种实施例中,检查可以由VDEV 226、镜像VDEV 1402和/或I/O流水线224中的一个或多个执行。如方框1528所指示的,在(一个或多个)数据对象被验证的情况下,系统400的读取和/或进一步处理操作可以继续进行,因为已经确定数据未被损坏并且不是不正确的版本。
但是,在SPA确定不存在与(一个或多个)I/O请求对应的经验证的数据对象的情况下,处理流程可以过渡到方框1530。这种确定可以与不存在与一个或多个I/O请求对应的可检索的数据对象对应,在这种情况下,可以识别错误情况。类似地,这种确定可以对应于与一个或多个I/O请求对应的(一个或多个)数据对象的实际与预期校验和的不匹配,在这种情况下,也可以识别错误条件。在任一情况下,SPA都可以发起从云对象存储库404读取一个或多个数据对象,如方框1530所指示的。在各种实施例中,可以通过DMU 218、镜像VDEV1402、I/O流水线224和/或云接口装备402中的一个或组合来执行读取的发起。
从云对象存储库404读取一个或多个数据对象可以包括先前在本文(例如,关于图9)公开的步骤。此类步骤可以包括上面详细描述的向云接口装备402发出(一个或多个)I/O请求、使用云存储对象414的映射406向云对象存储库404发送对应的(一个或多个)云接口请求、响应于对象接口请求而接收(一个或多个)数据对象等当中的一个或组合。如方框1532所指示的,可以确定是否已经从云对象存储库404检索到经验证的数据对象。再次,这可以涉及先前在本文(例如,关于图9)公开的步骤,其中确定是否通过来自逻辑树中的(一个或多个)父节点的(一个或多个)校验和来验证(一个或多个)数据对象。
在数据被验证的情况下,处理流程可以过渡到方框1528,并且系统400的读取和/或进一步处理操作可以继续。另外,如方框1534所指示的,可以将正确数据写入本地系统存储装置。在各种实施例中,校正处理可以由DMU 218、镜像VDEV 1402、I/O流水线224和/或云接口装备402中的一个或组合来执行。在一些实施例中,处理流程可以过渡到方框1514,其中COW过程可以继续进行以便将正确数据写入本地系统存储装置。
但是,在(一个或多个)数据对象的实际与预期校验和不匹配的情况下,处理流程可以过渡到方框1536,其中可以发起补救处理。这可以涉及先前在本文(例如,关于图9)公开的步骤,其中公开了补救处理。例如,补救处理可以包括重新发出一个或多个云接口请求、从另一个云对象存储库请求正确版本的数据和/或类似物。
有利地,当由混合云存储系统400维护的数据量超过某个量时,根据关于图12和图13公开的实施例,从上面公开的镜像模式过渡到高速缓存模式可以变得成本效益更优化。某些实施例可以自动进行该过渡。混合云存储系统400可以以镜像技术开始,继续进行直到达到一个或多个阈值为止。可以鉴于存储装置使用率来定义此类阈值。例如,当本地存储装置容量的使用率达到阈值百分比(或绝对值、相对值等)时,混合云存储系统400可以过渡到自适应I/O分级。以这种方式,混合云存储系统400可以通过转移操作模式来均衡施加在本地存储装置上的负载。然后,混合云存储系统400可以是最相关的X量的数据(例如,10TB和/或类似物),并将其余数据分流到云存储装置。这种负载均衡可以允许更少的存储设备,同时适应不断增加的数据存储量。
现在参考图16,描绘了网络文件系统1600的另一个示例。如下面更详细讨论的,该示例网络文件系统1600可以被配置为支持跨多个云数据对象存储库404的同步镜像,该多个云数据对象存储库404可以由不同的云提供商操作。虽然在该示例中仅描绘了文件系统1600的某些组件,诸如池存储层(例如,虚拟设备层)和物理存储层内的组件,但是应该理解的是,该示例中的文件系统1600可以对应于上面讨论的ZFS文件系统的实施例中的一个或多个实施例,诸如文件系统200-1和/或文件系统200-2。例如,如在文件系统220-2中那样,文件系统1600可以包括镜像VDEV 1402,镜像VDEV 1402被配置为支持与文件系统1600的数据和元数据的文件系统存储的快照对应的逻辑树300的同步复制(或镜像)和存储。如在文件系统200-2中那样,文件系统1600可以支持直接集成到ZFS控制栈中的镜像管理,镜像VDEV 1402可以在ZFS控制栈中促进数据的多个云副本。
如以上所讨论的,镜像VDEV 1402可以被实现为ZFS文件系统架构的虚拟设备层内的虚拟设备,虚拟设备层可以直接在驱动器层之上。在一些实施例中,镜像VDEV 1402可以对应于ZFS架构内的设备驱动程序接口的抽象。文件系统1600可以将镜像VDEV 1402创建为用于I/O操作的漏斗,和/或镜像VDEV 1402可以是文件系统1600的其它组件可以通过其进行通信的点。如该示例中所示,来自事务对象层(例如,数据管理单元218(未示出))的通信可以通过I/O流水线224到镜像VDEV 1402,并且然后到达物理层。响应于这种通信,镜像VDEV 1402可以将通信指引到其它VDEV 226和/或云接口设备502。由此,镜像VDEV 1402可以协调关于本地数据对象存储库228和云对象存储库404的I/O操作。
诸如示例文件系统1600的网络文件系统可以用于实现在多个不同云提供商的云存储装置之间镜像数据的各种技术。例如,如以下所讨论的,存储表示ZFS文件系统1600的文件数据和元数据的逻辑数据块的完整树层次结构的数据对象集可以在多个不同的云对象存储库404之间被镜像。如该示例中所示,第一逻辑树层次结构300A可以存储在第一云提供商的第一云对象存储库404a中,而相同树层次结构300B的相同镜像实例存储在第二云提供商的第二云对象存储库404b中。
在各种实施例中,本文描述的镜像技术可以用于云复制、云迁移、基于云的部署(例如,开发测试)环境以及各种其它目的。例如,云复制可以提供灾难恢复并保护ZFS文件系统免受云存储库故障的影响。云迁移可以为ZFS文件系统1600提供例如基于云存储库性能、价格、可靠性等在云存储库/云提供商之间评估和改变的能力。如下面所讨论的,因为这种迁移大多数(或完全)可以在ZFS文件系统架构的较低级别内(例如,在池化存储层和物理存储层内)发起和执行,因此,云迁移可以完全透明地相对于接口层和构建在ZFS文件系统1600上的所有应用来执行。
另外,如以下所讨论的,因为这样的迁移可以通过镜像包括文件数据和元数据两者的逻辑数据块的相同树层次结构来执行(例如,而不是简单的逐文件迁移),因此可以确保文件系统数据可以在不同的云提供商之间迁移,而不会丢失任何文件系统数据或属性。即,即使不同的云对象存储库404a和404b支持存储在其中的数据对象的不同的本机属性集,作为逻辑数据块(包括具有文件数据和/或分开的对应元数据的两种块)的树层次结构的文件系统数据的组织、存储和迁移可以确保可以在不同的云对象存储库404a和404b之间执行迁移,而不会在迁移/复制处理期间丢失或更改任何文件数据或对应的元数据。此外,特定文件系统属性和其它扩展属性(例如,文件系统版本历史等)可以明确地存储在树层次结构的逻辑数据块内,因此在具有不同特性的不同云对象存储库404a和404b之间的迁移或复制期间将不会丢失。另外,由于类似的原因,诸如使用驻留在不同云对象存储库404a和404b中的树层次结构的不同实例创建的快照对象、ZFS文件系统对象、克隆对象和CFS卷对象之类的DMU对象可以是相同的,而与从中生成它们的云对象存储库404无关。
此外,云提供商之间的数据镜像可以使得能够直接创建包括逻辑数据块的相同层次结构的基于云的部署环境。因此,这样的部署环境可以用于在云数据对象存储库404内创建工作环境,允许应用开发者在基于云的部署环境内构建和测试新的应用/能力,然后(例如,在新功能的测试和核实之后)将基于云的部署环境迁移到ZFS文件系统1600的主存储系统(例如,本地数据对象存储库或云数据对象存储库)中。
另外,本文描述的跨多个云提供商镜像ZFS文件系统1600的数据对象存储的示例可以使用同步复制技术,同步复制技术可以在每个事务完成时确保数据的完全同步的副本。此外,本文描述的文件系统的架构可以允许跨多个云数据对象存储库的高效同步复制,由此镜像VDEV 1402可以将数据修改传送到多个云数据对象存储库,并且不需要从等待来自所有云数据对象存储库的指示成功的数据写入的确认。例如,当利用云数据镜像在文件系统1600上执行写入操作时,并且当文件系统1600支持本文描述的各种同步、数据恢复和/或核实技术时,镜像VDEV 1402可以被确保只要写入操作在云数据存储库404中的至少一个处成功,文件系统1600的同步、数据恢复和/或核实特征就将在写入操作可能不成功的任何其它云数据存储库404处完成写入操作。另外,在多个云数据对象存储库404之间的初始迁移或复制之后,文件系统1600的某些实施例可以提供对云数据对象存储库(例如,404a、404b、...)内的整个层次结构树(例如,300A、300B、...)的多个实例的校验求和。
如下面更详细描述的,云数据镜像的示例可以包括将逻辑树层次结构300A的第一实例从一个云对象存储库404a复制和/或迁移到另一个云对象存储库404b处的逻辑树层次结构300B的相同的第二实例。镜像VDEV 1402可以通过发起从存储逻辑树层次结构300A的云对象存储库404a检索数据对象,然后通过发起在存储逻辑树层次结构300B的相同实例的云对象存储库404b上创建和写入相同数据对象集,来协调云数据镜像。另外,如下面所讨论的,在初始云数据镜像之后,镜像VDEV 1402还可以协调源自文件系统1600的应用层的读取和/或写入操作。
在一些实施例中,云数据镜像的约束可能要求必须对与任何其它云对象存储库404镜像云数据的每个云对象存储库404使用树层次结构的逻辑块到云数据对象的相同映射。即,包含文件数据的逻辑块和/或包含元数据的逻辑块的相同配置,以及这些逻辑块到存储在云对象存储库404内的物理数据对象中的相同布置,可以用于每个云对象存储库404(和/或在也可以执行文件系统1600的数据的镜像的本地数据对象存储库内)。但是,在其它实施例中,可以在没有相同镜像约束的情况下实现云数据镜像技术。在这样的实施例中,不同的云对象存储库404a和404b可以存储不同数量、大小和/或配置的物理数据对象,只要每个不同的云对象存储库404上的物理数据对象存储表示文件系统1600的逻辑数据块的相同树层次结构即可。
最后,如示例文件系统1600所示,镜像VDEV 1402可能仅协调关于云数据对象存储库404(和/或在一些情况下相对于本地存储装置228)的写入操作,使得读取操作无需通过镜像VDEV 1402。在这样的实施例中,当协调源自应用层的写入操作时,镜像VDEV 1402可以协调写入操作,使得使用对应的云接口设备502相对于多个云对象存储库404同步地执行每个写入操作。对于读取操作,上游组件(例如,I/O流水线224、DMU 218等)可绕过镜像VDEV1402以进行读取操作,并将读取操作直接路由到云接口设备502之一以在云对象存储库404之一处执行读取操作。如该示例所示,云存储库性能监视器组件1625可以用于接收/确定云存储库性能数据,并基于性能数据将读取操作路由到特定云对象存储库404。例如,云存储库性能监视器1625(其可以在I/O流水线内、在DMU 218内、作为设备层内或文件系统1600内的其它地方的分开的虚拟设备226来实现)可以评估和分析由每个镜像的云对象存储库404执行的多个先前读取操作。基于对云对象存储库404在执行先前读取操作时的性能的评估,云存储库性能监视器1625可以执行最高性能的云对象存储库404的实时选择,并且可以将读取操作路由到该云对象存储库404。虽然这些示例涉及其中镜像VDEV 1402不协调关于云数据对象存储库404(和/或关于本地存储装置228)的读取操作的实施例,但是在其它实施例中,镜像VDEV 1402可以协调源自文件系统1600的应用层的读取和写入I/O操作两者。
现在参考图17,其中示出了网络文件系统1700的又一个示例。在该示例中,网络文件系统1700可以以与上面讨论的文件系统1600类似(或相同)的方式实现。如在以上示例中那样,文件系统1700可以被配置为支持跨多个(例如,2个或更多个)云数据对象存储库404的同步镜像。此外,在该示例中,文件系统1700可以支持跨云数据对象存储库404以及跨分开的本地数据对象存储库416两者的同步镜像。因此,在该示例中,文件系统1700可以包括与上面讨论的ZFS文件系统的各种实施例类似的组件,诸如混合云存储系统400的示例网络文件系统200-2。如在那个示例中那样,文件系统1700可以被配置为利用其余文件系统1700组件支持一个或多个云数据对象存储库与内部部署(例如,在同一数据中心内)存储的本地数据存储库416之间的同步镜像。虽然在该示例中未示出说明性树层次结构,但是本地数据存储库416和每个分开的云存储库404两者可以存储包含文件系统1700的逻辑块树层次结构的相同数据块集。此外,来自DMU 218的通信可以被指引到I/O流水线224和到镜像VDEV1402,并且响应于这样的通信,镜像VDEV 1402可以将通信指引到(一个或多个)VDEV 226和云接口设备502,以对各种后端数据存储库执行数据操作。因此,镜像VDEV 1402可以协调关于本地存储装置228和云数据对象存储库404两者的I/O操作。因此,可以在文件系统1700中类似地(或相同地)执行上面讨论的云数据镜像技术和示例,以支持一个或多个云对象存储库404和本地数据存储库416之间的迁移、复制和其它同步镜像技术。
在一些实施例中,文件系统1700中使用的同步镜像技术可以包括将包含文件数据的逻辑块和/或包含元数据的逻辑块的相同配置以及这些逻辑块到存储的物理数据对象中的相同布置存储在每个云对象存储库404内以及本地数据存储库416内。但是,在其它实施例中,(一个或多个)云对象存储库404可以存储来自存储在本地数据存储库416内的物理数据对象的不同数量、大小和/或配置的物理数据对象,只要该(一个或多个)云对象存储库404和本地数据存储库416存储与文件系统1700对应的逻辑数据块的相同树层次结构即可。
如上所述,可以在对象级别而不是文件级别执行每个I/O操作的同步镜像。利用每个I/O操作的数据复制可以使得文件系统1700能够实现掩盖云访问的时延的本地存储读取性能。因此,如该示例中所示,文件系统1700可以从本地数据存储库416读取,以便避免绝大多数读取操作的云时延。仅当文件系统1700确定数据存储库416内的本地数据丢失或损坏时,文件系统1700才需要访问云对象存储库404中的一个以读取期望数据的云副本。可以基于对象执行此类例外,使得云访问的时延被最小化。因此,如该示例中所示,在一些实施例中,文件系统1700不需要包括云存储库性能监视器1625来分析关于各种类型的读取操作的云存储库性能,如以上所讨论的。而是,在该示例中,所有读取操作可以绕过镜像VDEV 1402并且直接提供给被配置为访问本地数据对象存储库416的VDEV 226。但是,如在以上示例中那样,文件系统1700中的镜像VDEV 1402也可以用于协调关于云数据对象存储库404和本地数据存储库416的写入操作。当协调源自应用层的写入操作时,镜像VDEV 1402可以协调写入操作,使得使用对应的云接口设备502关于多个云对象存储库404以及使用适当的VDEV226关于本地数据存储库416同步地执行每个写入操作。
现在参考图18,示出了图示跨多个云数据对象存储库的来自网络文件系统的数据的同步镜像的示例处理的框图。如以上所讨论的,该示例中描述的同步镜像处理可以对应于云数据迁移、复制和/或创建基于云的临时部署(例如,开发-测试)环境。此外,根据文件系统数据从一个云对象存储库404a到另一个云对象存储库404b的同步镜像来描述该示例处理中的步骤,如文件系统1600中所示。但是,在其它示例中,类似或相同的技术可以用于文件系统数据从云对象存储库404到本地数据存储库416的同步镜像,反之亦然。
该处理中的步骤可以例如通过以上讨论的文件系统1600和/或文件系统1700中的组件(诸如镜像VDEV 1402、I/O流水线224和/或DMU 218)结合各种云接口设备502和其它VDEV 226来执行。例如,如以上所讨论的,镜像VDEV 1402可以通过发起在存储逻辑树层次结构的第一云对象存储库404a内检索特定数据对象,然后通过发起在第二云对象存储库404b上创建和写入相同的数据对象集,从而存储逻辑树层次结构的相同实例,来协调云数据迁移和/或复制处理。但是,在其它实施例中,下面描述的步骤可以部分地或完全地由除镜像VDEV 1402之外的文件系统组件(诸如I/O流水线224和/或DMU 218)执行。还应该理解的是,本文描述的处理特征不限于上述文件系统的特定实施例(例如,1600和1700),而是可以在本文支持的各种其它计算环境上执行。
在方框1802中,具有存储文件系统数据的(至少)一个云对象存储库404a的文件系统1600内的镜像VDEV 1402可以检测文件系统数据要被镜像到其上的第二云对象存储库404b。如以上所讨论的,在方框1802中对发起到第二云对象存储库404b的同步镜像的确定可以对应于在两个云对象存储库404a和404b之间的云数据迁移的发起、到辅助备份云对象存储库404b上的云数据复制的发起和/或在第二云对象存储库404b上的临时部署环境的创建。
方框1802中的确定可以对应于经由文件系统管理员接收到的指令和/或由镜像VDEV 1402软件执行的各种自动确定。例如,镜像VDEV 1402可以被配置为监视可用的云接口设备502和/或与每个相关联的云对象存储库404一起存储的当前数据对象集,并且可以基于检测到某些状态或事件自动发起云到云的同步镜像。作为示例,如果镜像VDEV 1402检测到与第一云对象存储库404a相关联的潜在性能或可靠性问题(例如,即将到来的定期维护、系统错误、接近云存储大小限制等),则在方框1802中镜像VDEV 1402可以自动发起从第一云对象存储库404a到第二云对象存储库404b的数据的迁移或复制。在这样的示例中,由镜像VDEV 1402执行以确定要发起同步镜像处理的自动处理可以包括对多个可用云数据对象存储库404的分析,以及基于存储可用性、价格、性能和/或其它因素对要在迁移/复制处理中成为接收方的特定云数据对象存储库404b的选择。附加地或可替代地,方框1802中的确定可以对应于经由管理用户接口接收到的对发起存储文件系统数据的树层次结构的第一云对象存储库404a与第二云对象存储库404b之间的同步镜像处理的请求或指令。
在方框1804中,镜像VDEV 1402可以经由第一云接口设备502a发起从第一云对象存储库404a请求和接收数据对象。例如,镜像VDEV 1402可以将一个或多个数据对象请求传送到第一云接口设备502a,第一云接口设备502a可以接收(一个或多个)请求并将对应的(一个或多个)云接口请求发送到云对象存储库404a。在一些实施例中,第一云接口设备502可以使用云对象存储库404a中的云存储对象的映射来协调请求。例如,云接口设备502可以根据逻辑树层次结构识别并请求被存储为云数据对象的文件系统数据的全部或一部分。响应于这些请求,云接口设备502a可以响应于对象接口请求而接收(一个或多个)数据对象,并且可以将(一个或多个)数据对象返回到镜像VDEV 1402。
在方框1806中,镜像VDEV 1402可以发起将在方框1804中接收到的数据对象写入到第二云对象存储库404b中。例如,镜像VDEV 1402可以确定一系列对象创建命令和/或写入操作以发起相同数据对象集的创建,从而存储相同的数据集(例如,具有与文件系统对应的文件数据和/或分开的元数据的各种逻辑块)。在方框1806中,镜像VDEV 1402可以将确定的创建/写入操作发送到与将在其中创建逻辑树层次结构的迁移和/或复制副本的第二云对象存储库404b相关联的云接口设备502b。在一些实施例中,该示例中的各个步骤可以同时执行而不是按照上面讨论的次序执行。例如,镜像VDEV 1402的一部分可以指向第一云对象存储库404a的云接口设备502a,而镜像VDEV 1402的另一部分可以指向第一云对象存储库404b的云接口设备502b,之后可以执行快速的一系列读入/写出操作以生成文件系统数据从第一云对象存储库404b到第二云对象存储库404b的镜像副本。
经由方框1802-1808中的操作执行的同步镜像可以在对象级别而不是文件级别执行。即,在各种实施例中,步骤1804和1808不对应于文件的检索和存储。而是,存储在第一云对象存储库404a上的每个数据对象可以被检索、拷贝和在第二云对象存储库404b上存储为相同的数据对象,其中每个数据对象存储与文件数据或分开存储的元数据对应的一个或多个逻辑数据块。因此,在该示例中的方框1802-1808完成时,第一和第二云对象存储库404a和404b可以存储包含文件数据的逻辑块和/或包含元数据的逻辑块的相同配置,以及这些逻辑块到存储在它们相应的物理存储系统内的相同数据对象集中的相同布置。
现在参考图19,示出了图示由网络文件系统接收和处理请求的示例处理的框图,该网络文件系统支持跨多个云数据对象存储库404和/或本地数据对象存储库416的文件系统数据的同步镜像。示例中的请求可以对应于对文件系统1600内的文件的文件数据和/或对应的元数据属性的检索、修改和/或删除的请求。下面根据如上面在文件系统1600和1700中所示的多个云对象存储库404之间和/或云对象存储库404与本地数据存储库416之间的文件系统数据的同步镜像来描述该示例处理。因此,该处理中的步骤可以例如通过镜像VDEV 1402结合各种云接口设备502和其它VDEV 226来执行。但是,在其它实施例中,下面描述的步骤可以部分地或完全地由除镜像VDEV 1402之外的文件系统组件执行,诸如I/O流水线224和/或DMU 218。还应该理解的是,本文描述的处理特征不限于上述文件系统(例如,1600和1700)的特定实施例,而是可以在本文支持的各种其它计算环境上执行。
在方框1902中,文件系统1600(或1700等)可以接收(一个或多个)POSIX兼容请求以执行(一个或多个)特定操作,例如,检索文件数据、写入和/或修改数据等。可以经由文件系统1600的应用层或接口层从应用接收方框1902中的请求。在方框1904中,(一个或多个)POSIX兼容请求可以经由系统调用接口208从操作系统被转发到DMU 218。在方框1906中,DMU 218可以将对于针对数据对象执行操作的请求直接翻译成对于针对一个或多个云对象存储库404和/或本地系统存储装置416内的物理位置执行读取和/或写入操作的请求(例如,I/O请求)。然后,DMU 218可以将I/O请求转发到SPA内的一个或多个组件,例如,I/O流水线224(和/或镜像VDEV 1402)。
在方框1908中,I/O流水线224可以确定所翻译的(一个或多个)请求是否需要在云对象存储库404和/或本地系统存储装置416内执行任何读取操作。例如,来自应用的对文件数据、文件性质的检索和从应用接收的类似请求可能需要在后端物理存储系统上执行读取操作。
在这种情况下(1908:是),在方框1910中,I/O流水线224可以确定哪个对象存储池(以及因此哪个对应的后端物理存储系统)执行所需的读取操作。例如,如上面参考文件系统1600所讨论的,I/O流水线224、DMU 218等可绕过镜像VDEV 1402进行读取操作,并将读取操作直接路由到云接口设备502之一用于执行。例如,方框1910可以包括使用云存储库性能监视器组件1625和/或类似组件来接收和评估多个云对象存储库404的性能数据。例如,云存储库性能监视器1625可以评估和分析由每个镜像的云对象存储库404执行的多个先前读取操作,并且基于评估可以选择最高性能的云对象存储库404来处理(一个或多个)读取操作。在其它示例中,代替基于对存储所请求数据的可用云对象存储库404的性能进行的确定或除该确定之外,类似的云存储库性能监视器组件1625可以基于其它云对象存储库特性(诸如价格、可靠性、当前处理负载等)来执行方框1910中的确定。
在其它实施例中,例如,如上面参考文件系统1700所讨论的,I/O流水线224可以被配置为将大多数(或所有)读取操作直接路由到被配置为访问本地数据对象存储库416的VDEV 226,以便避免对于大多数读取操作可能存在的云时延。例如,仅当I/O流水线224确定数据存储库416内的本地数据丢失或损坏时,I/O流水线224才能将读取请求路由到云对象存储库404之一。可以基于对象执行此类例外,使得云访问的时延被最小化。
在方框1912中,I/O流水线224可以发起从方框1910中确定的后端对象存储库(例如,404a、404b、416等)中读取一个或多个数据对象。在一些实施例中,可以针对一个或多个数据对象的高速缓存的版本而首先检查ARC 222,并且在没有找到高速缓存的版本的情况下,然后可以进行从本地对象存储库416或确定的云对象存储库404读取该一个或多个数据对象的尝试。在各种实施例中,方框1912中读取的发起可以由DMU 218、镜像VDEV 1402、I/O流水线224和/或对应于所选择的对象存储库的云接口设备502或VDEV 226中的一个或组合来执行。
在方框1914中,I/O流水线224可以确定所翻译的(一个或多个)请求是否需要在云对象存储库404和/或本地系统存储装置416内执行任何写入操作。例如,文件修改的创建、文件性质的更新以及从应用接收到的类似请求可能需要在后端物理存储系统上执行写入操作。应当注意的是,虽然在该示例中在方框1914中的写入操作的确定之前执行方框1908中的读取操作的确定,但是在其它示例中这些确定的次序和随后的相关方框可以颠倒,或者可以并行执行。
在方框1916中,I/O流水线224可以发起基于每I/O操作利用同步数据复制将一个或多个数据对象写入每个后端对象存储库(例如,本地对象存储库416和/或云对象存储库404)。I/O流水线224可以将确定的写入操作传递给镜像VDEV 1402,镜像VDEV 1402可以协调源自应用层的写入操作,使得每个写入操作使用对应的云接口设备502关于多个云对象存储库404以及使用适当的VDEV 226关于本地数据存储库416被同步地执行。
例如,如方框1918所指示的,镜像VDEV 1402可以将写入操作的第一实例指引到VDEV 226中的一个或多个。在一些实施例中,上面公开的COW过程(例如,根据图3A-图3D)可以继续进行以便将数据对象写入到本地数据存储库416。此外,如方框1920所指示的,镜像VDEV 1402可以将写入操作的第二实例指引到云存储装备404的云接口设备502。虽然在该实施例中仅示出了写入操作的两个实例,但是文件系统数据的树层次结构可以跨附加数据对象存储库(例如,多个云对象存储库404)被同步镜像,并且因此在其它实施例中写入操作的附加实例可以被发起。
图20描绘了用于实现根据本公开的某些实施例的分布式系统2000的简化图。在所示实施例中,分布式系统2000包括被配置为通过一个或多个网络2010执行和操作客户端应用的一个或多个客户端计算设备2002、2004、2006和2008,其中客户端应用诸如web浏览器、专有客户端(例如,Oracle Forms)等。服务器2012可以经由网络2010与远程客户端计算设备2002、2004、2006和2008可通信地耦接。
在各种实施例中,服务器2012可以适于运行由系统组件中的一个或多个组件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web的服务或云服务或者在软件即服务(SaaS)模型下被供应给客户端计算设备2002、2004、2006和/或2008的用户。操作客户端计算设备2002、2004、2006和/或2008的用户进而可以利用一个或多个客户端应用来与服务器2012交互以利用由这些组件提供的服务。
在该图中描绘的配置中,系统2000的软件组件2018、2020和2022被示为在服务器2012上实现。在其它实施例中,系统2000的组件和/或由这些组件提供的服务中的一个或多个也可以由客户端计算设备2002、2004、2006和/或2008中的一个或多个来实现。然后,操作客户端计算设备的用户可以利用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以用硬件、固件、软件或其组合来实现。应该认识到的是,可以与分布式系统2000不同的各种不同的系统配置是可能的。因此,图中所示的实施例是用于实现实施例系统的分布式系统的一个示例,并不旨在是限制性的。
客户端计算设备2002、2004、2006和/或2008可以是运行诸如Microsoft Windows之类的软件和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry、Palm OS等)并且启用互联网、电子邮件、短消息服务(SMS)、或其它通信协议的便携式手持设备(例如,蜂窝电话、计算平板电脑、个人数字助理(PDA))或可穿戴设备(例如,Google头戴式显示器)。客户端计算设备可以是通用个人计算机,作为示例,包括运行各种版本的MicrosoftApple和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商用或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统,诸如例如Google Chrome OS)中的任何操作系统的工作站计算机。替代地或附加地,客户端计算设备2002、2004、2006和2008可以是能够通过(一个或多个)网络2010通信的任何其它电子设备,诸如瘦客户端计算机、启用互联网的游戏系统(例如,具有或不具有姿势输入设备的Microsoft Xbox游戏控制台)和/或个人消息传递设备。
虽然示例性分布式系统2000被示为具有四个客户端计算设备,但是任何数量的客户端计算设备可以被支持。其它设备(诸如具有传感器的设备等)可以与服务器2012交互。
分布式系统2000中的(一个或多个)网络2010可以是本领域技术人员熟悉的、可以使用各种商用协议中的任何商用协议来支持数据通信的任何类型的网络,商用协议包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络架构)、IPX(互联网分组交换)、AppleTalk等。仅仅作为示例,(一个或多个)网络2010可以是局域网(LAN),诸如基于以太网、令牌环和/或其它技术的LAN。(一个或多个)网络2010可以是广域网和互联网。它可以包括虚拟网络,包括但不限于虚拟专用网络(VPN)、内联网、外联网、公共交换电话网(PSTN)、红外网络、无线网络(例如,根据电气和电子协会(IEEE)802.11协议套件、和/或任何其它无线协议中的任何协议来操作的网络)和/或这些网络和/或其它网络的任何组合。
服务器2012可以包括一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合。在各种实施例中,服务器2012可以适于运行在前述公开内容中描述的一个或多个服务或软件应用。例如,服务器2012可以对应于用于执行上文描述的根据本公开的实施例的处理的服务器。
服务器2012可以运行包括上文讨论的操作系统中的任何操作系统的操作系统以及任何商用服务器操作系统。服务器2012还可以运行各种附加服务器应用和/或中间层应用中的任何服务器应用和/或中间层应用,服务器应用和/或中间层应用包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(通用网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于来自Oracle、Microsoft、Sybase、IBM(国际商业机器)等的商用数据库服务器。
在一些实现中,服务器2012可以包括一个或多个应用,以分析和整合从客户端计算设备2002、2004、2006和2008的用户接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于馈送、更新或者从一个或多个第三方信息源和连续数据流接收到的实时更新,一个或多个第三方信息源和连续数据流可以包括与传感器数据应用、金融收报机(financial ticker)、网络性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽车交通监视等有关的实时事件。服务器2012还可以包括用于经由客户端计算设备2002、2004、2006和2008的一个或多个显示设备来显示数据馈送和/或实时事件的一个或多个应用。
分布式系统2000还可以包括一个或多个数据库2014和2016。数据库2014和2016可以驻留在各种位置中。作为示例,数据库2014和2016中的一个或多个可以驻留在服务器2012本地(和/或驻留在服务器2012中)的非瞬态存储介质上。可替代地,数据库2014和2016可以远离服务器2012并且经由基于网络的连接或专用连接与服务器2012通信。在一组实施例中,数据库2014和2016可以驻留在存储区域网络(SAN)中。类似地,用于执行属于服务器2012的功能的任何必要文件可以适当地被本地存储在服务器2012上和/或被远程存储。在一组实施例中,数据库2014和2016可以包括适于响应于SQL格式的命令而存储、更新和检索数据的关系数据库,诸如由Oracle提供的数据库。
图21是根据本公开的某些实施例的系统环境2100的一个或多个组件的简化框图,通过该系统环境2100,由系统的一个或多个组件提供的服务可以作为云服务供应。在所示实施例中,系统环境2100包括可以由用户使用以与提供云服务的云基础设施系统2102交互的一个或多个客户端计算设备2104、2106和2108。客户端计算设备可以被配置为操作可以由客户端计算设备的用户用来与云基础设施系统2102交互以使用由云基础设施系统2102提供的服务的客户端应用,诸如web浏览器、专有客户端应用(例如,Oracle Forms)或某种其它应用。
应当认识到的是,图中描绘的云基础设施系统2102可以具有所描绘的组件之外的其它组件。另外,图中所示的实施例仅仅是可以结合本发明的实施例的云基础设施系统的一个示例。在一些其它实施例中,云基础设施系统2102可以具有比图中所示多或少的组件、可以组合两个或更多个组件,或者可以具有不同的组件配置或布置。
客户端计算设备2104、2106和2108可以是与上文针对2002、2004、2006和2008所描述的设备类似的设备。虽然示例性系统环境2100被示出具有三个客户端计算设备,但是任何数量的客户端计算设备可以被支持。其它设备(诸如具有传感器的设备等)可以与云基础设施系统2102交互。
(一个或多个)网络2110可以促进客户端2104、2106和2108与云基础设施系统2102之间的数据的交换和通信。每个网络可以是本领域技术人员所熟悉的可以使用各种商用协议(包括上文针对(一个或多个)网络2010所描述的协议)中的任何协议来支持数据通信的任何类型的网络。云基础设施系统2102可以包括一个或多个计算机和/或服务器,一个或多个计算机和/或服务器可以包括上文针对服务器2012描述的那些计算机和/或服务器。
在某些实施例中,由云基础设施系统提供的服务可以包括按需对云基础设施系统的用户可用的许多服务,诸如在线数据存储和备份解决方案、基于Web的电子邮件服务、托管办公套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态扩展以满足其用户的需要。由云基础设施系统提供的服务的具体实例化在本文中被称为“服务实例”。一般而言,来自云服务提供商的系统的经由通信网络(诸如互联网)对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的内部部署的(on-premises)服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
在一些示例中,计算机网络云基础设施中的服务可以包括对由云供应商向用户提供的存储装置、托管数据库、托管Web服务器、软件应用或如本领域已知的其它服务的受保护的计算机网络访问。例如,服务可以包括通过互联网对云上的远程存储装置的受密码保护的访问。作为另一个示例,服务可以包括基于Web服务的托管关系数据库和脚本语言中间件引擎,以供联网的开发者私人使用。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。
在某些实施例中,云基础设施系统2102可以包括以自服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式递送给客户的一套应用、中间件和数据库服务供应物。这种云基础设施系统的示例是由本受让人提供的Oracle公共云。
在各种实施例中,云基础设施系统2102可以适于自动供给、管理和跟踪客户对由云基础设施系统2102供应的服务的订阅。云基础设施系统2102可以经由不同的部署模型来提供云服务。例如,服务可以在公共云模型下被提供,其中云基础设施系统2102被销售云服务的组织拥有(例如,被Oracle拥有),并且服务对一般公众或不同的工业企业可用。作为另一个示例,服务可以在私有云模型下被提供,其中云基础设施系统2102仅为单个组织操作,并且可以为该组织内的一个或多个实体提供服务。云服务还可以在社区云模型下被提供,其中云基础设施系统2102和由云基础设施系统2102提供的服务由相关社区中的若干组织共享。云服务还可以在混合云模型下被提供,该混合云模型是两个或更多个不同模型的组合。
在一些实施例中,由云基础设施系统2102提供的服务可以包括在软件即服务(SaaS)类别、平台即服务(PaaS)类别、基础设施即服务(IaaS)类别或包括混合服务的其它服务类别下提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统2102提供的一个或多个服务。然后,云基础设施系统2102执行处理以提供客户的订阅订单中的服务。
在一些实施例中,由云基础设施系统Y02提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些示例中,应用服务可以由云基础设施系统经由SaaS平台提供。SaaS平台可以被配置为提供落入SaaS类别下的云服务。例如,SaaS平台可以提供在集成的开发和部署平台上构建和递送按需应用套件的能力。SaaS平台可以管理和控制用于提供SaaS服务的底层软件和基础设施。通过利用由SaaS平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买分开的许可和支持。可以提供各种不同的SaaS服务。示例包括但不限于为大型组织提供用于销售业绩管理、企业集成和业务灵活性的解决方案的服务。
在一些实施例中,平台服务可以由云基础设施系统经由PaaS平台提供。PaaS平台可以被配置为提供落入PaaS类别下的云服务。平台服务的示例可以包括但不限于使组织(诸如Oracle)能够在共享的通用架构上整合现有应用以及构建充分利用平台提供的共享服务的新应用的能力的服务。PaaS平台可以管理和控制用于提供PaaS服务的底层软件和基础设施。客户可以获取由云基础设施系统提供的PaaS服务,而无需客户购买分开的许可和支持。平台服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)等。
通过利用由PaaS平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还可以控制所部署的服务。在一些实施例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,Oracle融合中间件服务)和Java云服务。在一个实施例中,数据库云服务可以支持使得组织能够汇集数据库资源并且以数据库云的形式向客户供应数据库即服务的共享服务部署模型。在云基础设施系统中,中间件云服务可以为客户提供开发和部署各种业务应用的平台,并且Java云服务可以为客户提供部署Java应用的平台。
各种不同的基础设施服务可以由云基础设施系统中的IaaS平台提供。基础设施服务促进利用由SaaS平台和PaaS平台提供的服务的客户对底层计算资源(诸如存储装置、网络和其它基本计算资源)的管理和控制。
在某些实施例中,云基础设施系统2102还可以包括基础设施资源2130,以用于提供被用来向云基础设施系统的客户提供各种服务的资源。在一个实施例中,基础设施资源2130可以包括预先集成和优化的硬件(诸如服务器、存储装置和联网资源)的组合,以执行由PaaS平台和SaaS平台提供的服务。在一些实施例中,云基础设施系统2102中的资源可以由多个用户共享并且根据需要动态重新分配。此外,可以将资源分配给在不同时区中的用户。例如,云基础设施系统2130可以使在第一时区中的第一组用户能够对于指定数量的小时来利用云基础设施系统的资源,并且然后使相同资源能够被重新分配给位于不同时区中的另一组用户,从而使资源的利用率最大化。
在某些实施例中,可以提供由云基础设施系统2102的不同组件或模块共享以及由云基础设施系统2102提供的服务共享的若干内部共享服务2132。这些内部共享服务可以包括但不限于:安全性和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、用于使能云支持的服务、电子邮件服务、通知服务、文件传输服务等。在某些实施例中,云基础设施系统2102可以提供对云基础设施系统中的云服务(例如,SaaS服务、PaaS服务和IaaS服务)的综合管理。在一个实施例中,云管理功能可以包括用于供给、管理和跟踪由云基础设施系统2102接收的客户订阅的能力等。
在某些实施例中,如图中所绘出的,云管理功能可以由一个或多个模块提供,诸如订单管理模块2120、订单编排模块2122、订单供给模块2124、订单管理和监视模块2126以及身份管理模块2128。这些模块可以包括一个或多个计算机和/或服务器或者可以使用一个或多个计算机和/或服务器来提供,该一个或多个计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。
在示例性操作2134中,使用客户端设备(诸如客户端设备2104、2106或2108)的客户可以通过请求由云基础设施系统2102提供的一个或多个服务并且对由云基础设施系统2102供应的一个或多个服务的订阅下订单来与云基础设施系统2102交互。在某些实施例中,客户可以访问云用户界面(UI)、云UI 2112、云UI 2114和/或云UI 2116并经由这些UI下订阅订单。响应于客户下订单而由云基础设施系统2102接收到的订单信息可以包括识别客户以及客户意图订阅的、由云基础设施系统2102供应的一个或多个服务的信息。
在客户下订单之后,经由云UI 2112、2114和/或2116,接收订单信息。在操作2136处,订单存储在订单数据库2118中。订单数据库2118可以是由云基础设施系统2118操作和与其它系统元件结合操作的若干数据库之一。在操作2138处,订单信息被转发到订单管理模块2120。在一些情况下,订单管理模块2120可以被配置为执行与订单相关的计费和记账功能,诸如核实订单并且一经核实就预订订单。
在操作2140处,将关于订单的信息传送到订单编排模块2122。订单编排模块2122可以利用订单信息为客户下的订单编排服务和资源的供给。在一些情况下,订单编排模块2122可以使用订单供给模块2124的服务来编排资源的供给以支持订阅的服务。
在某些实施例中,订单编排模块2122使得能够管理与每个订单相关联的业务流程并应用业务逻辑来确定订单是否应该进行到供给。在操作2142处,一经接收到新订阅的订单,订单编排模块2122就向订单供给模块2124发送请求以分配资源并配置满足订阅订单所需的那些资源。订单供给模块2124使得能够为由客户订购的服务分配资源。订单供给模块2124提供由云基础设施系统2100提供的云服务和用于供给用于提供所请求的服务的资源的物理实现层之间的抽象级别。因此,订单编排模块2122可以与诸如服务和资源是实际上即时供给还是预先供给并仅在请求时才分配/指派之类的实现细节隔离。
在操作2144处,一旦供给了服务和资源,就可以由云基础设施系统2102的订单供给模块2124向客户端设备2104、2106和/或2108上的客户发送所提供服务的通知。在操作2146处,可以由订单管理和监视模块2126管理和跟踪客户的订阅订单。在一些情况下,订单管理和监视模块2126可以被配置为收集订阅订单中的服务的使用统计,诸如,所使用的存储量、传输的数据量、用户的数量,以及系统运行时间和系统停机时间量。
在某些实施例中,云基础设施系统2100可以包括身份管理模块2128。身份管理模块2128可以被配置为提供身份服务,诸如云基础设施系统2100中的访问管理和授权服务。在一些实施例中,身份管理模块2128可以控制关于希望利用由云基础设施系统2102提供的服务的客户的信息。这样的信息可以包括认证这些客户的身份的信息以及描述这些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块2128还可以包括对关于每个客户的描述性信息以及关于可以如何和由谁来访问和修改这些描述性信息的管理。
图22图示了其中可以实现本发明的各种实施例的示例性计算机系统2200。系统2200可以用于实现本文描述的计算机系统中的任何一个。如图所示,计算机系统2200包括经由总线子系统2202与多个外围子系统通信的处理单元2204。这些外围子系统可以包括处理加速单元2206、I/O子系统2208、存储子系统2218和通信子系统2224。存储子系统2218包括有形计算机可读存储介质2222和系统存储器2210。
总线子系统2202提供用于让计算机系统2200的各种组件和子系统按意图的那样彼此通信的机制。虽然总线子系统2202被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统2202可以是使用各种总线架构中的任何总线架构的若干类型的总线结构中的任何总线结构,包括存储器总线或存储器控制器、外围总线、以及本地总线。例如,这种架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的夹层(Mezzanine)总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元2204控制计算机系统2200的操作。一个或多个处理器可以被包括在处理单元2204中。这些处理器可以包括单核处理器或多核处理器。在某些实施例中,处理单元2204可以被实现为一个或多个独立处理单元2232和/或2234,其中每个处理单元中包括单核处理器或多核处理器。在其它实施例中,处理单元2204还可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元2204可以响应于程序代码执行各种程序并且可以维护多个同时执行的程序或进程。在任何给定时间处,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器2204中和/或存储子系统2218中。通过适当的编程,(一个或多个)处理器2204可以提供上述各种功能。计算机系统2200可以附加地包括处理加速单元2206,该处理加速单元2206可以包括数字信号处理器(DSP)、专用处理器和/或类似物。在一些实施例中,处理加速单元2206可以包括诸如本文公开的加速引擎或结合诸如本文公开的加速引擎工作以改进计算机系统功能。
I/O子系统2208可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的指向设备、结合到显示器中的触摸板或触摸屏、滚轮、点击轮、拨盘、按钮、开关、小键盘、具有语音命令辨识系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或姿势辨识设备,诸如使得用户能够使用姿势和口头命令通过自然用户接口来控制诸如Microsoft2260游戏控制器的输入设备并与该输入设备交互的Microsoft运动传感器。用户接口输入设备还可以包括眼部姿势辨识设备,诸如从用户检测眼部活动(例如,当拍摄图片和/或进行菜单选择时的“眨眼”)并且将眼部姿势变换为到输入设备(例如,Google)中的输入的Google眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音辨识系统(例如,导航器)交互的语音辨识感测设备。
用户接口输入设备也可以包括但不限于:三维(3D)鼠标、操纵杆或指向杆(pointing stick)、游戏板和图形平板,以及音频/视觉设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医疗成像输入设备,诸如计算机断层扫描设备、磁共振成像设备、正电子发射断层扫描设备、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备之类的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于向用户或其它计算机输出来自计算机系统2200的信息的所有可能类型的设备和机构。例如,用户接口输出设备可以包括但不限于:可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备以及调制解调器。
计算机系统2200可以包括包含软件元件的被示出为当前位于系统存储器2210内的存储子系统2218。系统存储器2210可以存储在处理单元2204上可加载并且可执行的程序指令,以及在这些程序的执行期间所生成的数据。取决于计算机系统2200的配置和类型,系统存储器2210可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器等)。RAM通常包含可被处理单元2204立即访问和/或目前正在被处理单元2204操作和执行的数据和/或程序模块。在一些实现中,系统存储器2210可以包括多个不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,诸如在启动期间,包含有助于在计算机系统2200内的元件之间传输信息的基本例程的基本输入/输出系统(BIOS)通常可以被存储在ROM中。作为示例而非限制,系统存储器2210还示出了可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序2212,程序数据2214、以及操作系统2216。作为示例,操作系统2216可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种商用或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、GoogleOS等)和/或诸如iOS、Phone、OS、Z0OS和OS操作系统的移动操作系统。
存储子系统2218也可以提供用于存储提供一些实施例的功能的基本编程和数据构造的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统2218中。这些软件模块或指令可以被处理单元2204执行。存储子系统2218也可以提供用于存储根据本发明被使用的数据的储存库。
存储子系统2200也可以包括可被进一步连接到计算机可读存储介质2222的计算机可读存储介质读取器2220。与系统存储器2210一起并且可选地与系统存储器2210组合,计算机可读存储介质2222可以全面地表示用于临时地和/或更持久地包含、存储、传送和检索计算机可读信息的远程存储设备、本地存储设备、固定存储设备和/或可移动存储设备加存储介质。
包含代码或代码的一部分的计算机可读存储介质2222也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传送的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备、或者其它有形计算机可读介质。这也可以包括非有形的计算机可读介质,诸如可以用于传送期望信息并且可以被计算系统2200访问的数据信号、数据传送或者任何其它介质。
作为示例,计算机可读存储介质2222可以包括从不可移动的非易失性磁介质读取或写入到不可移动的非易失性磁介质的硬盘驱动器、从可移动的非易失性磁盘读取或写入到可移动的非易失性磁盘的磁盘驱动器、以及从可移动的非易失性光盘(诸如CD ROM、DVD和盘)或其它光学介质读取或写入到可移动的非易失性光盘或其它光学介质的光盘驱动器。计算机可读存储介质2222可以包括但不限于:驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带等。计算机可读存储介质2222也可以包括:基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM、基于DRAM的SSD、磁阻RAM(MRAM)SSD)、以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其相关联的计算机可读介质可以为计算机系统2200提供计算机可读指令、数据结构、程序模块以及其它数据的非易失性存储。
通信子系统2224提供到其它计算机系统和网络的接口。通信子系统2224充当用于从其它系统接收数据和从计算机系统2200向其它系统传送数据的接口。例如,通信子系统2224可以使计算机系统2200能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统2224可以包括用于(例如,使用蜂窝电话技术、先进数据网络技术,诸如ZG、4G或EDGE(用于全球演进的增强型数据速率)、WiFi(IEEE 802.11系列标准)或其它移动通信技术、或者其任何组合)访问无线语音和/或数据网络的射频(RF)收发器组件、全球定位系统(GPS)接收器组件和/或其它组件。在一些实施例中,作为无线接口的附加或者替代,通信子系统2224可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统2224也可以代表可以使用计算机系统2200的一个或多个用户来接收以结构化和/或非结构化数据馈送2226、事件流2228、事件更新2230等的形式的输入通信。作为示例,通信子系统2224可以被配置为实时地接收来自社交网络和/或其它通信服务的用户的数据馈送2226和/或来自一个或多个第三方信息源的实时更新,数据馈送2226诸如馈送、更新、诸如丰富站点摘要(RSS)馈送的web馈送。
此外,通信子系统2224也可以被配置为接收以连续数据流形式的数据,该连续数据流可以包括实时事件的事件流2228和/或事件更新2230,其可以是没有明确终止的本质上连续的或无界的。生成连续数据的应用的示例可以包括,例如,传感器数据应用、金融价格收报机、网络性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽车流量监视等。通信子系统2224也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送2226、事件流2228、事件更新2230等,这一个或多个数据库可以与耦接到计算机系统2200的一个或多个流式数据源计算机通信。
计算机系统2200可以是包括手持便携式设备(例如,蜂窝电话、计算平板电脑、PDA)、可穿戴设备(例如,Google头戴式显示器)、PC、工作站、大型机、信息亭(kiosk)、服务器机架或任何其它数据处理系统的各种类型中的一种类型。由于计算机和网络不断变化的本质,在图中绘出的计算机系统2200的描述仅旨在作为具体示例。具有比图中绘出的系统更多或更少组件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元件可以在硬件、固件、软件(包括小应用程序(applets))或其组合中实现。另外,可以采用到诸如网络输入/输出设备的其它计算设备的连接。基于本文提供的公开内容和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
在前面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的各种实施例的透彻理解。但是,对于本领域技术人员明显的是,可以在没有这些具体细节中的一些具体细节的情况下实践本发明的实施例。在其它情况下,以框图形式示出了众所周知的结构和设备。
前面的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。更确切地说,示例性实施例的前述描述将为本领域技术人员提供用于实现示例性实施例的使能描述。应当理解的是,在不脱离所附权利要求中阐述的本发明的精神和范围的情况下,可以在元件的功能和布置方面进行各种改变。
在前面的描述中给出了具体细节以提供对实施例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些实施例。例如,电路、系统、网络、处理和其它组件可能已经以框图形式示出为组件,以免用不必要的细节模糊实施例。在其它情况下,众所周知的电路、处理、算法、结构和技术可能已经在没有不必要的细节的情况下示出,以避免模糊实施例。
而且,要注意的是,各个实施例可能已被描述为处理,该处理被描绘为流程图、流程示意图、数据流程图、结构图或框图。虽然流程图可能已将操作描述为顺序处理,但许多操作可以并行或同时执行。此外,可以重新布置操作的次序。处理在其操作完成时终止,但可以有其它未包含在图中的步骤。处理可以与方法、函数、过程、子例程、子程序等对应。当处理与函数对应时,其终止可以与函数到调用函数或主函数的返回对应。
术语“计算机可读介质”包括但不限于便携式或固定存储设备、光学存储设备、无线信道以及能够存储、包含或携带(一个或多个)指令和/或数据的各种其它介质。代码段或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、参量、参数或存储器内容而耦接到另一个代码段或硬件电路。信息、参量、参数、数据等可以经由任何合适的手段传递、转发或传送,合适的手段包括存储器共享、消息传递、令牌传递、网络传送等。
此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当以软件、固件、中间件或微代码中实现时,用于执行必要任务的程序代码或代码段可以存储在机器可读介质中。(一个或多个)处理器可以执行必要任务。
在前述说明书中,参考本发明的具体实施例描述本发明的各方面,但是本领域技术人员将认识到的是,本发明不限于此。上述发明的各个特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些环境和应用之外的任何数目的环境和应用中被利用。相应地,本说明书和附图应当被认为是说明性的而不是限制性的。
此外,出于说明的目的,以特定次序描述了方法。应该认识到的是,在替代实施例中,可以以与所描述的次序不同的次序执行方法。还应该认识到的是,上述方法可以由硬件组件执行,或者可以以机器可执行指令的序列被实施,机器可执行指令可以用于使机器(诸如被编程有指令的通用或专用处理器或逻辑电路)执行方法。这些机器可执行指令可以被存储在一个或多个机器可读介质上,诸如CD-ROM或其它类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪存、或适合于存储电子指令的其它类型的机器可读介质。替代地,可以通过硬件和软件的组合来执行方法。
而且,权利要求中的术语具有其普通的普遍含义,除非专利权人另有明确和清晰的定义。如权利要求中所使用的,不定冠词“一”或“一个”在本文中被定义为意味着特定冠词引入的元素中的一个或多于一个;而定冠词“该”的后续使用并不意图否定那个含义。此外,使用诸如“第一”、“第二”等序数术语来阐明权利要求中的不同元素并不旨在向已向其应用该序数术语的元素赋予系列中的特定位置、或任何其它顺序字符或次序。
Claims (20)
1.一种方法,包括:
由在ZFS系统的虚拟设备层操作的一个或多个虚拟设备接收存储第一多个逻辑块的第一数据对象集合,第一多个逻辑块与树层次结构的第一实例对应,其中所述树层次结构的第一实例包括:
与由ZFS系统表示的一个或多个文件的数据对应的第一逻辑数据块集合;以及
与由ZFS系统表示的所述一个或多个文件相关联的第一元数据对应的一个或多个附加逻辑数据块,
其中,第一逻辑数据块集合和与第一元数据对应的附加逻辑数据块在所述树层次结构的第一实例内被存储为分开的逻辑块;
由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备生成存储第二多个逻辑块的第二数据对象集合,第二多个逻辑块与所述树层次结构的第二实例对应,其中所述树层次结构的第二实例包括:
与由ZFS系统表示的所述一个或多个文件的数据对应的第二逻辑数据块集合;以及
与由ZFS系统表示的所述一个或多个文件相关联的第二元数据对应的一个或多个附加逻辑数据块,
其中,第二逻辑数据块集合和与第二元数据对应的附加逻辑数据块在所述树层次结构的第二实例内被存储为分开的逻辑块;以及
由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备在本地数据对象存储库或云对象存储库中的至少一个内存储与所述树层次结构的第二实例对应的第二数据对象集合。
2.如权利要求1所述的方法,其中,与所述树层次结构的第一实例对应的第一多个逻辑块和与所述树层次结构的第二实例对应的第二多个逻辑块相同。
3.如权利要求2所述的方法,其中,根据所述树层次结构的第一实例和所述树层次结构的第二实例,第一逻辑数据块存储ZFS系统的第一文件的数据内容,并且不同的第二逻辑数据块存储与ZFS系统的第一文件相关联的对应元数据。
4.如权利要求3所述的方法,其中,在第一数据对象集合内,存储第一文件的数据内容的第一逻辑数据块被存储在第一数据对象内,并且存储与第一文件相关联的对应元数据的第二逻辑数据块被存储在不同的第二数据对象内。
5.如权利要求1所述的方法,其中,接收与所述树层次结构的第一实例对应的第一数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第一云接口设备来检索作为被存储在第一云对象存储库中的云存储对象的第一数据对象集合,以及
其中,存储与所述树层次结构的第二实例对应的第二数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第二云接口设备将第二云存储对象集合存储在第二云对象存储库中。
6.如权利要求5所述的方法,其中,第一云对象存储库被配置为本机支持被存储在第一云对象存储库中的第一数据对象集合中的每个数据对象的第一属性集合,并且其中,第二云对象存储库被配置为本机支持被存储在第二云对象存储库中的第二云存储对象集合中的每个云存储对象的第二属性集合,其中由第一云对象存储库本机支持的第一属性集合不同于由第二云对象存储库本机支持的第二属性集合。
7.如权利要求1所述的方法,其中,接收与所述树层次结构的第一实例对应的第一数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第一云接口设备检索作为被存储在第一云对象存储库中的云存储对象的第一数据对象集合,以及
其中,存储与所述树层次结构的第二实例对应的第二数据对象集合包括,由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备将第二数据对象集合存储在本地数据对象存储库内。
8.一种系统,包括:
处理单元,包括一个或多个处理器;以及
存储器,与所述处理单元耦接并能由所述处理单元读取并在其中存储指令集合,所述指令集合在由所述处理单元执行时,使所述系统:
在操作于ZFS系统的虚拟设备层处的系统的一个或多个虚拟设备处接收存储第一多个逻辑块的第一数据对象集合,第一多个逻辑块与树层次结构的第一实例对应,其中所述树层次结构的第一实例包括:
与由ZFS系统表示的一个或多个文件的数据对应的第一逻辑数据块集合;以及
与由ZFS系统表示的所述一个或多个文件相关联的第一元数据对应的一个或多个附加逻辑数据块,
其中,第一逻辑数据块集合和与第一元数据对应的附加逻辑数据块在所述树层次结构的第一实例内被存储为分开的逻辑块;
由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备生成存储第二多个逻辑块的第二数据对象集合,第二多个逻辑块与所述树层次结构的第二实例对应,其中所述树层次结构的第二实例包括:
与由ZFS系统表示的所述一个或多个文件的数据对应的第二逻辑数据块集合;以及
与由ZFS系统表示的所述一个或多个文件相关联的第二元数据对应的一个或多个附加逻辑数据块,
其中,第二逻辑数据块集合和与第二元数据对应的附加逻辑数据块在所述树层次结构的第二实例内被存储为分开的逻辑块;以及
由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备在本地数据对象存储库或云对象存储库中的至少一个内存储与所述树层次结构的第二实例对应的第二数据对象集合。
9.如权利要求8所述的系统,其中,与所述树层次结构的第一实例对应的第一多个逻辑块和与所述树层次结构的第二实例对应的第二多个逻辑块相同。
10.如权利要求9所述的系统,其中,根据所述树层次结构的第一实例和所述树层次结构的第二实例,第一逻辑数据块存储ZFS系统的第一文件的数据内容,并且不同的第二逻辑数据块存储与ZFS系统的第一文件相关联的对应元数据。
11.如权利要求10所述的系统,其中,在第一数据对象集合内,存储第一文件的数据内容的第一逻辑数据块被存储在第一数据对象内,并且存储与第一文件相关联的对应元数据的第二逻辑数据块被存储在不同的第二数据对象内。
12.如权利要求8所述的系统,其中,接收与所述树层次结构的第一实例对应的第一数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第一云接口设备检索作为被存储在第一云对象存储库中的云存储对象的第一数据对象集合,以及
其中,存储与所述树层次结构的第二实例对应的第二数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第二云接口设备将第二云存储对象集合存储在第二云对象存储库中。
13.如权利要求12所述的系统,其中,第一云对象存储库被配置为本机支持被存储在第一云对象存储库中的第一数据对象集合中的每个数据对象的第一属性集合,并且其中,第二云对象存储库被配置为本机支持被存储在第二云对象存储库中的第二云存储对象集合中的每个云存储对象的第二属性集合,其中由第一云对象存储库本机支持的第一属性集合不同于由第二云对象存储库本机支持的第二属性集合。
14.如权利要求8所述的系统,其中,接收与所述树层次结构的第一实例对应的第一数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第一云接口设备检索作为存储在第一云对象存储库中的云存储对象的第一数据对象集合,以及
其中,存储与所述树层次结构的第二实例对应的第二数据对象集合包括,由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备将第二数据对象集合存储在本地数据对象存储库内。
15.一种有形地实施在非瞬态机器可读存储介质中的计算机程序产品,包括被配置为使一个或多个数据处理器执行动作的指令,所述动作包括:
由在ZFS系统的虚拟设备层操作的一个或多个虚拟设备接收存储第一多个逻辑块的第一数据对象集合,第一多个逻辑块与树层次结构的第一实例对应,其中所述树层次结构的第一实例包括:
与由ZFS系统表示的一个或多个文件的数据对应的第一逻辑数据块集合;以及
与由ZFS系统表示的所述一个或多个文件相关联的第一元数据对应的一个或多个附加逻辑数据块,
其中,第一逻辑数据块集合和与第一元数据对应的附加逻辑数据块在所述树层次结构的第一实例内被存储为分开的逻辑块;
由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备生成存储第二多个逻辑块的第二数据对象集合,第二多个逻辑块与所述树层次结构的第二实例对应,其中所述树层次结构的第二实例包括:
与由ZFS系统表示的所述一个或多个文件的数据对应的第二逻辑数据块集合;以及
与由ZFS系统表示的所述一个或多个文件相关联的第二元数据对应的一个或多个附加逻辑数据块,
其中,第二逻辑数据块集合和与第二元数据对应的附加逻辑数据块在所述树层次结构的第二实例内被存储为分开的逻辑块;以及
由在ZFS系统的虚拟设备层操作的所述一个或多个虚拟设备在本地数据对象存储库或云对象存储库中的至少一个内存储与所述树层次结构的第二实例对应的第二数据对象集合。
16.如权利要求15所述的计算机程序产品,其中,与所述树层次结构的第一实例对应的第一多个逻辑块和与所述树层次结构的第二实例对应的第二多个逻辑块相同。
17.如权利要求16所述的计算机程序产品,其中,根据所述树层次结构的第一实例和所述树层次结构的第二实例,第一逻辑数据块存储ZFS系统的第一文件的数据内容,并且不同的第二逻辑数据块存储与ZFS系统的第一文件相关联的对应元数据。
18.如权利要求17所述的计算机程序产品,其中,在第一数据对象集合内,存储第一文件的数据内容的第一逻辑数据块被存储在第一数据对象内,并且存储与第一文件相关联的对应元数据的第二逻辑数据块被存储在不同的第二数据对象内。
19.如权利要求15所述的计算机程序产品,其中,接收与所述树层次结构的第一实例对应的第一数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第一云接口设备检索作为被存储在第一云对象存储库中的云存储对象的第一数据对象集合,以及
其中,存储与所述树层次结构的第二实例对应的第二数据对象集合包括,由在ZFS系统的虚拟设备层操作的镜像设备经由在ZFS系统的虚拟设备层内操作的第二云接口设备将第二云存储对象集合存储在第二云对象存储库中。
20.如权利要求19所述的计算机程序产品,其中,第一云对象存储库被配置为本机支持被存储在第一云对象存储库中的第一数据对象集合中的每个数据对象的第一属性集合,并且其中,第二云对象存储库被配置为本机支持被存储在第二云对象存储库中的第二云存储对象集合中的每个云存储对象的第二属性集合,其中由第一云对象存储库本机支持的第一属性集合不同于由第二云对象存储库本机支持的第二属性集合。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762443391P | 2017-01-06 | 2017-01-06 | |
US62/443,391 | 2017-01-06 | ||
US15/610,456 | 2017-05-31 | ||
US15/610,456 US10558699B2 (en) | 2017-01-06 | 2017-05-31 | Cloud migration of file system data hierarchies |
PCT/US2018/012313 WO2018129137A1 (en) | 2017-01-06 | 2018-01-04 | Cloud migration of file system data hierarchies |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110268379A true CN110268379A (zh) | 2019-09-20 |
CN110268379B CN110268379B (zh) | 2023-08-18 |
Family
ID=62781888
Family Applications (13)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780080042.2A Active CN110100240B (zh) | 2017-01-06 | 2017-12-20 | 用于zfs快照生成和存储的云网关 |
CN201780080030.XA Active CN110114751B (zh) | 2017-01-06 | 2017-12-21 | 压缩以及安全的端到端加密的zfs云存储 |
CN202310645079.2A Pending CN116627344A (zh) | 2017-01-06 | 2017-12-22 | 云规模处的zfs块级去重 |
CN201780080037.1A Active CN110168491B (zh) | 2017-01-06 | 2017-12-22 | 云规模处的zfs块级去重 |
CN201780080029.7A Active CN110100228B (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
CN202311337609.3A Pending CN117193666A (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的文件系统功能分层方法、系统、可读介质和装置 |
CN201780080039.0A Active CN110100229B (zh) | 2017-01-06 | 2017-12-29 | 利用文件系统层次结构和语义的低延时直接云访问 |
CN201780080041.8A Active CN110100231B (zh) | 2017-01-06 | 2017-12-29 | 促进性能、迁移和可用性的混合云镜像 |
CN201780080031.4A Active CN110192176B (zh) | 2017-01-06 | 2017-12-29 | 云对象存储库中受保证的文件系统层次结构数据完整性 |
CN201780080040.3A Active CN110100230B (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的文件系统功能分层方法、系统、可读介质和装置 |
CN201780080038.6A Active CN110168492B (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的一致文件系统语义 |
CN201880010822.4A Active CN110268380B (zh) | 2017-01-06 | 2018-01-03 | 跨云数据存储库的文件系统层次结构镜像 |
CN201880010821.XA Active CN110268379B (zh) | 2017-01-06 | 2018-01-04 | 文件系统数据层次结构的云迁移 |
Family Applications Before (12)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780080042.2A Active CN110100240B (zh) | 2017-01-06 | 2017-12-20 | 用于zfs快照生成和存储的云网关 |
CN201780080030.XA Active CN110114751B (zh) | 2017-01-06 | 2017-12-21 | 压缩以及安全的端到端加密的zfs云存储 |
CN202310645079.2A Pending CN116627344A (zh) | 2017-01-06 | 2017-12-22 | 云规模处的zfs块级去重 |
CN201780080037.1A Active CN110168491B (zh) | 2017-01-06 | 2017-12-22 | 云规模处的zfs块级去重 |
CN201780080029.7A Active CN110100228B (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
CN202311337609.3A Pending CN117193666A (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的文件系统功能分层方法、系统、可读介质和装置 |
CN201780080039.0A Active CN110100229B (zh) | 2017-01-06 | 2017-12-29 | 利用文件系统层次结构和语义的低延时直接云访问 |
CN201780080041.8A Active CN110100231B (zh) | 2017-01-06 | 2017-12-29 | 促进性能、迁移和可用性的混合云镜像 |
CN201780080031.4A Active CN110192176B (zh) | 2017-01-06 | 2017-12-29 | 云对象存储库中受保证的文件系统层次结构数据完整性 |
CN201780080040.3A Active CN110100230B (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的文件系统功能分层方法、系统、可读介质和装置 |
CN201780080038.6A Active CN110168492B (zh) | 2017-01-06 | 2017-12-29 | 利用云对象存储的一致文件系统语义 |
CN201880010822.4A Active CN110268380B (zh) | 2017-01-06 | 2018-01-03 | 跨云数据存储库的文件系统层次结构镜像 |
Country Status (5)
Country | Link |
---|---|
US (20) | US10884984B2 (zh) |
EP (12) | EP3566148B1 (zh) |
JP (3) | JP7098628B2 (zh) |
CN (13) | CN110100240B (zh) |
WO (11) | WO2018128825A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522615A (zh) * | 2020-04-23 | 2020-08-11 | 平安国际智慧城市科技股份有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN114138744A (zh) * | 2021-11-24 | 2022-03-04 | 中国建设银行股份有限公司 | 一种客户数据运行时迁移方法及系统 |
CN115348157A (zh) * | 2021-05-14 | 2022-11-15 | 中国移动通信集团浙江有限公司 | 分布式存储集群的故障定位方法、装置、设备及存储介质 |
WO2023103685A1 (en) * | 2021-12-08 | 2023-06-15 | International Business Machines Corporation | Generating multi-dimensional host-specific storage tiering |
Families Citing this family (185)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11294665B1 (en) | 2014-04-23 | 2022-04-05 | William Knight Foster | Computerized software version control with a software database and a human database |
US9535664B1 (en) * | 2014-04-23 | 2017-01-03 | William Knight Foster | Computerized software development process and management environment |
WO2017068481A1 (en) * | 2015-10-20 | 2017-04-27 | Jayaram Sanjay | System for managing data |
CN106294773A (zh) * | 2016-08-11 | 2017-01-04 | 北京小米移动软件有限公司 | 数据清理方法及装置 |
US10884984B2 (en) | 2017-01-06 | 2021-01-05 | Oracle International Corporation | Low-latency direct cloud access with file system hierarchies and semantics |
US10652330B2 (en) | 2017-01-15 | 2020-05-12 | Google Llc | Object storage in cloud with reference counting using versions |
US20230353635A1 (en) * | 2017-03-10 | 2023-11-02 | Pure Storage, Inc. | Replication Utilizing Cloud-Based Storage Systems |
US11089105B1 (en) * | 2017-12-14 | 2021-08-10 | Pure Storage, Inc. | Synchronously replicating datasets in cloud-based storage systems |
US10360099B2 (en) | 2017-04-28 | 2019-07-23 | Netapp Inc. | Object format resilient to remote object store errors |
US10387271B2 (en) * | 2017-05-10 | 2019-08-20 | Elastifile Ltd. | File system storage in cloud using data and metadata merkle trees |
US10601917B2 (en) * | 2017-06-27 | 2020-03-24 | Red Hat, Inc. | Containerized high-performance network storage |
US10534566B1 (en) * | 2017-07-19 | 2020-01-14 | EMC IP Holding Company LLC | Cloud storage tiering using application programming interface |
US10521400B1 (en) * | 2017-07-31 | 2019-12-31 | EMC IP Holding Company LLC | Data reduction reporting in storage systems |
US10831935B2 (en) * | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
GB2566263A (en) | 2017-09-01 | 2019-03-13 | Trustonic Ltd | Post-manufacture certificate generation |
GB2566265B (en) * | 2017-09-01 | 2020-05-13 | Trustonic Ltd | Post-manufacture generation of device certificate and private key for public key infrastructure |
US10768993B2 (en) * | 2017-09-29 | 2020-09-08 | Nicira, Inc. | Adaptive, performance-oriented, and compression-assisted encryption scheme |
US10986091B2 (en) * | 2017-10-30 | 2021-04-20 | EMC IP Holding Company LLC | Systems and methods of serverless management of data mobility domains |
US10747458B2 (en) * | 2017-11-21 | 2020-08-18 | International Business Machines Corporation | Methods and systems for improving efficiency in cloud-as-backup tier |
TWI672924B (zh) * | 2017-11-23 | 2019-09-21 | 財團法人資訊工業策進會 | 平台即服務雲端伺服器及其機器學習資料處理方法 |
US10990282B1 (en) | 2017-11-28 | 2021-04-27 | Pure Storage, Inc. | Hybrid data tiering with cloud storage |
US20190215363A1 (en) * | 2018-01-08 | 2019-07-11 | Softnas Operating Inc. | Dynamic pool-based tiering for synchronization storage |
US11010233B1 (en) | 2018-01-18 | 2021-05-18 | Pure Storage, Inc | Hardware-based system monitoring |
US10936540B2 (en) * | 2018-03-14 | 2021-03-02 | Netapp, Inc. | Methods for accelerating storage media access and devices thereof |
US11392553B1 (en) | 2018-04-24 | 2022-07-19 | Pure Storage, Inc. | Remote data management |
US11436344B1 (en) | 2018-04-24 | 2022-09-06 | Pure Storage, Inc. | Secure encryption in deduplication cluster |
US20190362014A1 (en) * | 2018-05-28 | 2019-11-28 | Wipro Limited | Method and device for managing big-data in cloud environment |
US10656857B2 (en) * | 2018-06-07 | 2020-05-19 | Vast Data Ltd. | Storage system indexed using persistent metadata structures |
US10678461B2 (en) | 2018-06-07 | 2020-06-09 | Vast Data Ltd. | Distributed scalable storage |
TWI669610B (zh) * | 2018-06-13 | 2019-08-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN109033757B (zh) * | 2018-07-19 | 2022-04-05 | 湖南岳麓山数据科学与技术研究院有限公司 | 一种数据共享方法及系统 |
US11442761B2 (en) * | 2018-07-19 | 2022-09-13 | Centurylink Intellectual Property Llc | Method and system for implementing virtual machine (VM) management using hardware compression |
CN110737393B (zh) * | 2018-07-20 | 2023-08-11 | 伊姆西Ip控股有限责任公司 | 数据读取方法、设备和计算机程序产品 |
US10423573B1 (en) | 2018-07-24 | 2019-09-24 | Nasuni Corporation | Cloud-native global file system with multi-site support using push classes |
US10944547B2 (en) * | 2018-08-10 | 2021-03-09 | International Business Machines Corporation | Secure environment device management |
US11815936B2 (en) | 2018-08-22 | 2023-11-14 | Microstrategy Incorporated | Providing contextually-relevant database content based on calendar data |
US10534759B1 (en) | 2018-08-23 | 2020-01-14 | Cohesity, Inc. | Incremental virtual machine metadata extraction |
CN109165198A (zh) * | 2018-09-09 | 2019-01-08 | 江西金格科技股份有限公司 | 一种基于ofd文档的增量修改方法 |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
US10938676B2 (en) | 2018-10-26 | 2021-03-02 | EMC IP Holding Company LLC | Cloud launch wizard |
US11838363B2 (en) * | 2018-11-05 | 2023-12-05 | Netapp, Inc. | Custom views of sensor data |
CN112955873B (zh) * | 2018-11-12 | 2024-03-26 | 华为技术有限公司 | 用于同步镜像文件系统的方法及其存储设备 |
CN109729156B (zh) * | 2018-12-18 | 2021-12-28 | 中信百信银行股份有限公司 | 基于后端应用服务变更自动化调整中间件的连接方法 |
CN111382136B (zh) * | 2018-12-29 | 2024-03-15 | 华为技术有限公司 | 文件系统镜像及文件请求方法 |
SE543186C2 (en) * | 2019-01-11 | 2020-10-20 | Zeropoint Tech Ab | Systems, methods and devices for eliminating duplicates and value redundancy in computer memories |
US20200252281A1 (en) * | 2019-02-05 | 2020-08-06 | Microstrategy Incorporated | System performance using semantic graph data |
US11829417B2 (en) | 2019-02-05 | 2023-11-28 | Microstrategy Incorporated | Context-based customization using semantic graph data |
US11625426B2 (en) | 2019-02-05 | 2023-04-11 | Microstrategy Incorporated | Incorporating opinion information with semantic graph data |
US11347696B2 (en) * | 2019-02-19 | 2022-05-31 | Oracle International Corporation | System for transition from a hierarchical file system to an object store |
US10810035B2 (en) | 2019-02-27 | 2020-10-20 | Cohesity, Inc. | Deploying a cloud instance of a user virtual machine |
US10761768B1 (en) | 2019-02-28 | 2020-09-01 | Netapp Inc. | Method to address misaligned holes and writes to end of files while performing quick reconcile operation during synchronous filesystem replication |
US11138061B2 (en) * | 2019-02-28 | 2021-10-05 | Netapp Inc. | Method and apparatus to neutralize replication error and retain primary and secondary synchronization during synchronous replication |
US11553346B2 (en) * | 2019-03-01 | 2023-01-10 | Intel Corporation | Misbehavior detection in autonomous driving communications |
US11899620B2 (en) | 2019-03-08 | 2024-02-13 | Netapp, Inc. | Metadata attachment to storage objects within object store |
US11144498B2 (en) | 2019-03-08 | 2021-10-12 | Netapp Inc. | Defragmentation for objects within object store |
US11144502B2 (en) * | 2019-03-08 | 2021-10-12 | Netapp Inc. | Object store file system format for representing, storing, and retrieving data in an object store according to a structured format |
US11016943B2 (en) | 2019-03-08 | 2021-05-25 | Netapp, Inc. | Garbage collection for objects within object store |
US20200344249A1 (en) * | 2019-03-27 | 2020-10-29 | Schlumberger Technology Corporation | Automated incident response process and automated actions |
US10896098B2 (en) | 2019-04-15 | 2021-01-19 | International Business Machines Corporation | Providing and managing data protection by using incremental forever for storage to cloud object stores |
US20200349015A1 (en) * | 2019-04-30 | 2020-11-05 | Clumio, Inc. | Restore from a Cloud-Based Data Protection Service |
US10635642B1 (en) * | 2019-05-09 | 2020-04-28 | Capital One Services, Llc | Multi-cloud bi-directional storage replication system and techniques |
US11573861B2 (en) | 2019-05-10 | 2023-02-07 | Cohesity, Inc. | Continuous data protection using a write filter |
CN113841136A (zh) * | 2019-05-17 | 2021-12-24 | 日立数据管理有限公司 | 用于管理基于对象的文件系统的装置、系统和方法 |
US11165777B2 (en) | 2019-05-30 | 2021-11-02 | Bank Of America Corporation | Controlling access to secure information resources using rotational datasets and dynamically configurable data containers |
US11153315B2 (en) | 2019-05-30 | 2021-10-19 | Bank Of America Corporation | Controlling access to secure information resources using rotational datasets and dynamically configurable data containers |
US11138328B2 (en) | 2019-05-30 | 2021-10-05 | Bank Of America Corporation | Controlling access to secure information resources using rotational datasets and dynamically configurable data containers |
US11144505B2 (en) * | 2019-06-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Data operations using a cache table in a file system |
US11036418B2 (en) | 2019-06-20 | 2021-06-15 | Intelliflash By Ddn, Inc. | Fully replacing an existing RAID group of devices with a new RAID group of devices |
CN110413809A (zh) * | 2019-07-31 | 2019-11-05 | 福建南威软件有限公司 | 一种基于云服务器的图片管理方法及系统 |
CN110555001B (zh) * | 2019-09-05 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及介质 |
CN110569221B (zh) * | 2019-09-09 | 2022-06-10 | 东吴证券股份有限公司 | 具有版本功能的文件系统管理方法、装置、设备和存储介质 |
CN110674173A (zh) * | 2019-09-24 | 2020-01-10 | 支付宝(杭州)信息技术有限公司 | 一种风控云上的数据缓存的方法和系统 |
US11265374B2 (en) * | 2019-10-15 | 2022-03-01 | EMC IP Holding Company LLC | Cloud disaster recovery |
US11397649B2 (en) | 2019-10-22 | 2022-07-26 | Cohesity, Inc. | Generating standby cloud versions of a virtual machine |
US11250136B2 (en) | 2019-10-22 | 2022-02-15 | Cohesity, Inc. | Scanning a backup for vulnerabilities |
CN110865845B (zh) * | 2019-10-28 | 2022-07-26 | 福建天泉教育科技有限公司 | 提高接口访问效率的方法、存储介质 |
US10628244B1 (en) | 2019-10-29 | 2020-04-21 | Snowflake Inc. | Calling external functions from a data warehouse |
US10803026B1 (en) * | 2019-11-01 | 2020-10-13 | Capital One Services, Llc | Dynamic directory recommendation and management |
US11086557B2 (en) | 2019-11-06 | 2021-08-10 | International Business Machines Corporation | Continuous asynchronous replication from on-premises storage to cloud object stores |
US11262830B2 (en) * | 2019-11-11 | 2022-03-01 | Microsoft Technology Licensing, Llc | Managing ephemeral storage on a computing node |
US10715524B1 (en) * | 2019-11-14 | 2020-07-14 | Snowflake Inc. | External credential-less stages for data warehouse integrations |
FR3103299B1 (fr) * | 2019-11-20 | 2023-04-28 | Amadeus Sas | Système informatique distribué pour délivrer des données |
US12050689B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Host anomaly-based generation of snapshots |
US11755751B2 (en) | 2019-11-22 | 2023-09-12 | Pure Storage, Inc. | Modify access restrictions in response to a possible attack against data stored by a storage system |
US20210382992A1 (en) * | 2019-11-22 | 2021-12-09 | Pure Storage, Inc. | Remote Analysis of Potentially Corrupt Data Written to a Storage System |
US12079356B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Measurement interval anomaly detection-based generation of snapshots |
US11720714B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Inter-I/O relationship based detection of a security threat to a storage system |
US11651075B2 (en) | 2019-11-22 | 2023-05-16 | Pure Storage, Inc. | Extensible attack monitoring by a storage system |
US11645162B2 (en) | 2019-11-22 | 2023-05-09 | Pure Storage, Inc. | Recovery point determination for data restoration in a storage system |
US12067118B2 (en) | 2019-11-22 | 2024-08-20 | Pure Storage, Inc. | Detection of writing to a non-header portion of a file as an indicator of a possible ransomware attack against a storage system |
US11615185B2 (en) | 2019-11-22 | 2023-03-28 | Pure Storage, Inc. | Multi-layer security threat detection for a storage system |
US11625481B2 (en) | 2019-11-22 | 2023-04-11 | Pure Storage, Inc. | Selective throttling of operations potentially related to a security threat to a storage system |
US11500788B2 (en) | 2019-11-22 | 2022-11-15 | Pure Storage, Inc. | Logical address based authorization of operations with respect to a storage system |
US12079333B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Independent security threat detection and remediation by storage systems in a synchronous replication arrangement |
US11941116B2 (en) * | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11687418B2 (en) | 2019-11-22 | 2023-06-27 | Pure Storage, Inc. | Automatic generation of recovery plans specific to individual storage elements |
US12050683B2 (en) | 2019-11-22 | 2024-07-30 | Pure Storage, Inc. | Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system |
US11675898B2 (en) * | 2019-11-22 | 2023-06-13 | Pure Storage, Inc. | Recovery dataset management for security threat monitoring |
US11520907B1 (en) * | 2019-11-22 | 2022-12-06 | Pure Storage, Inc. | Storage system snapshot retention based on encrypted data |
US11341236B2 (en) | 2019-11-22 | 2022-05-24 | Pure Storage, Inc. | Traffic-based detection of a security threat to a storage system |
US20220327208A1 (en) * | 2019-11-22 | 2022-10-13 | Pure Storage, Inc. | Snapshot Deletion Pattern-Based Determination of Ransomware Attack against Data Maintained by a Storage System |
US12079502B2 (en) | 2019-11-22 | 2024-09-03 | Pure Storage, Inc. | Storage element attribute-based determination of a data protection policy for use within a storage system |
US11657155B2 (en) | 2019-11-22 | 2023-05-23 | Pure Storage, Inc | Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system |
US11720692B2 (en) | 2019-11-22 | 2023-08-08 | Pure Storage, Inc. | Hardware token based management of recovery datasets for a storage system |
US11290531B2 (en) * | 2019-12-04 | 2022-03-29 | Dropbox, Inc. | Immediate cloud content item creation from local file system interface |
US11487549B2 (en) | 2019-12-11 | 2022-11-01 | Cohesity, Inc. | Virtual machine boot data prediction |
US11755228B1 (en) * | 2019-12-16 | 2023-09-12 | Stripe, Inc. | Global heterogeneous data mirroring |
US12086158B2 (en) * | 2019-12-27 | 2024-09-10 | Hitachi Vantara Llc | Hybrid cloud asynchronous data synchronization |
CN113064415A (zh) * | 2019-12-31 | 2021-07-02 | 华为技术有限公司 | 轨迹规划的方法、装置、控制器和智能车 |
CN113127549B (zh) * | 2019-12-31 | 2024-05-24 | 奇安信科技集团股份有限公司 | 增量数据的同步方法、装置、计算机设备和存储介质 |
WO2021141293A1 (ko) * | 2020-01-06 | 2021-07-15 | 주식회사 아미크 | 데이터의 전송 및 조회 시의 비용을 최소화하기 위한 데이터 아카이빙 방법 및 시스템 |
US10938892B1 (en) * | 2020-01-15 | 2021-03-02 | International Business Machines Corporation | Inter-cluster data transfer between file systems |
US11281541B2 (en) * | 2020-01-15 | 2022-03-22 | EMC IP Holding Company LLC | Dynamic snapshot backup in multi-cloud environment |
US20210224161A1 (en) | 2020-01-21 | 2021-07-22 | Nebulon, Inc. | Efficient io processing in a storage system with instant snapshot, xcopy, and unmap capabilities |
CN111309258B (zh) * | 2020-02-14 | 2021-10-15 | 苏州浪潮智能科技有限公司 | 一种b+树的存取方法、装置和计算机可读存储介质 |
CN111338568B (zh) * | 2020-02-16 | 2020-11-06 | 西安奥卡云数据科技有限公司 | 一种数据逻辑位置映射方法 |
US11221855B2 (en) | 2020-03-06 | 2022-01-11 | International Business Machines Corporation | Transformation of an enterprise application into a cloud native application |
US11630736B2 (en) * | 2020-03-10 | 2023-04-18 | EMC IP Holding Company LLC | Recovering a storage volume associated with a snapshot lineage from cloud storage |
US11199985B2 (en) * | 2020-03-10 | 2021-12-14 | EMC IP Holding Company LLC | Tracking storage capacity usage by snapshot lineages using metadata in a multi-level tree structure |
US11227016B2 (en) | 2020-03-12 | 2022-01-18 | Vast Data Ltd. | Scalable locking techniques |
US20210303511A1 (en) * | 2020-03-30 | 2021-09-30 | Pure Storage, Inc. | Cloning a Managed Directory of a File System |
US12079162B2 (en) | 2020-03-30 | 2024-09-03 | Pure Storage, Inc. | Snapshot management in a storage system |
CN111459412B (zh) * | 2020-03-30 | 2023-07-04 | 北京百度网讯科技有限公司 | 磁盘管理方法、装置以及电子设备 |
US11704035B2 (en) | 2020-03-30 | 2023-07-18 | Pure Storage, Inc. | Unified storage on block containers |
US11321278B2 (en) * | 2020-04-29 | 2022-05-03 | Rubrik, Inc. | Light-weight index deduplication and hierarchical snapshot replication |
CN111611142A (zh) * | 2020-05-19 | 2020-09-01 | 深圳Tcl数字技术有限公司 | 信息收集方法、装置及存储介质 |
US11556423B2 (en) | 2020-05-22 | 2023-01-17 | Vmware, Inc. | Using erasure coding in a single region to reduce the likelihood of losing objects maintained in cloud object storage |
US11544147B2 (en) | 2020-05-22 | 2023-01-03 | Vmware, Inc. | Using erasure coding across multiple regions to reduce the likelihood of losing objects maintained in cloud object storage |
US11481319B2 (en) * | 2020-05-22 | 2022-10-25 | Vmware, Inc. | Using data mirroring across multiple regions to reduce the likelihood of losing objects maintained in cloud object storage |
CN111708778B (zh) * | 2020-06-09 | 2021-06-29 | 黄克颖 | 一种大数据管理的方法与系统 |
CN113806314B (zh) * | 2020-06-15 | 2024-01-26 | 中移(苏州)软件技术有限公司 | 一种数据存储方法、装置、计算机存储介质及系统 |
US11620186B1 (en) * | 2020-06-17 | 2023-04-04 | Egnyte, Inc. | System and method for resolving transient and localized errors in a hybrid cloud cache |
CN111767263B (zh) * | 2020-07-04 | 2022-08-30 | 武汉空心科技有限公司 | 一种工作平台文件存储方法及系统 |
CN113296792B (zh) * | 2020-07-10 | 2022-04-12 | 阿里巴巴集团控股有限公司 | 存储方法、装置、设备、存储介质和系统 |
US11418555B1 (en) * | 2020-07-31 | 2022-08-16 | The Mathworks, Inc. | Systems and methods for streaming an application via object storage |
US20220075546A1 (en) * | 2020-09-04 | 2022-03-10 | Pure Storage, Inc. | Intelligent application placement in a hybrid infrastructure |
US11507274B2 (en) | 2020-10-22 | 2022-11-22 | Dell Products L.P. | System and method to use dictionaries in LZ4 block format compression |
US11463556B2 (en) * | 2020-11-18 | 2022-10-04 | Verizon Patent And Licensing Inc. | Systems and methods for packet-based file compression and storage |
CN112463532B (zh) * | 2020-11-24 | 2022-09-09 | 江南大学 | 构建snn工作负载自动映射器的方法及自动映射器 |
CN112732341B (zh) | 2020-11-30 | 2023-08-01 | 北京百度网讯科技有限公司 | 车载计算平台的休眠控制方法、设备及可读存储介质 |
US11768745B2 (en) | 2020-12-08 | 2023-09-26 | Cohesity, Inc. | Automatically implementing a specification of a data protection intent |
US11914480B2 (en) | 2020-12-08 | 2024-02-27 | Cohesity, Inc. | Standbys for continuous data protection-enabled objects |
US11614954B2 (en) * | 2020-12-08 | 2023-03-28 | Cohesity, Inc. | Graphical user interface to specify an intent-based data management plan |
TWI770732B (zh) * | 2020-12-22 | 2022-07-11 | 威聯通科技股份有限公司 | 儲存管理系統及其搜尋排序方法 |
CN112579357B (zh) * | 2020-12-23 | 2022-11-04 | 苏州三六零智能安全科技有限公司 | 快照差量获取方法、装置、设备及存储介质 |
US11372553B1 (en) | 2020-12-31 | 2022-06-28 | Seagate Technology Llc | System and method to increase data center availability using rack-to-rack storage link cable |
CN113779083A (zh) * | 2021-01-29 | 2021-12-10 | 北京京东拓先科技有限公司 | 数据处理方法、装置、服务器以及存储介质 |
CN113296883B (zh) * | 2021-02-22 | 2023-08-04 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
US11481287B2 (en) | 2021-02-22 | 2022-10-25 | Cohesity, Inc. | Using a stream of source system storage changes to update a continuous data protection-enabled hot standby |
WO2022198132A1 (en) * | 2021-03-19 | 2022-09-22 | Regeneron Pharmaceuticals, Inc. | Data pipeline |
CN113157209B (zh) * | 2021-04-09 | 2024-07-02 | 北京易华录信息技术股份有限公司 | 一种文件系统到对象存储的数据重建方法及装置 |
US11228545B1 (en) * | 2021-04-16 | 2022-01-18 | EMC IP Holding Company LLC | Cross application granular restore of backed-up email attachments |
US11663234B2 (en) | 2021-04-23 | 2023-05-30 | Hewlett Packard Enterprise Development Lp | Storage of a small object representation in a deduplication system |
US20220350545A1 (en) * | 2021-04-29 | 2022-11-03 | EMC IP Holding Company LLC | Method and systems for storing data in a storage pool using memory semantics with applications utilizing object semantics |
US11138192B1 (en) | 2021-04-30 | 2021-10-05 | Snowflake Inc. | Invoking external table functions from a database system |
US11645238B2 (en) * | 2021-06-01 | 2023-05-09 | International Business Machines Corporation | Notifying a cache file system of changes to files in a source file system served from the cache file system |
US11650957B2 (en) | 2021-06-01 | 2023-05-16 | International Business Machines Corporation | Receiving at a cache node notification of changes to files in a source file system served from a cache file system at the cache node |
US11983147B2 (en) * | 2021-06-02 | 2024-05-14 | International Business Machines Corporation | Deduplicating data integrity checks across systems |
CN113420380A (zh) * | 2021-06-30 | 2021-09-21 | 一汽奔腾轿车有限公司 | 一种搭建超级整车dmu数据树和解析单车型dmu数据的方法 |
US11704289B2 (en) * | 2021-07-06 | 2023-07-18 | International Business Machines Corporation | Role reversal of primary and secondary sites with minimal replication delay |
CN113655960B (zh) * | 2021-08-16 | 2023-09-12 | 成都统信软件技术有限公司 | 一种光盘可读性修复方法及计算设备 |
CN113703821A (zh) * | 2021-08-26 | 2021-11-26 | 北京百度网讯科技有限公司 | 云手机更新方法、装置、设备以及存储介质 |
CN113722139B (zh) * | 2021-08-27 | 2024-08-20 | 东莞盟大集团有限公司 | 请求效率高且不易丢失数据的数据请求方法 |
CN113885948B (zh) * | 2021-09-29 | 2023-05-30 | 武汉噢易云计算股份有限公司 | windows镜像分层的管理方法及装置 |
US11868334B2 (en) * | 2021-11-03 | 2024-01-09 | Netapp, Inc. | Integrating change tracking of storage objects of a distributed object storage database into a distributed storage system |
US20230146076A1 (en) * | 2021-11-08 | 2023-05-11 | Rubrik, Inc. | Backing file system with cloud object store |
US11483386B1 (en) * | 2021-12-13 | 2022-10-25 | Box, Inc. | Selective deletion of synchronized content object copies based on a detected change |
US20230195713A1 (en) * | 2021-12-17 | 2023-06-22 | Hewlett Packard Enterprise Development Lp | Data objects in a distributed file system |
CN114499985A (zh) * | 2021-12-29 | 2022-05-13 | 奇安信科技集团股份有限公司 | 基于内生安全机制的安全检测方法及装置 |
WO2023147067A1 (en) * | 2022-01-28 | 2023-08-03 | Nebulon, Inc. | Promotion of snapshot storage volumes to base volumes |
US11899646B2 (en) * | 2022-06-10 | 2024-02-13 | Snowflake Inc. | Providing table data access in user-specified formats on user-managed storage |
WO2023244948A1 (en) * | 2022-06-14 | 2023-12-21 | Microsoft Technology Licensing, Llc | Graph-based storage management |
US11989419B2 (en) * | 2022-07-08 | 2024-05-21 | VMware LLC | Storage device write performance in remote computing environments |
US12007945B2 (en) * | 2022-10-21 | 2024-06-11 | Dell Products L.P. | Snapshot migration between cloud storage platforms |
CN115617802A (zh) * | 2022-10-26 | 2023-01-17 | 上海爱数信息技术股份有限公司 | 一种全量快照快速生成方法、装置、电子设备及存储介质 |
CN115840951B (zh) * | 2022-11-02 | 2024-02-13 | 长扬科技(北京)股份有限公司 | 一种网络安全基于全流量资产发现的实现方法与系统 |
US12056023B2 (en) | 2022-12-23 | 2024-08-06 | Dell Products L.P. | Orchestration of storage system-based snapshot recovery |
US11907163B1 (en) | 2023-01-05 | 2024-02-20 | Dell Products L.P. | Cloud snapshot lineage mobility between virtualization software running on different storage systems |
US12093224B2 (en) * | 2023-02-06 | 2024-09-17 | Dell Products L.P. | Context-based intelligent placement of files in aggregated cloud storage |
US20240272834A1 (en) * | 2023-02-09 | 2024-08-15 | Oracle International Corporation | Data recovery techniques using cloud consistency groups |
US12050582B1 (en) | 2023-06-23 | 2024-07-30 | Snowflake Inc. | Unified table data access in user-specified formats on internal storage and user-managed storage |
CN116821174B (zh) * | 2023-07-17 | 2024-07-19 | 深圳计算科学研究院 | 一种基于逻辑数据块的数据查询方法及其装置 |
CN116991619B (zh) * | 2023-08-02 | 2024-03-12 | 中国舰船研究设计中心 | 一种舰船信息系统数字模型集成管理系统及方法 |
CN117331887A (zh) * | 2023-10-31 | 2024-01-02 | 中国人民解放军32039部队 | 一种航天测控系统配置文件自动迁移方法和装置 |
KR102671816B1 (ko) * | 2023-12-18 | 2024-06-03 | 주식회사 로그프레소 | 오브젝트 스토리지에 빅데이터를 기록하는 방법 및 그렇게 기록된 빅데이터의 조회 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035881A (zh) * | 2010-11-19 | 2011-04-27 | 清华大学 | 一种云端存储系统的数据缓存方法 |
US20130110779A1 (en) * | 2010-05-03 | 2013-05-02 | Panzura, Inc. | Archiving data for a distributed filesystem |
CN103415842A (zh) * | 2010-11-16 | 2013-11-27 | 阿克蒂菲奥股份有限公司 | 用于数据管理虚拟化的系统和方法 |
CN104541252A (zh) * | 2012-05-20 | 2015-04-22 | 简易存储有限公司 | 用于实现基于服务器的分层大容量存储系统的系统和方法 |
CN105745627A (zh) * | 2013-08-14 | 2016-07-06 | 思凯拉有限责任公司 | 用于非易失性存储器存储设备的地址转换 |
CN105868396A (zh) * | 2016-04-19 | 2016-08-17 | 上海交通大学 | 内存文件系统的多版本控制方法 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6442549B1 (en) * | 1997-07-25 | 2002-08-27 | Eric Schneider | Method, product, and apparatus for processing reusable information |
US6078990A (en) * | 1998-02-06 | 2000-06-20 | Ncr Corporation | Volume set configuration using a single operational view |
US6732237B1 (en) * | 2000-08-29 | 2004-05-04 | Oracle International Corporation | Multi-tier caching system |
US7761432B2 (en) | 2005-11-04 | 2010-07-20 | Oracle America, Inc. | Inheritable file system properties |
US7650527B2 (en) * | 2006-02-07 | 2010-01-19 | Broadcom Corporation | MIPS recovery technique |
US7873601B1 (en) | 2006-06-29 | 2011-01-18 | Emc Corporation | Backup of incremental metadata in block based backup systems |
US20080147974A1 (en) | 2006-12-18 | 2008-06-19 | Yahoo! Inc. | Multi-level caching system |
US8074028B2 (en) * | 2007-03-12 | 2011-12-06 | Citrix Systems, Inc. | Systems and methods of providing a multi-tier cache |
US7747663B2 (en) * | 2008-03-05 | 2010-06-29 | Nec Laboratories America, Inc. | System and method for content addressable storage |
JP5226125B2 (ja) | 2009-03-19 | 2013-07-03 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
US9164689B2 (en) | 2009-03-30 | 2015-10-20 | Oracle America, Inc. | Data storage system and method of processing a data access request |
US8504529B1 (en) | 2009-06-19 | 2013-08-06 | Netapp, Inc. | System and method for restoring data to a storage device based on a backup image |
KR101626117B1 (ko) * | 2009-06-22 | 2016-05-31 | 삼성전자주식회사 | 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법 |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
US20100332401A1 (en) | 2009-06-30 | 2010-12-30 | Anand Prahlad | Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites |
WO2011023134A1 (en) | 2009-08-28 | 2011-03-03 | Beijing Innovation Works Technology Company Limited | Method and system for managing distributed storage system through virtual file system |
US20110258461A1 (en) | 2010-04-16 | 2011-10-20 | Twinstrata, Inc | System and method for resource sharing across multi-cloud arrays |
US8805967B2 (en) | 2010-05-03 | 2014-08-12 | Panzura, Inc. | Providing disaster recovery for a distributed filesystem |
US9811532B2 (en) | 2010-05-03 | 2017-11-07 | Panzura, Inc. | Executing a cloud command for a distributed filesystem |
US9742564B2 (en) | 2010-05-14 | 2017-08-22 | Oracle International Corporation | Method and system for encrypting data |
US8386835B2 (en) | 2010-05-17 | 2013-02-26 | Oracle International Corporation | System and method for end-to-end data integrity in a network file system |
US8805924B2 (en) | 2010-05-26 | 2014-08-12 | Microsoft Corporation | Optimistic concurrency utilizing distributed constraint enforcement |
US8438362B2 (en) | 2010-06-15 | 2013-05-07 | Symantec Corporation | Automatically reclaiming memory space |
US8612699B2 (en) | 2010-06-25 | 2013-12-17 | International Business Machines Corporation | Deduplication in a hybrid storage environment |
US8984241B2 (en) | 2010-07-07 | 2015-03-17 | Nexenta Systems, Inc. | Heterogeneous redundant storage array |
CN103262090B (zh) | 2010-10-27 | 2017-01-25 | 马普科技促进协会 | 使用存储租约保护数据完整性 |
US8706701B1 (en) | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
US8510267B2 (en) | 2011-03-08 | 2013-08-13 | Rackspace Us, Inc. | Synchronization of structured information repositories |
CN102136003A (zh) * | 2011-03-25 | 2011-07-27 | 上海交通大学 | 大规模分布式存储系统 |
US9384199B2 (en) * | 2011-03-31 | 2016-07-05 | Microsoft Technology Licensing, Llc | Distributed file system |
US8341312B2 (en) * | 2011-04-29 | 2012-12-25 | International Business Machines Corporation | System, method and program product to manage transfer of data to resolve overload of a storage system |
US9043292B2 (en) * | 2011-06-14 | 2015-05-26 | Netapp, Inc. | Hierarchical identification and mapping of duplicate data in a storage system |
US8849759B2 (en) | 2012-01-13 | 2014-09-30 | Nexenta Systems, Inc. | Unified local storage supporting file and cloud object access |
US8533231B2 (en) | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
US9805054B2 (en) | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Managing a global namespace for a distributed filesystem |
WO2013086040A2 (en) * | 2011-12-05 | 2013-06-13 | Doyenz Incorporated | Universal pluggable cloud disaster recovery system |
US8935480B1 (en) * | 2012-01-09 | 2015-01-13 | Amazon Technologies, Inc. | Efficiently caching data at a client device |
US20130238832A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Deduplicating hybrid storage aggregate |
AU2013277351A1 (en) * | 2012-06-18 | 2015-01-22 | Actifio, Inc. | Enhanced data management virtualization system |
US10140139B1 (en) * | 2012-06-19 | 2018-11-27 | Bromium, Inc. | Ensuring the privacy and integrity of a hypervisor |
JP2014010465A (ja) * | 2012-06-27 | 2014-01-20 | International Business Maschines Corporation | 複数のストレージ・クラウドから実体ファイルを格納するためのストレージ・クラウドを選択する方法、並びにそのコンピュータ及びコンピュータ・プログラム |
KR101431912B1 (ko) | 2012-12-10 | 2014-09-23 | 포항공과대학교 산학협력단 | 다수의 클라우드 스토리지 서비스를 통합하는 가상 파일 시스템 |
EP2757491A1 (en) | 2013-01-17 | 2014-07-23 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
US20140215127A1 (en) * | 2013-01-31 | 2014-07-31 | Oracle International Corporation | Apparatus, system, and method for adaptive intent logging |
JP2014178734A (ja) * | 2013-03-13 | 2014-09-25 | Nippon Telegr & Teleph Corp <Ntt> | キャッシュ装置、データ書込方法及びプログラム |
US9465856B2 (en) | 2013-03-14 | 2016-10-11 | Appsense Limited | Cloud-based document suggestion service |
CN103164295B (zh) * | 2013-03-22 | 2015-05-13 | 危子彪 | 基于zfs文件系统和kvm内核虚拟底层系统的企业it业务虚拟化容灾方法 |
US20160110261A1 (en) | 2013-05-07 | 2016-04-21 | Axcient, Inc. | Cloud storage using merkle trees |
US9367448B1 (en) | 2013-06-04 | 2016-06-14 | Emc Corporation | Method and system for determining data integrity for garbage collection of data storage systems |
US9213706B2 (en) * | 2013-06-13 | 2015-12-15 | DataGravity, Inc. | Live restore for a data intelligent storage system |
WO2015012871A1 (en) * | 2013-07-26 | 2015-01-29 | Intel Corporation | Methods and apparatus for supporting persistent memory |
US9558124B2 (en) * | 2013-11-08 | 2017-01-31 | Seagate Technology Llc | Data storage system with passive partitioning in a secondary memory |
US9659023B2 (en) | 2013-11-21 | 2017-05-23 | Upthere, Inc. | Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system |
US20150186287A1 (en) | 2013-12-30 | 2015-07-02 | Michael Henry Kass | Using Memory System Programming Interfacing |
US9411834B2 (en) * | 2014-01-14 | 2016-08-09 | Netapp, Inc. | Method and system for monitoring and analyzing quality of service in a storage system |
US9740759B1 (en) * | 2014-01-24 | 2017-08-22 | EMC IP Holding Company LLC | Cloud migrator |
US20150227602A1 (en) | 2014-02-13 | 2015-08-13 | Actifio, Inc. | Virtual data backup |
US20150288758A1 (en) * | 2014-04-07 | 2015-10-08 | Strato Scale Ltd. | Volume-level snapshot management in a distributed storage system |
US20150347047A1 (en) * | 2014-06-03 | 2015-12-03 | Coraid, Inc. | Multilayered data storage methods and apparatus |
CN104320426A (zh) * | 2014-08-29 | 2015-01-28 | 哈尔滨工业大学深圳研究生院 | 云环境下的数据分层访问方法及系统 |
US9727423B2 (en) | 2014-09-30 | 2017-08-08 | Code 42 Software, Inc. | Shared file system predictive storage techniques |
JP6072352B2 (ja) * | 2014-11-01 | 2017-02-01 | 株式会社シー・オー・コンヴ | ディスク配信システム |
US9659047B2 (en) | 2014-12-03 | 2017-05-23 | Netapp, Inc. | Data deduplication utilizing extent ID database |
WO2016093797A1 (en) | 2014-12-09 | 2016-06-16 | Hitachi Data Systems Corporation | A system and method for providing thin-provisioned block storage with multiple data protection classes |
CN104750573B (zh) * | 2014-12-17 | 2017-10-24 | 杭州斯凯网络科技有限公司 | 分布式数据系统数据节点的全局一致性备份和还原方法 |
JP6393612B2 (ja) | 2014-12-26 | 2018-09-19 | 株式会社日立製作所 | システムのバックアップ装置及びバックアップ方法 |
US9591075B2 (en) | 2014-12-29 | 2017-03-07 | Verizon Patent And Licensing Inc. | Cloud storage for mobile devices based on user-specified limits for different types of data |
US10185730B2 (en) | 2014-12-31 | 2019-01-22 | Nexenta Systems, Inc. | Methods and systems for key-value-tuple-encoded storage |
WO2016115219A1 (en) * | 2015-01-13 | 2016-07-21 | Simplivity Corporation | Systems and methods for oprtimized signature comparisons and data replication |
US20160269501A1 (en) * | 2015-03-11 | 2016-09-15 | Netapp, Inc. | Using a cache cluster of a cloud computing service as a victim cache |
US10586063B2 (en) * | 2015-03-20 | 2020-03-10 | Samsung Electronics Co., Ltd. | Method and apparatus for storing file by using a plurality of cloud storages |
US10049121B2 (en) | 2015-03-30 | 2018-08-14 | International Business Machines Corporation | Clone file backup and restore |
US10191914B2 (en) | 2015-03-31 | 2019-01-29 | EMC IP Holding Company LLC | De-duplicating distributed file system using cloud-based object store |
JP6423752B2 (ja) * | 2015-04-22 | 2018-11-14 | 株式会社日立製作所 | 移行支援装置および移行支援方法 |
US9967350B2 (en) * | 2015-05-12 | 2018-05-08 | Equinix, Inc. | Third-party orchestration module for a cloud exchange programmable network platform |
CN104866391B (zh) * | 2015-05-13 | 2019-08-02 | 三星电子(中国)研发中心 | 一种基于增量信息系统的终端信息备份方法和装置 |
US9772794B2 (en) | 2015-06-05 | 2017-09-26 | University Of Florida Research Foundation, Incorporated | Method and apparatus for big data cloud storage resource management |
US10872016B2 (en) | 2015-06-16 | 2020-12-22 | Datto, Inc. | Hybrid cloud methods, apparatus and systems for secure file sharing and synchronization with backup and server virtualization |
CN104932956B (zh) * | 2015-06-19 | 2018-02-27 | 华南理工大学 | 一种面向大数据的云容灾备份方法 |
CN105260377B (zh) * | 2015-09-01 | 2019-02-12 | 浪潮(北京)电子信息产业有限公司 | 一种基于分级存储的升级方法和系统 |
US11182344B2 (en) | 2016-03-14 | 2021-11-23 | Vmware, Inc. | File granular data de-duplication effectiveness metric for data de-duplication |
US10719479B2 (en) | 2016-06-28 | 2020-07-21 | Netapp, Inc. | Data unit cloning in memory-based file systems |
US10235064B1 (en) | 2016-12-27 | 2019-03-19 | EMC IP Holding Company LLC | Optimized data replication using special NVME protocol and running in a friendly zone of storage array |
US10884984B2 (en) | 2017-01-06 | 2021-01-05 | Oracle International Corporation | Low-latency direct cloud access with file system hierarchies and semantics |
US10146694B1 (en) * | 2017-04-28 | 2018-12-04 | EMC IP Holding Company LLC | Persistent cache layer in a distributed file system |
-
2017
- 2017-05-31 US US15/610,467 patent/US10884984B2/en active Active
- 2017-05-31 US US15/610,370 patent/US10657167B2/en active Active
- 2017-05-31 US US15/610,365 patent/US10503771B2/en active Active
- 2017-05-31 US US15/610,361 patent/US11074220B2/en active Active
- 2017-05-31 US US15/610,380 patent/US10540384B2/en active Active
- 2017-05-31 US US15/610,444 patent/US10642879B2/en active Active
- 2017-05-31 US US15/610,416 patent/US10698941B2/en active Active
- 2017-05-31 US US15/610,456 patent/US10558699B2/en active Active
- 2017-05-31 US US15/610,349 patent/US10642878B2/en active Active
- 2017-05-31 US US15/610,400 patent/US10650035B2/en active Active
- 2017-05-31 US US15/610,424 patent/US10552469B2/en active Active
- 2017-12-20 EP EP17829857.6A patent/EP3566148B1/en active Active
- 2017-12-20 WO PCT/US2017/067708 patent/WO2018128825A1/en unknown
- 2017-12-20 CN CN201780080042.2A patent/CN110100240B/zh active Active
- 2017-12-21 CN CN201780080030.XA patent/CN110114751B/zh active Active
- 2017-12-21 EP EP17832850.6A patent/EP3566125B1/en active Active
- 2017-12-21 WO PCT/US2017/067962 patent/WO2018128850A1/en unknown
- 2017-12-22 EP EP17832855.5A patent/EP3566126B1/en active Active
- 2017-12-22 CN CN202310645079.2A patent/CN116627344A/zh active Pending
- 2017-12-22 CN CN201780080037.1A patent/CN110168491B/zh active Active
- 2017-12-22 WO PCT/US2017/068292 patent/WO2018128864A1/en unknown
- 2017-12-29 EP EP17832886.0A patent/EP3566130B1/en active Active
- 2017-12-29 EP EP17832716.9A patent/EP3566124B1/en active Active
- 2017-12-29 CN CN201780080029.7A patent/CN110100228B/zh active Active
- 2017-12-29 EP EP17832884.5A patent/EP3566128B1/en active Active
- 2017-12-29 EP EP17832887.8A patent/EP3566131B1/en active Active
- 2017-12-29 CN CN202311337609.3A patent/CN117193666A/zh active Pending
- 2017-12-29 EP EP17832883.7A patent/EP3566127B1/en active Active
- 2017-12-29 EP EP22176563.9A patent/EP4075254A1/en active Pending
- 2017-12-29 WO PCT/US2017/068857 patent/WO2018128915A1/en unknown
- 2017-12-29 WO PCT/US2017/068867 patent/WO2018128920A1/en unknown
- 2017-12-29 WO PCT/US2017/068866 patent/WO2018128919A1/en unknown
- 2017-12-29 WO PCT/US2017/068864 patent/WO2018128918A1/en unknown
- 2017-12-29 WO PCT/US2017/068863 patent/WO2018128917A1/en unknown
- 2017-12-29 CN CN201780080039.0A patent/CN110100229B/zh active Active
- 2017-12-29 CN CN201780080041.8A patent/CN110100231B/zh active Active
- 2017-12-29 WO PCT/US2017/068861 patent/WO2018128916A1/en unknown
- 2017-12-29 CN CN201780080031.4A patent/CN110192176B/zh active Active
- 2017-12-29 CN CN201780080040.3A patent/CN110100230B/zh active Active
- 2017-12-29 CN CN201780080038.6A patent/CN110168492B/zh active Active
- 2017-12-29 EP EP17832885.2A patent/EP3566129B1/en active Active
-
2018
- 2018-01-03 JP JP2019536904A patent/JP7098628B2/ja active Active
- 2018-01-03 EP EP18701390.9A patent/EP3566132B1/en active Active
- 2018-01-03 CN CN201880010822.4A patent/CN110268380B/zh active Active
- 2018-01-03 WO PCT/US2018/012254 patent/WO2018129091A1/en unknown
- 2018-01-04 EP EP18701834.6A patent/EP3566133A1/en active Pending
- 2018-01-04 CN CN201880010821.XA patent/CN110268379B/zh active Active
- 2018-01-04 WO PCT/US2018/012313 patent/WO2018129137A1/en unknown
- 2018-01-04 JP JP2019536926A patent/JP7113016B2/ja active Active
-
2019
- 2019-09-12 US US16/568,672 patent/US11074221B2/en active Active
-
2020
- 2020-01-21 US US16/748,420 patent/US11308033B2/en active Active
- 2020-03-18 US US16/822,406 patent/US11442898B2/en active Active
- 2020-03-25 US US16/829,958 patent/US11436195B2/en active Active
- 2020-03-25 US US16/829,979 patent/US11422974B2/en active Active
- 2020-05-22 US US16/881,638 patent/US11334528B2/en active Active
- 2020-12-15 US US17/122,935 patent/US11714784B2/en active Active
-
2021
- 2021-06-08 US US17/342,448 patent/US11755535B2/en active Active
-
2022
- 2022-06-29 JP JP2022104487A patent/JP7379599B2/ja active Active
-
2023
- 2023-08-01 US US18/363,658 patent/US20230376460A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130110779A1 (en) * | 2010-05-03 | 2013-05-02 | Panzura, Inc. | Archiving data for a distributed filesystem |
CN103415842A (zh) * | 2010-11-16 | 2013-11-27 | 阿克蒂菲奥股份有限公司 | 用于数据管理虚拟化的系统和方法 |
CN102035881A (zh) * | 2010-11-19 | 2011-04-27 | 清华大学 | 一种云端存储系统的数据缓存方法 |
CN104541252A (zh) * | 2012-05-20 | 2015-04-22 | 简易存储有限公司 | 用于实现基于服务器的分层大容量存储系统的系统和方法 |
CN105745627A (zh) * | 2013-08-14 | 2016-07-06 | 思凯拉有限责任公司 | 用于非易失性存储器存储设备的地址转换 |
CN105868396A (zh) * | 2016-04-19 | 2016-08-17 | 上海交通大学 | 内存文件系统的多版本控制方法 |
Non-Patent Citations (1)
Title |
---|
PETER BROUWER: ""using the Oracle ZFS Storage appliance as storage back end for OpenStack Cinder"", 《链接:HTTPS://WWW.ORACLE.COM/TECHNETWORK/SERVER-STORAGE/SUN-UNIFIED-STORAGE/DOCUMENTATION/OPENSTACK-CINDER-ZFSSA-120915-2813178.PDF》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522615A (zh) * | 2020-04-23 | 2020-08-11 | 平安国际智慧城市科技股份有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN111522615B (zh) * | 2020-04-23 | 2023-08-15 | 深圳赛安特技术服务有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN115348157A (zh) * | 2021-05-14 | 2022-11-15 | 中国移动通信集团浙江有限公司 | 分布式存储集群的故障定位方法、装置、设备及存储介质 |
CN115348157B (zh) * | 2021-05-14 | 2023-09-05 | 中国移动通信集团浙江有限公司 | 分布式存储集群的故障定位方法、装置、设备及存储介质 |
CN114138744A (zh) * | 2021-11-24 | 2022-03-04 | 中国建设银行股份有限公司 | 一种客户数据运行时迁移方法及系统 |
WO2023103685A1 (en) * | 2021-12-08 | 2023-06-15 | International Business Machines Corporation | Generating multi-dimensional host-specific storage tiering |
US11836360B2 (en) | 2021-12-08 | 2023-12-05 | International Business Machines Corporation | Generating multi-dimensional host-specific storage tiering |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110268379A (zh) | 文件系统数据层次结构的云迁移 | |
CN110447017A (zh) | 数据存储装备监视器中基于规则的修改 | |
CN110392876A (zh) | 将数据集和其他受管理对象同步地复制到基于云的存储系统 | |
CN107710215A (zh) | 在测试设施中的移动计算装置安全的方法和设备 | |
US20230409522A1 (en) | Scalable and secure cross region and optimized file system delta transfer for cloud scale | |
Yan | Cloud storage services | |
US20240134828A1 (en) | Techniques for efficient encryption and decryption during file system cross-region replication | |
US20240104062A1 (en) | Techniques for resolving snapshot key inter-dependency during file system cross-region replication | |
US20240061814A1 (en) | Techniques for maintaining snapshot key consistency involving garbage collection during file system cross-region replication | |
US20240094937A1 (en) | Concurrent and non-blocking object deletion for cross-region replications | |
Choudhry | HBase High Performance Cookbook |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |