在計算集群形成初期,系統中並沒有複雜的儲存系統存在,甚至沒有統一儲存的概念,那時每台計算節點把自己所計算出的資料先暫時寫到自己的本地硬碟上(cache),最終由主節點進行所有資料的**,至主節點所掛載的相對大的空間中(其實這就是後來hpc儲存的雛形),再進行後續處理(分析、共享、視覺化、備份與恢復)。
本地儲存引入的問題
計算任務在計算集群中被分割為若干個子任務。計算過程中,某個計算節點的輸入資料可能存放在另外的節點上,引入的問題:
1、各節點的資料會二次進出本地硬碟,各節點間的資料傳輸也會造成多餘的網路風暴,這種做法無疑會造成計算效率的下降;
2、應用程式**編寫過程中,無法預計所要資料在哪個節點上,都造成麻煩與效率的低下。
因此後續的程式編寫中,會讓所有的節點都認到一塊區域,將所有的臨時性資料和最終資料都寫到這裡,即,統一命名空間,因為所有計算節點都可以看到這塊同乙個名字的資料儲存區域,表現在計算節點的os中即為看到同乙個名字的目錄(由nas得來)或磁碟空間(由直連儲存得來)。
目前,hpc應用軟體,例如:fluent、ls-dyna、paradigm、3ds max等,在配置計算模型的儲存指標時,會發現要求指向同乙個區域,即統一的儲存空間,而且有許多軟體在這個引數的設定上是不能修改的。某計算節點自己的中間資料,可能會存放在自己內部的儲存上。如果使用san儲存,就必須使用san共享軟體,如,storenext,保證資料讀寫的一致性。
TCP為什麼是面向連線的,為什麼是面向資料流的
tcp的核心是它要提供乙個可靠的傳輸協議。第乙個問題 tcp如果想要提供乙個可靠的傳輸協議,一定需要每次都建立連線嗎?三 次招手的意義在於讓通訊兩端確定,資訊剛才是可以從任意一端傳到另 一端的。如果傳送資料前我們沒有三次招手。那麼,由於tcp是乙個可靠 的傳輸協議,所以一定會提供超時重試的機制,而且...
為什麼void main 是錯誤的
原文 為什麼void main 是錯誤的 main 函式通常是乙個c c 程式的入口點。一次為了讓執行時系統 runtime system 能夠正確地呼叫它,它必須遵守一些約定。現代的c 用如下約定 int main 或者 int main int argc,char argv 再者 int mai...
河流為什麼是彎曲的?
最近思考到乙個問題 大部分河道為什麼是彎曲的?查閱資料,窺見一二,與君共享 我們看到的河流,特別是在平原上的河流,總是彎彎曲曲,很少有筆直的河道。這是為什麼呢?這得從力學上做一點解釋。首先我們來關注乙個流體力學中的二次流現象。取一口寬底的圓形鍋或其他容器,裡面盛滿了水,為了觀察到二次流,水中放一些沙...