新聞中心
聯系我們
Contact us
Contact us
- 總部電話010-51727811
- 客服熱線400 779 6696
- 更多聯系信息
存儲與安全之存儲設備上的漫漫征途(一)
時間:2012-08-02 09:25 來源:飛客數據恢復 作者:飛客數據恢復工程師
一、存儲的鼻祖----DAS
在DAS存儲中,最基本的設備就是磁盤;不管是傳統的IDE(也就是PATA)硬盤,還是其升級版本SATA;或者是服務器領域的并行SCSI硬盤,還是最近火爆的SAS硬盤,甚至包括高端的FC硬盤。
硬盤通常有三個模塊組成:接口電路、Firware、盤片和機械控制電路。數據通過Cable到達接口電路,就是上面所說IDE、SATA、SCSI、FC接口,它完成對應協議相關物理電信號的轉換和處理,得到相關的數據和命令。通常,硬盤采用的兩種協議集:ATA和SCSI。其中IDE和SATA采用ATA協議集,而并行SCSI和串行SCSI,以及FC基本都采用SCSI協議集。為了加強接口電路的可靠性,FC硬盤中還采用了雙端口技術。
當數據通過了接口電路后,就由Firmware來處理,它會根據傳遞來的命令進行相關的處理,如果需要寫入數據,則還要操縱機械控制電路將它們寫入盤片。由于Firmware功能越來越強大,為硬盤加入了很多特性,比如命令隊列,磁盤緩沖,數據加密設計等。
最后數據通過機械臂寫入到盤片,由于盤片可能因為某些壞塊而導致數據丟失,或者數據寫入錯誤。目前,有一種重定向技術,來解決這種問題;例如,寫入到某數據塊錯誤(比如LBA地址M),Firmware可以將這個塊的數據重新寫入一個專用區域塊;從而即使該塊損壞,也可以通過Mapping,將壞塊重定向到好的區域,并完成正常的讀寫操作。可見,在硬盤存儲設備上,每一個模塊都涉及到數據安全的細節設計。
二、存儲的擴展----NAS
2.1基于Linux的NAS
在中低端NAS領域,可以采用定制的LINUX+SATA作為平臺來進行設計。盡管SATA采用ATA協議集,但是在LINUX下由于SCSI驅動架構比IDE架構(專門用于IDE硬盤)擴展能力強,所以還讓SATA跑在SCSI架構下面。
在Linux下SCSI驅動架構,自下而上主要分為三層,分別是SCSILowerLevel驅動、SCSIMiddleLevel驅動,和SCSIUpperLevel驅動。最下面是SCSILowerLevel驅動,它和系統提供的Libata模塊協作,讓各種SATAHBA能夠正常的運行,因為系統提供的Libata是按照SATA的規范來抽象出一些共有的東西,所以對于不同的SATAHBA只要去做自己相關的事情,這樣就像流水線那樣,分工明確,責任清晰,從而也更加易于擴展。
對于SCSIMiddleLevel驅動,它就像一個中央管理者,負責探尋下面各個SATAHBA上連接的硬盤,并向上層驅動匯報,同時將上層發下來的讀寫請求轉化為對應的某個磁盤上對應的塊讀寫操作。它就像一個調度者,負責協調上下模塊之間的動作,在整個SCSI驅動架構中扮演重要的角色。而基于最上層的SCSIUpperLevel驅動,就是針對各種SCSI設備而專門設計,對于磁盤就是通常的sd_mod.o模塊。該模塊一個最直觀的功能就是向系統報告設備名,Linux系統中眾所周知的/dev/sda,/dev/sdb,/dev/sdc等設備名就是由它來完成的。
當通過SCSI驅動架構的處理,RAW設備就呈現出來;但是在RAW設備基礎上的直接構建卷和文件系統,其可靠性不高,擴展性不強,不能加入很多有特色的元素。因此通常可以在RAW設備上提供一個卷管理軟件,如MD(軟件RAID),它除了支持常規的各種RAID外,還加入了對RAID6的支持,并且被加入到內核中;從而,使得對于MD的部署和管理更加方便。當然,也有采用基于MD的LVM,EVMS,VxVM等,它們能提供更為強大的功能。
當構建完底層的卷之后,那么就可以設計文件系統了。文件系統,說得簡單點,就是一個大管家,它把你的資料統一管理起來;例如,你不知道某張圖片放在哪個磁盤的某個位置,只需要告訴大管家,要看這個文件,那么它就會把該圖片取出來。當然,對于文件系統來說,最怕系統崩潰,所以在現代的文件系統設計中都加入了日志功能,對于Linux來說就是常用的Ext2,Ext3。
當這些基礎設施都準備好后,再加入上層的應用模塊,這樣用Linux構建的本地系統已經可以正常工作了。但是,要做NAS,就要把這個本地系統和外界連接起來,這時候NFS或CIFS就擔當起這個重要的職責的橋梁。通過這些網絡文件系統,就可以把本地的文件系統裝載到遠程去,完整地實現NAS功能。
上面所涉及到的各個模塊,在Linux下都有良好的支持,通過對Linux內核的定制,以及對各種應用程序的適當選擇就可以完成;盡管看起來很容易,但實際上在整個通路上的安全問題,是由很多底層的設計人員解決掉封裝好,所以用戶了解不到。
2.2基于Windows的NAS
針對Linux在這方面的應用,Windows也設計了對應的NAS涉及解決方案。和Linux構建NAS對比,可以發現在架構設計上很多是相通的,畢竟操作系統的興旺發達還是從各個大牛們啃UNIX開始的。
在它們之上和文件系統之間,windows放入了一個PSMFilterDriver,它和用戶模式下的PSM組件一起完成Snapshot的功能;而這些功能,可以在Linux的卷管理模塊,如LVM中完成。其上面就是Microsoft專有的NTFS,它本身也是一個日志文件系統;再加上CIFS網絡文件系統,一個基于Windows的NAS就橫空出世了。
在DAS存儲中,最基本的設備就是磁盤;不管是傳統的IDE(也就是PATA)硬盤,還是其升級版本SATA;或者是服務器領域的并行SCSI硬盤,還是最近火爆的SAS硬盤,甚至包括高端的FC硬盤。
硬盤通常有三個模塊組成:接口電路、Firware、盤片和機械控制電路。數據通過Cable到達接口電路,就是上面所說IDE、SATA、SCSI、FC接口,它完成對應協議相關物理電信號的轉換和處理,得到相關的數據和命令。通常,硬盤采用的兩種協議集:ATA和SCSI。其中IDE和SATA采用ATA協議集,而并行SCSI和串行SCSI,以及FC基本都采用SCSI協議集。為了加強接口電路的可靠性,FC硬盤中還采用了雙端口技術。
當數據通過了接口電路后,就由Firmware來處理,它會根據傳遞來的命令進行相關的處理,如果需要寫入數據,則還要操縱機械控制電路將它們寫入盤片。由于Firmware功能越來越強大,為硬盤加入了很多特性,比如命令隊列,磁盤緩沖,數據加密設計等。
最后數據通過機械臂寫入到盤片,由于盤片可能因為某些壞塊而導致數據丟失,或者數據寫入錯誤。目前,有一種重定向技術,來解決這種問題;例如,寫入到某數據塊錯誤(比如LBA地址M),Firmware可以將這個塊的數據重新寫入一個專用區域塊;從而即使該塊損壞,也可以通過Mapping,將壞塊重定向到好的區域,并完成正常的讀寫操作。可見,在硬盤存儲設備上,每一個模塊都涉及到數據安全的細節設計。
二、存儲的擴展----NAS
2.1基于Linux的NAS
在中低端NAS領域,可以采用定制的LINUX+SATA作為平臺來進行設計。盡管SATA采用ATA協議集,但是在LINUX下由于SCSI驅動架構比IDE架構(專門用于IDE硬盤)擴展能力強,所以還讓SATA跑在SCSI架構下面。
在Linux下SCSI驅動架構,自下而上主要分為三層,分別是SCSILowerLevel驅動、SCSIMiddleLevel驅動,和SCSIUpperLevel驅動。最下面是SCSILowerLevel驅動,它和系統提供的Libata模塊協作,讓各種SATAHBA能夠正常的運行,因為系統提供的Libata是按照SATA的規范來抽象出一些共有的東西,所以對于不同的SATAHBA只要去做自己相關的事情,這樣就像流水線那樣,分工明確,責任清晰,從而也更加易于擴展。
對于SCSIMiddleLevel驅動,它就像一個中央管理者,負責探尋下面各個SATAHBA上連接的硬盤,并向上層驅動匯報,同時將上層發下來的讀寫請求轉化為對應的某個磁盤上對應的塊讀寫操作。它就像一個調度者,負責協調上下模塊之間的動作,在整個SCSI驅動架構中扮演重要的角色。而基于最上層的SCSIUpperLevel驅動,就是針對各種SCSI設備而專門設計,對于磁盤就是通常的sd_mod.o模塊。該模塊一個最直觀的功能就是向系統報告設備名,Linux系統中眾所周知的/dev/sda,/dev/sdb,/dev/sdc等設備名就是由它來完成的。
當通過SCSI驅動架構的處理,RAW設備就呈現出來;但是在RAW設備基礎上的直接構建卷和文件系統,其可靠性不高,擴展性不強,不能加入很多有特色的元素。因此通常可以在RAW設備上提供一個卷管理軟件,如MD(軟件RAID),它除了支持常規的各種RAID外,還加入了對RAID6的支持,并且被加入到內核中;從而,使得對于MD的部署和管理更加方便。當然,也有采用基于MD的LVM,EVMS,VxVM等,它們能提供更為強大的功能。
當構建完底層的卷之后,那么就可以設計文件系統了。文件系統,說得簡單點,就是一個大管家,它把你的資料統一管理起來;例如,你不知道某張圖片放在哪個磁盤的某個位置,只需要告訴大管家,要看這個文件,那么它就會把該圖片取出來。當然,對于文件系統來說,最怕系統崩潰,所以在現代的文件系統設計中都加入了日志功能,對于Linux來說就是常用的Ext2,Ext3。
當這些基礎設施都準備好后,再加入上層的應用模塊,這樣用Linux構建的本地系統已經可以正常工作了。但是,要做NAS,就要把這個本地系統和外界連接起來,這時候NFS或CIFS就擔當起這個重要的職責的橋梁。通過這些網絡文件系統,就可以把本地的文件系統裝載到遠程去,完整地實現NAS功能。
上面所涉及到的各個模塊,在Linux下都有良好的支持,通過對Linux內核的定制,以及對各種應用程序的適當選擇就可以完成;盡管看起來很容易,但實際上在整個通路上的安全問題,是由很多底層的設計人員解決掉封裝好,所以用戶了解不到。
2.2基于Windows的NAS
針對Linux在這方面的應用,Windows也設計了對應的NAS涉及解決方案。和Linux構建NAS對比,可以發現在架構設計上很多是相通的,畢竟操作系統的興旺發達還是從各個大牛們啃UNIX開始的。
在它們之上和文件系統之間,windows放入了一個PSMFilterDriver,它和用戶模式下的PSM組件一起完成Snapshot的功能;而這些功能,可以在Linux的卷管理模塊,如LVM中完成。其上面就是Microsoft專有的NTFS,它本身也是一個日志文件系統;再加上CIFS網絡文件系統,一個基于Windows的NAS就橫空出世了。