最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種文件刪除方法及系統(tǒng)與流程

文檔序號:11199292閱讀:394來源:國知局
一種文件刪除方法及系統(tǒng)與流程

本發(fā)明涉及分布式存儲系統(tǒng)技術(shù)領(lǐng)域,更具體地說,涉及一種文件刪除方法及系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)時代的到來,微博、微信、網(wǎng)購等面向普通互聯(lián)網(wǎng)用戶的網(wǎng)站正在蓬勃興起,互聯(lián)網(wǎng)界的巨頭公司向數(shù)以億計的用戶提供著基于互聯(lián)網(wǎng)的各種服務(wù)。遍布世界各地的互聯(lián)網(wǎng)用戶每天都在網(wǎng)上發(fā)布信息,他們產(chǎn)生的這些數(shù)據(jù)是個人計算機的數(shù)據(jù)量的數(shù)倍。

為了隨時應(yīng)對激增的用戶請求,越來越多的公司采用分布式存儲系統(tǒng)。分布式存儲系統(tǒng)具有高可靠性、高可用性和高擴展性,可以避免由于單個節(jié)點失效而使整個系統(tǒng)崩潰的危險。傳統(tǒng)方案中,當(dāng)多個客戶端同時訪問分布式文件系統(tǒng),文件系統(tǒng)會記錄每一個文件的索引節(jié)點的計數(shù),當(dāng)索引節(jié)點引用計數(shù)為0時,回收線程會把該文件刪除。但是如果編寫客戶端程序的開發(fā)人員因為某些原因忘記了釋放引用,將會導(dǎo)致后端的文件永遠(yuǎn)無法刪除。因此,如何有效的對分布式存儲系統(tǒng)中的文件進(jìn)行刪除是一項亟待解決的問題。



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

有鑒于此,本發(fā)明的目的在于提供一種文件刪除方法及系統(tǒng),能夠有效的對分布式存儲系統(tǒng)中的文件進(jìn)行刪除,能夠有效解決系統(tǒng)空間不釋放的問題。

為實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:

一種文件刪除方法,應(yīng)用于分布式存儲系統(tǒng),所述方法包括:

將所述分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用所述分布式存儲系統(tǒng)的接口讀寫文件;

所述分布式存儲系統(tǒng)分配索引節(jié)點指針至所述客戶端;

基于所述索引節(jié)點指針刪除所述分布式存儲系統(tǒng)中的文件。

優(yōu)選地,所述索引節(jié)點指針為智能指針。

優(yōu)選地,所述基于所述索引節(jié)點指針刪除所述分布式存儲系統(tǒng)中的文件具體為:

智能指針類將一個計數(shù)器與類指向的對象相關(guān)聯(lián),引用計數(shù)跟蹤該類共享同一指針的對象;

創(chuàng)建類的新對象時,初始化指針并將引用計數(shù)置為1,當(dāng)對象作為另一對象的副本而創(chuàng)建時,拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計數(shù);

對一個對象進(jìn)行賦值是,賦值操作符減少左操作數(shù)所指對象的引用計數(shù),并增加右操作數(shù)所指對象的引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除對象;

在調(diào)用析構(gòu)函數(shù)時,構(gòu)造函數(shù)減少引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除基礎(chǔ)對象。

一種文件刪除系統(tǒng),應(yīng)用于分布式存儲系統(tǒng),所述系統(tǒng)包括:

調(diào)用模塊,用于將所述分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用所述分布式存儲系統(tǒng)的接口讀寫文件;

分配模塊,用于所述分布式存儲系統(tǒng)分配索引節(jié)點指針至所述客戶端;

刪除模塊,用于基于所述索引節(jié)點指針刪除所述分布式存儲系統(tǒng)中的文件。

優(yōu)選地,所述索引節(jié)點指針為智能指針。

優(yōu)選地,所述刪除模塊具體用于:

智能指針類將一個計數(shù)器與類指向的對象相關(guān)聯(lián),引用計數(shù)跟蹤該類共享同一指針的對象;

創(chuàng)建類的新對象時,初始化指針并將引用計數(shù)置為1,當(dāng)對象作為另一對象的副本而創(chuàng)建時,拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計數(shù);

