這技術要是實現了硬盤速度能翻好幾倍
瀏覽量: 次 發布日期:2023-10-04 22:40:49
這技術要是實現了硬盤速度能翻好幾倍
這篇文章寫于13年前(2003年),當時我還在北航上大三,對于日新月異的電腦硬件十分癡迷,花了很多時間研究學習硬件知識,也有了一些思考。于是就寫下了這篇文章《猜想--突破磁盤瓶頸,實現RAID硬盤》,投稿給了中關村在線。
然而十三年過去了,機械硬盤已經快要被固態硬盤取代了,我的猜想依然沒能實現,真的很是遺憾。這個技術能夠讓機械硬盤的性能提升2-10倍之多,持續傳輸速度輕松突破SATA接口上限,雖然隨機性能還是比不上固態硬盤,但至少存儲數據的時間會大幅縮短,試想隨便一個移動硬盤速度就能達到550MB/s會有多快?
現在我把這篇老文章一字不改的轉過來,感興趣的朋友可以一讀,我們可以相互探討。
計算機科技的發展速度可謂是一日千里、日新月異:左右CPU發展的摩爾定律不但沒有衰減甚至出現將被超越的跡象;在NVIDIA豪言壯語“每六個月發布一款新的GPU”的支配下我們甚至已經跟不上顯卡的發展腳步了;內存也毫不示弱,緊隨著CPU和GPU的腳步,完全可以滿足系統的需要;而作為計算機系統核心配件之一的硬盤的情形卻不容樂觀,硬盤的內部數據傳輸率始終未能得到提高。而計算機技術的發展需要各個獨立硬件系統發展的協調和均衡,無論哪個環節慢下來,整個系統的性能都會受到影響。因此,作為現階段無可代替的計算機外部存儲系統的硬盤,已經形成了IT界公認的一個嚴重制約電腦整機性能的瓶頸!
一.問題的提出
近年來,硬盤無論在容量、存取速度還是可靠性方面都取得了長足的進步,典型的諸如:ATA133、Serial ATA、SCSI等外部接口規范,以及單碟容量的不斷提升,轉速也達到7200轉(服務器版甚至達到15000轉)。但如果同其它配件相比,現在的硬盤實在是沒有什么值得夸耀的:緩慢的傳輸速度,居高不下的出錯率和返修率,不盡人意的使用壽命……而且硬盤的數據傳輸率取決于外部和內部數據傳輸率兩個因素。外部數據傳輸率和硬盤的接口有直接關系,外部數據傳輸率目前至少能夠達到150MBs以上。而且,從長遠的角度來看,其繼續發展也完全沒有什么問題。但其內部數據傳輸率目前尚未突破ATA66的水平!因此,在內部數據傳輸率沒有得到相應的提高的情況下,單純提高外部數據傳輸率實在是沒有太大意義的。
于是,人們開始想方設法的努力解決這個問題。與CPU、GPU、內存、主板等芯片類硬件不同的是,硬盤的核心部件為機械裝置。硬盤的內部數據傳輸率主要由硬盤的機械性能決定。要想提高硬盤的內部數據傳輸率,就必須提高機械裝置的效率。目前提高硬盤內部數據傳輸率的途徑主要有以下幾個方法:
① .加快盤片主軸轉速;
② .提高磁頭的尋道速度;
③ .提高盤片的數據存儲密度;
④ .提高盤片直徑。
從現在的電機技術發展水平來看,雖然主軸轉速已經達到15000轉,但似乎已經離極限不遠了。更高的轉速意味著穩定性、散熱、機械損耗、能耗等方面問題的急劇加重。因此,主軸轉速的提高是有限度的,而且代價高昂。即使采用了目前最先進的“液態軸承馬達”技術,機械損耗和震動也在所難免,提速的潛力十分有限,這就是IDE硬盤自從進入7200轉以來遲遲沒有向更高速度發展的原因。而尋道速度的提高意味著必須克服更嚴重的磁頭移動慣性和達到更高的精度要求,以及更強的抗震技術的支持,顯然也受到相關機電技術現有發展水平的制約。提高盤片的數據存儲密度,即提高盤片的單碟容量,可以在相同的主軸轉速下使磁頭在單位時間內可讀寫更多的數據。近年來,硬盤的數據存儲密度提高很快,現在已經誕生單碟80G的硬盤。不過,由于受到磁頭技術水平的限制,數據存儲密度的增加并不能同比地提高硬盤的內部數據傳輸率,就拿剛剛上市不久的希捷“酷魚 V ”來說,他的單碟容量為60G,而其“前輩”“酷魚 IV ” 單碟容量為40G,但是兩者的內部數據傳輸率且不相伯仲,磁盤性能的提升十分有限。而提高盤片的直徑已經嚴重與加快盤片主軸轉速背道而馳,而且現在的硬盤盤片已經呈現出小型化趨勢,3.5英寸已經成為事實上的標準。
二.應急之策——RAID 0
既然單憑硬盤廠商無法從內部解決磁盤傳輸瓶頸問題,那么就只能從外部想辦法了。為此,人們采取了多種措施。1988年,美國加州大學伯克利分校的D.A.Patterson教授提出的廉價冗余磁盤陣列(Redundant Array of Inexpensive Disks,簡稱RAID)有效地解決了這個問題,簡單的說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據冗余的技術。根據RAID所采用的方法不同,可以將其分為許多種。這里我們只介紹能夠大幅提高硬盤傳輸速率的一種——RAID 0:
RAID 0的工作原理為:當主機要求寫入數據時,RAID控制器把即將進入硬盤的數據分成許多塊,然后并行地將它們寫到磁盤陣列中的各個硬盤上;當讀出數據時,RAID控制器從各個硬盤上同時讀取數據,把這些數據經過處理后恢復為原來順序傳給主機。這種方法的優點是采用數據分塊、并行傳送方式,能夠極大的提高主機讀寫速度,并且磁盤陣列中存儲空間沒有冗余。如果采用N(N>1)塊硬盤組成RAID 0系統,那么它可以在不犧牲硬盤容量的前提下達到理論上N倍于原來單個硬盤的讀寫速度!這樣就可以極大的提升磁盤子系統的性能,以緩解燃眉之急。
由上可以看出RAID 0系統所帶來的性能的提升是我們急切渴望得到的。但是RAID 0也并不是沒有缺點的:
① .需要至少兩塊硬盤,這無疑加重了用戶的負擔;
② .需要附加控制器RAID卡的支持;
③ .RAID 0系統所帶來的高發熱、高噪音、高電能消耗都給用戶帶來了安裝、控制和維護的不便;
④ .其致命的缺點就是穩定性差——一旦組成RAID 0系統的硬盤中有一塊出錯損壞,那么將全盤皆毀,給系統帶來災難性的損失。
對于不惜代價追求硬盤高容量和急速 的服務器來說① ② ③ 項顯得微不足道,可以忽略不計,但 ④ 的存在使得服務器也不能安安穩穩的享用RAID 0帶來的高磁盤性能。
那么,如果我們能夠消滅RAID 0系統所帶來的所有缺點而僅保留其優點,那么磁盤系統的瓶頸將不復存在!那么這樣的硬盤系統必將具備以下的條件:
① .只需要一塊硬盤,安裝、控制、維護簡單;
② .極大的提高硬盤的傳輸速度(與原來的硬盤相比較);
③ .不犧牲硬盤容量;
④ .不需要附加控制卡的支持;
⑤ .不降低其穩定性。
聽起來很美,但能否實現呢?請看:
三.硬盤的結構帶來的思考
先來看看硬盤的內部結構,如圖1所示:
硬盤在讀寫數據時,電機帶動盤片高速旋轉,磁臂帶動磁頭沿盤片徑向移動,凡是磁頭掃過的區域都可進行讀寫操作。現在的硬盤大多是由多個盤片和多個磁頭組成的。目前主流的硬盤為單碟40GB,那么40GB的硬盤就有一個雙面盤片和兩個磁頭(正反兩面各一個),60GB的硬盤由兩個盤片,一個雙面一個單面,和三個磁頭……以此類推。
但是一般來說,磁盤在存儲數據時,是連續分布的,即在當前位置的磁道寫滿之后才轉入下一個磁道,除非出現磁盤碎片。因此,在讀寫具體的某個文件時,只有一個磁頭在進行讀寫操作,其余的磁頭雖然也在跟著移動,但不進行任何操作。當磁盤要執行多個任務時,舉個例子:當第一個磁頭正在連續讀取數據1(假設其物理位置在硬盤第一個盤片的正面)時,系統發出請求要求讀取另一個數據2,這時第一個磁頭就必須暫停當前對數據1的讀寫操作,從而尋找數據2。注意硬盤的各個磁頭是由同一個磁臂所控制,因此他們每時每刻都在相同的位置。
由此我們可以聯想到,假如此時數據2在硬盤上的物理位置正好位于第一個盤片的反面與數據1相同的位置,此時硬盤的磁頭就沒必要進行尋道工作,也沒有必要停止當前對數據1的讀取工作,就可以執行對數據2的讀取工作。也就是說,此時硬盤的兩個磁頭在同時進行讀取工作!這樣的話,此時其內部數據傳輸率將達到其標準的兩倍!同理,在我們要同時拷貝兩個文件時,硬盤的控制電路可以讓這兩個文件寫入同一個盤片正反兩面的相同位置,這樣就可以同時讓兩個磁頭進行寫入操作,極大地提高了磁頭的利用率。當然這只是十分極端的情況,在實際應用中這種情形根本不可能出現,況且我們對硬盤的內部具體讀寫工作方式并不了解,硬盤能否在同一時刻讓兩個磁頭同時工作還是個未知數。不過我們可以肯定的是:如果能夠對硬盤控制電路重新設計,從而能夠做到硬盤的所有磁頭能夠同時進行工作,那么上面的猜想也不是沒可能實現。
四. 由RAID 0引發的聯想
再我們來看一下RAID 0系統的工作原理圖,圖2是由兩塊硬盤組成的RAID 0系統:
由上圖可以清楚地看到:該系統由兩塊硬盤同時讀寫同一數據的不同數據塊來達到雙倍于原來硬盤的速度。也就是說,在任何時刻,這兩塊硬盤都在同步地工作,但它們讀寫的內容卻完全不同。其中RAID 0控制器的作用就是將原來的數據均分為兩份給兩塊硬盤寫入或將兩塊硬盤讀出的數據合并在一塊兒交給外部數據總線。
由上面硬盤結構的猜想我們可以聯想到它似乎和RAID 0的工作方式有些共同點:RAID 0在工作時將一個數據分成若干塊給數個硬盤,這些硬盤同時進行讀寫操作,如果組成RAID 0系統的硬盤完全相同的話,那么這些分塊了的數據的存放位置將完全相同(不同硬盤上的相同物理位置)。更進一步,如果我們將這些分塊了的數據不是分給幾個硬盤,而是分給同一個硬盤的幾個磁頭進行讀寫操作,由這幾個磁頭分別在各個盤片(或者同一盤片)的正反面的相同位置同時進行讀寫操作,這樣的話,我們就在硬盤的內部實現了RAID 0系統!在這里我姑且將其稱為“RAID硬盤”吧。
五.一勞永逸的解決方法
上面的猜想的確挺誘人的,如果能夠實現“RAID硬盤”的話,即可在現有的基礎上不進行太大的改動就可以實現數倍于原來的傳輸速度(有幾個磁頭就是幾倍),但其究竟能否實現呢?讓我們來慢慢地進行可行性分析:
⑴.先決條件——硬盤的特殊結構:
前面已經提到過,硬盤的幾個磁頭是由同一個磁臂連接在一起的,所以在任何時刻,他們都位于同一個位置,這就決定了這幾個磁頭可以在各個盤片(或者同一盤片)的正反面的相同位置同時進行讀寫操作,而且精度極高。
⑵.成功的先例——RAID 0系統:
由于我們的猜想是與RAID 0系統息息相關的,因此RAID 0系統的性能直接關系到我們的“RAID硬盤”的性能。目前,RAID系統在服務器上的廣泛應用和良好的性能充分肯定了RAID 0的存在價值,雖然服務器是用得并不一定是RAID 0系統,但其一定是由RAID 0演化而來的。近年來,RAID 0系統開始進入桌面IDE領域,這無不充分證明了RAID 0的高性能和高性價比。
根據權威的測試數據表明,由兩塊硬盤組成的RAID 0系統可以提高硬盤傳輸率30%以上。當然,具體性能還受到RAID控制卡等外部因素的影響。雖然這里理論上的100%性能提升相差很遠,但不可否認,在很小的代價下,RAID 0帶來的性能提升是空前的。況且如果把RAID 0系統集成與硬盤內部的話,那就可以更好更精確的控制硬盤,接近甚至達到100%的性能提升指日可待。
⑶.修改硬盤控制電路——硬件級的軟件工作:
既然硬件方面沒有什么問題,那么就該“RAID硬盤”的核心部分——RAID控制器。作為機械式硬盤的唯一芯片部分,控制電路的性能好壞也直接影響到磁盤的性能,由于我們對硬盤的內部的工作方式進行了很大的改動,因此硬盤控制電路就必須作相應的修改。能否實現“RAID硬盤”的關鍵就在于此。
首先,既然是“RAID硬盤”就必須要有RAID控制器,因此先在硬盤的控制電路中集成一塊RAID芯片,這對于硬盤廠商來說絕不是件難事。數據由硬盤接口傳入后經過RAID芯片的處理分為幾份(有幾個磁頭就分為幾份)。
上海數據恢復其次是磁頭控制電路,數據被RAID芯片“瓜分”之后,交給磁頭控制電路,由他來指揮磁頭進行讀寫操作。這樣的話,我們不管硬盤原來的磁頭控制電路是什么樣的,“RAID硬盤”的磁頭控制電路的任務就是將這些已經分好的數據分別傳輸給各個磁頭,然后,磁臂帶動這些磁頭同時進行讀寫操作。
由此以來,硬盤的控制電路將進行很大的修改。但是,集成電路IC設計屬于硬件級的軟件工作,要完成這樣工作的芯片及其電路雖然要花費一些周折,但比起無畏地提升硬盤電機的轉速顯然要現實的多,我們有理由相信重新設計的硬盤控制電路比較容易實現!
⑷.穩定性、安全性分析:
前面說過,RAID 0系統致命的缺點就是穩定性差,如果單個硬盤的穩定系數為90%的話,那么有雙硬盤組成的RAID 0系統的穩定系數將小于81%!這樣無疑將本來就很脆弱的硬盤穩定性雪上加霜!那么“RAID硬盤”的情形又如何呢?
首先,“RAID硬盤”只是一塊硬盤,這樣比起由多塊硬盤組成的RAID 0系統來說,出錯率遠遠降低。但是跟原來的硬盤相比,穩定性還是比原來的硬盤差,因為它是同時由所有的磁頭讀取。但是反過來想一下,正是由于它是所有的磁頭一起進行讀寫操作,所以在數據出錯的情況下不至于影響到硬盤的其它數據,因此安全性還是比較高的。這樣一來,“RAID硬盤”可以不犧牲安全性,而降低少許穩定性,同又數倍地提高了磁盤的整體性能,這樣還是比較值得的。
無錫數據恢復下圖所示就是單碟雙面雙磁頭的“RAID硬盤”工作原理圖:
分析了這么多,就是一句話:在現有硬盤制造業的基礎上實現“RAID硬盤”并不難!一旦“RAID硬盤”誕生,那將是成倍地提升硬盤的性能!就拿現在主流的7200轉80GB硬盤來說,它有雙碟4面共有四個磁頭,內部傳輸率為50MB/S左右。如果將其改造為“RAID硬盤”的話,它就相當于有四塊硬盤組成的RAID 0系統,理論內部傳輸率將達到200MB/S左右,這即使是Serial ATA 150也不能滿足它的要求!
常州數據恢復