跨平台存儲方案
A. 常用的存儲架構有
順序存儲方法它是把邏輯上相鄰的結點存儲在物理位置相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接關系來體現,由此得到的存儲表示稱為順序存儲結構。順序存儲結構是一種最基本的存儲表示方法,通常藉助於程序設計語言中的數組來實現。
鏈接存儲方法它不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關系是由附加的指針欄位表示的。由此得到的存儲表示稱為鏈式存儲結構,鏈式存儲結構通常藉助於程序設計語言中的指針類型來實現。
順序存儲和鏈接存儲的基本原理
順序存儲和鏈接存儲是數據的兩種最基本的存儲結構。
在順序存儲中,每個存儲空間含有所存元素本身的信息,元素之間的邏輯關系是通過數組下標位置簡單計算出來的線性表的順序存儲,若一個元素存儲在對應數組中的下標位置為i,則它的前驅元素在對應數組中的下標位置為i-1,它的後繼元素在對應數組中的下標位置為i+1。在鏈式存儲結構中,存儲結點不僅含有所存元素本身的信息,而且含有元素之間邏輯關系的信息。
數據的鏈式存儲結構可用鏈接表來表示。
其中data表示值域,用來存儲節點的數值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個指針域為其對應的後繼元素或前驅元素所在結點(以後簡稱為後繼結點或前驅結點)的存儲位置。通過結點的指針域(又稱為鏈域)可以訪問到對應的後繼結點或前驅結點,若一個結點中的某個指針域不需要指向其他結點,則令它的值為空(NULL)。
在數據的順序存儲中,由於每個元素的存儲位置都可以通過簡單計算得到,所以訪問元素的時間都相同;而在數據的鏈接存儲中,由於每個元素的存儲位置保存在它的前驅或後繼結點中,所以只有當訪問到其前驅結點或後繼結點後才能夠按指針訪問到,訪問任一元素的時間與該元素結點在鏈式存儲結構中的位置有關。
儲存器方面的儲存結構
儲存系統的層次結構為了解決存儲器速度與價格之間的矛盾,出現了存儲器的層次結構。
程序的局部性原理
在某一段時間內,CPU頻繁訪問某一局部的存儲器區域,而對此范圍外的地址則較少訪問的現象就是
程序的局部性原理。層次結構是基於程序的局部性原理的。對大量典型程序運行情況的統計分析得出的結論是:CPU對某些地址的訪問在短時間間隔內出現集中分布的傾向。這有利於對存儲器實現層次結構。
多級存儲體系的組成
目前,大多採用三級存儲結構。
即:Cache-主存-輔存,如下圖:
3、多級存儲系統的性能
考慮由Cache和主存構成的兩級存儲系統,其性能主要取決於Cache和貯存的存取周期以及訪問它們的
次數。(存取周期為: Tc,Tm ;訪問次數為: Nc,Nm)
(1)Cache的命中率 H= Nc / (Nc+Nm)
(2)CPU訪存的平均時間 Ta= H * Tc+ (1-H) Tm
Cache-主存系統的效率
e= Tc / Ta
=1/H+(1-H)Tm/Tc
根據統計分析:Cache的命中率可以達到90%~98%
當Cache的容量為:32KB時,命中率為86%
64KB時,命中率為92%
128KB時,命中率為95%
256KB時,命中率為98%
B. 什麼是跨平台
跨平台泛指程序語言、軟體或硬體設備可以在多種作業系統或不同硬體架構的電腦上運作。
廣義面言,一般的計算語言都可做到跨平台,開發商只需要提供各種平台下的Runtime/中間件環境即可。嚴格而言是指用某種計算機語言編制的程序只需要做小量的修改,編譯之後即可在另外一種平台下運行,此時並不提供Runtime/中間件環境。例如java是一種提供Runtime環境的跨平台解決方案,而C而是一種標准且嚴格的跨平台語言。
跨平台概念是軟體開發中一個重要的概念,即不依賴於操作系統,也不信賴硬體環境。一個操作系統下開發的應用,放到另一個操作系統下依然可以運行。相對而言如果某種計算機語言不用修改代碼即可做到高度跨平台,那麼此語言就越抽象,硬體控制力就越低,只適合開發高度抽象的模型系統。諸如java,delphi和易語言,都已做到了跨平台。它們將可以在多種系統下開發,運行和維護。
大部分電腦語言從絕對意義而言,都是跨平台的:因為都是以高級的、人類可讀的方式來對CPU發號指令,這樣也就沒必要依賴於任何作業系統。但如果要用系統的部件工具箱,來新建用戶圖形界面(GUI),就可能會用到開發員特定系統中的API函數或庫類。雖然C++是跨平台的,但Windows下用到Win32 API的C++程式,一般就不能在Unix機器上編譯。不同編譯器對語言規范的解釋也有所差異。這樣的話,在針對不同系統進行構建之前,程式就得加以考慮。
一些如Java這樣的語言,從一開始就意識到要在各個平台下運行,所以跨平台在其平台的本地語言環境中已經實現。例如,Java可以跨平台使用,正是由於Swing庫在許多平台下的實現。類似的,能進行跨平台的文件存取,是因為有各自平台下文件存取的庫。以此類推,各種跨平台問題,都需要各自的本地庫來解決。wxWidgets框架就是這樣的一個跨平台庫,根據不同的跨平台問題,提供了許多不同的解決方案;類似的庫有許多,可以根據不同語言的跨平台開發,而採用相應的庫。
針對每種作業系統、CPU,而提供並測試各自的編譯版本,這種做法的可行性很小;開源軟體則允許用戶自己來編譯目的碼(object code),這樣在跨平台方面更好一些。類似的,那些解釋型語言,或者需要虛擬機的語言,也更加符合跨平台的要求,因為用戶也要自己進行編譯。Sun公司的Java虛擬機Hotspot,只針對幾種而不是全部平台,提供編譯好的二進位文件。例如,Sun對於GNU/linux,只支持i386平台,但如果誰在PowerPC或者SPARC電腦上運行Linux,就只好自己編譯本地的機器碼(machinecode),或者使用第三方軟體,才能運行Java程式。
許多API(應用程式介面)依賴於平台。OpenGL可以看作是跨平台的,因為其不依賴於任何特定的作業系統、CPU構架或者某個牌子的圖形設備。特定平台的API可以在其他系統上作為兼容層而新建,例如WINE的庫,Windows程式就可以在UNIX系統上運行。
另外許多程式語言還有跨平台的擴展以及中間件,這樣程式設計師對於同樣的原始碼,只要進行一點小修改,就可以在不同平台下編譯/運行,例如Qt和wxWidgets。
支持多種作業系統的軟體
1. 資料庫管理系統(DBMS):
Mysql:Solaris、Linux、Windows、FreeBSD
Oracle:Solaris、Linux、Windows
2. 網站伺服器、應用程式伺服器:
Apache:Solaris、Linux、Windows、FreeBSD
Tomcat:Linux、Windows、FreeBSD
3. 網際網路瀏覽器:
Mozilla Firefox:Linux、FreeBSD、Solaris、AIX、Windows、
可在不同作業系統上進行軟體開發的程式語言
C語言、C++、Java
Perl、Tcl、Erlang
Python、Delphi+Kylix、REALbasic
開發java應用的跨平台,包含五方面的內容:
一、跨應用伺服器
二、跨資料庫
三、跨操作系統
四、跨瀏覽器
五、多語言支持
下面分別來說一下。
■跨應用伺服器
這一點,看起來好像有些多餘,java的口號之一不就是「一次編譯,到外運行」嘛,可實際經驗告訴我們,這僅僅是一個口號而已。實際中是「一次編譯,到處調試」。為什麼會這樣?從應用伺服器來說,各個產品或多或少都在標準的java規范之上進行了一些拓展,小規模的應用開發,多以tomcat為基準;大規模的應用,多以weblogic/websphere為基準。
那麼開發完成的應用,可否在所有的應用伺服器上正常部署呢?答案是否定的。在tomcat5上部署沒問題,在tomcat4上卻可能有問題;在tomcat5/4上沒問題,卻可能在resin/jetty/weblogic/websphere上有問題。在我的經歷中,在resin/jetty/weblogic為基準進行開發的應用,部署到tomcat上基本上沒什麼問題。但是以tomcat為基準的應用,部署到其他應用伺服器中,卻可能出現各種各樣的問題。這與tomcat本身的定位和開發方式有關,它更像是一個學術產品,而不是一個商業產品。
小型的應用,我偏好resin,它的速度、穩定性、兼容性、中文處理,都是非常不錯的。相比而言,以「純java、快速」著稱的jetty,就不太令人滿意。jetty的4/5/6各個版本中,對session的存放位置、web.xml的標准、struts的plugin的支持、log4j的處理,都各不相同。在最新的jetty6中,竟然會要命地「不能使用session.validate()」方法,一使用此方法之後,就無法再使用set/getAttribute了。
也曾經在將一個應用轉移到websphere5上時,費勁周折。這個應用跑在其他應用伺服器上都沒問題,但是一部署到ws5上,就無法正常載入struts的配置文件。本以為是struts配置文件寫得有問題,但即便把所有的action/form配置均去掉,只保留一個空的配置文件,也無法正常啟動。最後實在無法,只能亂碰運氣,考慮是否是struts的幾個jar包版本有問題,經檢查,發現應用中使用的是struts1.2的jar包,換成struts1.1的jar包,再啟動後就一切正常。這樣的問題,可真的是折磨人呢。
所以,我認為跨應用伺服器是很重要的。你不能告訴客戶,俺們的系統只能跑在tomcat下面,至於您花重金購買的weblogic/websphere,對不起,我們暫時還不支持。客戶會吐血的。
■跨資料庫
經常看到某大公司產品,要求必須使用oracle或者sqlserver資料庫,你想換個資料庫來部署?沒門,人家說了,我們的產品只支持這一種資料庫,你就老實的用吧。但對於客戶方來說,為了減少投資,並且保證內部系統盡可能使用同一種資料庫以減少維護成本(總不能請一個oracle DBA,再請一個sqlserver DBA吧?),總會希望新系統使用的資料庫是以前用過的吧。
現在有了hibernate,在此基礎上開發的應用,基本上是能滿足跨資料庫要求的,個人認為這是hibernate最大的亮點。但也要注意,在開發中盡可能考慮到不同資料庫的特性。諸如sqlserver的text/image欄位上不能查distinct,oracle內的各種對象名稱長度不得超過30等,盡量不要調用資料庫的內部特性(如存儲過程、視圖等)
■跨操作系統
這一點,貌似沒有什麼可說的,很少有開發出的系統只能部署在一種操作系統上的。不過有一點也要注意,如果系統中某些功能依賴於通過JNI來調用windows本地組件的話,比如列印、word/excel操作,或與只能運行在windows下的報表組件(如國內的數巨報表、如意報表)集成的話。
■跨瀏覽器
竊以為,如果只是做國內的應用,這一點倒不重要,就以IE為標准來開發也未嘗不可。
PS:完全支持IE也不是一件容易的事情,IE5/6本身就有不少的差異。
但如果產品本身想立足於世界,想與國外產品競爭,對瀏覽器的全面支持也必不可少。至少應該同時支持ie和firefox吧,如果對自身嚴格要求的話,我認為應以opera為標准,opera對html/css/javascript的標準是實現和支持得最好的瀏覽器。
■多語言支持
如果您的產品只想在中國賣,根本就不考慮世界市場,那這一條就pass好了。
Java程序跨平台需要注意什麼
使用Java語言編寫應用程序最大的優點在於「一次編譯,處處運行」,然而這並不是說所有的Java程序都具有跨平台的特性,事實上,相當一部分的Java程序是不能在別的操作系統上正確運行的,那麼如何才能編寫一個真正的跨平台的Java程序呢?下面是在編寫跨平台的Java程序是需要注意的一些事情:
1.編寫Java跨平台應用程序時,你可以選擇JDK1.0,1.1,1.2或支持它們的GUI開發工具如:Jbuilder,VisualAgeforJava等等,但是必須注意你的Java程序只能使用Java核心API包,如果要使用第三方的類庫包,則該類庫包也要由Java核心包開發完成,否則在發布你的程序的時候還得將支持該Java類庫包的JVM發布出去。也就是說,你的程序需要是100%純Java的。舉一個例子,VisualJ++就不是純Java的,由VisualJ++編寫的程序也就不具有平台無關性。
2.無論你使用的是JDK或其他開發工具,在編譯時都要打開所有的警告選項,這樣編譯器可以盡可能多的發現平台相關的語句,並給出警告。雖然不能保證沒有編譯時警告錯誤的程序一定是跨平台的,但含有警告錯誤的程序卻很有可能是非平台無關的。
3.在程序中使用任何一個方法的時候,要詳細察看文檔,確保你使用的方法不是在文檔中已經申明為過時的方法(Deprecatedmethod),也不是文檔中未標明的隱含方法(Undocumentedmethod)。
4.退出Java程序時盡量不要使用java.lang.System的exit方法。Exit方法可以終止JVM,從而終止程序,但如果同時運行了另一個Java程序,使用exit方法就會讓該程序也關閉,這顯然不是我們希望看到的情況。事實上要退出Java程序,可以使用destory()退出一個獨立運行的過程。對於多線程程序,必須要關閉各個非守護線程。只有在程序非正常退出時,才使用exit方法退出程序。
5.避免使用本地方法和本地代碼,盡可能自己編寫具有相應功能的Java類,改寫該方法。如果一定要使用該本地方法,可以編寫一個伺服器程序調用該方法,然後將現在要編寫的程序作為該伺服器程序的客戶程序,或者考慮CORBA(公共對象請求代理)程序結構。
6.Java中有一個類似於Delphi中的winexec的方法,java.lang.runtime類的exec方法,作為該方法本身是具有平台無關性的,但是給方法所調用的命令及命令參數卻是與平台相關的,因此,在編寫程序時要避免使用,如果一定要調用其他的程序的話,必須要讓用戶自己來設置該命令及其參數。比如說,在windows中可以調用notepad.exe程序,在linux中就要調用vi程序了。
7.程序設計中的所有的信息都要使用ASCII碼字元集,因為並不是所有的操作系統都支持Unicode字元集,這對於跨平台的Java中文軟體程序不能不說是一大噩耗。
8.在程序中不要硬性編碼與平台相關的任何常量,比如行分隔符,文件分隔符,路徑分隔符等等,這些常量在不同的平台上是不同的,比如文件分隔符,在UNIX和MAC中是「/」,在windows中是「\」,如果要使用這些常量,需要使用jdava.util.Properties類的getProperty方法,如java.util.Properties.getProperty(「file.separator」)可以獲得文件分隔符,getProperty(「line.separator」)返回行分隔符,getProperty(「path.separator」)返迴路徑分隔符。
9.在編寫跨平台的網路程序時,不要使用java.net.InetAddress類的getHostName方法得到主機名,因為不同的平台的主機名格式是不同的,最好使用getAddress得到格式相同的IP地址,另外,程序中所有的主機名都要換成IP地址,比如www.263.net就要換成相應的IP地址。
10.涉及文件操作的程序需要注意:不要在程序中硬性編碼文件路徑,理由和8中一樣,只是這一點特別重要,因此單獨提出。而且,不同平台對於文件名使用的字元及最大文件名長度的要求不同,編寫你的程序的時候要使用一般的ASCII碼字元作為文件的名字,而且不能與平台中已存在的程序同名,否則會造成沖突。
11.如果您寫的程序是GUI程序,在使用AWT組件時不能硬性設置組件的大小和位置而應該使用Java的布局管理器(layoutmanager)來設置和管理可視組件的大小和位置,否則有可能造成布局混亂。
12.由於不同的操作系統,不同的機器,系統支持的顏色和屏幕的大小和解析度都不同,如何獲得這些屬性呢?使用java.awt.Systemcolor類可以獲得需要的顏色,如該類的inactiveCaption就是窗口邊框中活動標題的背景顏色,menu則是菜單的背景顏色。使用java.awt.Toolkit的getScreenResolution可以以「象素每英寸」為單位顯示屏幕的解析度。該類的getScreenSize可以得到屏幕大小(英寸),loadSystemColors可以列出所有的系統顏色。
C. android 數據存儲的幾種方式
總體的來講,數據存儲方式有三種:一個是文件,一個是資料庫,另一個則是網路。其中文件和資料庫可能用的稍多一些,文件用起來較為方便,程序可以自己定義格式;資料庫用起稍煩鎖一些,但它有它的優點,比如在海量數據時性能優越,有查詢功能,可以加密,可以加鎖,可以跨應用,跨平台等等;網路,則用於比較重要的事情,比如科研,勘探,航空等實時採集到的數據需要馬上通過網路傳輸到數據處理中心進行存儲並進行處理。 對於Android平台來講,它的存儲方式也不外乎這幾種,按方式總體來分,也是文件,資料庫和網路。但從開發者的角度來講它可以分為以下五種方式: 1.SharedPreferences共享偏好 2.Internal Storage內部存儲空間 3.External Storage外部存儲空間 4.SQLite Database資料庫 5.Internet網路 這幾種方式各自有各自的優點和缺點,要根據不同的實際情況來選擇,而無法給出統一的標准。下面就各種方式談談它們的優缺點,以及最合適的使用情況: 1.Shared Preferences共享偏好 SharedPreferences是用來存儲一些Key/Value類似的成對的基本數據類型,注意,它只能存儲基本數據類型,也即int, long, boolean, String, float。事實上它完全相當於一個HashMap,唯一不同的就是HashMap中的Value可以是任何對象,而SharedPreferences中的值只能存儲基本數據類型(primitive types)。 對於它的使用方法,可以參考Android Developer Guide,這里不重復。 如此來看,最適合SharedPreferences的地方就是保存配置信息,因為很多配置信息都是Key/Value。事實上,在Android當中SharedPreferences使用最多的地方也是用來保存配置(Settings)信息,系統中的Settings中這樣,各個應用中的Settings也是這樣。並且,Android中為了方便的使用SharedPreferences保存配置信息,它來專門有PreferenceActivity用來封裝。也就是說如果你想在應用程序中創建配置(Settings),你可以直接使用PreferenceActivity和一些相關的專門為Preference封裝的組件,而不用再直接去創建,讀取和保存SharedPreference,Framework中的這些組件會為你做這些事。 再談談一些使用SharedPreference時的技巧,它只能保存基本數據類型,但假如我想保存一個數組,怎麼辦?可以把數據進行處理,把它轉化成一個String,取出的時候再還原就好了;再如,如想保存一個對象,怎麼辦,同樣,可以把對象序列化成為字元序列,或轉成String(Object.toString()),或是把它的HashCode(Object.hashCode())當成Value保存進去。 總之,SharedPreferences使用起來十分的方便,可以靈活應用,因為它簡單方便,所以能用它就盡量不要用文件或是資料庫。 1.Internal Storage內部存儲空間 所謂的內部存儲與外部存儲,是指是否是手機內置。手機內置的存儲空間,稱為內部存儲,它是手機一旦出廠就無法改變,它也是手機的硬體指標之一,通常來講手機內置存儲空間越大意味著手機價格會越貴(很多地方把它稱為手機內存,但我們做軟體的知道,這並不準確,內存是指手機運行時存儲程序,數據和指令的地方;這里應該是手機內部存儲的簡稱為內存,而並非嚴格意義上的內存)。 內部存儲空間十分有限,因而顯得可貴,所以我們要盡可能避免使用;另外,它也是系統本身和系統應用程序主要的數據存儲所在地,一旦內部存儲空間耗盡,手機也就無法使用了。所以對於內部存儲空間,我們要盡量避免使用。上面所談到的Shared Preferences和下面要談到的SQLite資料庫也都是存儲在內部存儲空間上的。 Android本身來講是一個Linux操作系統,所以它的內部存儲空間,對於應用程序和用戶來講就是「/data/data"目錄。它與其他的(外部的存儲)相比有著比較穩定,存儲方便,操作簡單,更加安全(因為可以控制訪問許可權)等優點。而它唯一的缺點就是它比較有限,比較可貴。 雖然,可以非常容易的知道程序本身的數據所在路徑,所有的應用程序的數據路徑都是「/data/data/app-package-name/」,所有的程序用到的數據,比如libs庫,SharedPreferences都是存放在這個路徑下面。但我們在使用的時候最好不要,或是千萬不要直接引用這個路徑。 使用內部存儲主要有二個方式,一個是文件操作,一個是文件夾操作。無論哪種方式,Context中都提供了相應的函數來支持,使用Context不但操作簡單方便,最重要的是Context會幫助我們管理這些文件,也可以方便幫助我們控制文件的訪問許可權。先來系統的說下Context中關於文件和文件夾操作的函數有哪些。 a. 創建一個文件,並打開成一個文件輸出流,需要提供一個String,作為文件名 1.FileOutputStream output = Context.openOutputFile(filename, Context.MODE_PRIVATE); 2.output.write(data);// use output to write whatever you like 3.output.close(); 1.FileOutputStream output = Context.openOutputFile(filename, Context.MODE_PRIVATE); output.write(data);// use output to write whatever you like output.close(); b. 同樣,想打開一個文件作為輸入的話,也是只需要提供文件名 1.FileInputStream input = Context.openInputFile(filename); 2.input.read(); 3.input.close(); 1.FileInputStream input = Context.openInputFile(filename); input.read(); input.close(); c. 列出所有的已創建的文件 1.String[] files = Context.fileList(); 2.for (String file : files) { 3. Log.e(TAG, "file is " + file); 4.} 1.String[] files = Context.fileList(); for (String file : files) { Log.e(TAG, "file is " + file); } d. 刪除文件,能創建就要能夠刪除,當然也會提供了刪除文件的介面,它也非常簡單,只需要提供文件名 1.if (Context.deleteFile(filename)) { 2. Log.e(TAG, "delete file " + filename + " sucessfully「); 3.} else { 4. Log.e(TAG, "failed to delete file " + filename); 5.} 1.if (Context.deleteFile(filename)) { Log.e(TAG, "delete file " + filename + " sucessfully「); } else { Log.e(TAG, "failed to delete file " + filename); } e. 獲取文件已創建文件的路徑,它返回一個文件對象用於操作路徑 1.File fileDir = Context.getFileDir(); 2.Log.e(TAG, "fileDir " + fileDir.getAbsolutePath(); 1.File fileDir = Context.getFileDir(); Log.e(TAG, "fileDir " + fileDir.getAbsolutePath(); f. 創建一個目錄,需要傳入目錄名稱,它返回 一個文件對象用到操作路徑 1.File workDir = Context.getDir(dirName, Context.MODE_PRIVATE); 2.Log.e(TAG, "workdir " + workDir.getAbsolutePath(); 1.File workDir = Context.getDir(dirName, Context.MODE_PRIVATE); Log.e(TAG, "workdir " + workDir.getAbsolutePath(); g. 以File對象方式查看所創建文件,需要傳入文件名,會返迴文件對象 1.File store = Context.openFileStreamPath(filename); 2.Log.e(TAG, "store " + store.length()); 1.File store = Context.openFileStreamPath(filename); Log.e(TAG, "store " + store.length()); h. 獲取Cache路徑,無需要傳入參數,返迴文件對象 1.File cachedir = Context.getCacheDir(); 2.Log.e(TAG, "cachedir " + cacheDir.getAbsolutePath()); 1.File cachedir = Context.getCacheDir(); Log.e(TAG, "cachedir " + cacheDir.getAbsolutePath()); 總結一下文件相關操作,可以得出以下三個特點: 1. 文件操作只需要向函數提供文件名,所以程序自己只需要維護文件名即可; 2. 不用自己去創建文件對象和輸入、輸出流,提供文件名就可以返回File對象或輸入輸出流 3. 對於路徑操作返回的都是文件對象。 如前所述,內部存儲空間有限,可貴,安全,穩定,所以應該用來保存比較重要的數據,比如用戶信息資料,口令秘碼等不需要與其他應用程序共享的數據。也可以用來創建臨時文件,但一定要注意及時刪除。另外,對於內部存儲還有一個非常重要的特點,那就是在應用程序被卸載時,應用程序在內部存儲空間的文件數據將全部被刪除。系統這樣做的原因很簡單,就是因為內部存儲很有限,它必須保證它的可用性,因為一旦添滿,系統將無法再正常工作。 1.External Storage外部存儲空間 再來談談手機外部存儲空間,與內部存儲空間相對,外部存儲空間是指手機出廠的時候不存在,用戶在使用時候可以自由添加的外部存儲介質比如TS卡,SD卡等快閃記憶體儲介質。這些快閃記憶體介質由最初的空間小價格貴,到現在的大容量價格便宜,所以幾乎每個支持外部存儲的手機上面都有大容量(大於等於2G)的快閃記憶體卡。 Android也是不例外,它完全支持外部存儲介質。其實更確切的說,它是要依賴於外部存儲卡的,因為對於Android系統,如果沒有外部存儲卡,很多的系統應用無法使用,比如多媒體相關的應用程序無法使用。雖然Android很依賴,但是外部存儲卡也有它自身的特點,它最大的優點就是存儲空間大,基本上你可無限制的使用,也不怎麼擔心去清除數據。就目前來看,很多程序都在使用外部存儲卡,但很少有程序去主動清理數據,所以無論你的SD卡有多大,它的可用空間卻越來越少。與內部存儲不同的是,當程序卸載時,它在外部存儲所創建的文件數據是不會被清除的。所以清理外部存儲空間的責任丟給了用戶自己,每隔一段時間就去查看下SD卡,發現無用數據立馬刪除。外部存儲的缺點就是不是很穩定,對於Android手機來講可以說,很不穩定,本身快閃記憶體介質就容易出問題,SD卡處於不能正常使用的狀態十分多。 先來說說外部存儲相關的使用方法和API: a. Check media availability檢查介質的可用性 如前所述,外部存儲介質的穩定性十分的差,所以在使用之前一定要先檢查它的可用性,如果可用再去用 view plain to clipboardprint? 1.final String state = Environment.getExternalStorageState(); 2.if (state.equals(Environment.MEDIA_MOUNTED) || state.equals(Environment.MEDIA_READ_ONLY)) {// sd card is ready to us } view plain to clipboardprint? 1.final String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED) || state.equals(Environment.MEDIA_READ_ONLY)) {// sd card is ready to us } final String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED) || state.equals(Environment.MEDIA_READ_ONLY)) {// sd card is ready to us } b. Get the directory獲取外部存儲卡的路徑 事實上,外部存儲卡的路徑是「/mnt/sdcard",所以你直接這樣寫去訪問也能訪問的到。鑒於可讀性和可移植性的考慮,建議這樣寫: view plain to clipboardprint? 1.File sdcardDir = Environment.getExternalStorageDirectory(); view plain to clipboardprint? 1.File sdcardDir = Environment.getExternalStorageDirectory(); File sdcardDir = Environment.getExternalStorageDirectory(); c. For API 8 or greater, there are some other useful APIs helping to manager files and directories. 如果你使用API 8(Android 2.2)或者更高,那麼SDK中又多了幾個操作外部存儲文件和路徑的介面,文檔中也建議開始者更加規范的使用SD卡。比如,創建相應的目錄去存儲相應的數據,Music,Picture,Video等。應用程序目錄也變成了"/Android/data/package-name/data"。具體的使用可以參考文檔,這里不重復。當然,就像編程規范一樣,這里只是規范,你完全可以不遵守它,但出於可讀性和可移植性,還是建議按照文檔建議的去做。 下面總結一下使用時應該注意的一些和外部存儲的特點: a. 外部存儲卡不是隨時想用就能夠用的,所以一定要記得在使用之前檢查它的可用性 b. 存儲在外部存儲卡上的數據是所有應用程序都可見,用戶也可見(使用FileManager),所以安全性不是很好,雖然文檔聲稱可以在外部存儲卡上寫程序私有數據,但貌似沒用,用FileManager仍然可以刪除或編輯文件(Market上面的FileManager功能都十分的強大,能讓用戶看到SD卡中的所有文件,和操作能看到的文件)。 c. Android手機支持把外部存儲卡Mount至PC做為U盤,當連接數據線時,這時SD卡變成了U盤連接到了另外的操作系統中。什麼意思,就是在Android當中雖然有的文件屬性(隱藏,私有等),到了PC上就不一定管用了,用戶在PC上可以隨意操作文件(這就是第二點中所提及的)。 d. 如果使用外部存儲卡保存數據,一定要額外做好異常處理:外部存儲卡不可用時把數據存入哪裡;可用的時候再怎麼同步數據(這是比較頭疼的地方,可行的做法就是當SD卡不可用時不準用戶寫數據,但這用戶體驗又不是很好,但如你所知,很多應用都這么干);你的數據被破壞了。當然常見的異常也要考慮,比如空間滿了,無法寫入,磁碟壞道等。 1.SQLite Database資料庫 Android對資料庫的支持很好,它本身集成了SQLite資料庫,每個應用都可以方便的使用它,或者更確切的說,Android完全依賴於SQLite資料庫,它所有的系統數據和用到的結構化數據都存儲在資料庫中。 它具有以下優點: a. 效率出眾,這是無可否認的 b. 十分適合存儲結構化數據 c. 方便在不同的Activity,甚至不同的應用之間傳遞數據 先前有一篇文章講到了不同Activity和不同應用之間傳遞數據的麻煩,特別是對於大型數據結構,因為Activity雖是Java對象,但去無法像使用其他類對象那樣去創建一個實例然後使用它,更無法給Activity加上Setters和Getters(雖然這樣做了沒有編譯錯誤)。比較好的解決方案就是把結構化數據寫入資料庫,然後在不同的Activity之間傳遞它們的Uri。 d. 由專門的ContentProvider來幫忙管理和維護資料庫 e. 可以方便的設置訪問許可權,私有還是都可見 f. 操作方便,使用標準的CRUDE語句,ContentResolver.query(), update(), delete() insert(),詳見ContentResolver g. 良好的可移植性和通用性,用標準的SQL語句就能實現CRUDE 對於它的使用方法可以去參考文檔,這里也說不清楚。 1.Internet網路 網路是比較不靠譜的一個,因為移動終端的網路穩定性,以及所產生的流量讓人傷不起,用戶更傷不起。但若是對於非常重要的實時數據,或是需要發送給遠端伺服器處理的,也可以考慮使用網路實時發送。這已經有先例了,Apple和Google就是這樣,iPhone設備和Android設備都會在用戶不知情的情況 下收集用戶的信息,然後又在用戶不知情的情況 下發送到Apple和Google的伺服器上,也就是所謂的「跟蹤門」。除此之外,智能手機(特別是Android和火熱的iPhone)上面的應用程序都會偷偷的在後台運行,收集用戶數據,然後再偷偷的發伺服器,直接傷害是用戶流量,請看先前的文章。 對比這幾種方式,可以總結下: 1. 簡單數據和配置信息,SharedPreference是首選; 2. 如果SharedPreferences不夠用,那麼就創建一個資料庫 3. 結構化數據,一定要創建資料庫,雖然這稍顯煩鎖,但是好處無窮 4. 文件就是用來存儲文件(也即非配置信息或結構化數據),如文本文件,二進制文件,PC文件,多媒體文件,下載的文件等等。 5. 盡量不要創建文件 6. 如果創建文件,如果是私密文件或是重要文件,就存儲在內部存儲,否則放到外部存儲 7. 不要收集用戶數據,更不要發到網路上,雖然你們也有很多無奈。用戶也無奈,也無辜,但更無助 平台為開發者准備了這么多的方式固然是一件好事,但我們要認清每一種的優點和缺點,根據實際情況選擇最合適的。還有一個原則就是最簡單原則,也就是說能用簡單的方式處理,就不要用復雜的方式。比如存儲幾個數據或簡單對象,用SharedPreference也能做到,何必還去寫個ContentProvider呢?
D. 網路存儲技術的網路存儲技術
直連式存儲(DAS):這是一種直接與主機系統相連接的存儲設備,如作為伺服器的計算機內部硬體驅動。到目前為止,DAS 仍是計算機系統中最常用的數據存儲方法。
DAS即直連方式存儲,英文全稱是Direct Attached Storage。中文翻譯成「直接附加存儲」。顧名思義,在這種方式中,存儲設備是通過電纜(通常是SCSI介面電纜)直接到伺服器的。I/O(輸入/輸出)請求直接發送到存儲設備。DAS,也可稱為SAS(Server-Attached Storage,伺服器附加存儲)。它依賴於伺服器,其本身是硬體的堆疊,不帶有任何存儲操作系統。 1) 伺服器在地理分布上很分散,通過SAN(存儲區域網路)或NAS(網路直接存儲)在它們之間進行互連非常困難時(商店或銀行的分支便是一個典型的例子);
2) 存儲系統必須被直接連接到應用伺服器(如Microsoft Cluster Server或某些資料庫使用的「原始分區」)上時;
3) 包括許多資料庫應用和應用伺服器在內的應用,它們需要直接連接到存儲器上,群件應用和一些郵件服務也包括在內。
典型DAS結構如圖所示:
對於多個伺服器或多台PC的環境,使用DAS方式設備的初始費用可能比較低,可是這種連接方式下,每台PC或伺服器單獨擁有自己的存儲磁碟,容量的再分配困難;對於整個環境下的存儲系統管理,工作煩瑣而重復,沒有集中管理解決方案。所以整體的擁有成本(TCO)較高。目前DAS基本被NAS所代替。下面是DAS與NAS的比較。
網路存儲設備(NAS):NAS 是一種採用直接與網路介質相連的特殊設備實現數據存儲的機制。由於這些設備都分配有 IP 地址,所以客戶機通過充當數據網關的伺服器可以對其進行存取訪問,甚至在某些情況下,不需要任何中間介質客戶機也可以直接訪問這些設備。 同普通電腦類似,NAS產品也都具有自己的處理器(CPU)系統,來協調控制整個系統的正常運行。其採用的處理器也常常與台式機或伺服器的CPU大體相同。目前主要有以下幾類。
(1)Intel系列處理器
(4)AMD系列處理器
(5)PA-RISC型處理器
(6)PowerPC處理器
(7)MIPS處理器
一般針對中小型公司使用NAS產品採用AMD的處理器或Intel PIII/PIV等處理器。而大規模應用的NAS產品則使用Intel Xeon處理器、或者RISC型處理器等。但是也不能一概而論,視具體應用和廠商規劃而定。 預制操作系統是指NAS產品出廠時隨機帶的操作系統或者管理軟體。目前NAS產品一般帶有以下幾種系統軟體。
精簡的WINDOWS2000系統
這類系統只是保留了WINDOWS2000 SERVER系統核心網路中最重要的部分,能夠驅動NAS產品正常工作。我們可以把它理解為WINDOWS2000的「精簡版」。
FreeBSD嵌入式系統
FreeBSD是類UNIX系統,在網路應用方面具備極其優異的性能。
Linux嵌入式系統
Linux系統類似於UNIX操組系統,但相比之下具有界面友好、內核升級迅速等特點。常常用來作為電器等產品的嵌入式控制系統。 網路管理,是指網路管理員通過網路管理程序對網路上的資源進行集中化管理的操作,包括配置管理、性能和記賬管理、問題管理、操作管理和變化管理等。一台設備所支持的管理程度反映了該設備的可管理性及可操作性。
一般的網路滿足SNMP MIB I / MIB II統計管理功能。常見的網路管理方式有以下幾種:
(1)SNMP管理技術
(2)RMON管理技術
(3)基於WEB的網路管理
SNMP是英文「Simple Network Management Protocol」的縮寫,中文意思是「簡單網路管理協議」。SNMP首先是由Internet工程任務組織(Internet Engineering Task Force)(IETF)的研究小組為了解決Internet上的路由器管理問題而提出的。
SNMP是目前最常用的環境管理協議。SNMP被設計成與協議無關,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的傳輸協議上被使用。SNMP是一系列協議組和規范(見下表),它們提供了一種從網路上的設備中收集網路管理信息的方法。SNMP也為設備向網路管理工作站報告問題和錯誤提供了一種方法。
目前,幾乎所有的網路設備生產廠家都實現了對SNMP的支持。領導潮流的SNMP是一個從網路上的設備收集管理信息的公用通信協議。設備的管理者收集這些信息並記錄在管理信息庫(MIB)中。這些信息報告設備的特性、數據吞吐量、通信超載和錯誤等。MIB有公共的格式,所以來自多個廠商的SNMP管理工具可以收集MIB信息,在管理控制台上呈現給系統管理員。
通過將SNMP嵌入數據通信設備,如交換機或集線器中,就可以從一個中心站管理這些設備,並以圖形方式查看信息。目前可獲取的很多管理應用程序通常可在大多數當前使用的操作系統下運行,如Windows3.11、Windows95 、Windows NT和不同版本UNIX的等。
一個被管理的設備有一個管理代理,它負責向管理站請求信息和動作,代理還可以藉助於陷阱為管理站提供站動提供的信息,因此,一些關鍵的網路設備(如集線器、路由器、交換機等)提供這一管理代理,又稱SNMP代理,以便通過SNMP管理站進行管理。 網路協議即網路中(包括互聯網)傳遞、管理信息的一些規范。如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通信需要共同遵守一定的規則,這些規則就稱為網路協議。
一台計算機只有在遵守網路協議的前提下,才能在網路上與其他計算機進行正常的通信。網路協議通常被分為幾個層次,每層完成自己單獨的功能。通信雙方只有在共同的層次間才能相互聯系。常見的協議有:TCP/IP協議、IPX/SPX協議、NetBEUI協議等。在區域網中用得的比較多的是IPX/SPX.。用戶如果訪問Internet,則必須在網路協議中添加TCP/IP協議。
TCP/IP是「transmission Control Protocol/Internet Protocol」的簡寫,中文譯名為傳輸控制協議/互聯網路協議)協議, TCP/IP(傳輸控制協議/網間協議)是一種網路通信協議,它規范了網路上的所有通信設備,尤其是一個主機與另一個主機之間的數據往來格式以及傳送方式。TCP/IP是INTERNET的基礎協議,也是一種電腦數據打包和定址的標准方法。在數據傳送中,可以形象地理解為有兩個信封,TCP和IP就像是信封,要傳遞的信息被劃分成若干段,每一段塞入一個TCP信封,並在該信封面上記錄有分段號的信息,再將TCP信封塞入IP大信封,發送上網。在接受端,一個TCP軟體包收集信封,抽出數據,按發送前的順序還原,並加以校驗,若發現差錯,TCP將會要求重發。因此,TCP/IP在INTERNET中幾乎可以無差錯地傳送數據。 對普通用戶來說,並不需要了解網路協議的整個結構,僅需了解IP的地址格式,即可與世界各地進行網路通信。
IPX/SPX是基於施樂的XEROX』S Network System(XNS)協議,而SPX是基於施樂的XEROX』S SPP(Sequenced Packet Protocol:順序包協議)協議,它們都是由novell公司開發出來應用於區域網的一種高速協議。它和TCP/IP的一個顯著不同就是它不使用ip地址,而是使用網卡的物理地址即(MAC)地址。在實際使用中,它基本不需要什麼設置,裝上就可以使用了。由於其在網路普及初期發揮了巨大的作用,所以得到了很多廠商的支持,包括microsoft等,到現在很多軟體和硬體也均支持這種協議。
NetBEUI即NetBios Enhanced User Interface ,或NetBios增強用戶介面。它是NetBIOS協議的增強版本,曾被許多操作系統採用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI協議在許多情形下很有用,是WINDOWS98之前的操作系統的預設協議。總之NetBEUI協議是一種短小精悍、通信效率高的廣播型協議,安裝後不需要進行設置,特別適合於在「網路鄰居」傳送數據。所以建議除了TCP/IP協議之外,區域網的計算機最好也安上NetBEUI協議。另外還有一點要注意,如果一台只裝了TCP/IP協議的WINDOWS98機器要想加入到WINNT域,也必須安裝NetBEUI協議。 網路文件系統是基於網路的分布式文件系統,其文件系統樹的各節點可以存在於不同的聯網計算機甚至不同的系統平台上,可以用來提供跨平台的信息存儲與共享。
當今最主要的兩大網路文件系統是Sun提出的NFS(Network File System)以及由微軟、EMC和NetApp提出的CIFS(Common Internet File System),前者主要用於各種Unix平台,後者則主要用於Windows平台,我們熟悉的「網上鄰居」的文件共享方式就是基於CIFS系統的。其他著名的網路文件系統還有Novell公司的NCP(網路控制協議)、Apple公司的AFP以及卡內基-梅隆大學的Coda等,NAS的主要功能之一便是通過各種網路文件系統提供存儲服務。 IBM Tivoli是IBM公司推出的備份軟體,與Veritas的NetBackup和Legato的NetWorker相比,Tivoli Storage Manager更多的適用於IBM主機為主的系統平台,其強大的網路備份功能可以勝任大規模的海量存儲系統的備份需要。
此外,CA公司原來的備份軟體ARCServe,在低端市場具有相當廣泛的影響力。其新一代備份產品--BrightStor,定位直指中高端市場,也具有不錯的性能。
選購備份軟體時,應該根據不同的用戶需要選擇合適的產品,理想的網路備份軟體系統應該具備以下功能: 網站瀏覽器支持是指能否夠通過WEB(就是WWW,俗稱互聯網)手段對NAS產品進行管理,以及管理時使用的瀏覽器類型。絕大部分的NAS產品都支持WEB管理,這樣的好處是管理方便,用戶在任何地方只要能夠上網就可以輕松的管理NAS設備。
目前NAS產品支持的常用瀏覽器有微軟的IE(Internet Explorer)瀏覽器以及網景公司的Netscape瀏覽器。 網路安全是指網路系統的硬體、軟體及其系統中的數據受到保護,不受偶然的或者惡意的原因而遭到破壞、更改、泄露,系統連續可靠正常地運行,網路服務不中斷。
網路安全實際上包括兩部分:網路的安全和主機系統的安全。網路安全主要通過設置防火牆來實現,也可以考慮在路由器上設置一些數據包過濾的方法防止來自Internet上的黑客的攻擊。至於系統的安全則需根據不同的操作系統來修改相關的系統文件,合理設置用戶許可權和文件屬性。
NAS產品的網路安全應具有以下四個方面的特徵:
保密性:信息不泄露給非授權用戶、實體或過程,或供其利用的特性。
完整性: 數據未經授權不能進行改變的特性。即信息在存儲或傳輸過程中保持不被修
改、不被破壞和丟失的特性。
可用性:可被授權實體訪問並按需求使用的特性。即當需要時能否存取所需的信息。例
如網路環境下拒絕服務、破壞網路和有關系統的正常運行等都屬於對可用性的攻擊;
可控性:對信息的傳播及內容具有控制能力。 NAS是英文「Network Attached Storage」的縮寫, 中文意思是「網路附加存儲」。按字面簡單說就是連接在網路上, 具備資料存儲功能的裝置,因此也稱為「網路存儲器」或者「網路磁碟陣列」。
從結構上講,NAS是功能單一的精簡型電腦,因此在架構上不像個人電腦那麼復雜,在外觀上就像家電產品,只需電源與簡單的控制鈕, 結構圖如下:
NAS是一種專業的網路文件存儲及文件備份設備,它是基於LAN(區域網)的,按照TCP/IP協議進行通信,以文件的I/O(輸入/輸出)方式進行數據傳輸。在LAN環境下,NAS已經完全可以實現異構平台之間的數據級共享,比如NT、UNIX等平台的共享。
一個NAS系統包括處理器,文件服務管理模塊和多個硬碟驅動器(用於數據的存儲)。 NAS 可以應用在任何的網路環境當中。主伺服器和客戶端可以非常方便地在NAS上存取任意格式的文件,包括SMB格式(Windows)NFS格式(Unix, Linux)和CIFS(Common Internet File System)格式等等。典型的NAS的網路結構如下圖所示:
存儲網路(SAN):SAN 是指存儲設備相互連接且與一台伺服器或一個伺服器群相連的網路。其中的伺服器用作 SAN 的接入點。在有些配置中,SAN 也與網路相連。SAN 中將特殊交換機當作連接設備。它們看起來很像常規的乙太網絡交換機,是 SAN 中的連通點。SAN 使得在各自網路上實現相互通信成為可能,同時並帶來了很多有利條件。
SAN英文全稱:Storage Area Network,即存儲區域網路。它是一種通過光纖集線器、光纖路由器、光纖交換機等連接設備將磁碟陣列、磁帶等存儲設備與相關伺服器連接起來的高速專用子網。
SAN由三個基本的組件構成:介面(如SCSI、光纖通道、ESCON等)、連接設備(交換設備、網關、路由器、集線器等)和通信控制協議(如IP和SCSI等)。這三個組件再加上附加的存儲設備和獨立的SAN伺服器,就構成一個SAN系統。SAN提供一個專用的、高可靠性的基於光通道的存儲網路,SAN允許獨立地增加它們的存儲容量,也使得管理及集中控制(特別是對於全部存儲設備都集群在一起的時候)更加簡化。而且,光纖介面提供了10 km的連接長度,這使得物理上分離的遠距離存儲變得更容易.
E. RAID是什麼啊
什麼是RAID?
如何增加磁碟的存取速度,如何防止數據因磁碟的故障而丟失及如何有效的利用磁碟空間,一直是電腦專業人員和用戶的困擾,而大容量磁碟的價格非常昂貴,對用戶形成很大的負擔。磁碟陣列技術的產生一舉解決了這些問題。
過去十幾年來,CPU的處理速度增加了五十多倍,內存的存取速度也大幅增加,而數據儲存裝置--主要是磁碟--的存取速度只增加了三、四倍,形成電腦系統的瓶頸,拉低了電腦系統的整體性能,若不能有效的提升磁碟的存取速度,CPU、內存及磁碟間的不平衡將使CPU及內存的改進形成浪費。
磁碟陣列中針對不同的應用使用的不同技術,稱為RAID 等級。RAID是Rendant Array of Inexpensive Disks的縮寫,而每一等級代表一種技術。目前業界最經常應用的RAID等級是RAID 0~RAID 5。這個等級並不代表技術的高低,RAID 5並不高於RAID 3。至於要選擇那一種RAID 等級的產品,純視用戶的操作環境及應用而定,與等級的高低沒有必然的關系。
RAID級別的劃分?
目前業界最經常應用的RAID等級是RAID 0~RAID 5。下面將簡單描述一些常用的RAID等級,澄清一些應用的問題:
RAID 0(Striped Disk Array without Fault Tolerance)
RAID 0是把所有的硬碟並聯起來成為一個大的硬碟組。其容量為所有屬於這個組的硬碟的總和。所有數據的存取均以並行分割方式進行。由於所有存取的數據均以平衡方式存取到整組硬碟里,存取的速度非常快。越是多硬碟數量的RAID 0陣列其存取的速度就越快。容量效率方面也是所有RAID格式中最高的,達到100%。但RAID 0有一個致命的缺點–就是它跟普通硬碟一樣沒有一點的冗餘能力。一旦有一個硬碟失效時,所有的數據將盡失。沒法重組回來!一般來講,RAID 0隻用於一些已有原數據載體的多媒體文件的高速讀取環境。如視頻點播系統的數據共享部分等。RAID 0隻需要兩個或以上的硬碟便能組成。如下圖所示:
RAID 1(Mirroring)
RAID 1是硬碟鏡像備份操作。由兩個硬碟所組成。其中一個是主硬碟而另外一個是鏡像硬碟。主硬碟的 數據會不停的被鏡像到另外一個鏡像硬碟上。由於所有主硬碟的數據會不停地鏡像到另外一個硬碟上, 故RAID 1具有很高的冗餘能力。達到最高的100%。可是正由於這個鏡像做法不是以演算法操作,故它的容量效率非常的低,只有50%。RAID 1隻支持兩個硬碟操作。容量非常有限,故一般只用於操作系統中。如下圖所示:
RAID 0+1(Mirroring and Striping)
RAID 0+1即由兩組RAID 0的硬碟作RAID 1的鏡像容錯。雖然RAID 0+1具備有RAID 1的容錯能力和RAID 0的容量性能。但RAID 0+1的容量效率還是與RAID 1一樣只有50%,故同樣地沒有被普及使用。如下圖所示:
RAID 3(Striping with dedicated parity)
RAID 3在安全方面以奇偶校驗(parity check)做錯誤校正及檢測,只需要一個額外的校檢磁碟(parity disk)。奇偶校驗值的計算是以各個磁碟的相對應位作XOR的邏輯運算,然後將結果寫入奇偶校驗磁碟, 任何數據的修改都要做奇偶校驗計算。如某一磁碟故障,換上新的磁碟後,整個磁碟陣列(包括奇偶校驗 磁碟)需重新計算一次,將故障磁碟的數據恢復並寫入新磁碟中,如奇偶校驗磁碟故障,則重新計算奇偶 校驗值,以達容錯的要求。如下圖所示:
RAID 5(Striping with distributed parity)
RAID 5也是一種具容錯能力的RAID 操作方式,但與RAID 3不一樣的是RAID 5的容錯方式不應用專用容錯硬碟,容錯信息是平均的分布到所有硬碟上。當陣列中有一個硬碟失效,磁碟陣列可以從其他的幾個硬碟的對應數據中算出已掉失的數據。由於我們需要保證失去的信息可以從另外的幾個硬碟中算出來,我們就需要在一定容量的基礎上多用一個硬碟以保證其他的成員硬碟可以無誤地重組失去的數據。其總容量為(N-1)x最低容量硬碟的容量。從容量效率來講,RAID 5同樣地消耗了一個硬碟的容量,當有一個硬碟失效時,失效硬碟的數據可以從其他硬碟的容錯信息中重建出來,但如果有兩個硬碟同時失效的話,所有數據將盡失。如下圖所示:
RAID級別的對比
NAS的概念
網路存儲伺服器NAS(Network Attached Storage),是一個專用為提供高性能、低擁有成本和高可靠性的數據保存和傳送產品。NAS設備是為提供一套安全,穩固的文件和數據保存,容易使用和管理而設計,其定義為特殊的獨立的專用數據存儲伺服器,內嵌系統軟體,可以提供 NFS、SMB/CIFS 文件共享。NAS是基於IP協議的文件級數據存儲,支持現有的網路技術,比如乙太網、FDDI等。NAS設備完全以數據為中心,將存儲設備與伺服器徹底分離,集中管理數據,從而有效釋放帶寬,大大提高了網路整體性 能,也可有效降低總擁有成本,保護用戶投資。把文件存放在同一個伺服器里讓不同的電腦用戶共享和集合網路里不同種類的電腦正是NAS網路存儲的主要功能。正因為NAS網路存儲系統應用開放的,工業標準的協議,不同類型的電腦用戶運行不同的操作系統可以實現對同一個文件的訪問。所以已經不再在意到底是Windows 用戶或UNIX用戶。他們同樣可以安全地和可靠地使用NAS網路存儲系統中的數據。
NAS的特點
NAS以其流暢的機構設計,具有突出的性能:
·移除伺服器 I/O 瓶頸:
NAS是專門針對文件級數據存儲應用而設計的,將存儲設備與伺服器完全分離,從而將伺服器端數據 I/O瓶頸徹底消除。伺服器不用再承擔向用戶傳送數據的任務,更專注於網路中的其它應用,也提高了 網路的整體性能。
·簡便實現 NT與UNIX下的文件共享:
NAS支持標準的網路文件協議,可以提供完全跨平台文件混合存儲功能。不同操作系統下的用戶均可將數據存儲一台NAS設備中,從而大大節省存儲空間,減少資源浪費。
·簡便的設備安裝、管理與維護:
NAS設備提供了最簡便快捷的安裝過程,經過簡單的調試就可以流暢應用。一般基於圖形界面的管理系 統可方便進行設備的掌控。同樣,網路管理員不用分別對設備進行管理,集中化的數據存儲與管理, 節省了大量的人力物力。
·按需增容,方便容量規劃:
NAS設備可以提供在線擴容能力,大大方便了網路管理員的容量設計。即使應付無法預見的未來存儲容 量增長,也顯得異常輕松自如。而且,這種數據容量擴充的時候,不用停頓整個網路的服務,這將極大的減少因為停機造成的成本浪費。
·高可靠性:
除了剛才我們提到的因為移除伺服器端I/O瓶頸而大大提高數據可用性外,NAS設備還採用多種方式提高數據的可用性、可靠性,比如RAID技術的採用、冗餘部件(電源、風扇等)的採用以及容錯系統的設計等,當然對於不同的設備,可能也會採用其他更高性能的方式或解決方案。
·降低總擁有成本:
NAS有一個最吸引用戶的地方,就是具有極低的總擁有成本.
SAN的概念
SAN(Storage Area Network,存儲區域網),被定義為一個共用的高速專用存儲網路,存儲設備集中在伺服器的後端,因此SAN是專用的高速光纖網路。架構一個真正的SAN,需要接專用的光纖交換機和集線器。存儲區域網路是網路體系結構中一種相對新的概念,也是鏈接伺服器和獨立於工作網路的在線存儲設備的網路。雖然,網路依然在發展過程中,但最重要的 SAN 技術似乎是用於 SCSI 匯流排連接的光纖通道改進功能。
SAN的優勢
SAN的優勢可以表現在一下幾個方面:
·高數據傳輸速度:
以光纖為介面的存儲網路SAN提供了一個高擴展性、高性能的網路存儲機構。光纖交換機、光纖存儲陣列 同時提供高性能和更大的伺服器擴展空間,這是以SCSI為基礎的系統所缺乏的。同樣,為企業今後的應用提供了一個超強的可擴展性。
·加強存儲管理:
SAN 存儲網路各組成部分的數據不再在乙太網絡上流通從而大大提高乙太網絡的性能。正由於存儲設備與 伺服器完全分離,用戶獲得一個與伺服器分開的存儲管理理念。復制、備份、恢復數據趨向和安全的管理 可以中央的控制和管理手段進行。加上把不同的存儲池 (Storage Pools)以網路方式連接,企業可以以任 何他們需要的方式訪問他們的數據,並獲得更高的數據完整性。
·加強備份/還原能力的可用性:
SAN的高可用性是基於它對災難恢復,在線備份能力和對冗餘存儲系統和數據的時效切換能力而來。
·同種伺服器的整合:
在一個SAN系統中,伺服器全連接到一個數據網路。全面增加對一個企業共有存儲陣列的連接,高效率和 經濟的存儲分配可以通過聚合的和高磁碟使用率中獲得。
綜合SAN的優勢,它在高性能數據備份/恢復、集中化管理數據及遠程數據保護領域得到廣泛的應用。
SAN與NAS的比較
SAN和NAS是目前最受人矚目的兩種數據存儲方式,對兩種數據方式的爭論也在一直進行著,即使繼續發展其他的數據存儲方式,也或多或少的和這兩種方式存在聯系。NAS和SAN有一個共同的特點,就是實現了數據的集中存儲與集中管理,但相對於一個存儲池來講,SAN和NAS還是有很大差別的。NAS是獨立的文件伺服器,存儲操作系統不停留在通用伺服器端,因此可以實現同一存儲池中數據的獨享與共享,而SAN中的數據是基於塊級的傳輸,文件系統仍在相應的伺服器上,因此對於一個混合的存儲池來講,數據仍是獨立存在的,或者說是伺服器在獨享存儲池中的一部分空間。這兩個存儲方案的最大分別是在於他們的訪問方法。SAN存儲網路系統是以塊(Block)級的方式操作而NAS網路存儲系統是以文件(File)級的方式表達。這意味著NAS系統對於文件級的服務有著更高效和快速的性能,而應用數據塊(Block)的資料庫應用和大數據塊(Block)的I/O操作則以SAN為優先。基於SAN和NAS的很大不同,很多人將NAS和SAN絕對的對立起來,就目前的發展觀點來看,這一絕對的對立是不能被市場接受的,相反更多的數據存儲解決方案趨向於將NAS和SAN進行融合,這是因為:
·一些分散式的應用和用戶要求訪問相同的數據
·對提供更高的性能,高可靠性和更低的擁有成本的專有功能系統的高增長要求
·以成熟和習慣的網路標准包括TCP/IP, NFS和CIFS為基礎的操作
·一個獲得以應用為基礎而更具商業競爭力的解決方案慾望
·一個全面降低管理成本和復雜性的需求
·一個不需要增加任何人員的高擴展存儲系統
·一套可以通過重構劃的系統以維持目前擁有的硬體和管理人員的價值
由於在一個位置融合了所有存儲系統,用戶可以從管理效率、使用率和可靠性的全面提高中獲得更大的好處。SAN已經成為一個非常流行的存儲集中方案,因為光纖通道能提供非常龐大的設備連接數量,連接容易和存儲設備與伺服器之間的長距離連接能力。同樣地,這些優點在NAS系統中也能體驗出來。一套會聚SAN和NAS的解決方案全面獲得應用光纖通道的能力,從而讓用戶獲得更大的擴展性,遠程存儲和高性能等優點。同樣這種存儲解決方案全面提供一套在以塊(Block)和文件(File)I/O為基礎的高效率平衡功能從而全面增強數據的可用性。應用光纖通道的SAN和NAS,整個存儲方案提供對主機的多層面的存儲連接、高性能、高價值、高可用和容易維護等優點,全由一個網路結構提供。
-----------------
RAID是英文Rendant Array of Inexpensive Disks的縮寫,中文簡稱為廉價磁碟冗餘陣列。RAID就是一種由多塊硬碟構成的冗餘陣列。
雖然RAID包含多塊硬碟,但是在操作系統下是作為一個獨立的大型存儲設備出現。利用RAID技術於存儲系統的好處主要有以下三種:
1. 通過把多個磁碟組織在一起作為一個邏輯卷提供磁碟跨越功能
2. 通過把數據分成多個數據塊(block)並行寫入/讀出多個磁碟以提高訪問磁碟的速度
3. 通過鏡像或校驗操作提供容錯能力
最初開發RAID的主要目的是節省成本,當時幾塊小容量硬碟的價格總和要低於大容量的硬碟。目前來看RAID在節省成本方面的作用並不明顯,但是RAID可以充分發揮出多塊硬碟的優勢,實現遠遠超出任何一塊單獨硬碟的速度和吞吐量。除了性能上的提高之外,RAID還可以提供良好的容錯能力,在任何一塊硬碟出現問題的情況下都可以繼續工作,不會受到損壞硬碟的影響。
RAID技術分為幾種不同的等級,分別可以提供不同的速度,安全性和性價比。根據實際情況選擇適當的RAID級別可以滿足用戶對存儲系統可用性、性能和容量的要求。常用的RAID級別有以下幾種:NRAID,JbOD,RAID0,RAID1,RAID0+1,RAID3,RAID5等。目前經常使用的是RAID5和RAID(0+1)。
F. 什麼是NAS如何計算
NAS是network attached storage 的簡稱,中文稱為網路附加存儲。再nas存儲結構中,存儲系統不再通過i/0匯流排附屬某個特定的伺服器或客戶機,而是直接通過網路介面與網路直接連接,由用戶通過網路訪問。
nas實際上是一個帶有瘦伺服器(thin server)的存儲設備,其作用類似於一個專用的文件伺服器。這種專用存儲伺服器不同於傳統的通用伺服器,它去掉了通用的伺服器原有的不適用的大多數計算功能,而僅僅提供文件系統功能,用於存儲服務,大大降低了存儲設備的成本。這種專用存儲伺服器不同於傳統的通用伺服器,它去掉了通用伺服器原有的不適用的大多數計算功能,而僅僅提供文件系統功能,用於存儲服務,大大降低了存儲設備的成本。為方便存儲到網路之間以最有效的方式發送數據,專門優化了系統硬軟體體系結構,多線程、多任務的網路操作系統內核特別適合於處理來自網路的i/o請求,不僅響應速度快,而且數據傳輸速率也很高。
與傳統以伺服器為中心的存儲系統相比,數據不再通過伺服器內存轉發(這回引起額外延遲和阻塞),直接再客戶機和存儲設備間傳送(即所謂第三方傳送),伺服器僅起控制管理的作用,因而具有更快的相應速度和更高的數據帶寬。另外,對伺服器的要求降低,可大大降低伺服器成本,這樣就有利於高性能存儲系統在更光的范圍內普及應用。
它具有較好的協議獨立性,支持unix、netware、windows nt、os/2或intranet web的數據訪問,客戶端也不需要任何專用的軟體,安裝簡易,甚至可以充當其它機器的網路驅動器,可以方便的利用現有的管理工具進行管理。 與傳統的通用伺服器不同,nas專用伺服器能在不增加復雜度,管理開銷,降低可靠性的基礎上,使網路的存儲容量增加,具有非常好的可擴展(scalability)。由於不需要伺服器提供更多的硬體及服務,使伺服器的可靠性和i/o性能大大提高,能充分利用可得到的10m~100mb網路帶寬,有較大的數據吞吐量。 nas可以通過集線器(hub)或交換機tch)方便地接入到用戶網路上,是一種即插即用的網路設備。為用戶提供了易於安裝、易於使用和管理、可靠性高和可擴展性好的網路存儲解決方案。 nas使文件訪問操作更為快捷,並且易於向基礎設施增加文件存儲容量。因為nas關注的是文件服務而不是實際文件系統的執行情況,所以nas設備經常是自包含的,而且相當易於部署。 nas設備與客戶機之間主要是進行數據傳輸。今天在lan/wan上傳輸的大量數據被分成許多小的數據塊。傳輸的處理過程需要佔用處理器資源來中斷和重新訪問數據流。如果數據包的處理佔用太多的處理器資源,則在同一伺服器上運行的應用程序會受到影響。由於網路擁堵影響nas的性能,所以,其性能局限性之一是網路傳輸數據的能力。此外, nas存儲的可擴展性也受到設備大小的限制。增加另一台設備非常容易,但是要像訪問一台機器上的數據那樣訪問網路環境中的內容並不容易,因為nas設備通常具有獨特的網路標識符。由於上述這些限制,nas環境中的數據備份不是集中化的,因此僅限於使用直接連接設備(如專用磁帶機或磁帶庫)或者基於網路的策略,在該策略中,設備上的數據通過企業或專用lan進行備份。 與san不同,nas是部件級的存儲方法。nas將存儲設備通過標準的網路拓撲結構連接到一群計算機上,所以nas在適用性方面具有不少優勢。首先,nas可以無需伺服器直接上網,不依賴通用的操作系統,而是採用一個面向用戶設計的、專門用於數據存儲的簡化操作系統,內置了與網路連接所需的協議,因此使整個系統的管理和設置較為簡單,其次nas是真正即插即用的產品,並且物理位置靈活,可放置在工作組內,也可放在其他地點與網路連接。 nas沒有解決好的一個關鍵性問題,是其在備份過程中的帶寬消耗,網路帶寬要同時滿足存儲和正常的數據訪問。現在,一個比較一致的看法是:nas可以很經濟地解決存儲容量不足的問題,但難以獲得滿意的性能,對於關鍵事務應用而言,它必須使用專用的寬頻網段; 因此,如果公司的發展將需要大量的nas設備或是網路帶寬需求超過千兆乙太網,就應該考慮最高端的存儲解決方案san。不過,從適用性和tco的角度出發,nas依然應該是國內多數企業的首選結構。 nas分類 電器型伺服器電器型伺服器是nas系列設備中最低端的產品。與本文中的其他存儲方案不同,電器型伺服器不是專門附加的存儲設備。它們為網路提供了一個存儲的位置,但是由於沒有冗餘的以及和高性能的組件,它們相對比較便宜。如果你十分注重高可靠性或一流的性能(而且你願意為此多花一些成本),還是應當考慮nas類的更高端產品。
nas的特點:
1)低tco(total cost of ownership總擁有成本);
2)擴充性;
3)跨平台;
4)高可用性;
5)高速度;
6)方便的安裝、維護、使用。
G. XSKY星辰天合存儲解決方案構建自動駕駛高效數據平台
隨著自動駕駛技術的持續進步,國內的試點運營區域已遍地開花,但距離自動駕駛的真正全面普及,還需要解決諸多問題。其中自動駕駛決策系統的成熟度是非常關鍵的問題之一。
自動駕駛決策系統的成熟,需要依賴從道路測試中持續採集足夠全面的數據,用於 AI 訓練系統中的模型訓練、演算法優化和模擬模擬,提升在復雜場景下的應對能力,加速實現 L4 級的運營能力。
而構建一個高效的自動駕駛AI訓練系統,除了先進的演算法和GPU算力之外,承載海量數據並與應用對接的數據平台,同樣重要。
這里從介紹自動駕駛 AI 訓練場景的工作流,以及其對數據平台的要求來闡述 XSKY 星辰天合存儲解決方案如何幫助和服務於自動駕駛企業用戶。
1、自動駕駛AI 學習場景工作流程
自動駕駛AI訓練,承擔著數據加工和轉化任務,工作流程包括數據的上傳,預處理,篩選,標注,清洗,訓練等多個環節。這些步驟中,會涉及到對海量數據的匯聚存儲,預處理(解密,抽幀,去畸變等),數據在不同存儲系統間的高速流轉,與第三方標注平台對接時的許可權控制,以及異地多中心間的數據傳輸。
平滑兼容主流業務架構
很多自動駕駛行業客戶的基礎架構,是從公有雲模式轉變為混合雲模式的。使用公有雲時其自動駕駛AI訓練的Workflow大多是圍繞「對象存儲+高性能文件存儲」的存儲組合來構建,實現業務應用的自動化編排;
轉變為混合雲模式後,XSKY 星辰天合承載的私有化數據平台,核心內容同樣為對象存儲+高性能文件存儲,避免對用戶Workfow的變更,從而降低開發側的重復投入。
滿足業務場景的存儲可用性
存儲的可用性體現在靈活擴容、數據規模無上限、易於運維、跨平台能力,以及滿足業務應用對存儲性能的要求上。
靈活擴容,XSKY 星辰天合存儲可支持按節點擴容和按集群擴容多模式;
易於運維,XSKY 星辰天合後台管理系統提供可視化界面,細粒度的告警模塊,以及節點和數據的全面監控能力;
跨平台能力,XSKY 星辰天合對象管理平台(XEOS)支持與國內外多家主流公有雲存儲的對接,滿足數據平滑流動的要求。XSKY 星辰天合數據理系統(X3DS)支持在異構平台中復制、遷移數據(如對用戶存量數據的可靠遷移);
性能方面,尤其是數據訓練階段小文件「讀多寫少」的場景下,對存儲的吞吐和時延有高要求,XSKY 星辰天合可通過XGFS分布式文件存儲,或是XINFINI星飛全快閃記憶體儲一體機提供支持,不僅可滿足GPU對數據抽取的嚴苛性能要求,同時由於XGFS和XINFINI是國內首款可支持QLC的分布式存儲,能充分利用QLC的讀寫特徵和成本優勢,大幅降低用戶部署成本。
多項針對場景的優化,提升訓練效率
對象存儲List性能優化,通過過濾及排序動作下沉、提高並發度等手段,減少傳輸和匯總開銷,提升數據抽取的效率,以及高負載時集群的穩定性;
XGFS分布式文件存儲及全NVMe的XINFINI存儲一體機,可分別通過軟體交付或一體機交付的形式,為GPU訓練環節提供高性能文件存儲能力;
另外,還有即將到來的獨立元數據查詢服務、開放內容處理框架等大量新功能,可以提升數據預處理和數據篩選環節的業務效率。
海量數據存儲的成本優化
XSKY 星辰天合存儲具備數據全生命周期數據管理能力,其中存儲分級+數據壓縮功能可對數據進行多層存儲,根據數據的熱溫冷,可自定義在多個池中自由流轉。另外,高密節點,藍光磁存儲一體機,磁帶歸檔等多種存儲形態,可大幅優化用戶存儲成本。
4、面向場景XSKY星辰天合持續進化
在自動駕駛領域中,存儲平台對訓練效率的保證和海量存儲的成本優化,將是長期主題。XSKY 星辰天合將持續投入,不斷推出適用於該場景的新能力,幫助自動駕駛企業用戶更高效的釋放數據價值。
H. 想要搭建一個家用NAS存儲伺服器,有什麼好方案
存儲空間不用說了,這是必須的。
1.跨平台文件共享,還有移動終端的訪問,比如:windows,mac,安卓和ios。這是為了方便文件讀取和分享,如果不支持跨平台的話畢竟有點不方便。
2.遠程訪問,相當於個人的雲存儲主機,在外面通過3g或者網路可以訪問到家裡的nas,進行文件的上傳,下載,以及管理。
基本上滿足這幾個要求,就可以被稱為最基本的家用nas了。
想達到要求也很簡單,家裡的網路支持,一台路由器,一台電腦。需要的軟體:freenas(網上都有下,免費的nas系統)
這
樣組建nas功能很少,而且功耗大。後期維護成本高。如果要長期使用的話,成本不亞於買一台成品nas。首先從維護難度來講NAS其實也是一台繼承CPU
的Linux的電腦這句話沒錯,但是NAS的linux操作系統是嵌入在DOM盤里,所以無論從穩定性和防病毒性來說都是絕佳的,還有NAS採用的
Linux系統是瘦系統,也就是說它剔除了用不到的功能來保證系統穩定性。
如果作為數據存儲的話,不需要定期升級與維護,簡單設定後就可以使用,
而且NAS也自帶RAID功能,可以保證數據安全,而且數據備份功能做得非常完善,無論是近端備份(PC機備份至NAS)還是遠端備份(備份至遠端伺服器
或NAS),都可以通過非常簡單的設定就可以完成,非常易於維護,即使不太懂計算機也可以完成維護。
數據安全非常重要,訪問許可權控制之類的NAS也做得非常好。成品NAS基本上是免維護的。
而
且現在威聯通的nas功能很強大,例如,通過QNAP HD Station,可以讓威聯通nas成為令人驚喜的多媒體播放器。安裝免費的HD
Station,並通過HDMI將NAS連接至大屏幕電視,就可以輕松擁有絕佳視覺體驗,享受眾多影片、音樂和照片,通過大屏幕上網,利用手機或平板電腦
遙控。享受高畫質影音。
I. 網路存儲技術的工作原理是什麼有圖解釋么
網路存儲技術(Network Storage Technologies)是基於數據存儲的一種通用網路術語。網路存儲結構大致分為三種:直連式存儲(DAS:Direct Attached Storage)、網路存儲設備(NAS:Network Attached Storage)和存儲網路(SAN:Storage Area Network)。
網路存儲技術
直連式存儲(DAS):這是一種直接與主機系統相連接的存儲設備,如作為伺服器的計算機內部硬體驅動。到目前為止,DAS 仍是計算機系統中最常用的數據存儲方法。 DAS即直連方式存儲,英文全稱是Direct Attached Storage。中文翻譯成「直接附加存儲」。顧名思義,在這種方式中,存儲設備是通過電纜(通常是SCSI介面電纜)直接到伺服器的。I/O(輸入/輸入)請求直接發送到存儲設備。DAS,也可稱為SAS(Server-Attached Storage,伺服器附加存儲)。它依賴於伺服器,其本身是硬體的堆疊,不帶有任何存儲操作系統。
DAS的適用環境為:
1) 伺服器在地理分布上很分散,通過SAN(存儲區域網路)或NAS(網路直接存儲)在它們之間進行互連非常困難時(商店或銀行的分支便是一個典型的例子); 2) 存儲系統必須被直接連接到應用伺服器(如Microsoft Cluster Server或某些資料庫使用的「原始分區」)上時; 3) 包括許多資料庫應用和應用伺服器在內的應用,它們需要直接連接到存儲器上,群件應用和一些郵件服務也包括在內。 典型DAS結構如圖所示: 典型DAS結構如圖所示
對於多個伺服器或多台PC的環境,使用DAS方式設備的初始費用可能比較低,可是這種連接方式下,每台PC或伺服器單獨擁有自己的存儲磁碟,容量的再分配困難;對於整個環境下的存儲系統管理,工作煩瑣而重復,沒有集中管理解決方案。所以整體的擁有成本(TCO)較高。目前DAS基本被NAS所代替。下面是DAS與NAS的比較。 DAS與NAS的比較圖
網路存儲設備(NAS):NAS 是一種採用直接與網路介質相連的特殊設備實現數據存儲的機制。由於這些設備都分配有 IP 地址,所以客戶機通過充當數據網關的伺服器可以對其進行存取訪問,甚至在某些情況下,不需要任何中間介質客戶機也可以直接訪問這些設備。
NAS網路存儲器
1. 最大存儲容量
最存儲大存儲容量是指NAS存儲設備所能存儲數據容量的極限,通俗的講,就是NAS設備能夠支持的最大硬碟數量乘以單個硬碟容量就是最大存儲容量。這個數值取決於NAS設備的硬體規格。不同的硬體級別,適用的范圍不同,存儲容量也就有所差別。通常,一般小型的NAS存儲設備會支持幾百GB的存儲容量,適合中小型公司作為存儲設備共享數據使用,而中高檔的NAS設備應該支持T級別的容量(1T=1000G)。
2. 處理器
同普通電腦類似,NAS產品也都具有自己的處理器(CPU)系統,來協調控制整個系統的正常運行。其採用的處理器也常常與台式機或伺服器的CPU大體相同。目前主要有以下幾類。 (1)Intel系列處理器 (4)AMD系列處理器 (5)PA-RISC型處理器 (6)PowerPC處理器 (7)MIPS處理器 一般針對中小型公司使用NAS產品採用AMD的處理器或Intel PIII/PIV等處理器。而大規模應用的NAS產品則使用Intel Xeon處理器、或者RISC型處理器等。但是也不能一概而論,視具體應用和廠商規劃而定。
3. 內存
NAS從結構上講就是一台精簡型的電腦,每台NAS設備都配備了一定數量的內存,而且大多用戶以後可以擴充。在NAS設備中,常見的內存類型由SDRAM(同步內存)、FLASH(快閃記憶體)等。不同的NAS產品出廠時配備的內存容量不同,一般為幾十兆到數GB(1GB=1000MB)容量不等,這取決於NAS產品的應用范圍,一般來講,應用在小規模的區域網當中的NAS,如果只是應付幾台設備的訪問,64M以下內存容量即可。如果是上百個節點以上的訪問,就得需要上G容量的內存。當然,這不是絕對的因素,NAS產品的綜合性能發揮還取決於它的處理器能力、硬碟速度及其網路實際環境等因素的制約。總之,選購NAS產品時,應該綜合考慮各個方面的性能參數。
4. 介面
NAS產品的外部介面比較簡單,由於只是通過內置網卡與外界通訊,所以一般只具有乙太網絡介面,通常是RJ45規格,而這種介面網卡一般都是100M網卡或1000M網卡。另外,也有部分NAS產品需要與SAN(存儲區域網路)產品連接提供更為強大的功能,所以也可能會有FC(Fiber Channel光纖通道)介面。
5. 預置軟體系統
預制操作系統是指NAS產品出廠時隨機帶的操作系統或者管理軟體。目前NAS產品一般帶有以下幾種系統軟體。 精簡的WINDOWS2000系統 這類系統只是保留了WINDOWS2000 SERVER系統核心網路中最重要的部分,能夠驅動NAS產品正常工作。我們可以把它理解為WINDOWS2000的「精簡版」。 FreeBSD嵌入式系統 FreeBSD是類UNIX系統,在網路應用方面具備極其優異的性能。 Linux嵌入式系統 Linux系統類似於UNIX操組系統,但相比之下具有界面友好、內核升級迅速等特點。常常用來作為電器等產品的嵌入式控制系統。
6. 網路管理
網路管理,是指網路管理員通過網路管理程序對網路上的資源進行集中化管理的操作,包括配置管理、性能和記賬管理、問題管理、操作管理和變化管理等。一台設備所支持的管理程度反映了該設備的可管理性及可操作性。 一般的網路滿足SNMP MIB I / MIB II統計管理功能。常見的網路管理方式有以下幾種: (1)SNMP管理技術 (2)RMON管理技術 (3)基於WEB的網路管理 SNMP是英文「Simple Network Management Protocol」的縮寫,中文意思是「簡單網路管理協議」。SNMP首先是由Internet工程任務組織(Internet Engineering Task Force)(IETF)的研究小組為了解決Internet上的路由器管理問題而提出的。 SNMP是目前最常用的環境管理協議。SNMP被設計成與協議無關,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的傳輸協議上被使用。SNMP是一系列協議組和規范(見下表),它們提供了一種從網路上的設備中收集網路管理信息的方法。SNMP也為設備向網路管理工作站報告問題和錯誤提供了一種方法。 目前,幾乎所有的網路設備生產廠家都實現了對SNMP的支持。領導潮流的SNMP是一個從網路上的設備收集管理信息的公用通信協議。設備的管理者收集這些信息並記錄在管理信息庫(MIB)中。這些信息報告設備的特性、數據吞吐量、通信超載和錯誤等。MIB有公共的格式,所以來自多個廠商的SNMP管理工具可以收集MIB信息,在管理控制台上呈現給系統管理員。 通過將SNMP嵌入數據通信設備,如交換機或集線器中,就可以從一個中心站管理這些設備,並以圖形方式查看信息。目前可獲取的很多管理應用程序通常可在大多數當前使用的操作系統下運行,如Windows3.11、Windows95 、Windows NT和不同版本UNIX的等。 一個被管理的設備有一個管理代理,它負責向管理站請求信息和動作,代理還可以藉助於陷阱為管理站提供站動提供的信息,因此,一些關鍵的網路設備(如集線器、路由器、交換機等)提供這一管理代理,又稱SNMP代理,以便通過SNMP管理站進行管理。
7. 網路協議
網路協議即網路中(包括互聯網)傳遞、管理信息的一些規范。如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通信需要共同遵守一定的規則,這些規則就稱為網路協議。 一台計算機只有在遵守網路協議的前提下,才能在網路上與其他計算機進行正常的通信。網路協議通常被分為幾個層次,每層完成自己單獨的功能。通信雙方只有在共同的層次間才能相互聯系。常見的協議有:TCP/IP協議、IPX/SPX協議、NetBEUI協議等。在區域網中用得的比較多的是IPX/SPX.。用戶如果訪問Internet,則必須在網路協議中添加TCP/IP協議。 TCP/IP是「transmission Control Protocol/Internet Protocol」的簡寫,中文譯名為傳輸控制協議/互聯網路協議)協議, TCP/IP(傳輸控制協議/網間協議)是一種網路通信協議,它規范了網路上的所有通信設備,尤其是一個主機與另一個主機之間的數據往來格式以及傳送方式。TCP/IP是INTERNET的基礎協議,也是一種電腦數據打包和定址的標准方法。在數據傳送中,可以形象地理解為有兩個信封,TCP和IP就像是信封,要傳遞的信息被劃分成若干段,每一段塞入一個TCP信封,並在該信封面上記錄有分段號的信息,再將TCP信封塞入IP大信封,發送上網。在接受端,一個TCP軟體包收集信封,抽出數據,按發送前的順序還原,並加以校驗,若發現差錯,TCP將會要求重發。因此,TCP/IP在INTERNET中幾乎可以無差錯地傳送數據。 對普通用戶來說,並不需要了解網路協議的整個結構,僅需了解IP的地址格式,即可與世界各地進行網路通信。 IPX/SPX是基於施樂的XEROX』S Network System(XNS)協議,而SPX是基於施樂的XEROX』S SPP(Sequenced Packet Protocol:順序包協議)協議,它們都是由novell公司開發出來應用於區域網的一種高速協議。它和TCP/IP的一個顯著不同就是它不使用ip地址,而是使用網卡的物理地址即(MAC)地址。在實際使用中,它基本不需要什麼設置,裝上就可以使用了。由於其在網路普及初期發揮了巨大的作用,所以得到了很多廠商的支持,包括microsoft等,到現在很多軟體和硬體也均支持這種協議。 NetBEUI即NetBios Enhanced User Interface ,或NetBios增強用戶介面。它是NetBIOS協議的增強版本,曾被許多操作系統採用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI協議在許多情形下很有用,是WINDOWS98之前的操作系統的預設協議。總之NetBEUI協議是一種短小精悍、通信效率高的廣播型協議,安裝後不需要進行設置,特別適合於在「網路鄰居」傳送數據。所以建議除了TCP/IP協議之外,區域網的計算機最好也安上NetBEUI協議。另外還有一點要注意,如果一台只裝了TCP/IP協議的WINDOWS98機器要想加入到WINNT域,也必須安裝NetBEUI協議。
8. 網路文件協議
網路文件系統是基於網路的分布式文件系統,其文件系統樹的各節點可以存在於不同的聯網計算機甚至不同的系統平台上,可以用來提供跨平台的信息存儲與共享。 當今最主要的兩大網路文件系統是Sun提出的NFS(Network File System)以及由微軟、EMC和NetApp提出的CIFS(Common Internet File System),前者主要用於各種Unix平台,後者則主要用於Windows平台,我們熟悉的「網上鄰居」的文件共享方式就是基於CIFS系統的。其他著名的網路文件系統還有Novell公司的NCP(網路控制協議)、Apple公司的AFP以及卡內基-梅隆大學的Coda等,NAS的主要功能之一便是通過各種網路文件系統提供存儲服務。
9. 網路備份軟體
目前在數據存儲領域可以完成網路數據備份管理的軟體產品主要有Legato公司的NetWorker、IBM公司 的Tivoli、Veritas公司 的NetBackup等。另外有些操作系統,諸如Unix的tar/cpio、Windows2000/NT的Windows Backup、Netware的Sbackup也可以作為NAS的備份軟體。
NetBackup
NetBackup是Veritas公司推出的適用於中型和大型的存儲系統的備份軟體,可以廣泛的支持各種開放平台。另外該公司還推出了適合低端的備份軟體Backup Exec。
NetWorker
NetWorker是Legato公司推出的備份軟體,它適用於大型的復雜網路環境,具有各種先進的備份技術機制,廣泛的支持各種開放系統平台。值得一提的是, NetWorker中的Cellestra技術第一個在產品上實現了Serverless Backup(無伺服器備份)的思想。
IBM Tivoli
IBM Tivoli是IBM公司推出的備份軟體,與Veritas的NetBackup和Legato的NetWorker相比,Tivoli Storage Manager更多的適用於IBM主機為主的系統平台,其強大的網路備份功能可以勝任大規模的海量存儲系統的備份需要。 此外,CA公司原來的備份軟體ARCServe,在低端市場具有相當廣泛的影響力。其新一代備份產品--BrightStor,定位直指中高端市場,也具有不錯的性能。 選購備份軟體時,應該根據不同的用戶需要選擇合適的產品,理想的網路備份軟體系統應該具備以下功能:
集中式管理
網路存儲備份管理系統對整個網路的數據進行管理。利用集中式管理工具的幫助,系統管理員可對全網的備份策略進行統一管理,備份伺服器可以監控所有機器的備份作業,也可以修改備份策略,並可即時瀏覽所有目錄。所有數據可以備份到同備份伺服器或應用伺服器相連的任意一台磁帶庫內。
全自動的備份
備份軟體系統應該能夠根據用戶的實際需求,定義需要備份的數據,然後以圖形界面方式根據需要設置備份時間表,備份系統將自動啟動備份作業,無需人工干預。這個自動備份作業是可自定的,包括一次備份作業、每周的某幾日、每月的第幾天等項目。設定好計劃後,備份作業就會按計劃自動進行。
資料庫備份和恢復
在許多人的觀念里,資料庫和文件還是一個概念。當然,如果你的資料庫系統是基於文件系統的,當然可以用備份文件的方法備份資料庫。但發展至今,資料庫系統已經相當復雜和龐大,再用文件的備份方式來備份資料庫已不適用。是否能夠將需要的數據從龐大的資料庫文件中抽取出來進行備份,是網路備份系統是否先進的標志之一。
在線式的索引
備份系統應為每天的備份在伺服器中建立在線式的索引,當用戶需要恢復時,只需點取在線式索引中需要恢復的文件或數據,該系統就會自動進行文件的恢復。
歸檔管理
用戶可以按項目、時間定期對所有數據進行有效的歸檔處理。提供統一的Open Tape Format 數據存儲格式從而保證所有的應用數據由一個統一的數據格式作為永久的保存,保證數據的永久可利用性。
有效的媒體管理
備份系統對每一個用於作備份的磁帶自動加入一個電子標簽,同時在軟體中提供了識別標簽的功能,如果磁帶外面的標簽脫落,只需執行這一功能,就會迅速知道該磁帶的內容。
滿足系統不斷增加的需求
備份軟體必須能支持多平台系統,當網路上連接上其它的應用伺服器時,對於網路存儲管理系統來說,只需在其上安裝支持這種伺服器的客戶端軟體即可將數據備份到磁帶庫或光碟庫中。
10. 網站瀏覽器支持
網站瀏覽器支持是指能否夠通過WEB(就是WWW,俗稱互聯網)手段對NAS產品進行管理,以及管理時使用的瀏覽器類型。絕大部分的NAS產品都支持WEB管理,這樣的好處是管理方便,用戶在任何地方只要能夠上網就可以輕松的管理NAS設備。 目前NAS產品支持的常用瀏覽器有微軟的IE(Internet Explorer)瀏覽器以及網景公司的Netscape瀏覽器。
11. 網路服務
網路服務是指NAS產品在運行時系統能夠提供何種服務。典型的網路服務有DHCP、DNS、FTP、Telnet、WINS、SMTP等。
DHCP
DHCP的全名是「Dynamic Host Configuration Protocol」,即動態主機配置協議。在使用DHCP的網路里,用戶的計算機可以從DHCP伺服器那裡獲得上網的參數,幾乎不需要做任何手工的配置就可以上網。 一般情況下,DHCP伺服器會盡量保持每台計算機使用同一個IP地址上網。如果計算機長時間沒有上網或配置為使用靜態地址上網,DHCP伺服器就會把這個地址分配給其他計算機。
WINS
WINS是「Windows Internet Name Service」的簡稱,中文為Windows網際命名服務,WINS伺服器主要用於NetBIOS名字(計算機名稱)服務,它處理的是NetBIOS計算機名(Computer Name),所以也被稱為NetBIOS名字伺服器(NBNS,NetBIOS Name Server)。WINS伺服器可以登記WINS-enabled工作站(下面簡稱為「WINS工作站」)的計算機名、IP地址、DNS域名等數據,當工作站查詢名字時,它又可以將這些數據提供給工作站。
DNS
DNS,Domain Name System或者Domain Name Service(域名系統或者余名服務)。域名系統為Internet上的主機分配域名地址和IP地址。用戶使用域名地址,該系統就會自動把域名地址轉為IP地址。域名服務是運行域名系統的Internet工具。執行域名服務的伺服器稱之為DNS伺服器,通過DNS伺服器來應答域名服務的查詢。
FTP
文件傳輸協議FTP(File Transfer Protocol)是Internet傳統的服務之一。FTP使用戶能在兩個聯網的計算機之間傳輸文件,它是Internet傳遞文件最主要的方法。使用匿名(Anonymous)FTP, 用戶可以免費獲取Internet豐富的資源。除此之外,FTP還提供登錄、目錄查詢、文件操作及其他會話控制功能。
SMTP
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議族,它幫助每台計算機在發送或中轉信件時找到下一個目的地。通過SMTP協議所指定的伺服器,我們就可以把E-mail寄到收信人的伺服器上了,整個過程只要幾分鍾。SMTP伺服器則是遵循SMTP協議的發送郵件伺服器,用來發送或中轉你發出的電子郵件。
Telnet
有的時候我們需要運行一些很大的程序,而自己的PC又達不到運行這個程序所必須的配置,在這種情況下,我們可以通過網路連接上一台功能強大的計算機,並且把自己的PC模擬成那台計算機的終端,進而達到在該計算機上運行程序的目的。這種利用網路遠程登錄到其他計算機上,並且以虛擬終端方式遙控程序運行的做法就是TELNET。隨著計算機硬體的發展,目前TELNET在一般網路用戶中已經不是很普遍了,但是對於網路管理員來說,它仍然是個得力助手。
12. 網路安全
網路安全是指網路系統的硬體、軟體及其系統中的數據受到保護,不受偶然的或者惡意的原因而遭到破壞、更改、泄露,系統連續可靠正常地運行,網路服務不中斷。 網路安全實際上包括兩部分:網路的安全和主機系統的安全。網路安全主要通過設置防火牆來實現,也可以考慮在路由器上設置一些數據包過濾的方法防止來自Internet上的黑客的攻擊。至於系統的安全則需根據不同的操作系統來修改相關的系統文件,合理設置用戶許可權和文件屬性。 NAS產品的網路安全應具有以下四個方面的特徵: 保密性:信息不泄露給非授權用戶、實體或過程,或供其利用的特性。 完整性: 數據未經授權不能進行改變的特性。即信息在存儲或傳輸過程中保持不被修 改、不被破壞和丟失的特性。 可用性:可被授權實體訪問並按需求使用的特性。即當需要時能否存取所需的信息。例 如網路環境下拒絕服務、破壞網路和有關系統的正常運行等都屬於對可用性的攻擊; 可控性:對信息的傳播及內容具有控制能力。
13. NAS
NAS是英文「Network Attached Storage」的縮寫, 中文意思是「網路附加存儲」。按字面簡單說就是連接在網路上, 具備資料存儲功能的裝置,因此也稱為「網路存儲器」或者「網路磁碟陣列」。 從結構上講,NAS是功能單一的精簡型電腦,因此在架構上不像個人電腦那麼復雜,在外觀上就像家電產品,只需電源與簡單的控制鈕, 結構圖如下: NAS是一種專業的網路文件存儲及文件備份設備,它是基於LAN(區域網)的,按照TCP/IP協議進行通信,以文件的I/O(輸入/輸出)方式進行數據傳輸。在LAN環境下,NAS已經完全可以實現異構平台之間的數據級共享,比如NT、UNIX等平台的共享。 一個NAS系統包括處理器,文件服務管理模塊和多個硬碟驅動器(用於數據的存儲)。 NAS 可以應用在任何的網路環境當中。主伺服器和客戶端可以非常方便地在NAS上存取任意格式的文件,包括SMB格式(Windows)NFS格式(Unix, Linux)和CIFS(Common Internet File System)格式等等。典型的NAS的網路結構如下圖所示: 存儲網路(SAN):SAN 是指存儲設備相互連接且與一台伺服器或一個伺服器群相連的網路。其中的伺服器用作 SAN 的接入點。在有些配置中,SAN 也與網路相連。SAN 中將特殊交換機當作連接設備。它們看起來很像常規的乙太網絡交換機,是 SAN 中的連通點。SAN 使得在各自網路上實現相互通信成為可能,同時並帶來了很多有利條件。 SAN英文全稱:Storage Area Network,即存儲區域網路。它是一種通過光纖集線器、光纖路由器、光纖交換機等連接設備將磁碟陣列、磁帶等存儲設備與相關伺服器連接起來的高速專用子網。 SAN由三個基本的組件構成:介面(如SCSI、光纖通道、ESCON等)、連接設備(交換設備、網關、路由器、集線器等)和通信控制協議(如IP和SCSI等)。這三個組件再加上附加的存儲設備和獨立的SAN伺服器,就構成一個SAN系統。SAN提供一個專用的、高可靠性的基於光通道的存儲網路,SAN允許獨立地增加它們的存儲容量,也使得管理及集中控制(特別是對於全部存儲設備都集群在一起的時候)更加簡化。而且,光纖介面提供了10 km的連接長度,這使得物理上分離的遠距離存儲變得更容易.
J. 能否給我推薦一個上傳速率快同時能夠共享相冊的雲盤呢
您好!天翼雲盤是中國電信推出的雲存儲服務,為用戶提供跨平台的文件存儲、備份、同步及分享服務,是國內領先的免費網盤,安全、可靠、穩定、快速。擁有中國電信專屬的傳輸通道,高清視頻上傳下載數秒就可以完成,並且擁有超大的存儲空間,可以安全存儲數百萬張高清照片上萬部高清視頻。天翼雲盤普通用戶初始空間為60G,可以通過充值會員擴充至 4T、8T,會員分為黃金會員和鉑金會員兩個等級。