自動(dòng)分層存儲(chǔ)(ATS)是去年被討論最多的存儲(chǔ)陣列話題之一。它指的是在不同磁盤類型和RAID級(jí)別之間遷移數(shù)據(jù)塊的功能,這可滿足性能和空間使用之間的適當(dāng)平衡,并避免所謂的熱點(diǎn)。
該領(lǐng)域的先驅(qū)者是Compellent(現(xiàn)已被戴爾收購);它從2004年就開始提供這類功能,但現(xiàn)在所有分層領(lǐng)導(dǎo)廠商的產(chǎn)品都已具備了同樣的功能。只是EMC、HDS、HP-3Par、IBM和NetApp為該功能賦予的名稱不同,且都按照自己的方式來實(shí)現(xiàn),因?yàn)樗麄兏髯缘募軜?gòu)不同,而關(guān)于存儲(chǔ)級(jí)別虛擬化層的理念也不同。因此,本文并不會(huì)直接告訴你哪一種ATS最好,而是全方位的考量用于評(píng)估不同ATS實(shí)現(xiàn)最重要的指標(biāo)。
LUN或子LUN
早期的一些廠商曾嘗試在I/O請(qǐng)求下降至一定閥值時(shí),利用“半自動(dòng)”功能將LUN從快速磁盤(FC)遷移至低成本高容量磁盤(SATA)。這種方式非常簡單,但由于涉及大數(shù)據(jù)遷移和粒度不足的問題,實(shí)際情況下幾乎無法使用:其中的風(fēng)險(xiǎn)便是下移一個(gè)LUN之后,還需要為一個(gè)新I/O峰值再遷移回來…想一想當(dāng)你在注重IOPS的陣列中擁有一個(gè)TB級(jí)的LUN時(shí),這將意味著什么!
而現(xiàn)在ATS的子LUN實(shí)現(xiàn)相比之前要先進(jìn)一些:一個(gè)LUN被分成多個(gè)數(shù)據(jù)塊,而每個(gè)數(shù)據(jù)塊可以被放置到不同層級(jí)的磁盤中,有時(shí)甚至可由不同RAID級(jí)別來保護(hù)。
引擎和算法
每個(gè)廠商都依據(jù)時(shí)間/事件和/或訪問頻率,開發(fā)了自有的用于遷移層級(jí)間數(shù)據(jù)塊的遷移引擎。每種實(shí)現(xiàn)方式都依賴于整體架構(gòu)。但大體上可考慮以下兩種方式:“陣列中的全部”或“陣列外的部分”。
當(dāng)實(shí)現(xiàn)的方式為“陣列中全部”的時(shí)候,所有監(jiān)控功能都是位于其控制器和軟件內(nèi)部,所有功能都獨(dú)立于軟件/操作系統(tǒng)。但是,當(dāng)部分遷移進(jìn)程是在陣列外部實(shí)現(xiàn)的時(shí)候(即O/S代理商監(jiān)控IOPS或外部分析工具),數(shù)據(jù)遷移就會(huì)面臨危險(xiǎn),因?yàn)樵摥h(huán)境更加難以管理并由外部因素所決定。
粒度
粒度意味著效率,效率也意味著更加節(jié)省成本:你可以發(fā)現(xiàn)數(shù)據(jù)塊的大小不盡相同,512KB至1GB不等(一些廠商已經(jīng)打算將數(shù)據(jù)塊減少至32KB)!因此,粒度由于以下原因變得非常重要:
你擁有更多的粒度,你就可以在后端移動(dòng)更少的數(shù)據(jù);
小數(shù)據(jù)塊可以向較高或者較低存儲(chǔ)層移動(dòng),以更好地分布數(shù)據(jù)分布和快速/粒度更高地進(jìn)行調(diào)整;
而大數(shù)據(jù)塊往往具有以下風(fēng)險(xiǎn):
在遷移大量數(shù)據(jù)之前,算法需要在等待的,同時(shí)面臨遷移數(shù)據(jù)為時(shí)已晚的風(fēng)險(xiǎn)!
如果你擁有少量的活動(dòng)數(shù)據(jù),比如一個(gè)大型LUN中幾MB的數(shù)據(jù),那么就可能有必須將GB級(jí)的數(shù)據(jù)移至更昂貴的上層存儲(chǔ)的風(fēng)險(xiǎn)。