跨平台存储方案
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,会员分为黄金会员和铂金会员两个等级。