對一個對象進(jìn)行賦值是,賦值操作符減少左操作數(shù)所指對象的引用計數(shù),并增加右操作數(shù)所指對象的引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除對象;

在調(diào)用析構(gòu)函數(shù)時,構(gòu)造函數(shù)減少引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除基礎(chǔ)對象。

由上述技術(shù)方案可知,本發(fā)明提供了一種文件刪除方法,當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件,然后分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端,然后基于索引節(jié)點指針刪除分布式存儲系統(tǒng)中的文件,能夠有效的對分布式存儲系統(tǒng)中的文件進(jìn)行刪除,能夠有效解決系統(tǒng)空間不釋放的問題。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。

圖1為本發(fā)明公開的一種文件刪除方法實施例1的方法流程圖;

圖2為本發(fā)明公開的一種文件刪除方法實施例2的方法流程圖;

圖3為本發(fā)明公開的一種文件刪除系統(tǒng)實施例1的結(jié)構(gòu)示意圖;

圖4為本發(fā)明公開的一種文件刪除系統(tǒng)實施例2的結(jié)構(gòu)示意圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。

為了更加特定地強調(diào)實施的獨立性,本說明書涉及許多模塊或單元。舉例而言,模塊或單元可由硬件電路實現(xiàn),該硬件電路包括特制vlsi電路或門陣列,比如邏輯芯片、晶體管,或其它組件。模塊或單元也可在可編程的硬設(shè)備中實現(xiàn),比如場效可編程門陣列、可編程陣列邏輯、可編程邏輯設(shè)備等等。

模塊或單元也可在藉由各種形式的處理器所執(zhí)行的軟件中實現(xiàn)。比如說,一可執(zhí)行碼模塊可包括一個或多個實體的或邏輯的計算機指令區(qū)塊,該區(qū)塊可能形成為,比如說,對象、程序或函數(shù)。然而,鑒別模塊或單元的可執(zhí)行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所組成,當(dāng)邏輯上組合在一起時,形成模塊或單元且達(dá)到該模塊或單元所要求的目的。

實際上,可執(zhí)行碼模塊或單元可以是一單一指令或多個指令,甚至可以分布在位于不同的程序的數(shù)個不同的碼區(qū)段,并且橫跨數(shù)個存儲設(shè)備。同樣地,操作數(shù)據(jù)可被辨識及顯示于此模塊或單元中,并且可以以任何合適的形式實施且在任何合適的數(shù)據(jù)結(jié)構(gòu)形式內(nèi)組織。操作數(shù)據(jù)可以集合成單一數(shù)據(jù)集,或可分布在具有不同的存儲設(shè)備的不同的位置,且至少部分地只以電子信號方式存在于一系統(tǒng)或網(wǎng)絡(luò)。

本說明書所提及的“實施例”或類似用語表示與實施例有關(guān)的特性、結(jié)構(gòu)或特征,包括在本發(fā)明的至少一實施例中。因此,本說明書所出現(xiàn)的用語“在一實施例中”、“在實施例中”以及類似用語可能但不必然都指向相同實施例。

再者,本發(fā)明所述特性、結(jié)構(gòu)或特征可以以任何方式結(jié)合在一個或多個實施例中。以下說明將提供許多特定的細(xì)節(jié),比如編程序、軟件模塊、用戶選擇、網(wǎng)絡(luò)交易、數(shù)據(jù)庫查詢、數(shù)據(jù)庫結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等例子,以提供對本發(fā)明實施例的了解。然而相關(guān)領(lǐng)域的普通技術(shù)人員將看出本發(fā)明,即使沒有利用其中一個或多個特定細(xì)節(jié),或利用其它方法、組件、材料等亦可實施。另一方面,為避免混淆本發(fā)明,公知的結(jié)構(gòu)、材料或操作并沒有詳細(xì)描述。

如圖1所示,為本發(fā)明公開的一種文件刪除方法實施例1的流程圖,該方法應(yīng)用于分布式存儲系統(tǒng),本方法包括以下步驟:

s101、將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件;

當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,然后客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件。

