国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      存儲故障之后的安全數(shù)據(jù)訪問的制作方法

      文檔序號:12071216閱讀:294來源:國知局
      存儲故障之后的安全數(shù)據(jù)訪問的制作方法與工藝

      集群化環(huán)境(例如,工作負(fù)載跨多個機(jī)器分布的環(huán)境)常用于向客戶機(jī)提供故障轉(zhuǎn)移和高信息可用性。集群化環(huán)境允許客戶機(jī)經(jīng)由作為環(huán)境一部分的一個或多個節(jié)點來訪問資源。集群化環(huán)境可以充當(dāng)客戶機(jī)、服務(wù)器、或這兩者。在客戶機(jī)集群服務(wù)器中,應(yīng)用可以駐留在組成集群的節(jié)點中的任何節(jié)點上。應(yīng)用可以發(fā)出對存儲系統(tǒng)所存儲的目標(biāo)數(shù)據(jù)的訪問請求。如果在訪問請求期間發(fā)生錯誤,則應(yīng)用可能經(jīng)歷影響執(zhí)行的延遲。

      關(guān)于這些和其他考慮而做出示例。此外,雖然討論了相對具體的問題,但是應(yīng)當(dāng)理解,這些示例不應(yīng)當(dāng)限于解決背景中所識別的具體問題。



      技術(shù)實現(xiàn)要素:

      這一概述被提供以簡化形式介紹概念的選擇,這些概念下面在詳細(xì)描述章節(jié)中進(jìn)一步被描述。這一概述不意圖識別所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不意圖用作確定所要求保護(hù)的主題的范圍的幫助。

      系統(tǒng)和方法在本文中被公開,它們使得應(yīng)用能夠在故障期間暫停執(zhí)行并且隨后一旦故障被解決則恢復(fù)執(zhí)行以及與存儲系統(tǒng)的通信。根據(jù)一些方面,駐留在客戶機(jī)集群中的節(jié)點上的應(yīng)用向服務(wù)器集群中的節(jié)點發(fā)送訪問請求以訪問目標(biāo)數(shù)據(jù)。在示例中,請求標(biāo)識符被用于識別請求資源的應(yīng)用和/或相關(guān)工作負(fù)載。請求標(biāo)識符可以與請求一起被提供。當(dāng)客戶機(jī)訪問目標(biāo)數(shù)據(jù)時,請求標(biāo)識符被存儲在持久存儲裝置中并且與所請求的目標(biāo)數(shù)據(jù)相關(guān)聯(lián)。

      在應(yīng)用完成它對目標(biāo)數(shù)據(jù)的操作之前,故障可能發(fā)生,其使得應(yīng)用丟失與存儲系統(tǒng)的通信。例如,存儲系統(tǒng)中的服務(wù)器可能重啟,相關(guān)文件系統(tǒng)可能被卸除,通信鏈路可能出故障,等等。在這樣的情況下,由應(yīng)用對存儲系統(tǒng)所存儲的目標(biāo)數(shù)據(jù)而發(fā)出的訪問請求將經(jīng)歷延遲或完全出故障。然而,即使應(yīng)用對目標(biāo)數(shù)據(jù)的鎖定在故障期間到期,所存儲的標(biāo)識符也可能未從持久存儲裝置刪除。在故障期間,應(yīng)用可以接收它已經(jīng)丟失與存儲系統(tǒng)的通信的通知并且可以暫停執(zhí)行。在重建與存儲系統(tǒng)的通信時,應(yīng)用可以接收解決通知并且嘗試恢復(fù)執(zhí)行。進(jìn)一步地,應(yīng)用可以向存儲系統(tǒng)發(fā)送恢復(fù)請求以重新得到對目標(biāo)數(shù)據(jù)的訪問。恢復(fù)請求可以包括或參考請求標(biāo)識符。請求標(biāo)識符準(zhǔn)許管理請求的存儲系統(tǒng)確定恢復(fù)請求屬于之前已經(jīng)訪問資源的相同應(yīng)用。這樣做允許服務(wù)器準(zhǔn)予應(yīng)用的訪問目標(biāo)數(shù)據(jù)的恢復(fù)請求。在目標(biāo)數(shù)據(jù)在恢復(fù)請求之前被修改的情況下,存儲系統(tǒng)(例如,通過從持久存儲裝置刪除所存儲的標(biāo)識符)將請求標(biāo)識符從目標(biāo)數(shù)據(jù)解除關(guān)聯(lián),以使得應(yīng)用可能無法恢復(fù)它與存儲系統(tǒng)的先前通信。作為結(jié)果,應(yīng)用確信如果它能夠使用恢復(fù)請求和原始請求標(biāo)識符重建通信,則目標(biāo)數(shù)據(jù)自從通信故障以來尚未被修改。否則,應(yīng)用被警告目標(biāo)數(shù)據(jù)已經(jīng)改變,并且應(yīng)用可以做出是否采取其他動作的決定。

      示例可以被實施為計算機(jī)過程、計算系統(tǒng),或者被實施為制品,諸如計算機(jī)程序產(chǎn)品或計算機(jī)可讀介質(zhì)。計算機(jī)程序產(chǎn)品可以是計算機(jī)存儲介質(zhì),其由計算機(jī)系統(tǒng)可讀取并且編碼指令的計算機(jī)程序以用于執(zhí)行計算機(jī)過程。

      附圖說明

      參考以下附圖來描述非限制性且非窮盡性示例。

      圖1圖示了可以用于實施本文所描述的示例的系統(tǒng)。

      圖2圖示了可以用于實施本文所描述的示例的系統(tǒng)。

      圖3是與存儲系統(tǒng)通信的應(yīng)用的操作流程。

      圖4是與應(yīng)用通信的存儲系統(tǒng)的操作流程。

      圖5是圖示了本發(fā)明的方面可以利用其而被實踐的計算設(shè)備的示例的框圖。

      圖6A和圖6B是本發(fā)明的方面可以利用其而被實踐的移動計算設(shè)備的簡化框圖。

      圖7是本發(fā)明的方面可以被實踐在其中的分布式計算系統(tǒng)的簡化框圖。

      具體實施方式

      下面參考附圖更完全地描述各種方面,附圖形成其一部分,并且示出了具體的示例性方面。然而,示例可以按許多不同形式來實施并且不應(yīng)當(dāng)被解釋為限于本文闡述的示例。因此,示例可以采取硬件實施、或整體地軟件實施、或組合軟件和硬件方面的實施的形式。以下詳細(xì)描述因此不在限制性意義上被采取。

      本公開的示例涉及向應(yīng)用提供可靠地訪問存儲系統(tǒng)上的目標(biāo)數(shù)據(jù)并處置通信故障的機(jī)制。在示例中,存儲系統(tǒng)可以是本地設(shè)備、網(wǎng)絡(luò)附接存儲設(shè)備、分布式文件服務(wù)器、或計算環(huán)境中的任何其他類型的存儲系統(tǒng)。目標(biāo)數(shù)據(jù)可以駐留在獨立服務(wù)器上,或者它可以駐留在集群化環(huán)境中。在本文所公開的示例中,集群化環(huán)境可以包括一個或多個節(jié)點(例如,客戶機(jī)和/或服務(wù)器設(shè)備)。

      在一種示例中,應(yīng)用可以請求對目標(biāo)數(shù)據(jù)的訪問。目標(biāo)數(shù)據(jù)可以存儲在本地(例如,在客戶機(jī)節(jié)點上)、在遠(yuǎn)程設(shè)備(例如,客戶機(jī)集群化環(huán)境中的不同節(jié)點或遠(yuǎn)程服務(wù)器)中、或在與客戶機(jī)集群化環(huán)境不同的集群化環(huán)境(例如,包含多個節(jié)點的環(huán)境)中。例如,在集群化環(huán)境可以是客戶機(jī)或服務(wù)器集群的示例中,本領(lǐng)域的技術(shù)人員然而將明白,在任何其他類型的環(huán)境(諸如但不限于虛擬網(wǎng)絡(luò))中可以采用本文所公開的系統(tǒng)和方法。

      數(shù)據(jù)可以在多個請求器之間共享。如本文所使用的,請求器可以包括任何應(yīng)用、工作負(fù)載、線程、或請求對目標(biāo)數(shù)據(jù)的訪問的其他過程或?qū)嶓w。雖然本文所描述的示例可以關(guān)于充當(dāng)請求器的“應(yīng)用”或“客戶機(jī)”或“過程”或“工作負(fù)載”來描述,但是本公開不如此被限制。當(dāng)請求器訪問目標(biāo)數(shù)據(jù)時,目標(biāo)數(shù)據(jù)可以被鎖定,由此禁止其他請求器訪問它直到鎖定被釋放。鎖定目標(biāo)數(shù)據(jù)可以用來防范沖突—也就是,在進(jìn)行訪問的請求器已經(jīng)執(zhí)行它的操作之前防范由另一請求器對目標(biāo)數(shù)據(jù)的修改。通常,當(dāng)鎖定被釋放時,存儲系統(tǒng)不再保留目標(biāo)數(shù)據(jù)與請求器之間的任何關(guān)聯(lián)。

      在一些實例中,當(dāng)影響請求器與存儲系統(tǒng)的通信的故障發(fā)生時,請求器可能無法在對目標(biāo)數(shù)據(jù)的鎖定被釋放之前重新連接到存儲系統(tǒng)。作為結(jié)果,請求器變得與目標(biāo)數(shù)據(jù)解除關(guān)聯(lián)。例如,如果存儲系統(tǒng)使用由請求器在訪問請求中提出的或參考的工作負(fù)載實例標(biāo)識符來維持鎖定,則當(dāng)鎖定被釋放時,工作負(fù)載實例標(biāo)識符通??梢詮哪繕?biāo)數(shù)據(jù)被刪除和/或解除關(guān)聯(lián)。進(jìn)一步地,因為鎖定被釋放,所以在建立新連接時,請求器不能假定目標(biāo)數(shù)據(jù)自從它上次被請求器訪問以來未被修改。因此,不是恢復(fù)執(zhí)行以及與存儲系統(tǒng)的通信,而是請求器必須建立新通信會話并且假定目標(biāo)數(shù)據(jù)處于未知狀態(tài)。

      進(jìn)一步地,當(dāng)請求器與存儲系統(tǒng)通信時,請求器可能期望不會接收到通信延遲或故障的指示,并且可能替代地假定它與存儲系統(tǒng)(和/或托管請求器的客戶機(jī)上的輸入/輸出(IO)管理器)的契約保證訪問請求將被重試直到它們成功。作為結(jié)果,通信故障將使得請求器繼續(xù)等待來自存儲系統(tǒng)的響應(yīng)。這可能影響請求器的行為并且引起執(zhí)行延遲。例如,請求器可能“被凍結(jié)”并且無法執(zhí)行任何處理直到故障被解決。本文所公開的系統(tǒng)和方法提供了識別請求器正在嘗試恢復(fù)與存儲系統(tǒng)的通信的情形的機(jī)制、以及向請求器通知通信延遲或故障的機(jī)制,由此減輕對執(zhí)行的影響并且使得請求器能夠在故障之后恢復(fù)執(zhí)行和通信。

      圖1圖示了可以用于實施一些示例的系統(tǒng)100。系統(tǒng)100包括客戶機(jī)102和存儲系統(tǒng)108。在所圖示的示例中,客戶機(jī)102包括請求器,諸如由物理或虛擬計算設(shè)備托管的應(yīng)用104和輸入/輸出(IO)管理器106。IO管理器106中繼并且管理應(yīng)用104與存儲系統(tǒng)108之間的通信。存儲系統(tǒng)108存儲由應(yīng)用104訪問的信息。雖然在圖1中僅客戶機(jī)102上的應(yīng)用104被示出為與存儲系統(tǒng)108通信,但是在其他示例中,可以存在從存儲系統(tǒng)108訪問信息的多于一個應(yīng)用和多于一個客戶機(jī)。在一些示例中,存儲系統(tǒng)108可以包括在本地連接到客戶機(jī)102的存儲裝置、通過網(wǎng)絡(luò)可訪問的遠(yuǎn)離客戶機(jī)102的存儲裝置、或在集群化文件服務(wù)器之間共享的存儲裝置。

      根據(jù)一個示例,存儲系統(tǒng)108用于向應(yīng)用104提供一致的可用性。這通過利用客戶機(jī)102和存儲系統(tǒng)108上的組件來存儲信息而被完成,如果存在通信故障、文件系統(tǒng)卸除、重啟、或任何其他類型的故障,則該信息可以用于重建客戶機(jī)102與存儲系統(tǒng)108之間的通信。如下面更詳細(xì)描述的,所存儲的信息和通信故障通知允許客戶機(jī)102具有一致的文件訪問,并且使得客戶機(jī)102上運行的應(yīng)用能夠處置可能發(fā)生的通信故障。在示例中,客戶機(jī)102可以使用服務(wù)器消息塊(SMB)2.0/3.0協(xié)議與存儲系統(tǒng)108通信。

      為了說明一個示例,應(yīng)用104可以向IO管理器106指示:與存儲系統(tǒng)108的通信會話期間的通信故障應(yīng)當(dāng)被報告。在一些示例中,該指示可以指明用以等待請求成功的指定時間段,在該指定時間段之后,請求應(yīng)當(dāng)被報告為已經(jīng)失敗。在缺少這種指示的示例中,應(yīng)用104可能依賴于IO管理器106來向存儲系統(tǒng)108重試訪問請求。這可能導(dǎo)致應(yīng)用104無限期地等待,而沒有與延遲的性質(zhì)或長度有關(guān)的信息。

      應(yīng)用104可以向存儲系統(tǒng)108發(fā)送對目標(biāo)數(shù)據(jù)的訪問請求。對目標(biāo)數(shù)據(jù)的訪問請求可以包括要對目標(biāo)數(shù)據(jù)執(zhí)行的多個文件操作。這些操作例如可以是打開以讀取/寫入數(shù)據(jù)、列舉屬性、租賃請求以允許數(shù)據(jù)在本地的緩存、或其他文件訪問操作。在一些示例中,訪問請求可以包括或參考請求標(biāo)識符,諸如工作負(fù)載實例標(biāo)識符。

      存儲系統(tǒng)108接收對目標(biāo)數(shù)據(jù)的訪問請求。在一些示例中,存儲系統(tǒng)108可以確定目標(biāo)數(shù)據(jù)是否被鎖定并且因此與(例如,用于不同請求器的)不同請求標(biāo)識符相關(guān)聯(lián),不同請求器諸如客戶機(jī)102或不同客戶機(jī)上運行的另一應(yīng)用。如果目標(biāo)數(shù)據(jù)被鎖定,則存儲系統(tǒng)108取決于所采用的協(xié)議可以拒絕文件訪問請求,可以打破鎖定,或者可以采取其他動作。

      在確定訪問請求應(yīng)當(dāng)被準(zhǔn)予時,存儲系統(tǒng)108向客戶機(jī)102發(fā)送準(zhǔn)予對目標(biāo)數(shù)據(jù)的訪問的響應(yīng)。請求標(biāo)識符可以由存儲系統(tǒng)108存儲在持久存儲裝置中。當(dāng)請求標(biāo)識符由存儲系統(tǒng)108存儲時,它在本文可以被稱為所存儲的標(biāo)識符。在一些示例中,目標(biāo)數(shù)據(jù)可以在準(zhǔn)予訪問請求之前或之后被鎖定。在一些示例中,鎖定可以被配置為在請求中的所有操作完成時被釋放(由此允許其他請求器具有對目標(biāo)數(shù)據(jù)的訪問)。進(jìn)一步地,鎖定可以在指明的時間段之后到期、或者在指明的時間段與請求中的所有操作被完成的時間中的較短者時到期。在更其他的示例中,鎖定可以提供對目標(biāo)數(shù)據(jù)的客戶機(jī)獨有訪問,直到客戶機(jī)釋放鎖定或直到打破鎖定的事件發(fā)生。例如,依照SMB協(xié)議,來自存儲系統(tǒng)108的獨有OpLock可以被提供給客戶機(jī)102??蛻魴C(jī)102可以假定它是具有對目標(biāo)數(shù)據(jù)的訪問的僅有過程,并且客戶機(jī)102可以在向存儲系統(tǒng)108送交對目標(biāo)數(shù)據(jù)的改變之前緩存所有改變。如果另一客戶機(jī)/過程嘗試打開相同的目標(biāo)數(shù)據(jù),則存儲系統(tǒng)108向客戶機(jī)102發(fā)送消息(稱為打破或撤銷),該消息使之前給予客戶機(jī)102的獨有OpLock無效。客戶機(jī)102然后清除對目標(biāo)數(shù)據(jù)的所有改變并且將它們送交存儲系統(tǒng)108。

      在某個時刻,客戶機(jī)102可能經(jīng)歷與存儲系統(tǒng)108的通信故障。該故障在一些示例中可能起因于斷開、文件系統(tǒng)的卸除、或重啟。作為通信故障的結(jié)果,IO管理器106向應(yīng)用104提供故障的通知。在示例中,這種通知僅在應(yīng)用104“已選擇參加”并且向IO管理器106提供了如下指示時發(fā)生:應(yīng)用104在與存儲系統(tǒng)108的通信故障的情況下將被通知。在示例中,故障的通知可以包括描述故障的性質(zhì)和/或預(yù)期長度的附加故障信息。應(yīng)用104可以使用附加故障信息來確定采取什么動作,包括繼續(xù)等待、放棄特定請求、重試請求、重啟應(yīng)用104,等等。除了其他選擇之外,在接收到通知時,應(yīng)用104還可以暫停執(zhí)行。在其他示例中,應(yīng)用104還可以(或替代地)暫停IO操作或相關(guān)處理。在示例中,故障還可能使得存儲系統(tǒng)108釋放應(yīng)用104對目標(biāo)數(shù)據(jù)的鎖定,或者鎖定可能在故障期間到期。

      最后,故障可能被解決,并且客戶機(jī)102與存儲系統(tǒng)108之間的連接可以被重建。IO管理器106確定故障是否已經(jīng)被解決,并且如果是,則向應(yīng)用104提供解決通知。在示例中,應(yīng)用104還可以例如通過重試訪問請求來確定故障是否已經(jīng)被解決。在接收到解決通知之后,應(yīng)用104可以恢復(fù)執(zhí)行。在僅IO操作被暫停的一些示例中,應(yīng)用104還可以恢復(fù)IO操作或相關(guān)處理。應(yīng)用104發(fā)送恢復(fù)請求來恢復(fù)針對目標(biāo)數(shù)據(jù)的與存儲系統(tǒng)108的通信。在示例中,恢復(fù)請求可以由IO管理器106或通過IO管理器106來發(fā)送。恢復(fù)請求可以包括訪問請求,該訪問請求包括(或參考)在故障之前使用的請求標(biāo)識符,并且可以包括向存儲系統(tǒng)指示訪問請求是恢復(fù)請求的標(biāo)記。存儲系統(tǒng)108接收恢復(fù)請求。存儲系統(tǒng)108確定目標(biāo)數(shù)據(jù)自從故障以來是否已經(jīng)改變。目標(biāo)數(shù)據(jù)是否已經(jīng)改變的確定也可以部分地在接收到恢復(fù)請求之前被做出。

      如果存儲系統(tǒng)108確定目標(biāo)數(shù)據(jù)尚未改變,則存儲系統(tǒng)108準(zhǔn)予恢復(fù)請求。在示例中,存儲系統(tǒng)108通過將恢復(fù)請求中的請求標(biāo)識符與所存儲的標(biāo)識符進(jìn)行比較來確定目標(biāo)數(shù)據(jù)是否已經(jīng)改變,該所存儲的標(biāo)識符來自客戶機(jī)對目標(biāo)數(shù)據(jù)的最為近期的訪問請求。如果另一過程或應(yīng)用在故障的時間與恢復(fù)請求的時間之間改變了目標(biāo)數(shù)據(jù),則存儲系統(tǒng)108將已經(jīng)從客戶機(jī)102的最為近期的訪問請求刪除了所存儲的標(biāo)識符。如此,如果所存儲的標(biāo)識符與包括在恢復(fù)請求中或以其他方式與恢復(fù)請求相關(guān)聯(lián)的標(biāo)識符相匹配,則存儲系統(tǒng)準(zhǔn)予恢復(fù)請求。準(zhǔn)予恢復(fù)請求向應(yīng)用有效地保證目標(biāo)數(shù)據(jù)自從所存儲的標(biāo)識符針對其而初始被存儲的訪問請求以來尚未改變。因此,客戶機(jī)102在繼續(xù)它的之前操作時確信數(shù)據(jù)完整性。例如,如果客戶機(jī)102已經(jīng)緩存了在故障之前未被完成的對目標(biāo)數(shù)據(jù)的寫入,則這些寫入現(xiàn)在可以被完成。如果存儲系統(tǒng)108確定目標(biāo)數(shù)據(jù)已經(jīng)改變(例如,恢復(fù)請求中的請求標(biāo)識符不與持久存儲裝置中所存儲的標(biāo)識符相匹配),則存儲系統(tǒng)108拒絕恢復(fù)請求。如本文所使用的,“匹配”不需要包括精確復(fù)制。更確切地,標(biāo)識符的匹配僅要求比較標(biāo)識符的實體足夠滿意于兩個標(biāo)識符指代相同請求和/或請求器的給定水平的特異性(specificity)。

      在示例中,客戶機(jī)102可能正在利用存儲系統(tǒng)108上的一個或多個虛擬硬驅(qū)動器托管一個或多個虛擬機(jī)。當(dāng)存儲系統(tǒng)108出故障時,可靠性層(諸如SMB連續(xù)可用性)可能放棄嘗試復(fù)原。這使得應(yīng)用104接收到IO故障,這些IO故障導(dǎo)致有效地“凍結(jié)”具有在存儲系統(tǒng)108上打開的目標(biāo)數(shù)據(jù)的虛擬機(jī)。通常,虛擬機(jī)被要求經(jīng)歷重啟過程來處置故障。然而,本公開允許虛擬機(jī)被暫停并且一旦故障被解決則被恢復(fù)。以這種方式,虛擬機(jī)內(nèi)的操作系統(tǒng)重啟可以被避免。然而,為了完成這一點,數(shù)據(jù)完整性必須被維持。

      當(dāng)虛擬機(jī)被暫停時,存儲系統(tǒng)108上針對該虛擬機(jī)的所有處置可能被關(guān)閉,但是虛擬機(jī)內(nèi)的操作系統(tǒng)狀態(tài)可以被保存。例如,虛擬硬驅(qū)動器上所安裝的新技術(shù)文件系統(tǒng)(NTFS)做出如下假設(shè):在虛擬機(jī)的恢復(fù)時,虛擬硬驅(qū)動器的所有內(nèi)容是相同的。如果虛擬硬驅(qū)動器的內(nèi)容在虛擬機(jī)被暫停時改變,則虛擬硬驅(qū)動器可能被損壞。本公開使得有可能高效地確定在虛擬機(jī)被暫停之后恢復(fù)它是否為相同的。

      前述描述僅是圖1中示出的示例可以如何操作的一個示例。如下面更詳細(xì)描述的,示例可以涉及不同的步驟或操作。這些可以使用任何適當(dāng)?shù)能浖蛴布M件或模塊來實施。

      圖2圖示了可以用于實施一些示例的系統(tǒng)200。系統(tǒng)200包括節(jié)點202和208。節(jié)點202包括由物理或虛擬計算設(shè)備托管的應(yīng)用204和IO管理器206。應(yīng)用204可以是虛擬化應(yīng)用。節(jié)點208包括其他實用程序(utility)210,并且還可以包括一個或多個應(yīng)用和IO管理器(未示出)。節(jié)點202和208可以是物理和/或虛擬計算設(shè)備的客戶機(jī)集群的一部分。節(jié)點202和208使用例如SMB協(xié)議通過網(wǎng)絡(luò)212與存儲系統(tǒng)214通信。存儲系統(tǒng)214存儲由節(jié)點202和208上的一個或多個應(yīng)用訪問的信息。在示例中,節(jié)點202和208可以被考慮為如本文所描述的請求器。節(jié)點202和208建立與存儲系統(tǒng)214的連接以從可縮放文件服務(wù)器216訪問信息。雖然在圖2中僅節(jié)點202和208被示出為與存儲系統(tǒng)214通信,但是在其他示例中,可以存在從存儲系統(tǒng)214訪問信息的多于(或少于)兩個客戶機(jī)。

      如圖2中示出的,存儲系統(tǒng)214包括節(jié)點214A和214B,它們提供用于可縮放文件服務(wù)器216的高可用性和冗余這兩者。在示例中,存儲系統(tǒng)214提供由客戶機(jī)202和208訪問的可縮放文件服務(wù)器216。可縮放文件服務(wù)器216可以包括多個集群化服務(wù)器,它們可以協(xié)作以提供來自分布式文件系統(tǒng)218的文件信息。分布式文件系統(tǒng)218包括被存儲在物理存儲裝置226上的文件信息。物理存儲裝置226的文件系統(tǒng)222被安裝在節(jié)點214B上。在一些示例中,文件系統(tǒng)222的格式可以是新技術(shù)文件系統(tǒng)(NTFS)或彈性文件系統(tǒng)(ReFS)。節(jié)點214B充當(dāng)分布式文件系統(tǒng)218的協(xié)調(diào)器,并且中繼從分布式文件系統(tǒng)218到文件系統(tǒng)222的文件操作,例如,讀取、寫入、以及元數(shù)據(jù)操作。在一些示例中,節(jié)點214A可以直接對物理存儲裝置226執(zhí)行文件操作,但是節(jié)點214B可以具有獨有寫入訪問,而使得寫入請求由節(jié)點214A轉(zhuǎn)發(fā)給節(jié)點214B,而不是直接被發(fā)送給物理存儲裝置226。另外,請求標(biāo)識符過濾器220將訪問請求與然后被存儲在持久存儲裝置224中的標(biāo)識符相關(guān)聯(lián)。例如,持久存儲裝置224可以包括由附接到NTFS文件系統(tǒng)的恢復(fù)鍵過濾器來利用的恢復(fù)鍵過濾器數(shù)據(jù)庫。雖然圖2中示出了兩個節(jié)點,但是在其他示例中,存儲系統(tǒng)214可以包括多于兩個節(jié)點或少于兩個節(jié)點。

      根據(jù)示例,節(jié)點214A和214B用于提供可縮放文件服務(wù)器216的一致可用性。這通過利用節(jié)點202、208、214A和214B上的組件來存儲信息而被完成,如果存在故障(諸如,網(wǎng)絡(luò)212的故障、分布式文件系統(tǒng)218或文件系統(tǒng)222的卸除、或節(jié)點214A和214B中的一個節(jié)點的故障或重啟),則該信息可以用于重建節(jié)點202和208上的應(yīng)用與節(jié)點214A和214B上的可縮放文件服務(wù)器216之間的通信。進(jìn)一步地,應(yīng)用204可以向IO管理器206指示:向應(yīng)用204通知影響與存儲系統(tǒng)214的通信的故障。如下面更詳細(xì)描述的,所存儲的信息和通信故障通知允許節(jié)點202和208具有一致的文件訪問,并且使得在節(jié)點202和208上運行的應(yīng)用能夠處置可能發(fā)生的通信故障。

      示例中的節(jié)點(例如214A和214B)每個為客戶機(jī)提供對文件數(shù)據(jù)的訪問,并且被配置為向客戶機(jī)提供文件數(shù)據(jù)的一致可用性。為了說明一個示例,應(yīng)用204可以向IO管理器206指示:與存儲系統(tǒng)214的通信會話期間的故障應(yīng)當(dāng)被報告給應(yīng)用204。在示例中,應(yīng)用可能必須“選擇參加”以接收故障的指示。在一些示例中,該指示可以指明用以等待請求成功的時間段,在該時間段之后,請求應(yīng)當(dāng)被報告為已經(jīng)失敗。應(yīng)用204可以向節(jié)點214A發(fā)送對目標(biāo)數(shù)據(jù)的訪問請求。訪問請求可以與請求標(biāo)識符(諸如工作負(fù)載實例標(biāo)識符)相關(guān)聯(lián)或包括它。例如,當(dāng)新工作負(fù)載被開始時,元組可以被創(chuàng)建,其包括:<工作負(fù)載放置Id、工作負(fù)載Id、工作負(fù)載實例Id>。對目標(biāo)數(shù)據(jù)的訪問請求可以包括要對目標(biāo)數(shù)據(jù)執(zhí)行的多個文件操作。這些操作例如可以是打開以讀取/寫入數(shù)據(jù)、列舉屬性、租賃請求以允許數(shù)據(jù)在本地的緩存、或其他文件訪問操作。在示例中,所請求的目標(biāo)數(shù)據(jù)可以包括虛擬硬驅(qū)動器圖像,該虛擬硬驅(qū)動器圖像包括來賓(guest)虛擬機(jī)。

      節(jié)點214A接收對目標(biāo)數(shù)據(jù)的訪問請求。在一些示例中,可縮放文件服務(wù)器216可以確定目標(biāo)數(shù)據(jù)是否被鎖定(例如,正在由不同的應(yīng)用或過程訪問)。如果目標(biāo)數(shù)據(jù)被鎖定,則可縮放文件服務(wù)器108可以拒絕文件訪問請求,或者采取由所采用的特定協(xié)議規(guī)定的其他動作。

      在確定請求應(yīng)當(dāng)被準(zhǔn)予時,節(jié)點214A向節(jié)點202發(fā)送準(zhǔn)予對目標(biāo)數(shù)據(jù)的訪問的響應(yīng)。請求標(biāo)識符過濾器220把來自節(jié)點202的訪問請求所包括的或與其相關(guān)聯(lián)的請求標(biāo)識符存儲在持久存儲裝置224中。在一些示例中,目標(biāo)數(shù)據(jù)然后可以被鎖定。對目標(biāo)數(shù)據(jù)的鎖定(例如,由于故障)最后可能在來自應(yīng)用204的所有操作已經(jīng)完成之前被釋放,但是所存儲的標(biāo)識符可以繼續(xù)由持久存儲裝置224保留。進(jìn)一步地,鎖定可能在指明的時間段之后到期。

      在某個時刻,節(jié)點202可能經(jīng)歷與存儲系統(tǒng)214的通信故障。故障可能起因于例如斷開、文件系統(tǒng)的卸除、或重啟。作為通信故障的結(jié)果,IO管理器206向應(yīng)用204提供故障的通知。在接收到通知時,應(yīng)用204可以暫停一個或多個來賓虛擬機(jī)的執(zhí)行。除了暫停來賓虛擬機(jī)之外或者代替暫停來賓虛擬機(jī),應(yīng)用204也可以暫停IO操作或相關(guān)處理。

      最后,節(jié)點202與存儲系統(tǒng)214之間的連接可能被復(fù)原。當(dāng)IO管理器206確定故障已經(jīng)被解決時,它向應(yīng)用204提供解決通知。在示例中,應(yīng)用204可以通過其他方法來確定故障已經(jīng)被解決。在接收到解決通知之后,應(yīng)用204可以恢復(fù)執(zhí)行,包括恢復(fù)一個或多個來賓虛擬機(jī)的執(zhí)行。在示例中,應(yīng)用204還可以恢復(fù)IO操作或相關(guān)處理。應(yīng)用204發(fā)送恢復(fù)請求以恢復(fù)與存儲系統(tǒng)214的通信并且尋求對目標(biāo)數(shù)據(jù)的訪問。來自應(yīng)用204的恢復(fù)請求包括恢復(fù)請求標(biāo)識符或與其相關(guān)聯(lián),恢復(fù)請求標(biāo)識符可以是在故障之前在第一訪問請求中使用的相同標(biāo)識符。另外,恢復(fù)請求可以包括向存儲系統(tǒng)214指示該請求是恢復(fù)請求的標(biāo)記。在這一示例中,節(jié)點214B接收恢復(fù)請求,并且節(jié)點214B確定目標(biāo)數(shù)據(jù)自從故障以來是否已經(jīng)改變。

      如果節(jié)點214B確定目標(biāo)數(shù)據(jù)尚未改變,則節(jié)點214B準(zhǔn)予恢復(fù)請求并且向應(yīng)用204提供對目標(biāo)數(shù)據(jù)的訪問。在一些示例中并且如下面進(jìn)一步解釋的,目標(biāo)數(shù)據(jù)自從應(yīng)用204的之前訪問請求以來尚未改變的確定可以通過確定恢復(fù)請求所包括的(或與其相關(guān)聯(lián)的)標(biāo)識符繼續(xù)被存儲在持久存儲裝置224中(并且尚未從其刪除)來做出。當(dāng)恢復(fù)請求被準(zhǔn)予時,應(yīng)用204和節(jié)點214B可以完成在故障之前被中斷并且未完成的任何操作。當(dāng)恢復(fù)請求被準(zhǔn)予時,目標(biāo)數(shù)據(jù)可以由節(jié)點214B代表應(yīng)用204再次鎖定。最后,對目標(biāo)數(shù)據(jù)的鎖定可以再次(例如,由于另外的故障、由應(yīng)用204進(jìn)行的操作的完成,等等)被釋放,但是所存儲的標(biāo)識符可以繼續(xù)由持久存儲裝置224保留。進(jìn)一步地,鎖定可能在指明的時間段之后到期。

      在一些示例中,節(jié)點214B可以確定目標(biāo)數(shù)據(jù)在應(yīng)用204的最為近期的訪問請求與恢復(fù)請求之間已經(jīng)改變。例如,在某個時刻,節(jié)點208上的其他實用程序210可能在節(jié)點202上的應(yīng)用204重建它與存儲系統(tǒng)214的連接之前變更目標(biāo)數(shù)據(jù)。這可能例如發(fā)生在如下的情況下:應(yīng)用204作為它的最為近期的訪問請求的結(jié)果而具有對目標(biāo)數(shù)據(jù)的鎖定;然而,該鎖定在故障發(fā)生之后、但是在應(yīng)用204對目標(biāo)數(shù)據(jù)的所有操作完成之前到期或被釋放。鎖定的終止可能允許其他實用程序210在恢復(fù)請求從應(yīng)用204被接收之前變更目標(biāo)數(shù)據(jù)。如果目標(biāo)數(shù)據(jù)已經(jīng)改變,則節(jié)點214B可以從持久存儲裝置224移除請求標(biāo)識符。在示例中,在其他實用程序210變更目標(biāo)數(shù)據(jù)時(甚至在恢復(fù)請求發(fā)生之前),來自應(yīng)用204對目標(biāo)數(shù)據(jù)的最為近期的訪問請求的所存儲的標(biāo)識符可以從持久存儲裝置被刪除。例如,存儲系統(tǒng)214可以持續(xù)地或定期地監(jiān)測對目標(biāo)數(shù)據(jù)(存儲系統(tǒng)214針對其而當(dāng)前將所存儲的標(biāo)識符存儲在持久存儲裝置224中)的改變,并且在改變被做出時刪除這種所存儲的標(biāo)識符。在該情況下,目標(biāo)數(shù)據(jù)是否已經(jīng)改變的確定要求簡單地檢查恢復(fù)請求所包括的(或與其相關(guān)聯(lián)的)標(biāo)識符是否匹配于持久存儲裝置224中用于目標(biāo)數(shù)據(jù)的所存儲的標(biāo)識符。在示例中,不構(gòu)成對目標(biāo)數(shù)據(jù)的變更或改變的操作可以包括讀取、縮小(deflating)、壓縮、去重、或快照操作,并且代表另一應(yīng)用或其他實用程序210的這種操作將不會導(dǎo)致應(yīng)用204的針對目標(biāo)數(shù)據(jù)的所存儲的標(biāo)識符從持久存儲裝置224被刪除。如果目標(biāo)數(shù)據(jù)已經(jīng)改變,則存儲系統(tǒng)214可以拒絕恢復(fù)請求,并且應(yīng)用可以采取進(jìn)一步的動作。例如,如果虛擬機(jī)在故障期間已經(jīng)被暫停并且故障之后的恢復(fù)請求被存儲系統(tǒng)214拒絕,則虛擬機(jī)內(nèi)的操作系統(tǒng)可以再次被暫停,在此時,重啟虛擬機(jī)的確定可以被做出。

      如可以明白的,系統(tǒng)200的上述描述不意圖限制本文所描述的示例。圖2及其描述僅意圖說明一些示例的實施方式。在其他示例中,不同類型的信息可以被存儲在系統(tǒng)200中的不同組件上。因此,示例不限于圖2中示出和描述的事物。

      圖3和圖4圖示了根據(jù)示例的操作流程300和400。操作流程300和400可以在任何適合的計算環(huán)境中被執(zhí)行。例如,這些操作流程可以由諸如圖1和圖2中所圖示的環(huán)境來執(zhí)行。因此,操作流程300和400的描述可以參考圖1和圖2的組件中的至少一個組件。然而,將理解,圖1和圖2的實施方式是用于操作流程300和400的非限制性環(huán)境。

      再者,雖然操作流程300和400按特定順序依次地被圖示和描述,但是在其他示例中,這些操作可以按不同順序、多次地、和/或并行地被執(zhí)行。進(jìn)一步地,一個或多個操作在一些示例中可以被省略或組合。另外,應(yīng)當(dāng)理解,序數(shù)(諸如“第一”)不意圖暗示順序或次序,除非另有指明,并且被用來在類似的元件之間進(jìn)行區(qū)分。例如,“第一訪問請求”不需要是初始訪問請求,而是應(yīng)當(dāng)被解讀為不同于“第二訪問請求”或“恢復(fù)請求”。

      操作流程300圖示了針對與存儲系統(tǒng)進(jìn)行通信的應(yīng)用的操作。在示例中,圖3中圖示的流程300可以由客戶機(jī)上正運行的應(yīng)用來執(zhí)行,例如,節(jié)點202上的應(yīng)用204(圖2)。

      流程300在操作302處開始,在操作302處,存儲系統(tǒng)故障應(yīng)當(dāng)被報告給應(yīng)用的指示被傳達(dá)。該指示可以向IO管理器做出,諸如IO管理器206(圖2)。在一些示例中,該指示可以指明用以等待訪問請求成功的指定時間段,在該指定時間段之后,訪問請求應(yīng)當(dāng)被報告為已經(jīng)失敗。

      流程從操作302轉(zhuǎn)到操作304,在操作304處,對目標(biāo)數(shù)據(jù)的第一訪問請求被發(fā)送。第一訪問請求與第一標(biāo)識符相關(guān)聯(lián)。在一些示例中,第一標(biāo)識符可以被包括作為第一訪問請求的一部分。對目標(biāo)數(shù)據(jù)的訪問請求可以包括要對目標(biāo)數(shù)據(jù)執(zhí)行的多個文件操作。這些操作可以是例如打開以讀取/寫入數(shù)據(jù)、列舉屬性、租賃請求以允許數(shù)據(jù)在本地的緩存、或其他文件訪問操作。

      在操作306處,準(zhǔn)予對所請求的目標(biāo)數(shù)據(jù)的訪問的響應(yīng)被接收。移至操作308,第一故障的通知被接收。該故障可能起因于例如通信故障、文件系統(tǒng)卸除、或重啟。流程300然后移至操作310,在操作310處,在接收到故障通知之后,暫停應(yīng)用的確定被做出。在其他示例中,操作310還可以包括暫停IO操作和相關(guān)處理。例如,應(yīng)用204在接收到故障通知之后可以暫停來賓虛擬機(jī)(圖2)。在一些示例中,故障通知可以包括故障是否預(yù)期在特定時間段內(nèi)被解決的指示。這種信息準(zhǔn)許應(yīng)用決定是暫停IO操作、重啟、還是采取其他動作。

      在操作312處,第一故障已經(jīng)被解決的指示被接收。移至操作314,應(yīng)用被恢復(fù)。在其他示例中,操作314還可以包括恢復(fù)IO操作和相關(guān)處理。例如,應(yīng)用204在接收到第一故障已經(jīng)被解決的指示之后可以恢復(fù)來賓虛擬機(jī)(圖2)。在示例中,操作314可以繼續(xù)進(jìn)行而無需首先接收到故障已經(jīng)被解決的指示。

      流程300然后移至操作316,在操作316處,對目標(biāo)數(shù)據(jù)的恢復(fù)請求被發(fā)送。恢復(fù)請求與第一標(biāo)識符相關(guān)聯(lián)并且包括該請求是恢復(fù)請求的指示(諸如標(biāo)記)。在一些示例中,第一標(biāo)識符可以被包括作為恢復(fù)請求的一部分。在操作316之后,流程300轉(zhuǎn)到操作318,在操作318處,確定恢復(fù)請求是否被準(zhǔn)予。如果恢復(fù)請求被準(zhǔn)予,則準(zhǔn)予對所請求的目標(biāo)數(shù)據(jù)的訪問的響應(yīng)被接收320。接收到準(zhǔn)予恢復(fù)請求的響應(yīng)的應(yīng)用可以將請求的準(zhǔn)予考慮為是如下的確認(rèn):目標(biāo)數(shù)據(jù)在應(yīng)用對目標(biāo)數(shù)據(jù)的最為近期的訪問請求與恢復(fù)請求之間未改變。應(yīng)用然后可以繼續(xù)對目標(biāo)數(shù)據(jù)的任何未完成的操作。如果恢復(fù)請求被拒絕,則進(jìn)一步的動作被采取322。例如,接收到對恢復(fù)請求的拒絕的應(yīng)用可以選擇重新開始。在示例中,應(yīng)用還可以通過用戶接口向用戶提供故障的指示并且提供用戶采取進(jìn)一步動作的選項。

      操作流程400圖示了針對與應(yīng)用進(jìn)行通信的存儲系統(tǒng)的步驟。在示例中,流程400可以由存儲系統(tǒng)來執(zhí)行,諸如一個或多個文件服務(wù)器,例如,節(jié)點214A和/或節(jié)點214B(圖2)。

      流程400在操作402處開始,在操作402處,對目標(biāo)數(shù)據(jù)的第一訪問請求被接收。第一訪問請求與請求標(biāo)識符相關(guān)聯(lián)。在一些示例中,請求標(biāo)識符可以被包括作為第一訪問請求的一部分。對目標(biāo)數(shù)據(jù)的訪問請求可以包括要對目標(biāo)數(shù)據(jù)執(zhí)行的多個文件操作。這些操作可以是例如打開以讀取/寫入數(shù)據(jù)、列舉屬性、租賃請求以允許數(shù)據(jù)在本地的緩存、或其他文件訪問操作。在操作402之后,流程400轉(zhuǎn)到?jīng)Q定404,在決定404處,關(guān)于目標(biāo)數(shù)據(jù)是否被鎖定而做出決定。

      如果在決定404處確定目標(biāo)數(shù)據(jù)被鎖定,則流程轉(zhuǎn)到操作406,在操作406處,第一訪問請求被拒絕。在其他示例中,操作406可以包括打破鎖定,在這種情況下,流程將會進(jìn)行到操作408。

      如果在決定404處確定目標(biāo)數(shù)據(jù)不被鎖定,則流程繼續(xù)到操作408,在操作408處,鎖定針對請求器而被設(shè)置在目標(biāo)數(shù)據(jù)上。鎖定可以在指明的時間段之后到期,或者可以根據(jù)特定協(xié)議而被終止。移至操作410,訪問所請求的目標(biāo)數(shù)據(jù)被準(zhǔn)予。流程然后繼續(xù)到操作412,在操作412處,請求標(biāo)識符被存儲在持久存儲裝置中。

      流程轉(zhuǎn)到操作414,在操作414中,故障發(fā)生。該故障可能起因于例如連接中斷、與存儲系統(tǒng)相關(guān)聯(lián)的文件系統(tǒng)的卸除、或存儲系統(tǒng)的重啟,等等。在示例中,流程400包括操作416,在操作416中,在操作408處創(chuàng)建的鎖定被釋放并且請求標(biāo)識符被保留在持久存儲裝置中。例如,請求器在故障之前可能尚未完成對目標(biāo)數(shù)據(jù)的所有操作;然而,鎖定由于時間段的到期、由于故障它本身、或由于其他因素而被釋放。流程然后繼續(xù)到?jīng)Q定418,在決定418處,關(guān)于目標(biāo)數(shù)據(jù)自從它在操作410處上次被訪問以來是否被修改而做出決定。

      如果在決定418處確定目標(biāo)數(shù)據(jù)被修改,則流程轉(zhuǎn)到操作420,在操作420處,所存儲的請求標(biāo)識符從持久存儲裝置被移除。例如,如果目標(biāo)數(shù)據(jù)在鎖定在操作416中被釋放之后由另一過程改變,則將目標(biāo)數(shù)據(jù)與請求器相關(guān)聯(lián)的所存儲的標(biāo)識符可以從持久存儲裝置被刪除。

      流程400然后(從決定操作418或操作420)繼續(xù)到操作422,在操作422處,恢復(fù)請求被接收?;謴?fù)請求與恢復(fù)請求標(biāo)識符相關(guān)聯(lián),其可以與在操作402中接收的請求標(biāo)識符相同。在一些示例中,恢復(fù)請求標(biāo)識符可以被包括作為恢復(fù)請求的一部分。進(jìn)一步地,在示例中,決定418可以發(fā)生在接收到恢復(fù)請求之后。在操作422之后,流程400轉(zhuǎn)到?jīng)Q定424,在決定424處,請求標(biāo)識符是否匹配于持久存儲裝置中所存儲的標(biāo)識符的確定被做出。

      如果在決定424處確定請求標(biāo)識符不匹配,則流程轉(zhuǎn)到操作426,在操作426處,恢復(fù)請求被拒絕。

      如果在決定424處確定請求標(biāo)識符匹配,則在一些示例中,流程繼續(xù)到操作428,在操作428處,鎖定針對請求器而被設(shè)置在目標(biāo)數(shù)據(jù)上。鎖定可以在指明的時間段之后到期,或者可以根據(jù)特定協(xié)議而被終止。移至操作430,訪問所請求的目標(biāo)數(shù)據(jù)被準(zhǔn)予。在其他示例中,流程400包括操作432,在操作432中,在操作428處創(chuàng)建的鎖定最后被釋放并且請求標(biāo)識符被保留在持久存儲裝置中。在操作430(或在其他示例中是操作432)之后,操作流程結(jié)束。

      圖5-圖7和相關(guān)聯(lián)的描述提供了本發(fā)明的示例可以被實踐在其中的各種操作環(huán)境的討論。然而,關(guān)于圖5-圖7被說明和討論的設(shè)備和系統(tǒng)用于示例和說明的目的,并且不是對可以用于實踐本文所述的本發(fā)明的示例的大量計算設(shè)備配置的限制。

      圖5是圖示了本公開的示例可以利用其而被實踐的計算設(shè)備502(例如,節(jié)點202、208、214A和214B)的物理組件的框圖。下面描述的計算設(shè)備組件可以適合于上面描述的計算設(shè)備。在基本配置中,計算設(shè)備502可以包括至少一個處理單元504和系統(tǒng)存儲器506。取決于計算設(shè)備的配置和類型,系統(tǒng)存儲器506可以包括但不限于易失性存儲裝置(例如,隨機(jī)訪問存儲器)、非易失性存儲裝置(例如,只讀存儲器)、閃存存儲器、或這些存儲器的任何組合。系統(tǒng)存儲器506可以包括操作系統(tǒng)507以及一個或多個程序模塊508,一個或多個程序模塊508適合于運行軟件應(yīng)用520,諸如應(yīng)用204、IO管理器206、以及其他實用程序210。操作系統(tǒng)507例如可以適合于控制計算設(shè)備502的操作。再者,本發(fā)明的示例可以連同圖形庫、其他操作系統(tǒng)、或任何其他應(yīng)用程序而被實踐,并且不限于任何特定應(yīng)用或系統(tǒng)。這種基本配置在圖5中由虛線522內(nèi)的那些組件圖示。計算設(shè)備502可以具有另外的特征或功能。例如,計算設(shè)備502還可以包括另外的(可移除和/或不可移除的)數(shù)據(jù)存儲設(shè)備,諸如,例如磁盤、光盤或磁帶。這種另外的存儲裝置在圖5中由可移除存儲設(shè)備509和不可移除存儲設(shè)備510圖示。

      如上面所陳述的,多個程序模塊和數(shù)據(jù)文件可以被存儲在系統(tǒng)存儲器506中。當(dāng)在處理單元504上執(zhí)行時,程序模塊508(例如,應(yīng)用204、IO管理器206、以及其他實用程序210)可以執(zhí)行處理,包括但不限于圖3和圖4中圖示的操作流程300和400的階段中的一個或多個階段??梢愿鶕?jù)本發(fā)明的示例來使用的其他程序模塊可以包括電子郵件和聯(lián)系人應(yīng)用、文字處理應(yīng)用、電子制表應(yīng)用、數(shù)據(jù)庫應(yīng)用、幻燈片應(yīng)用、繪圖或計算機(jī)輔助應(yīng)用程序,等等。

      再者,本發(fā)明的示例可以被實踐在包括分立電子元件的電路中、包含邏輯門的封裝或集成電子芯片中、利用微處理器的電路中、或包含電子元件或微處理器的單個芯片上。例如,本發(fā)明的示例可以經(jīng)由片上系統(tǒng)(SOC)來實踐,其中圖5中所圖示的組件中的每個或許多組件可以被集成到單個集成電路上。這種SOC設(shè)備可以包括一個或多個處理單元、圖形單元、通信單元、系統(tǒng)虛擬化單元、以及各種應(yīng)用功能,它們中的全部被集成(或“燒錄”)到芯片基板上作為單個集成電路。當(dāng)經(jīng)由SOC操作時,本文所描述的功能可以經(jīng)由與計算設(shè)備502的其他組件一起被集成在單個集成電路(芯片)上的專用邏輯來操作。本公開的示例還可以使用能夠執(zhí)行邏輯操作(諸如,例如,“與”、“或”、以及“非”)的其他技術(shù)而被實踐,包括但不限于機(jī)械、光學(xué)、流體、以及量子技術(shù)。另外,本發(fā)明的示例可以被實踐在通用計算機(jī)內(nèi)或者任何其他電路或系統(tǒng)中。

      計算設(shè)備502還可以具有一個或多個輸入設(shè)備512,諸如鍵盤、鼠標(biāo)、筆、聲音輸入設(shè)備、觸摸輸入設(shè)備等。(多個)輸出設(shè)備514(諸如顯示器、揚聲器、打印機(jī)等)也可以被包括。前述設(shè)備是示例并且其他設(shè)備可以被使用。計算設(shè)備504可以包括允許與其他計算設(shè)備518通信的一個或多個通信連接516。適合的通信連接516的示例包括,但不限于,RF發(fā)射器、接收器、和/或收發(fā)器電路系統(tǒng);通用串行總線(USB)、并行和/或串行端口。

      如本文所使用的術(shù)語“計算機(jī)可讀介質(zhì)”可以包括計算機(jī)存儲介質(zhì)。計算機(jī)存儲介質(zhì)可以包括易失性和非易失性的、可移除和不可移除的介質(zhì),其按照用于存儲信息(諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、或程序模塊)的任何方法或技術(shù)而被實施。系統(tǒng)存儲器506、可移除存儲設(shè)備509、以及不可移除存儲設(shè)備510全部是計算機(jī)存儲介質(zhì)示例(即,存儲器存儲裝置)。計算機(jī)存儲介質(zhì)可以包括RAM、ROM、電可擦除只讀存儲器(EEPROM)、閃存存儲器或其他存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其他光存儲裝置、磁帶盒、磁帶、磁盤存儲裝置或其他磁存儲設(shè)備、或者可以用于存儲信息并且可以由計算設(shè)備502訪問的任何其他制品。任何這種計算機(jī)存儲介質(zhì)可以是計算設(shè)備502的一部分。計算機(jī)存儲介質(zhì)不包括載波或其他傳播的或調(diào)制的數(shù)據(jù)信號。

      通信介質(zhì)可以由計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或調(diào)制數(shù)據(jù)信號(諸如載波或其他傳輸機(jī)制)中的其他數(shù)據(jù)來具體化,并且包括任何信息遞送介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號”可以描述如下的信號:其使一個或多個特性以對信號中的信息進(jìn)行編碼的這種方式而被設(shè)置或改變。通過示例而不是限制的方式,通信介質(zhì)可以包括有線介質(zhì)(諸如有線網(wǎng)絡(luò)或直接有線連接)和無線介質(zhì)(諸如聲學(xué)、射頻(RF)、紅外、以及其他無線介質(zhì))。

      圖6A和圖6B圖示了本發(fā)明的示例可以利用其而被實踐的移動計算設(shè)備600,例如,移動電話、智能電話、平板個人計算機(jī)、膝上型計算機(jī),等等。例如,移動計算設(shè)備600可以用于實施客戶機(jī)節(jié)點202和208。參考圖6A,圖示了用于實施示例的移動計算設(shè)備600的一個示例。在基本配置中,移動計算設(shè)備600是具有輸入元件和輸出元件這兩者的手持式計算機(jī)。移動計算設(shè)備600通常包括顯示器605以及一個或多個輸入按鈕610,它們允許用戶將信息輸入到移動計算設(shè)備600中。移動計算設(shè)備600的顯示器605也可以用作輸入設(shè)備(例如,觸摸屏顯示器)。如果被包括,則可選的側(cè)部輸入元件615允許進(jìn)一步的用戶輸入。側(cè)部輸入元件615可以是旋轉(zhuǎn)開關(guān)、按鈕、或任何其他類型的手動輸入元件。在替換性示例中,移動計算設(shè)備600可以包含更多或更少的輸入元件。例如,顯示器605在一些示例中可以不是觸摸屏。在又另一替換性示例中,移動計算設(shè)備600是便攜式電話系統(tǒng),諸如蜂窩電話。移動計算設(shè)備600還可以包括可選的小鍵盤635??蛇x的小鍵盤635可以是物理小鍵盤或在觸摸屏顯示器上生成的“軟”小鍵盤。在各種示例中,輸出元件包括用于示出圖形用戶界面(GUI)的顯示器605、視覺指示器620(例如,發(fā)光二極管)、和/或音頻換能器625(例如,揚聲器)。在一些示例中,移動計算設(shè)備600包含用于向用戶提供觸覺反饋的振動換能器。在又另一示例中,移動計算設(shè)備600包含用于向外部設(shè)備發(fā)送信號或從其接收信號的輸入和/或輸出端口,諸如音頻輸入(例如,麥克風(fēng)插口)、音頻輸出(例如,耳機(jī)插口)、以及視頻輸出(例如,HDMI端口)。

      圖6B是圖示了移動計算設(shè)備的一個示例的架構(gòu)的框圖。也就是說,移動計算設(shè)備600可以包含系統(tǒng)(即,架構(gòu))602來實施一些示例。在一個示例中,系統(tǒng)602被實施為能夠運行一個或多個應(yīng)用(例如,瀏覽器、電子郵件、安排日程表、聯(lián)系人管理器、消息收發(fā)客戶機(jī)、游戲、以及媒體客戶機(jī)/播放器)的“智能電話”。在一些示例中,系統(tǒng)602被集成為計算設(shè)備,諸如集成個人數(shù)字助理(PDA)和無線電話。

      一個或多個應(yīng)用程序666可以被加載到存儲器662中并且在操作系統(tǒng)664上或與其相關(guān)聯(lián)地運行。應(yīng)用程序的示例包括電話撥號器程序、電子郵件程序、個人信息管理(PIM)程序、文字處理程序、電子制表程序、互聯(lián)網(wǎng)瀏覽器程序、消息收發(fā)程序,等等。系統(tǒng)602還包括存儲器662內(nèi)的非易失性存儲區(qū)域668。非易失性存儲區(qū)域668可以用于存儲在系統(tǒng)602被斷電的情況下不應(yīng)當(dāng)丟失的持久信息。應(yīng)用程序666可以使用信息并將信息存儲在非易失性存儲區(qū)域668中,諸如電子郵件或由電子郵件應(yīng)用使用的其他消息,等等。同步應(yīng)用(未示出)也駐留在系統(tǒng)602上并且被編程為與駐留在主機(jī)上的對應(yīng)同步應(yīng)用進(jìn)行交互,以保持非易失性存儲區(qū)域668中所存儲的信息與主機(jī)處所存儲的對應(yīng)信息同步。如應(yīng)當(dāng)明白的,其他應(yīng)用可以被加載到存儲器662中并且在移動計算設(shè)備600上運行,包括本文所描述的應(yīng)用204、IO管理器206、以及其他實用程序210。

      系統(tǒng)602具有電源670,其可以被實施為一個或多個電池。電源670可以進(jìn)一步包括外部電力源,諸如AC適配器或者對電池進(jìn)行補(bǔ)充或再充電的被供電的對接支座(docking cradle)。

      系統(tǒng)602可以包括外圍設(shè)備端口678,其執(zhí)行促進(jìn)系統(tǒng)602與一個或多個外圍設(shè)備之間的連接的功能。去往和來自外圍設(shè)備端口672的傳輸在操作系統(tǒng)664的控制下進(jìn)行。換句話說,由外圍設(shè)備端口678接收的通信可以經(jīng)由操作系統(tǒng)664傳播到應(yīng)用程序666,并且反之亦然。

      系統(tǒng)602還可以包括無線電672,其執(zhí)行發(fā)射和接收射頻通信的功能。無線電672經(jīng)由通信載波或服務(wù)供應(yīng)商來促進(jìn)系統(tǒng)602與“外部世界”之間的無線連接。去往和來自無線電672的傳輸在操作系統(tǒng)664的控制下進(jìn)行。換句話說,由無線電672接收的通信可以經(jīng)由操作系統(tǒng)664傳播到應(yīng)用程序666,并且反之亦然。

      視覺指示器620可以用來提供視覺通知,和/或音頻接口674可以用于經(jīng)由音頻換能器625產(chǎn)生可聽通知。在所圖示的示例中,視覺指示器620是發(fā)光二極管(LED)并且音頻換能器625是揚聲器。這些設(shè)備可以直接耦合到電源670,從而在被激活時,即使處理器660和其他組件可能為了節(jié)省電池功率而關(guān)閉,它們也保持接通至由通知機(jī)制規(guī)定的持續(xù)期。LED可以被編程為無限期地保持接通,直到用戶采取動作來指示設(shè)備的通電狀況。音頻接口674用于向用戶提供可聽信號并且從用戶接收可聽信號。例如,除了被耦合到音頻換能器625之外,音頻接口674還可以耦合到麥克風(fēng)以接收可聽輸入,諸如以促進(jìn)電話交談。根據(jù)本發(fā)明的示例,如下面將描述的,麥克風(fēng)還可以充當(dāng)促進(jìn)對通知的控制的音頻傳感器。系統(tǒng)602可以進(jìn)一步包括視頻接口676,其使能機(jī)載相機(jī)630的操作以記錄靜止圖像、視頻流,等等。

      實施系統(tǒng)602的移動計算設(shè)備600可以具有另外的特征或功能。例如,移動計算設(shè)備600還可以包括另外的(可移除和/或不可移除的)數(shù)據(jù)存儲設(shè)備,諸如,磁盤、光盤或磁帶。這種另外的存儲裝置在圖6B中由非易失性存儲區(qū)域668圖示。

      由移動計算設(shè)備600生成或捕獲并且經(jīng)由系統(tǒng)602存儲的數(shù)據(jù)/信息可以如上面所描述的在本地存儲在移動計算設(shè)備600上,或者數(shù)據(jù)可以存儲在可以由設(shè)備經(jīng)由無線電672或經(jīng)由移動計算設(shè)備600與分離的計算設(shè)備之間的有線連接來訪問的任何數(shù)目的存儲介質(zhì)上,該分離的計算設(shè)備與移動計算設(shè)備600相關(guān)聯(lián),例如,分布式計算網(wǎng)絡(luò)(諸如互聯(lián)網(wǎng))中的服務(wù)器計算機(jī)。如應(yīng)當(dāng)明白的,這種數(shù)據(jù)/信息可以經(jīng)由移動計算設(shè)備600,經(jīng)由無線電672或經(jīng)由分布式計算網(wǎng)絡(luò)來訪問。類似地,這種數(shù)據(jù)/信息可以根據(jù)公知的數(shù)據(jù)/信息傳送和存儲手段(包括電子郵件和協(xié)同數(shù)據(jù)/信息共享系統(tǒng))而在計算設(shè)備之間容易地被傳送以用于存儲和使用。

      圖7圖示了用于向一個或多個客戶機(jī)設(shè)備提供應(yīng)用的系統(tǒng)的架構(gòu)的一個示例,該應(yīng)用如上面所描述的可靠地訪問存儲系統(tǒng)上的目標(biāo)數(shù)據(jù)并且處置通信故障。與應(yīng)用204、IO管理器206、其他實用程序210、以及存儲系統(tǒng)214相關(guān)聯(lián)地被訪問、與之交互、或被編輯的目標(biāo)數(shù)據(jù)可以被存儲在不同的通信信道或其他存儲類型中。例如,各種文檔可以使用目錄服務(wù)722、web門戶724、郵箱服務(wù)726、即時消息收發(fā)存儲庫728、或社交聯(lián)網(wǎng)站點730而被存儲。應(yīng)用204、IO管理器206、其他實體程序210、以及存儲系統(tǒng)214可以使用如本文所描述的用于使能數(shù)據(jù)利用的這些類型的系統(tǒng)等中的任何一種。服務(wù)器720可以提供存儲系統(tǒng)214,用于由操作在通用計算設(shè)備502和(多個)移動設(shè)備600上的客戶機(jī)節(jié)點202和208通過網(wǎng)絡(luò)715使用。通過示例的方式,網(wǎng)絡(luò)715可以包括互聯(lián)網(wǎng)或任何其他類型的局域或廣域網(wǎng),并且客戶機(jī)節(jié)點202和208可以被實施為具體化在個人計算機(jī)、平板計算設(shè)備中的計算設(shè)備502,和/或由移動計算設(shè)備600(例如,智能電話)來實施??蛻魴C(jī)計算設(shè)備502或600的這些實施例中的任何實施例可以從存儲庫716獲得內(nèi)容。

      除了其他示例之外,本公開還提出了系統(tǒng)和方法,它們用于由應(yīng)用指示會話期間的故障應(yīng)當(dāng)被報告給應(yīng)用;向存儲系統(tǒng)發(fā)送對目標(biāo)數(shù)據(jù)的第一訪問請求,第一訪問請求與第一標(biāo)識符相關(guān)聯(lián);接收準(zhǔn)予對目標(biāo)數(shù)據(jù)的訪問的第一訪問響應(yīng);接收第一故障的通知;基于第一故障的通知,暫停應(yīng)用;恢復(fù)應(yīng)用;向存儲系統(tǒng)發(fā)送對目標(biāo)數(shù)據(jù)的恢復(fù)請求,恢復(fù)請求與第一標(biāo)識符相關(guān)聯(lián);以及接收準(zhǔn)予對目標(biāo)數(shù)據(jù)的訪問的恢復(fù)響應(yīng)。在示例中,故障包括下列至少之一:從存儲系統(tǒng)斷開、與存儲系統(tǒng)相關(guān)聯(lián)的文件系統(tǒng)的卸除、或存儲系統(tǒng)的重啟。在進(jìn)一步的示例中,第一標(biāo)識符被包括在第一訪問請求中。在進(jìn)一步的示例中,指示包括向輸入/輸出(IO)管理器提供以下指示:由于會話期間的故障而被延遲的IO請求如果在指定時間段內(nèi)未完成則應(yīng)當(dāng)被報告給應(yīng)用。另外,接收第一故障的通知可以包括接收第二訪問請求尚未被完成的通知。進(jìn)一步地,暫停應(yīng)用可以包括暫停IO操作和相關(guān)處理。另外,系統(tǒng)和方法可以包括完成在故障之前未完成的被緩存的寫入請求。

      本文進(jìn)一步的描述公開了系統(tǒng)和方法,它們用于接收對目標(biāo)數(shù)據(jù)的第一訪問請求,目標(biāo)數(shù)據(jù)由存儲系統(tǒng)所存儲,并且第一訪問請求與請求標(biāo)識符相關(guān)聯(lián);將請求標(biāo)識符存儲在持久存儲裝置中作為所存儲的第一標(biāo)識符;準(zhǔn)予對目標(biāo)數(shù)據(jù)的第一訪問請求;在故障之后,接收對目標(biāo)數(shù)據(jù)的恢復(fù)請求,恢復(fù)請求與請求標(biāo)識符相關(guān)聯(lián);通過將恢復(fù)請求中的請求標(biāo)識符與持久存儲裝置中的一個或多個標(biāo)識符進(jìn)行比較,來確定目標(biāo)數(shù)據(jù)自從故障以來是否已經(jīng)改變;當(dāng)目標(biāo)數(shù)據(jù)自從故障以來尚未改變時,準(zhǔn)予對目標(biāo)數(shù)據(jù)的恢復(fù)請求;以及當(dāng)目標(biāo)數(shù)據(jù)自從故障以來已經(jīng)改變時,拒絕恢復(fù)請求。在示例中,存儲系統(tǒng)是服務(wù)器集群上的共享文件系統(tǒng),并且確定目標(biāo)數(shù)據(jù)自從故障以來是否已經(jīng)改變包括在恢復(fù)請求被接收之前從持久存儲裝置刪除所存儲的第一標(biāo)識符。進(jìn)一步地,在示例中,故障包括以下至少之一:連接中斷、與存儲系統(tǒng)相關(guān)聯(lián)的文件系統(tǒng)的卸除、或存儲系統(tǒng)的重啟。在另外的示例中,系統(tǒng)和方法包括鎖定目標(biāo)數(shù)據(jù);以及在準(zhǔn)予第一訪問請求之后,釋放對目標(biāo)數(shù)據(jù)的鎖定而不從持久存儲裝置刪除第一標(biāo)識符。另外,在示例中,對目標(biāo)數(shù)據(jù)的鎖定持續(xù)第一時間段,并且第一時間段可以為零。

      本公開還包括一種系統(tǒng),該系統(tǒng)包括被配置為執(zhí)行計算機(jī)可執(zhí)行指令的至少一個處理器;存儲計算機(jī)可執(zhí)行指令的至少一個計算機(jī)可讀存儲介質(zhì),這些計算機(jī)可執(zhí)行指令在由至少一個處理器執(zhí)行時提供一種存儲系統(tǒng),該存儲系統(tǒng)被配置為:接收對目標(biāo)數(shù)據(jù)的第一訪問請求,目標(biāo)數(shù)據(jù)由存儲系統(tǒng)所存儲,并且第一訪問請求包括請求標(biāo)識符;將請求標(biāo)識符存儲在持久存儲裝置中作為所存儲的第一標(biāo)識符;準(zhǔn)予對目標(biāo)數(shù)據(jù)的第一訪問請求;在故障之后,接收對目標(biāo)數(shù)據(jù)的恢復(fù)請求,恢復(fù)請求包括請求標(biāo)識符并且包括恢復(fù)請求標(biāo)記;通過將恢復(fù)請求中的請求標(biāo)識符與持久存儲裝置中的一個或多個標(biāo)識符進(jìn)行比較,來確定目標(biāo)數(shù)據(jù)自從故障以來是否已經(jīng)改變;當(dāng)目標(biāo)數(shù)據(jù)自從故障以來尚未改變時,準(zhǔn)予對目標(biāo)數(shù)據(jù)的恢復(fù)請求;以及當(dāng)目標(biāo)數(shù)據(jù)自從故障以來已經(jīng)改變時,拒絕恢復(fù)請求。在示例中,確定目標(biāo)數(shù)據(jù)自從故障以來是否已經(jīng)改變包括在恢復(fù)請求被接收之前從持久存儲裝置刪除所存儲的第一標(biāo)識符。另外,故障可以包括以下至少之一:連接中斷、與存儲系統(tǒng)相關(guān)聯(lián)的文件系統(tǒng)的卸除、或存儲系統(tǒng)的重啟。進(jìn)一步地,存儲系統(tǒng)可以是服務(wù)器集群上的共享文件系統(tǒng)。另外,對目標(biāo)數(shù)據(jù)的鎖定可以持續(xù)第一時間段,并且第一時間段可以為零。

      貫穿這一說明書已經(jīng)對“一個示例”或者“一種示例”做出參考,意味著特定所描述的特征、結(jié)構(gòu)或特性被包括在至少一個示例中。因此,這種短語的使用可以指代多于僅一個示例。再者,所描述的特征、結(jié)構(gòu)或特性在一個或多個示例中可以按任何適合的方式被組合。

      然而,相關(guān)領(lǐng)域的技術(shù)人員可以認(rèn)識到,示例可以沒有具體細(xì)節(jié)中的一個或多個、或利用其他方法、資源、材料等而被實踐。在其他實例中,公知的結(jié)構(gòu)、資源或操作沒有詳細(xì)被示出或描述,僅為了遵守不使示例的方面模糊不清。

      盡管圖示和描述了示例和應(yīng)用,但是將理解,示例不限于上面描述的精確配置和資源。在本文所公開的方法和系統(tǒng)的布置、操作和細(xì)節(jié)中可以做出對本領(lǐng)域的技術(shù)人員明顯的各種修改、改變和變化,而不偏離所要求保護(hù)的示例的范圍。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1