如何通过Windows Server 2008 R2建立NFS存储
如何通过Windows Server 2008 R2建立NFS存储
在我们日常工作的某些实验中,会需要使用存储服务器。而硬件存储成本高,如StarWind之类的iSCSI软存储解决方案需要单独下载服务器端程序,且配置比较繁琐,令很多新手们很是头疼。
事实上,利用Windows Server 2008 R2,我们可以很容易地将其作为一台NFS存储服务器,方便地得到一个NFS软存储,轻松解决某些环境下的问题。接下来以Windows Server 2008 R2 SP1 企业版为例,分享一下具体的实现步骤。
首先,打开服务器管理器,选择”添加角色”;
点击下一步,开始添加服务器角色;
添加”文件服务”,点击下一步;
点击下一步,开始添加角色服务;
添加”网络文件系统服务”,即”Network File System (NFS)”;
点击安装,开始执行;
安装完成后,在容量适合的分区下建立一个文件夹,选择属性,找到”NFS共享”选项卡,点击”管理NFS共享”;
保持选项默认,点击”权限”;
此处可以看到此存储的默认访问权限,默认为所有计算机都具有只读权限。我们可以将这条权限策略调整为”不可读”,并点击”添加”设置其他策略;
点击”添加”后,会出现如上图窗口,在”添加名称”栏填写允许访问此存储的主机的IP地址,设置访问类型,并按需勾选是否允许访问根目录即可。
以上,通过其他设备添加 “此服务器IP地址:/共享文件夹名称”,即可访问NFS存储
存储过程(StoredProcedure)是一组为了完成特定功能的结构化查询语言(StructuredQueryLanguage,SQL)语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件地执行,它具有强大的编程功能。存储过程的优点存储过程位于数据库服务器中,是一个SQL语句的集合,可包含一个或多个SQL语句。
存储过程是利用数据库服务器所提供的Transact−SQL语言编写的程序。存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快,总的来说具有以下几个方面的优点。
((1)存储过程增强了SQL语言的功能和灵活性。存储过程可以用来控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
(2)存储过程是标准组件,允许编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码也毫无影响。
(3)存储过程能实现较快的执行速度。如果某一操作包含大量的Transact−SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transact−SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
(4)存储过程能够减少网络传输流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transact−SQL语句被组织成存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
(5)存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
以下是服务器接收函数PostMember,仅供参考
[HttpPost]
public void PostMember()
{
HttpPostedFile file = null;//定义文件接收类
//如果有其他参数,下面的示例接收数据
//var openid = HttpContextCurrentRequestForm["openid"];
foreach (string item in HttpContextCurrentRequestFiles)
{
file = HttpContextCurrentRequestFiles[item];
}
if (file == null || openid == null)
{
throw new Exception("文件不存在");
}
string openpath = HttpContextCurrentServerMapPath("~/video/" + openid + "/");
string fileName = DateTimeNowToFileTime() + "mp3";
string sourepath = openpath + fileName;
fileSaveAs(sourepath);
//至于怎么把这个地址存到库里,我就不写了,因为每个人都有不同的业务逻辑
}
建议大家可以按照以下七步来选出“心仪”的存储服务器。
0条评论