s102、分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端;

然后分布式存儲系統(tǒng)給客戶端分配inode指針。

s103、基于索引節(jié)點指針刪除分布式存儲系統(tǒng)中的文件。

然后根據(jù)分配的inode指針對分布式存儲系統(tǒng)中的文件進(jìn)行刪除處理,其中,分配的inode指針為智能指針。智能指針是存儲指向動態(tài)分配對象指針的類,用于生存期控制,能夠確保自動正確的銷毀動態(tài)分配的對象,防止內(nèi)存泄露,它的一種通用實現(xiàn)技術(shù)是使用引用計數(shù)。

綜上所述,在上述實施例中,當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件,然后分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端,然后基于索引節(jié)點指針刪除分布式存儲系統(tǒng)中的文件,能夠有效的對分布式存儲系統(tǒng)中的文件進(jìn)行刪除,能夠有效解決系統(tǒng)空間不釋放的問題。

如圖2所示,為本發(fā)明公開的一種文件刪除方法實施例2的流程圖,該方法應(yīng)用于分布式存儲系統(tǒng),本方法包括以下步驟:

s201、將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件;

當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,然后客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件。

s202、分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端;

然后分布式存儲系統(tǒng)給客戶端分配inode指針。

s203、智能指針類將一個計數(shù)器與類指向的對象相關(guān)聯(lián),引用計數(shù)跟蹤該類共享同一指針的對象;

創(chuàng)建類的新對象時,初始化指針并將引用計數(shù)置為1,當(dāng)對象作為另一對象的副本而創(chuàng)建時,拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計數(shù);

對一個對象進(jìn)行賦值是,賦值操作符減少左操作數(shù)所指對象的引用計數(shù),并增加右操作數(shù)所指對象的引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除對象;

在調(diào)用析構(gòu)函數(shù)時,構(gòu)造函數(shù)減少引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除基礎(chǔ)對象。

智能指針類將一個計數(shù)器與類指向的對象相關(guān)聯(lián),引用計數(shù)跟蹤該類有多少個對象共享同一指針。每次創(chuàng)建類的新對象時,初始化指針并將引用計數(shù)置為1;當(dāng)對象作為另一對象的副本而創(chuàng)建時,拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計數(shù);對一個對象進(jìn)行賦值時,賦值操作符減少左操作數(shù)所指對象的引用計數(shù),如果引用計數(shù)為減至0,則刪除對象,并增加右操作數(shù)所指對象的引用計數(shù);調(diào)用析構(gòu)函數(shù)時,構(gòu)造函數(shù)減少引用計數(shù),如果引用計數(shù)減至0,則刪除基礎(chǔ)對象。

文件系統(tǒng)后端先通過智能指針分配一個全局的inode,當(dāng)客戶端訪問文件系統(tǒng)時,該客戶端獲取該智能指針的引用,即引用計數(shù)自動加1。當(dāng)客戶端自動釋放或者與文件系統(tǒng)的鏈接斷開時,inode的引用自動減1。

通過定義一個全局空間來保存所以inode的狀態(tài)。例如,采用以下的方式:

shared_ptr<inode>factory(targ){

returnmake_shared<inode>(arg);

}

factory是文件系統(tǒng)為所有客戶端分配inode的函數(shù),所有的客戶端都可以共享。

voiduse_inode(targ){

shared_ptr<inode>i=factory(arg);

}

use_inode是文件系統(tǒng)為某個客戶端分配inode的函數(shù),客戶端之間是獨立的,即arg包括客戶端端信息,比如ip、socket等。

綜上所述,本發(fā)明提供的一種文件刪除方法,基于智能指針,可以有效解決空間不釋放的問題。

如圖3所示,為本發(fā)明公開的一種文件刪除系統(tǒng)實施例1的結(jié)構(gòu)示意圖,該系統(tǒng)應(yīng)用于分布式存儲系統(tǒng),本系統(tǒng)包括:

調(diào)用模塊301,用于將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件;

當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,然后客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件。

分配模塊302,用于分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端;

然后分布式存儲系統(tǒng)給客戶端分配inode指針。

