一種云存儲(chǔ)系統(tǒng)中大文件的處理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及云存儲(chǔ)領(lǐng)域,特別涉及一種云存儲(chǔ)系統(tǒng)中大文件的處理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著技術(shù)的發(fā)展,人們對(duì)云存儲(chǔ)系統(tǒng)中大文件的處理方法越來越關(guān)注。
[0003]目前,Swift對(duì)象存儲(chǔ)系統(tǒng)可以存儲(chǔ)的最大對(duì)象為5GB,超過這個(gè)大小的文件將不能上傳到Swift中,同時(shí)GB級(jí)的大文件上傳和下載比較慢。Swift己有的大文件解決方案:靜態(tài)大對(duì)象(Static Large Objects)存儲(chǔ)方案和動(dòng)態(tài)大對(duì)象(Dynamic Large Objects)存儲(chǔ)方案,都是Swift服務(wù)端的存儲(chǔ)方案,在靈活性、擴(kuò)展性等方面存在一定的不足。
[0004]因此,如何有效的對(duì)云存儲(chǔ)系統(tǒng)中大文件進(jìn)行處理,解決云存儲(chǔ)系統(tǒng)中Switf無法上傳大于5GB的文件的問題是本領(lǐng)域技術(shù)人員目前需要解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)所要解決的技術(shù)問題是提供一種云存儲(chǔ)系統(tǒng)中大文件的處理方法及系統(tǒng),解決了現(xiàn)有技術(shù)中云存儲(chǔ)系統(tǒng)中Switf無法上傳大于5GB的文件的問題。
[0006]其具體方案如下:
[0007]—種云存儲(chǔ)系統(tǒng)中大文件的處理方法,該方法包括:
[0008]確定目標(biāo)文件的大??;
[0009]當(dāng)目標(biāo)文件的大小超過預(yù)設(shè)大小時(shí),對(duì)所述目標(biāo)文件進(jìn)行分割,轉(zhuǎn)換成一組片段對(duì)象和一個(gè)清單對(duì)象;
[0010]將所述一組片段對(duì)象和一個(gè)清單對(duì)象均上傳到云存儲(chǔ)系統(tǒng)中。
[0011]上述的方法,優(yōu)選的,將所述一組片段對(duì)象和一個(gè)清單對(duì)象均上傳到云存儲(chǔ)系統(tǒng)中,包括:
[0012]計(jì)算所述一組片段對(duì)象中每個(gè)片段的MD5校驗(yàn)值;
[0013]異步上傳每個(gè)片段對(duì)象;
[0014]當(dāng)所有片段對(duì)象均上傳完畢時(shí),計(jì)算整個(gè)目標(biāo)文件的MD5校驗(yàn)值;
[0015]上傳所述清單對(duì)象。
[0016]上述的方法,優(yōu)選的,所述上傳所述清單對(duì)象,包括:
[0017]將所述一組片段對(duì)象中的所有信息序列化為JSON格式的字符串,作為所述清單對(duì)象的內(nèi)容;
[0018]計(jì)算所述JSON格式的字符串的MD5校驗(yàn)值;
[0019]上傳所述清單對(duì)象的內(nèi)容。
[0020]上述的方法,優(yōu)選的,還包括:
[0021]從所述云存儲(chǔ)系統(tǒng)中獲取對(duì)象元數(shù)據(jù);
[0022]當(dāng)所述對(duì)象元數(shù)據(jù)為清單對(duì)象元數(shù)據(jù)時(shí),解析JSON格式的片段對(duì)象信息;
[0023]下載所述JSON格式的片段對(duì)象信息中對(duì)應(yīng)的所有片段對(duì)象;
[0024]將下載的所有片段對(duì)象合并成一個(gè)大文件。
[0025]上述的方法,優(yōu)選的,還包括:
[0026]校驗(yàn)磁盤上的文件的MD5校驗(yàn)值與上傳時(shí)記錄的整個(gè)文件的MD5校驗(yàn)值。
[0027]—種云存儲(chǔ)系統(tǒng)中大文件的處理系統(tǒng),該系統(tǒng)包括:
[0028]確定單元,用于確定目標(biāo)文件的大?。?br>[0029]分割單元,用于當(dāng)目標(biāo)文件的大小超過預(yù)設(shè)大小時(shí),對(duì)所述目標(biāo)文件進(jìn)行分割,轉(zhuǎn)換成一組片段對(duì)象和一個(gè)清單對(duì)象;
[0030]上傳單元,用于將所述一組片段對(duì)象和一個(gè)清單對(duì)象均上傳到云存儲(chǔ)系統(tǒng)中。
[0031]上述的系統(tǒng),優(yōu)選的,所述上傳單元包括:
[0032]第一計(jì)算單元,用于計(jì)算所述一組片段對(duì)象中每個(gè)片段的MD5校驗(yàn)值;
[0033]第一上傳子單元,用于異步上傳每個(gè)片段對(duì)象;
[0034]第二計(jì)算單元,用于當(dāng)所有片段對(duì)象均上傳完畢時(shí),計(jì)算整個(gè)目標(biāo)文件的MD5校驗(yàn)值;
[0035]第二上傳子單元,用于上傳所述清單對(duì)象。
[0036]上述的系統(tǒng),優(yōu)選的,所述第二上傳子單元包括:
[0037]序列化單元,用于將所述一組片段對(duì)象中的所有信息序列化為JSON格式的字符串,作為所述清單對(duì)象的內(nèi)容;
[0038]第三計(jì)算單元,用于計(jì)算所述JSON格式的字符串的MD5校驗(yàn)值;
[0039]第三上傳子單元,用于上傳所述清單對(duì)象的內(nèi)容。
[0040]上述的系統(tǒng),優(yōu)選的,還包括:
[0041]獲取單元,用于從所述云存儲(chǔ)系統(tǒng)中獲取對(duì)象元數(shù)據(jù);
[0042]解析單元,用于當(dāng)所述對(duì)象元數(shù)據(jù)為清單對(duì)象元數(shù)據(jù)時(shí),解析JSON格式的片段對(duì)象信息;
[0043]下載單元,用于下載所述JSON格式的片段對(duì)象信息中對(duì)應(yīng)的所有片段對(duì)象;
[0044]合并單元,用于將下載的所有片段對(duì)象合并成一個(gè)大文件。
[0045]上述的系統(tǒng),優(yōu)選的,還包括:
[0046]校驗(yàn)單元,用于校驗(yàn)磁盤上的文件的MD5校驗(yàn)值與上傳時(shí)記錄的整個(gè)文件的MD5校驗(yàn)值。
[0047]本申請(qǐng)?zhí)峁┑囊环N云存儲(chǔ)系統(tǒng)中大文件的處理方法中,確定目標(biāo)文件的大??;當(dāng)目標(biāo)文件的大小超過預(yù)設(shè)大小時(shí),對(duì)所述目標(biāo)文件進(jìn)行分割,轉(zhuǎn)換成一組片段對(duì)象和一個(gè)清單對(duì)象;將所述一組片段對(duì)象和一個(gè)清單對(duì)象均上傳到云存儲(chǔ)系統(tǒng)中。本申請(qǐng)中將大文件分割成一組片段對(duì)象的形式,每個(gè)片段對(duì)象的大小均滿足云存儲(chǔ)系統(tǒng)中對(duì)文件大小的要求,這樣,就可以將超過云存儲(chǔ)系統(tǒng)中預(yù)設(shè)大小的文件上傳到云存儲(chǔ)系統(tǒng)中,所述清單對(duì)象記錄了所有片段對(duì)象的信息,所述一組片段對(duì)象和一個(gè)清單對(duì)象即代表了整個(gè)大文件,解決了現(xiàn)有技術(shù)中云存儲(chǔ)系統(tǒng)中Switf無法上傳大于5GB的文件的問題。
【附圖說明】
[0048]為了更清楚地說明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0049]圖1是本申請(qǐng)的一種云存儲(chǔ)系統(tǒng)中大文件的處理方法實(shí)施例1的流程圖;
[0050]圖2是本申請(qǐng)的一種云存儲(chǔ)系統(tǒng)中大文件的處理方法具體實(shí)現(xiàn)的流程圖;
[0051]圖3是本申請(qǐng)的一種云存儲(chǔ)系統(tǒng)中大文件的處理方法實(shí)施例2的流程圖;
[0052]圖4是本申請(qǐng)的一種云存儲(chǔ)系統(tǒng)中大文件的處理系統(tǒng)實(shí)施例1的結(jié)構(gòu)示意圖;
[0053]圖5是本申請(qǐng)的一種云存儲(chǔ)系統(tǒng)中大文件的處理系統(tǒng)實(shí)施例2的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0054]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0055]參考圖1,示出了本申請(qǐng)一種云存儲(chǔ)系統(tǒng)中大文件的處理方法實(shí)施例1的流程圖,可以包括以下步驟:
[0056]步驟SlOl:確定目標(biāo)文件的大小。
[0057]本申請(qǐng)中,在將目標(biāo)文件上傳到云存儲(chǔ)系統(tǒng)中之前,需要確定文件的大小,當(dāng)文件屬于小文件范疇時(shí),不需要對(duì)文件進(jìn)行分割等處理,而是直接把文件上傳到云存儲(chǔ)系統(tǒng)即可,在上傳之前,還需要計(jì)算文件的MD5校驗(yàn)值;當(dāng)文件屬于大文件的范疇時(shí),按照后續(xù)大文件的處理方法對(duì)文件進(jìn)行處理。
[0058]步驟S102:當(dāng)目標(biāo)文件的大小超過預(yù)設(shè)大小時(shí),對(duì)所述目標(biāo)文件進(jìn)行分割,轉(zhuǎn)換成一組片段對(duì)象和一個(gè)清單對(duì)象。
[0059]片段對(duì)象:把一個(gè)大文件拆分成小的片段,分別作為一個(gè)單獨(dú)的對(duì)象上傳這些片段,這些對(duì)象稱為片段對(duì)象。
[0060]在具體的實(shí)現(xiàn)中,并不一定要將大文件拆分成小文件再上傳到云存儲(chǔ)系統(tǒng)中,而是通過直接讀取大文件指定字節(jié)區(qū)間的數(shù)據(jù)。
[0061]清單對(duì)象:清單對(duì)象的功能是記錄構(gòu)成一個(gè)大文件的所有片段對(duì)象的信息,包括片段對(duì)象所在的容器名稱、片段對(duì)象的名字、片段對(duì)象在大文件中的偏移量(Offset),片段對(duì)象的二進(jìn)制數(shù)據(jù)長(zhǎng)度。
[0062]當(dāng)文件的大小超過預(yù)設(shè)大小時(shí),則目標(biāo)文件為大文件,不能直接將這個(gè)文件上傳到云存儲(chǔ)系統(tǒng)中,此時(shí),需要對(duì)所述文件進(jìn)行處理。
[0063]根據(jù)片段對(duì)象和清單對(duì)象兩種對(duì)象信息,可以把一個(gè)大文件拆分為一組片段,并且可以把一組片段重新合成為原文件。
[0064]片段對(duì)象與一般的對(duì)象沒有任何區(qū)別,但是清單對(duì)象很特別,它代表了磁盤中的大文件。當(dāng)下載清單對(duì)象時(shí),需要把所有的片段對(duì)象連接成一個(gè)整體返回給用戶;當(dāng)查詢清單對(duì)象的信息時(shí),清單對(duì)象的元數(shù)據(jù)代表了大文件的相關(guān)屬性。
[0065]步驟S103:將所述一組片段對(duì)象和一個(gè)清單對(duì)象均上傳到云存儲(chǔ)系統(tǒng)中。
[0066]—個(gè)大文件在云存儲(chǔ)端由唯一的清單對(duì)象和一組片段對(duì)象構(gòu)成。
[0067]文件往往有一些屬性需要存儲(chǔ)在云存儲(chǔ)端,由于清單對(duì)象與原文件是一一對(duì)應(yīng)關(guān)系,因此可以用清單對(duì)象的元數(shù)據(jù)代表原文件的元數(shù)據(jù),即原文件的相關(guān)屬性。
[0068]本申請(qǐng)?zhí)峁┑囊环N云存儲(chǔ)系統(tǒng)中大文件的處理方法中,將大文件分割成一組片段對(duì)象的形式,每個(gè)片段對(duì)象的大小均滿足云存儲(chǔ)系統(tǒng)中對(duì)文件大小的要求,這樣,就可以將超過云存儲(chǔ)系統(tǒng)中預(yù)設(shè)大小的文件上傳到云存儲(chǔ)系統(tǒng)中,所述清單對(duì)象記錄了所有片段對(duì)象的信息,所述一組片段對(duì)象和一個(gè)清單對(duì)象即代表了整個(gè)大文件,解決了現(xiàn)有技術(shù)中云存儲(chǔ)系統(tǒng)中Switf無法上傳大于5GB的文件的問題。
[0069]參考圖2,示出了本申請(qǐng)一種云存儲(chǔ)系統(tǒng)中大文件的處理方法具體實(shí)現(xiàn)的流程圖。
[0070]在具體實(shí)現(xiàn)過程中,所述將所述一組片段對(duì)象和一個(gè)清單對(duì)象均上傳到云存儲(chǔ)系統(tǒng)中,包括:
[0071]計(jì)算所述一組片段對(duì)象中每個(gè)片段的MD5校驗(yàn)值。
[0072]異步上傳每個(gè)片段對(duì)象。
[0073]當(dāng)所有片段對(duì)象均上傳完畢時(shí),計(jì)算整個(gè)目標(biāo)文件的MD5校驗(yàn)值;
[0074]上傳所述清單對(duì)象。
[0075]所述上傳所述清單對(duì)象,包括:
[0076]將所述一組片段對(duì)象中的所有信息序列化為JSON格式的字符串,作為所述清單對(duì)象的內(nèi)容。
[0077]為了便于組織信息,把所有的片段對(duì)象信息序列化為JSON格式的字符串,作為清單對(duì)象的內(nèi)容。所以清單對(duì)象的內(nèi)容就是JSON格式的所有片段對(duì)象信息的列表。根據(jù)容器名稱和片段對(duì)象的名稱,可以定位云存儲(chǔ)端片段對(duì)象的位置,根據(jù)偏移量和片段大小,可以定位片段對(duì)象在原文件中的位置,所以JSON格式的片段信息列表中,片段信息不需要按照它們?cè)谠募械捻樞蚺帕小?br>[0078]計(jì)算所述JSON格式的字符串的MD5校驗(yàn)值。
[0079]上傳所述清單對(duì)象的內(nèi)容。
[0080]為了便于進(jìn)行文件的校驗(yàn)和下載,清單對(duì)象必須具備以下兩個(gè)自定義:
[0081]元數(shù)據(jù)。
[0082]Object-Meta-Echk:原始文件的MD5校驗(yàn)值,用于下載文件后對(duì)下載到磁盤上的文件進(jìn)行MD5校驗(yàn)。
[0083]Object-Meta-Length:原始文件的總長(zhǎng)度。
[0084]對(duì)象存儲(chǔ)服務(wù)Swift定義了對(duì)象的很多固有元數(shù)據(jù),除此之外,所有對(duì)象(包括片段對(duì)象和清單對(duì)象)必須具備以下兩個(gè)元數(shù)據(jù):
[0085]Content