本申請涉及固態(tài)硬盤管理技術(shù)領(lǐng)域,特別涉及一種固態(tài)硬盤創(chuàng)建多namespace的方法及系統(tǒng)。
背景技術(shù):
隨著數(shù)據(jù)存儲技術(shù)的不斷提高,讀寫速度更快的固態(tài)硬盤逐漸進(jìn)入了我們的視野,顧名思義,固態(tài)硬盤是用固態(tài)電子存儲芯片陣列而制成的硬盤,由控制單元和存儲單元,即flash芯片和dram芯片組成。固態(tài)硬盤摒棄了傳統(tǒng)機(jī)械結(jié)構(gòu),采用全芯片存儲,能夠在惡劣的環(huán)境下工作,且要比傳統(tǒng)的機(jī)械存儲具備更高的防碰撞性,以及更高穩(wěn)定性和可靠性。同時,在讀寫方面也要比傳統(tǒng)的機(jī)械式存儲快很多,原因是固態(tài)硬盤(ssd)完全半導(dǎo)體化,不存在數(shù)據(jù)的查找、尋道時間、讀取延時等問題,所以數(shù)據(jù)讀取速度快、反映時間短。
大容量的固態(tài)硬盤通常被要求讀寫速度高的企業(yè)大規(guī)模使用,在使用過程中,常常會需要把不同類型的數(shù)據(jù)放在相對獨(dú)立的空間內(nèi),即通過在固態(tài)硬盤中創(chuàng)建namespace(命名空間),或者說專屬分區(qū)來相對提高數(shù)據(jù)的安全性和獨(dú)立性,在機(jī)械硬盤中可以依靠分區(qū)來解決這個問題,但是固態(tài)硬盤的全半導(dǎo)體化的存儲特性決定了對其進(jìn)行傳統(tǒng)方式的分區(qū)是沒有意義的,即,只會存在一個物理上的固態(tài)硬盤就是一個完整分區(qū)的現(xiàn)象,不利于對文件的管理,且在寫入和擦除的過程中也會存在諸多不便。
所以,如何在同一固態(tài)硬盤的完整存儲空間內(nèi),創(chuàng)建多個相對獨(dú)立的存儲空間,提供一種數(shù)據(jù)安全性和獨(dú)立性高、更便于分類存儲和管理的固態(tài)硬盤創(chuàng)建多namespace的機(jī)制是本領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的是提供一種固態(tài)硬盤創(chuàng)建多namespace的方法及系統(tǒng),能夠在同一固態(tài)硬盤的完整存儲空間內(nèi),創(chuàng)建多個相對獨(dú)立的存儲空間來滿足用戶日益多樣化數(shù)據(jù)的存儲需求,更便于分類存儲和管理、提高數(shù)據(jù)的安全性和獨(dú)立性。
為解決上述技術(shù)問題,本申請?zhí)峁┮环N固態(tài)硬盤創(chuàng)建多namespace的方法,該方法包括:
按預(yù)設(shè)數(shù)量對固態(tài)硬盤的存儲空間進(jìn)行等分,得到最小存儲單元;
依次對所述最小存儲單元按地址進(jìn)行編號,得到與每一個所述最小存儲單元對應(yīng)的邏輯地址;
根據(jù)輸入的信息確定創(chuàng)建namespace需要所述最小存儲單元的請求數(shù)量;
根據(jù)所述邏輯地址判斷所述最小存儲單元的剩余數(shù)量是否大于所述請求數(shù)量;
若所述剩余數(shù)量大于所述請求數(shù)量,則按預(yù)設(shè)規(guī)則分配并生成所述namespace。
可選的,根據(jù)輸入的信息確定創(chuàng)建namespace需要所述最小存儲單元的請求數(shù)量,包括:
獲取用戶通過預(yù)設(shè)路徑輸入的創(chuàng)建信息;
提取所述創(chuàng)建信息中所述namespace的容量數(shù)據(jù);
根據(jù)所述最小存儲單元的容量大小以及所述容量數(shù)據(jù)計算創(chuàng)建所述namespace需要的所述最小存儲單元的請求數(shù)量。
可選的,根據(jù)所述邏輯地址判斷所述最小存儲單元的剩余數(shù)量是否足夠,包括:
利用所述邏輯地址查詢得到對應(yīng)的所述最小存儲單元;
判斷所述最小存儲單元否已被占用,得到所述最小存儲單元的剩余數(shù)量;
將所述請求數(shù)量與所述剩余數(shù)量進(jìn)行對比,得到比較結(jié)果,并根據(jù)所述比較結(jié)果判斷所述剩余數(shù)量是否大于所述請求數(shù)量。
可選的,按預(yù)設(shè)規(guī)則分配并生成所述namespace,包括:
按照所述邏輯地址的先后順序進(jìn)行分配并生成所述namespace。
可選的,還包括:
當(dāng)創(chuàng)建的所述namespace廢棄時,將廢棄的所述namespace占用的所述最小存儲空間做回收處理。
本申請還提供了一種固態(tài)硬盤創(chuàng)建多namespace的系統(tǒng),該系統(tǒng)包括:
等分單元,用于按預(yù)設(shè)數(shù)量對固態(tài)硬盤的存儲空間進(jìn)行等分,得到最小存儲單元;
編號單元,用于依次對所述最小存儲單元按地址進(jìn)行編號,得到與每一個所述最小存儲單元對應(yīng)的邏輯地址;
請求數(shù)量確定單元,用于根據(jù)輸入的信息確定創(chuàng)建namespace需要所述最小存儲單元的請求數(shù)量;
判斷單元,用于根據(jù)所述邏輯地址判斷所述最小存儲單元的剩余數(shù)量是否大于所述請求數(shù)量;
分配單元,用于若所述剩余數(shù)量大于所述請求數(shù)量,則按預(yù)設(shè)規(guī)則分配并生成所述namespace。
可選的,所述請求數(shù)量確定單元包括:
創(chuàng)建信息獲取子單元,用于獲取用戶通過預(yù)設(shè)路徑輸入的創(chuàng)建信息;
容量數(shù)據(jù)提取子單元,用于提取所述創(chuàng)建信息中所述namespace的容量數(shù)據(jù);
計算請求數(shù)量子單元,用于根據(jù)所述最小存儲單元的容量大小以及所述容量數(shù)據(jù)計算創(chuàng)建所述namespace需要的所述最小存儲單元的請求數(shù)量。
可選的,所述判斷單元包括:
查詢子單元,用于利用所述邏輯地址查詢得到對應(yīng)的所述最小存儲單元;
剩余數(shù)量獲取子單元,用于判斷所述最小存儲單元否已被占用,得到所述最小存儲單元的剩余數(shù)量;
對比子單元,用于將所述請求數(shù)量與所述剩余數(shù)量進(jìn)行對比,得到比較結(jié)果,并根據(jù)所述比較結(jié)果判斷所述剩余數(shù)量是否大于所述請求數(shù)量。
可選的,所述分配單元包括:
先后順序分配子單元,用于按照所述邏輯地址的先后順序進(jìn)行分配并生成所述namespace。
可選的,還包括:
管理單元,用于當(dāng)創(chuàng)建的所述namespace廢棄時,將廢棄的所述namespace占用的所述最小存儲空間做回收處理。
本申請所提供的一種固態(tài)硬盤創(chuàng)建多namespace的方法,通過按預(yù)設(shè)數(shù)量對固態(tài)硬盤的存儲空間進(jìn)行等分,得到最小存儲單元;依次對所述最小存儲單元按地址進(jìn)行編號,得到與每一個所述最小存儲單元對應(yīng)的邏輯地址;根據(jù)輸入的信息確定創(chuàng)建namespace需要所述最小存儲單元的請求數(shù)量;根據(jù)所述邏輯地址判斷所述最小存儲單元的剩余數(shù)量是否大于所述請求數(shù)量;若所述剩余數(shù)量大于所述請求數(shù)量,則按預(yù)設(shè)規(guī)則分配并生成所述namespace。
顯然,本申請所提供的技術(shù)方案,首先通過對完整存儲空間進(jìn)行等分,并按照創(chuàng)建信息來計算并分配等分得到的最小存儲單元,最終得到不同容量大小的namespace。能夠在同一固態(tài)硬盤的完整存儲空間內(nèi),創(chuàng)建多個相對獨(dú)立的存儲空間來滿足用戶日益多樣化數(shù)據(jù)的存儲需求,更便于分類存儲和管理、提高數(shù)據(jù)的安全性和獨(dú)立性。本申請同時還提供了一種固態(tài)硬盤創(chuàng)建多namespace的系統(tǒng),具有上述有益效果,在此不再贅述。
附圖說明
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實(shí)施例所提供的一種固態(tài)硬盤創(chuàng)建多namespace的方法的流程圖;
圖2為本申請實(shí)施例所提供的另一種固態(tài)硬盤創(chuàng)建多namespace的方法的流程圖;
圖3為本申請實(shí)施例所提供的又一種固態(tài)硬盤創(chuàng)建多namespace的方法的流程圖;
圖4為本申請實(shí)施例所提供的一種固態(tài)硬盤創(chuàng)建多namespace的系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
本申請的核心是提供一種固態(tài)硬盤創(chuàng)建多namespace的方法及系統(tǒng),能夠在同一固態(tài)硬盤的完整存儲空間內(nèi),創(chuàng)建多個相對獨(dú)立的存儲空間來滿足用戶日益多樣化數(shù)據(jù)的存儲需求,更便于分類存儲和管理、提高數(shù)據(jù)的安全性和獨(dú)立性。
為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本申請保護(hù)的范圍。
以下結(jié)合圖1,圖1為本申請實(shí)施例所提供的一種固態(tài)硬盤創(chuàng)建多namespace的方法的流程圖。
其具體包括以下步驟:
s101:按預(yù)設(shè)數(shù)量對固態(tài)硬盤的存儲空間進(jìn)行等分,得到最小存儲單元;
本步驟旨在將用來存儲數(shù)據(jù)的固態(tài)硬盤根據(jù)存儲數(shù)據(jù)的特點(diǎn)做最小存儲單元的劃分,且是等分的進(jìn)行劃分。例如,一個總存儲容量為100g的固態(tài)硬盤若是用來存儲體積較小但數(shù)量較多的數(shù)據(jù)文件的,則可以根據(jù)該數(shù)據(jù)文件的平均大小設(shè)置合適的最小存儲單元的大小,因?yàn)間b和mb以及kb之間每層的換算倍數(shù)都是1024。例如,該數(shù)據(jù)文件的平均大小都在450k左右,且不超過512k,那么就可以將該最小存儲單元的大小設(shè)為512k,以便于對文件的寫入和減少每個最小存儲單元中剩余空間所占比例,那么在100g的固態(tài)硬盤中,等分的預(yù)設(shè)數(shù)量就是100*1024*2=204800個,即根據(jù)存儲文件的平均大小將該100g的存儲空間劃分為204800個最小存儲單元,每個存儲單元的大小為512k。
當(dāng)然,具體怎樣對一個固態(tài)硬盤的完整存儲空間進(jìn)行劃分的方式多種多樣,最簡單的可分類為兩種,即串行劃分或者并行劃分,串行的劃分方式即一個個的進(jìn)行劃分,劃分完一個再劃分下一個;并行的劃分方式即同時完成對所有數(shù)量最小存儲單元的劃分。這兩種方式各有各的優(yōu)點(diǎn)和適合的使用場景。
比如,當(dāng)數(shù)據(jù)文件的平均大小較大,即劃分的最小存儲單元的大小也較大,相對應(yīng)的最小存儲單元的數(shù)量就會較少,在劃分?jǐn)?shù)量較少的情況下就可以采用串行的劃分方式,因?yàn)閯澐诌^程所需要的時間與劃分出的大小大致成正比關(guān)系,采用并行的劃分方式消耗的時間并不會比串行的少,且如果一旦出現(xiàn)異常,也只會損壞一個存儲單元,不會像并行的劃分方式可能會造成整體報廢;當(dāng)數(shù)據(jù)文件的平均大小較小,即劃分的最小存儲單元的大小也較小,相對應(yīng)的最小存儲單元的數(shù)量就會較多,在劃分?jǐn)?shù)量較多的情況下就可以采用并行的劃分方式,可以以更高的效率完成劃分,考慮到安全性和異常狀況,可以分批次進(jìn)行并行劃分,無需一次完成全部數(shù)量的劃分。
上面提到的只是兩種最簡單的劃分方式,還存在很多其它的劃分方式,基于各種原則和方法,可以達(dá)到某些特殊的效果,此處并不作具體的限定,應(yīng)視實(shí)際情況結(jié)合各種影響因素做出最符合自身利益的選擇。
s102:依次對最小存儲單元按地址進(jìn)行編號,得到與每一個最小存儲單元對應(yīng)的邏輯地址;
在s101的基礎(chǔ)上,得到了總數(shù)為204800的最小存儲單元,本步驟需要對這204800個最小存儲單元進(jìn)行編號,也可以說是為每個最小存儲單元分配其專屬的邏輯地址,使得每個最小存儲單元都對應(yīng)著自己的一個邏輯地址,來方便進(jìn)行查找和遍歷。
當(dāng)然,編號或者分配邏輯地址的方式多種多樣,例如,可以根據(jù)劃分最小存儲單元時的劃分方式來按照先后順序的劃分;也可以根據(jù)組成完整存儲空間的多個閃存的不同按不同閃存進(jìn)行編號或分配與不同閃存有關(guān)的邏輯地址,使其同時攜帶有各個閃存的特征信息;還可以根據(jù)管理員的喜好或個人習(xí)慣進(jìn)行有利于自身利益的編號和分配邏輯地址,此處并不做具體限定,應(yīng)視具體固態(tài)硬盤的型號、生產(chǎn)廠家、固件版本號以及使用用途來進(jìn)行差異化的選擇。
s103:根據(jù)輸入的信息確定創(chuàng)建namespace需要最小存儲單元的請求數(shù)量;
在s102的基礎(chǔ)上,本步驟旨在根據(jù)外部輸入的信息來確定用戶想要在固態(tài)硬盤建立分區(qū)的大小,并根據(jù)上一步驟中劃分完成的最小存儲單元的大小來計算組成該分區(qū)所占大小具體需要多少個最小存儲單元。
還拿之前舉的例子來說,一個100g的固態(tài)硬盤,被劃分為204800個最小存儲單元,用來存儲平均大小在450k且不超過512k的數(shù)據(jù)文件,而此時的實(shí)際情景是該固態(tài)硬盤設(shè)置在公用的機(jī)房的一臺pc上,想要分隔開不同使用者使用過程所占用的空間,假定會使用這臺pc的使用者有5個,每個人在第一次使用時從完整的100g存儲空間中,按照namespace的不同都劃分出20g的專屬存儲空間,此時就需要計算要形成這20g的存儲空間需要由多少個最小存儲單元來組成,根據(jù)簡單的數(shù)學(xué)計算,可以很快得出需要20g/512k=40960個最小存儲單元。
當(dāng)然上面舉的例子只是一個很簡單和最容易想到的計算過程,在實(shí)際的計算過程中可能會存在各種各樣的制約因素,例如,受到每個閃存大小的限制、分配大小不正好足夠等等制約因素,相應(yīng)的也會存在不同的解決方案,此處并不做具體限定,應(yīng)視具體固態(tài)硬盤的型號、生產(chǎn)廠家、固件版本號以及使用用途做出最符合使用者自身利益的選擇。
s104:根據(jù)邏輯地址判斷最小存儲單元的剩余數(shù)量是否大于請求數(shù)量;
在s103的基礎(chǔ)上,已經(jīng)得到了根據(jù)使用者的需求形成不同分區(qū)所需要的最小存儲單元的數(shù)量,本步驟旨在根據(jù)每個最小存儲單元所對應(yīng)的邏輯地址來判斷是否還存在足夠數(shù)量的最小存儲單元,以分配給該分區(qū)形成符合需求的個人專屬分區(qū)。舉一個簡單的例子,可以用最小存儲單元的全部數(shù)量減去已經(jīng)創(chuàng)建的namespace所占用的最小存儲單元數(shù)量,得到最小存儲單元的剩余數(shù)量,進(jìn)而再判斷剩余數(shù)量是否大于新的請求數(shù)量。
換句話說,就是根據(jù)邏輯地址來了判斷是否還存在足夠的最小存儲單元來滿足使用者的分區(qū)需求。依然使用上面的例子,100g的完整存儲空間,第一個使用者需要劃分出20g的專屬空間,此時當(dāng)然是能夠滿足的,接下來的第二個、第三個以及第四個都是如此,截止當(dāng)前,劃分出去了80g的存儲空間,還剩余20g的存儲空間,若第五個使用者想要劃分出小于20g的專屬空間,當(dāng)然可以滿足,但是若第五個使用者想要劃分出超過20g的專屬空間,肯定會因?yàn)槭S嗟淖钚〈鎯卧臄?shù)量不足夠而無法完成劃分過程。
進(jìn)一步的,在經(jīng)過判斷沒有足夠數(shù)量的最小存儲單元來形成使用者想要劃分出的專屬空間時,可以通過各種路徑向當(dāng)前使用者發(fā)出提醒,并將剩余數(shù)量的最小存儲單元所能形成的對應(yīng)專屬空間的大小一并反饋給當(dāng)前使用者,以使當(dāng)前使用者根據(jù)該反饋信息進(jìn)行合適大小的專屬空間的劃分。
當(dāng)然,本步驟旨在根據(jù)一系列過程來最終判斷剩余數(shù)量是否足夠,其實(shí)現(xiàn)這一目的的方式多種多樣,此處并不做具體限定,可以根據(jù)具體固態(tài)硬盤的型號、生產(chǎn)廠家、固件版本號以及使用用途做出最適合使用者的選擇,在后續(xù)的實(shí)施例中也會進(jìn)行詳細(xì)的介紹。
s105:按預(yù)設(shè)規(guī)則分配并生成namespace。
在s104的基礎(chǔ)上,本步驟旨在根據(jù)預(yù)設(shè)的分配規(guī)則將剩余數(shù)量還足夠的最小存儲單元生成用于所要的分區(qū)。其中,該預(yù)設(shè)規(guī)則的表現(xiàn)形式多種多樣,例如,可以與s101中劃分的方式來進(jìn)行分配;也可以結(jié)合為每個最小存儲單元的編號或者邏輯地址按照一個順序進(jìn)行分配,還存在其它的分配方式,此處并不做具體限定,可以根據(jù)具體固態(tài)硬盤的型號、生產(chǎn)廠家、固件版本號以及使用用途做出最適合使用者的選擇。
在后續(xù)的實(shí)施例中也會進(jìn)行詳細(xì)的介紹。
進(jìn)一步的,在使用者不再需要之前創(chuàng)建的專屬分區(qū)后,還可以對之前創(chuàng)建的專屬分區(qū)做廢棄處理,將廢棄的專屬分區(qū)所占用的部分?jǐn)?shù)量的最小存儲單元釋放出來,以供再次創(chuàng)建專屬分區(qū)時使用。
基于上述技術(shù)方案,本申請實(shí)施例提供的一種固態(tài)硬盤創(chuàng)建多namespace的方法及系統(tǒng),首先將完整的存儲空間根據(jù)所存儲數(shù)據(jù)文件的平均大小進(jìn)行預(yù)設(shè)數(shù)量的等分,再結(jié)合用戶所需要的分區(qū)大小來計算實(shí)際需要的最小存儲單元的數(shù)量,最后根據(jù)剩余數(shù)量來判斷是否能形成所需大小的分區(qū)。能夠在同一固態(tài)硬盤的完整存儲空間內(nèi),創(chuàng)建多個相對獨(dú)立的存儲空間來滿足用戶日益多樣化數(shù)據(jù)的存儲需求,更便于分類存儲和管理、提高數(shù)據(jù)的安全性和獨(dú)立性。
以下結(jié)合圖2,圖2為本申請實(shí)施例所提供的另一種固態(tài)硬盤創(chuàng)建多namespace的方法的流程圖。
本實(shí)施例是針對上一實(shí)施例中s103中如何根據(jù)輸入的信息確定創(chuàng)建namespace需要最小存儲單元的數(shù)量所做出的一個具體限定,其它步驟與上一實(shí)施例大體相同,相同部分可參見上一實(shí)施例相關(guān)部分,在此不再贅述。
其具體包括以下步驟:
s201:獲取用戶通過預(yù)設(shè)路徑輸入的創(chuàng)建信息;
本步驟旨在獲得使用者輸入的創(chuàng)建專屬分區(qū)的創(chuàng)建信息,而使用者通過何種路徑輸入創(chuàng)建信息方式多種多樣,例如,通過鍵盤或鼠標(biāo)點(diǎn)選輸入固定的參考值;也可以支持自定義專屬分區(qū)大?。贿€可以通過該固態(tài)硬盤專屬配置文件等各種方式實(shí)現(xiàn)創(chuàng)建信息的輸入,此處并不做具體限定。
當(dāng)然,想要成功實(shí)現(xiàn)創(chuàng)建專屬分區(qū),則該創(chuàng)建信息至少要包含分區(qū)的容量大小,也可以包含其它的信息,例如,分區(qū)名稱、分區(qū)存儲格式、是否加密等等額外的信息,此處并不做具體限定,應(yīng)根據(jù)具體固態(tài)硬盤的型號、生產(chǎn)廠家、固件版本號以及使用用途做出最適合使用者的選擇。
s202:提取創(chuàng)建信息中namespace的容量數(shù)據(jù);
本步驟旨在從s201中輸入的創(chuàng)建信息中提取出其中攜帶的創(chuàng)建專屬分區(qū)的容量大小數(shù)據(jù),以便于后續(xù)步驟結(jié)合等分出的最小存儲單元的大小來計算所需數(shù)量。
s203:根據(jù)最小存儲單元的容量大小以及容量數(shù)據(jù)計算創(chuàng)建namespace需要的最小存儲單元的請求數(shù)量。
本步驟旨在根據(jù)最小存儲單元的容量大小以及提取出的專屬分區(qū)的容量大小計算創(chuàng)建這個專屬分區(qū)需要的最小存儲單元的數(shù)量。此處可以參見s103中的一個簡單算法和相關(guān)描述,在此不再贅述。
以下結(jié)合圖3,圖3為本申請實(shí)施例所提供的又一種固態(tài)硬盤創(chuàng)建多namespace的方法的流程圖。
本實(shí)施例是針對實(shí)施一例s104中具體如何根據(jù)邏輯地址判斷剩余數(shù)量是否足夠所做出的一個限定,其它步驟與其它實(shí)施例大體相同,相同部分可參見其它實(shí)施例中相關(guān)部分,在此不再贅述。
其具體包括以下步驟:
s301:利用邏輯地址查詢得到對應(yīng)的最小存儲單元;
利用s102中為每個最小存儲單元分配的一個唯一對應(yīng)的邏輯地址來找到該最小存儲單元。
s302:判斷最小存儲單元是否已被占用;
可以通過多種方式來判斷找到的這個最小存儲單元是否已經(jīng)被占用、已經(jīng)寫入了數(shù)據(jù),進(jìn)一步的,如果發(fā)現(xiàn)這個最小存儲單元已經(jīng)被占用、已經(jīng)被寫入了數(shù)據(jù),可以將該最小存儲單元附加已寫入數(shù)據(jù)的標(biāo)志,更進(jìn)一步的,還可以根據(jù)寫入數(shù)據(jù)占該最小存儲單元總大小的比例,設(shè)置分級標(biāo)志,以便在固態(tài)硬盤存儲空間告急時整合數(shù)據(jù)。
s303:得到最小存儲單元的剩余數(shù)量;
基于s302的判斷結(jié)果,本步驟旨在得到最小存儲單元的剩余數(shù)量,怎樣根據(jù)判斷結(jié)果得到剩余數(shù)量方式多種多樣,可以通過一個最簡單的方式來描述,例如,在發(fā)現(xiàn)這個最小存儲單元已經(jīng)被占用,則在計算剩余數(shù)量的計數(shù)器記一個“0”,若發(fā)現(xiàn)這個最小存儲單元未被占用,則在計算剩余數(shù)量的計數(shù)器記一個“1”,在完成對所有最小存儲單元的判斷后,就可以得到未被占用的最小存儲單元的剩余數(shù)量。
s304:將請求數(shù)量與剩余數(shù)量進(jìn)行對比,得到比較結(jié)果;
在s303的基礎(chǔ)上,本步驟旨在將計算得到的請求數(shù)量和判斷得到的剩余數(shù)量進(jìn)行對比,得到比較結(jié)果。
s305:判斷剩余數(shù)量是否大于請求數(shù)量;
s306:按照邏輯地址的先后順序進(jìn)行分配并生成namespace。
本步驟基于s305的判斷結(jié)果為剩余數(shù)量大于請求數(shù)量的情況,此時按照邏輯地址的先后順序進(jìn)行分配并生成相應(yīng)的專屬分區(qū)。
進(jìn)一步的,本申請實(shí)施例通過在每次得到請求數(shù)量后,都將所有剩余的最小存儲單元的數(shù)量進(jìn)行使用是否占用的判斷,來得到剩余數(shù)量與請求數(shù)量進(jìn)行對比,還可以在已經(jīng)知道請求數(shù)量的前提下,為判斷設(shè)限,即只需判斷足夠請求數(shù)量的最小存儲單元剩余下來即可,不必要每次都判斷全部的剩余數(shù)量,可以有效節(jié)約判斷時間。
更進(jìn)一步的,設(shè)限時可以留有一部分富余,即為異常狀態(tài)或者存儲分區(qū)命名信息等額外信息留出空間。當(dāng)然,這種方式無法在每次創(chuàng)建請求時得到全部的剩余數(shù)量信息,此處并不做具體限定,應(yīng)根據(jù)具體固態(tài)硬盤的型號、生產(chǎn)廠家、固件版本號以及使用用途做出最適合使用者的選擇。
基于上述技術(shù)方案,本申請實(shí)施例提供的一種固態(tài)硬盤創(chuàng)建多namespace的方法及系統(tǒng),首先將完整的存儲空間根據(jù)所存儲數(shù)據(jù)文件的平均大小進(jìn)行預(yù)設(shè)數(shù)量的等分,再結(jié)合用戶所需要的分區(qū)大小來計算實(shí)際需要的最小存儲單元的數(shù)量,最后根據(jù)剩余數(shù)量來判斷是否能形成所需大小的分區(qū)。能夠在同一固態(tài)硬盤的完整存儲空間內(nèi),創(chuàng)建多個相對獨(dú)立的存儲空間來滿足用戶日益多樣化數(shù)據(jù)的存儲需求,更便于分類存儲和管理、提高數(shù)據(jù)的安全性和獨(dú)立性。
因?yàn)榍闆r復(fù)雜,無法一一列舉進(jìn)行闡述,本領(lǐng)域技術(shù)人員應(yīng)能意識到更具本申請?zhí)峁┑幕痉椒ㄔ斫Y(jié)合實(shí)際情況可以存在很多的例子,在不付出足夠的創(chuàng)造性勞動下,應(yīng)均在本申請的保護(hù)范圍內(nèi)。
下面請參見圖4,圖4為本申請實(shí)施例所提供的一種固態(tài)硬盤創(chuàng)建多namespace的系統(tǒng)的結(jié)構(gòu)框圖。
該系統(tǒng)可以包括:
等分單元100,用于按預(yù)設(shè)數(shù)量對固態(tài)硬盤的存儲空間進(jìn)行等分,得到最小存儲單元;
編號單元200,用于依次對最小存儲單元按地址進(jìn)行編號,得到與每一個最小存儲單元對應(yīng)的邏輯地址;
請求數(shù)量確定單元300,用于根據(jù)輸入的信息確定創(chuàng)建namespace需要最小存儲單元的請求數(shù)量;
判斷單元400,用于根據(jù)邏輯地址判斷最小存儲單元的剩余數(shù)量是否大于請求數(shù)量;
分配單元500,用于若剩余數(shù)量大于請求數(shù)量,則按預(yù)設(shè)規(guī)則分配并生成namespace。
其中,該請求數(shù)量確定單元300包括:
創(chuàng)建信息獲取子單元,用于獲取用戶通過預(yù)設(shè)路徑輸入的創(chuàng)建信息;
容量數(shù)據(jù)提取子單元,用于提取創(chuàng)建信息中namespace的容量數(shù)據(jù);
計算請求數(shù)量子單元,用于根據(jù)最小存儲單元的容量大小以及容量數(shù)據(jù)計算創(chuàng)建namespace需要的最小存儲單元的請求數(shù)量。
其中,該判斷單元400包括:
查詢子單元,用于利用邏輯地址查詢得到對應(yīng)的最小存儲單元;
剩余數(shù)量獲取子單元,用于判斷最小存儲單元否已被占用,得到最小存儲單元的剩余數(shù)量;
對比子單元,用于將請求數(shù)量與剩余數(shù)量進(jìn)行對比,得到比較結(jié)果,并根據(jù)比較結(jié)果判斷剩余數(shù)量是否大于請求數(shù)量。
其中,該分配單元500包括:
先后順序分配子單元,用于按照邏輯地址的先后順序進(jìn)行分配并生成namespace。
進(jìn)一步的,該系統(tǒng)還包括:
管理單元,用于當(dāng)創(chuàng)建的namespace廢棄時,將廢棄的namespace占用的最小存儲空間做回收處理。
本實(shí)施例通過等分固態(tài)硬盤的完整存儲空間,可以盡量減少最小存儲單元碎片化的問題,例如,將完整的存儲空間分為1000個最小存儲單元,一個專屬分區(qū)由若干個這樣的最小存儲單元組成,且每個最小存儲單元可以不連續(xù),而用戶創(chuàng)建的專屬分區(qū)的最小空間同等于最小存儲單元的大小,即,即使用戶想要創(chuàng)建一個小于最小存儲單元大小的專屬分區(qū),同樣會為其分配一個最小存儲單元,來方便管理。其中,分出的個數(shù)越多,對于每個最小存儲單元的管理難度就越大,但每個最小存儲單元中空間浪費(fèi)程度就越小,用戶損失空間就越小,相反,最小存儲單元的數(shù)量越少,雖然管理輕松,但是浪費(fèi)程度會顯著提升,損失空間就越大。
可以通過以下公式來估算浪費(fèi)的空間:
若分為m個專屬分區(qū),n個最小存儲單元,則在最壞的情況下,浪費(fèi)的空間為整個存儲空間大小的
說明書中各個實(shí)施例采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本申請的范圍。
本文中應(yīng)用了具體個例對本申請的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以對本申請進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本申請權(quán)利要求的保護(hù)范圍內(nèi)。
還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。