刪除模塊303,用于基于索引節(jié)點指針刪除分布式存儲系統(tǒng)中的文件。

然后根據(jù)分配的inode指針對分布式存儲系統(tǒng)中的文件進(jìn)行刪除處理,其中,分配的inode指針為智能指針。智能指針是存儲指向動態(tài)分配對象指針的類,用于生存期控制,能夠確保自動正確的銷毀動態(tài)分配的對象,防止內(nèi)存泄露,它的一種通用實現(xiàn)技術(shù)是使用引用計數(shù)。

綜上所述,在上述實施例中,當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件,然后分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端,然后基于索引節(jié)點指針刪除分布式存儲系統(tǒng)中的文件,能夠有效的對分布式存儲系統(tǒng)中的文件進(jìn)行刪除,能夠有效解決系統(tǒng)空間不釋放的問題。

如圖4所示,為本發(fā)明公開的一種文件刪除系統(tǒng)實施例2的結(jié)構(gòu)示意圖,該系統(tǒng)應(yīng)用于分布式存儲系統(tǒng),本系統(tǒng)包括:

調(diào)用模塊401,用于將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件;

當(dāng)需要對分布式存儲系統(tǒng)中的文件進(jìn)行刪除時,首先將分布式存儲系統(tǒng)作為存儲系統(tǒng)的后端,然后客戶端調(diào)用分布式存儲系統(tǒng)的接口讀寫文件。

分配模塊402,用于分布式存儲系統(tǒng)分配索引節(jié)點指針至客戶端;

然后分布式存儲系統(tǒng)給客戶端分配inode指針。

刪除模塊403,用于智能指針類將一個計數(shù)器與類指向的對象相關(guān)聯(lián),引用計數(shù)跟蹤該類共享同一指針的對象;

創(chuàng)建類的新對象時,初始化指針并將引用計數(shù)置為1,當(dāng)對象作為另一對象的副本而創(chuàng)建時,拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計數(shù);

對一個對象進(jìn)行賦值是,賦值操作符減少左操作數(shù)所指對象的引用計數(shù),并增加右操作數(shù)所指對象的引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除對象;

在調(diào)用析構(gòu)函數(shù)時,構(gòu)造函數(shù)減少引用計數(shù),當(dāng)引用計數(shù)減至0時,刪除基礎(chǔ)對象。

智能指針類將一個計數(shù)器與類指向的對象相關(guān)聯(lián),引用計數(shù)跟蹤該類有多少個對象共享同一指針。每次創(chuàng)建類的新對象時,初始化指針并將引用計數(shù)置為1;當(dāng)對象作為另一對象的副本而創(chuàng)建時,拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計數(shù);對一個對象進(jìn)行賦值時,賦值操作符減少左操作數(shù)所指對象的引用計數(shù),如果引用計數(shù)為減至0,則刪除對象,并增加右操作數(shù)所指對象的引用計數(shù);調(diào)用析構(gòu)函數(shù)時,構(gòu)造函數(shù)減少引用計數(shù),如果引用計數(shù)減至0,則刪除基礎(chǔ)對象。

文件系統(tǒng)后端先通過智能指針分配一個全局的inode,當(dāng)客戶端訪問文件系統(tǒng)時,該客戶端獲取該智能指針的引用,即引用計數(shù)自動加1。當(dāng)客戶端自動釋放或者與文件系統(tǒng)的鏈接斷開時,inode的引用自動減1。

通過定義一個全局空間來保存所以inode的狀態(tài)。例如,采用以下的方式:

shared_ptr<inode>factory(targ){

returnmake_shared<inode>(arg);

}

factory是文件系統(tǒng)為所有客戶端分配inode的函數(shù),所有的客戶端都可以共享。

voiduse_inode(targ){

shared_ptr<inode>i=factory(arg);

}

use_inode是文件系統(tǒng)為某個客戶端分配inode的函數(shù),客戶端之間是獨立的,即arg包括客戶端端信息,比如ip、socket等。

綜上所述,本發(fā)明提供的一種文件刪除系統(tǒng),基于智能指針,可以有效解決空間不釋放的問題。

本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同相似部分互相參見即可。

對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。

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