竇熙洋
(中影動畫產(chǎn)業(yè)有限公司,北京 101400)
現(xiàn)如今動畫電影需要大量渲染時間,一般會有上百臺甚至上千臺主機(jī)同時進(jìn)行渲染。首先會產(chǎn)生大量渲染數(shù)據(jù),對存儲空間有一定的要求,其次就是上百上千臺主機(jī)會同時訪問存儲,會給存儲服務(wù)器帶來很大的數(shù)據(jù)壓力?,F(xiàn)在市面上存儲架構(gòu)具有代表性的有SAN 架構(gòu)存儲、NAS架構(gòu)存儲、DAS架構(gòu)存儲,存儲服務(wù)器讀取數(shù)據(jù)的模式大有不同,可分為分布式和集中式兩種。為滿足動畫渲染的存儲,中影動畫產(chǎn)業(yè)有限公司 (以下簡稱 “中影動畫”)選擇了IBRIX 分布式文件系統(tǒng)。
本文主要闡述了動畫制作渲染平臺如何選擇存儲,動畫渲染對數(shù)據(jù)處理的需求,以及動畫制作數(shù)據(jù)的特殊性,如何通過改變存儲結(jié)構(gòu)來解決動畫制作和動畫渲染的實(shí)際問題。
現(xiàn)在市面上存儲架構(gòu)具有代表性的有SAN 架構(gòu)存儲、NAS架構(gòu)存儲和DAS架構(gòu)存儲。
DAS架構(gòu)存儲是直接連接主機(jī)的存儲。通過存儲控制器直連服務(wù)器,服務(wù)器經(jīng)識別scsi設(shè)備,對大量的scsi設(shè)備進(jìn)行邏輯卷編輯格式化,最終實(shí)現(xiàn)數(shù)據(jù)存儲以及文件共享。
優(yōu)勢:結(jié)構(gòu)簡單,所需要的硬件設(shè)備較少,易于部署,適用于單臺設(shè)備存儲數(shù)據(jù);缺點(diǎn):多臺設(shè)備互聯(lián)讀寫文件效率底,多個DAS架構(gòu)存儲互聯(lián)文件分散無法統(tǒng)一管理,只能通過windows DFS共享進(jìn)行數(shù)據(jù)管理,整合共享層級。
SAN 架構(gòu)存儲是通過光纖線實(shí)現(xiàn)網(wǎng)絡(luò)連接的存儲設(shè)備。存儲控制器通過光纖線纜連接到光纖交換機(jī),實(shí)現(xiàn)各個主機(jī)與存儲控制器互聯(lián),通過安裝特定的文件系統(tǒng)實(shí)現(xiàn)網(wǎng)絡(luò)存儲共享。
優(yōu)勢:單臺客戶端讀寫速度快,通過對SAN交換機(jī)、存儲控制器的優(yōu)化,可以提供多鏈路同時并行讀寫操作,常見的SAN 文件系統(tǒng)有StorNext文件系統(tǒng),該套文件系統(tǒng)很好地將多個邏輯卷整合到一起實(shí)現(xiàn)條帶化讀寫,由專門的元數(shù)據(jù)管理服務(wù)器負(fù)責(zé)檢索文件,配合存儲控制器的緩存機(jī)制,可以實(shí)現(xiàn)快速讀寫數(shù)據(jù)的要求,一般符合后期非線編輯,提供高IOPS吞吐量;缺點(diǎn):多臺設(shè)備讀取數(shù)據(jù)速度不穩(wěn)定,由于數(shù)據(jù)被條帶化,會使得磁盤利用率分配上受終端的訪問量影響。最大的問題是文件系統(tǒng)讀寫都需要訪問元數(shù)據(jù)服務(wù)器進(jìn)行文件檢索,數(shù)據(jù)請求少的情況下還可以滿足,一旦訪問的數(shù)據(jù)請求數(shù)量過多,會出現(xiàn)服務(wù)器無法處理讀寫請求導(dǎo)致元數(shù)據(jù)服務(wù)器死機(jī),客戶端會出現(xiàn)卡頓無法訪問數(shù)據(jù)的情況。對于200或300個用戶級別的客戶端請求無法滿足。
NAS存儲是通過以太網(wǎng)共享的網(wǎng)絡(luò)存儲架構(gòu),利用nfs、samba、cifs提供網(wǎng)絡(luò)共享服務(wù),通過IP地址、網(wǎng)絡(luò)名稱、dns解析的方式進(jìn)行數(shù)據(jù)訪問,是當(dāng)下使用最為廣泛的互聯(lián)網(wǎng)存儲架構(gòu),通過NAS衍生了多種分布式文件系統(tǒng),例如:軟件定義存儲Ceph、glusterFS、IBRIX 以及硬件NAS存儲NETAPP、日立、EMC (Islong)、NEC等。
優(yōu)勢:NAS的分布式文件系統(tǒng)具有高負(fù)載擴(kuò)展靈活的特性,可以橫向擴(kuò)展NAS 網(wǎng)關(guān),縱向擴(kuò)展磁盤控制器,適合大規(guī)模數(shù)據(jù)請求;缺點(diǎn):主要體現(xiàn)在集中式NAS,會出現(xiàn)元數(shù)據(jù)服務(wù)器死機(jī)以及數(shù)據(jù)讀寫速度擁塞等問題。
動畫制作過程屬于線性流程,數(shù)據(jù)包括:前期設(shè)計、模型建模、模型綁定、動畫表演、動畫特效、動畫燈光、動畫渲染和動畫合成。整個文件類型復(fù)雜,數(shù)據(jù)大小不一,會產(chǎn)生大量的小文件。
(1)前期設(shè)計需要繪制大量的矢量圖、照片、掃描文件,涉及人物角色、場景以及背景等。
(2)模型建模首先產(chǎn)生基本工程文件,每個模型又是由多個資產(chǎn)拼裝而成,模型文件盡可能輸出的小一些,主要是為了后端環(huán)節(jié)可以順暢的打開,甚至有的模型創(chuàng)建好幾套,為了配合項(xiàng)目制作,分為大、中、小三個標(biāo)準(zhǔn)進(jìn)行制作,一般產(chǎn)生的文件有緩存文件、工程文件和圖片,會產(chǎn)生大批量的小文件。
(3)動畫制作環(huán)節(jié)類似于視頻制作會產(chǎn)生大量的流媒體文件(簡稱拍屏文件),主要是提供導(dǎo)演審看,根據(jù)動畫環(huán)節(jié)細(xì)分,從最初的預(yù)覽片,到動畫表演最終鏡頭,產(chǎn)生的大量流媒體文件,都要在線審看播放,對存儲會產(chǎn)生很大的壓力。
(4)動畫特效環(huán)節(jié)由于需要對布料、毛發(fā)、水、煙、火、粒子進(jìn)行運(yùn)算,會產(chǎn)生大量的小文件也就是緩存文件,小文件一般來說是要求存儲IOPS性能的,大量的小文件讀取會導(dǎo)致元數(shù)據(jù)服務(wù)器死機(jī),導(dǎo)致數(shù)據(jù)訪問失敗。
圖1 中影動畫各環(huán)節(jié)產(chǎn)生數(shù)據(jù)類型圖
(5)動畫渲染的過程,是將存儲中若干個工程文件拼裝到一起,進(jìn)行浮點(diǎn)運(yùn)算輸出到一張圖片上的過程,也是在整個動畫制作中最為耗資源的一個環(huán)節(jié)。渲染數(shù)據(jù)還會細(xì)分,需要分層進(jìn)行渲染,渲染產(chǎn)生的數(shù)要占全片1/3以上,文件大小普遍在8~11MB,大量的小文件會產(chǎn)生大量的元數(shù)據(jù),接下來會有成百臺渲染服務(wù)器同時讀取這些文件,也就是同時要對元數(shù)據(jù)進(jìn)行檢索請求,一般集中式共享存儲都很難滿足大批量的元數(shù)據(jù)請求,會一下把存儲控制器緩存用盡。一旦存儲控制器緩存用盡,存儲性能就會下降,導(dǎo)致元數(shù)據(jù)服務(wù)器死機(jī)。
(6)動畫合成產(chǎn)生的數(shù)據(jù)主要是流媒體、序列幀等。該環(huán)節(jié)是將分層渲染的序列幀合成到一起,該操作類似于后期剪輯非線編輯的操作,占用存儲資源大,會導(dǎo)致存儲帶寬擁塞。各環(huán)節(jié)文件類型及文件大小信息見圖1。
圖2 中影動畫IBRIX 存儲架構(gòu)拓補(bǔ)圖
中影動畫IBRIX 分布式存儲架構(gòu)是由12 臺存儲網(wǎng)關(guān)組成,12臺網(wǎng)關(guān)通過光交換機(jī)與SAN 存儲相連接,每臺網(wǎng)關(guān)服務(wù)器都可以訪問到SAN 存儲的所有邏輯卷,實(shí)現(xiàn)12臺存儲網(wǎng)關(guān)分布式進(jìn)行數(shù)據(jù)共享。每兩臺網(wǎng)關(guān)服務(wù)器通過HA 設(shè)置進(jìn)行熱備,通過網(wǎng)關(guān)服務(wù)器ILO 模塊進(jìn)行事件觸發(fā),圖2是中影動畫IBRIX 存儲架構(gòu)拓補(bǔ)圖。
中影動畫制作人員是通過域名解析的方式,訪問這12臺存儲網(wǎng)關(guān)的。例如在文件夾地址欄里鍵入“cfa.anime.com”地址,會隨機(jī)訪問12臺網(wǎng)關(guān)中的其中一臺,進(jìn)行數(shù)據(jù)讀寫操作。根據(jù)中影動畫制作項(xiàng)目的要求,需要在同一個名字空間里建立工程目錄,我們會將所有的存儲容量分配到名字空間為IBRIX01的文件系統(tǒng),12臺存儲網(wǎng)關(guān)里面會各自掛載名字為IBRIX01 的目錄,再各自將目錄進(jìn)行SAMBA、nfs共享,在DNS服務(wù)里面我們會將12臺網(wǎng)關(guān)服務(wù)器地址都對應(yīng)一個域名,以輪巡訪問機(jī)制進(jìn)行負(fù)載。在中影動畫流程管理軟件里面會對存儲地址進(jìn)行定義,通過生產(chǎn)管理軟件在項(xiàng)目開始的時候會在IBRIX01 共享目錄下面建立項(xiàng)目工程文件,文件夾的層級是由生產(chǎn)管理軟件定義的,所有制作人員操作都需要登錄中影動畫生產(chǎn)管理系統(tǒng),打開所需軟件進(jìn)行制作,數(shù)據(jù)的訪問讀取寫入都是按照生產(chǎn)管理系統(tǒng)指定的目錄結(jié)構(gòu)進(jìn)行操作的,所有制作文件的路徑都是絕對路徑,包含嵌套文件路徑也為絕對路徑,最終渲染通過生產(chǎn)管理系統(tǒng)將文件提交到渲染農(nóng)場進(jìn)行數(shù)據(jù)分析,提交任務(wù)進(jìn)行渲染,最終渲染文件會按照指定的目錄存放??梢哉f所有參與制作人員的設(shè)備,渲染服務(wù)器都在對存儲進(jìn)行讀寫操作,根據(jù)各環(huán)節(jié)產(chǎn)生的數(shù)據(jù)類型以及大小都不同整個項(xiàng)目產(chǎn)生上千萬的文件數(shù)量,一般性能的存儲是無法滿足的,這時IBRIX 分布存儲就體現(xiàn)它的優(yōu)勢了。
IBRIX分布存儲由兩部分組成,管理機(jī)和網(wǎng)關(guān)服務(wù)器組成一個分布式集群。
通信分為三塊:對外網(wǎng)絡(luò)提供samba nfs 共享服務(wù);內(nèi)部通信網(wǎng)絡(luò)提供內(nèi)部元數(shù)據(jù)交換;SAN 存儲網(wǎng)絡(luò)向所有網(wǎng)關(guān)服務(wù)器開放,所有網(wǎng)關(guān)服務(wù)器讀到存儲邏輯單元都要保持一致。
IBRIX 管理機(jī)會將存儲上的邏輯單元LUN 進(jìn)行掃描,將掃描的LUN 標(biāo)記為sagment均勻分配給12個網(wǎng)關(guān)服務(wù)器進(jìn)行管理,將所有分配的sagment建立路由表,標(biāo)記網(wǎng)關(guān)服務(wù)器與segment的對應(yīng)關(guān)系,分發(fā)給12臺網(wǎng)關(guān)服務(wù)器,最終形成整體的文件系統(tǒng)進(jìn)行格式化,主要目的是實(shí)現(xiàn)元數(shù)據(jù)負(fù)載。IBRIX 文件讀寫有一個機(jī)制,寫數(shù)據(jù)會直接寫到本地管理的segment,是不可以跨網(wǎng)關(guān)進(jìn)行寫操作的,讀數(shù)據(jù)是可以跨網(wǎng)關(guān)直接通過SAN 讀取數(shù)據(jù)的,這樣有利于負(fù)載高并發(fā)請求。IBRIX 讀寫數(shù)據(jù)模式,也有它的弊端,就是嚴(yán)格要求segment數(shù)據(jù)存儲均勻,保證每個segment剩余空間接近,這樣才能很好的負(fù)載,一旦數(shù)據(jù)segment存儲空間不均衡會造成單臺網(wǎng)關(guān)服務(wù)器并發(fā)處理能力下降,出現(xiàn)短時間死鎖,IBRIX 內(nèi)部有個命令是可以解決的,定期自動均衡數(shù)據(jù)處理,原理就是互相拷貝最終達(dá)到所有segment數(shù)據(jù)空間接近一致。
圖3 IBRIX 數(shù)據(jù)讀取過程圖
圖4 IBRIX 數(shù)據(jù)寫入過程圖
從圖3我們可以看出數(shù)據(jù)讀取的時候會先分析數(shù)據(jù)屬于哪個segment,該segment 歸哪個網(wǎng)關(guān)server監(jiān)管,如果屬于本地segment就進(jìn)行直接讀取,如果不屬于本地segment會根據(jù)segment路由表找到對應(yīng)的監(jiān)管網(wǎng)關(guān)服務(wù)器請求元數(shù)據(jù),通過內(nèi)部通信得到元數(shù)據(jù),透過SAN交換機(jī)讀取存儲數(shù)據(jù)。
從圖4可以看出寫入操作相對簡單,寫入請求的網(wǎng)關(guān)服務(wù)器只寫自己監(jiān)管的segment,一般網(wǎng)關(guān)服務(wù)器都會監(jiān)管10~20個segment,會從中選擇剩余空間較大的segment存儲數(shù)據(jù),以保證數(shù)據(jù)均勻存儲。
中影動畫自2009 年選用IBRIX 分布式存儲,至今已承接了多種電影項(xiàng)目,包括動畫電影 《瘋狂斗牛場》《直立象傳說》《最可愛的人》,這三部電影所產(chǎn)生的數(shù)據(jù)分別為160TB 、100TB、70TB。
圖5 中影動畫IBRIX 存儲管理界面
通過圖5 可以看到這套存儲可以寫入770,244,608個文件,我們已經(jīng)存儲了24,527,493個文件,還剩下745,717,115 個文件可以寫入。而這只是《最可愛的人》項(xiàng)目的數(shù)據(jù)而已。
根據(jù)中影動畫多年使用IBRIX 分布存儲系統(tǒng)進(jìn)行動畫項(xiàng)目制作及動畫渲染經(jīng)驗(yàn),對于這么多的非結(jié)構(gòu)化數(shù)據(jù)的管理,能保證從2009年至今所有項(xiàng)目都可順利完成,相比現(xiàn)在主流的對象分布式存儲,以及虛擬化軟件定義存儲,我認(rèn)為結(jié)合IBRIX 在分布式存儲的優(yōu)缺點(diǎn),合理避免缺陷,運(yùn)用好它的優(yōu)勢,該套存儲是比較適合動畫渲染以及動畫制作的,可滿足小文件非結(jié)構(gòu)數(shù)據(jù)高并發(fā)數(shù)據(jù)管理。?