Chinaunix首页 | 论坛 | 博客

nas

  • 博客访问: 647764
  • 博文数量: 456
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 6400
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-08 16:08
文章分类

全部博文(456)

文章存档

2008年(456)

我的朋友

分类: 服务器与存储

2008-05-09 09:59:53


摘要:
为了使UNIX/Linux机器可以通过NFS 协议使用NAS(Network Attached Storage 网络存储
服务器)的硬盘资源,NAS 需要设置Service for Unix。本文详尽的描述了在下述两种场景
下:工作组(WorkGroup)方式、Windows 域方式中NFS 共享和UNIX/Linux 帐户映射的方
法,并给出了常见问题的解决方法。
本文还对NFS 性能问题做了初步的分析。
本文的测试环境:
NAS200,使用1.7 版本的软件,其中Microsoft Windows Services for UNIX 的版本为
2.2 [5.3000.2073.1]
Redhat Linux,版本7.3。
一.工作组方式:
1. 在Linux 上建立两个组帐户,galpha 和gbeta:
[root@redhat etc]# groupadd -g 600 galpha
[root@redhat etc]# groupadd -g 601 gbeta
2. 在Linux 上建立两个用户帐户,alpha 和beta:
[root@redhat /]# useradd -u 600 -g galpha -G galpha -d /home/alpha alpha
[root@redhat /]# passwd alpha
Changing password for user alpha.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@redhat root]# useradd -u 601 -g gbeta -G gbeta -d /home/beta beta
[root@redhat root]# passwd beta
Changing password for user beta.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
3. 检查结果:
[root@redhat etc]# vi /etc/passwd
可以看到以下两行:
alpha:x:600:600::/home/alpha:/bin/bash
beta:x:601:601::/home/beta:/bin/bash
按”Esc”键,输入”:q!”不保存退出。
[root@redhat etc]# vi /etc/group
可以看到以下两行:
galpha:x:600:alpha
gbeta:x:601:beta
按”Esc”键,输入”:q!”不保存退出。
4. 用ftp协议将passwd文件和group文件拷贝到NAS的C:\目录下。
ftp> lcd c:\
Local directory now C:\.
ftp> cd /etc
250 CWD command successful.
ftp> get passwd
200 PORT command successful.
150 Opening ASCII mode data connection for passwd (2553 bytes).
226 Transfer complete.
ftp: 2611 bytes received in 0.00Seconds 2611000.00Kbytes/sec.
ftp> get group
200 PORT command successful.
150 Opening ASCII mode data connection for group (940 bytes).
226 Transfer complete.
ftp: 1008 bytes received in 0.00Seconds 1008000.00Kbytes/sec.
5. 修改C:\ 目录下的passwd 和group 文件,使得它们的格式能够
被NAS 的Service for Unix 识别。
Passwd 文件中的”*”字符,group 文件中的”x”字符不能被NAS 的SFU 识别,需要删除。
以下是经过修改的passwd 文件的一个例子:
alpha:x:600:600::/home/alpha:/bin/bash
beta:x:601:601::/home/beta:/bin/bash
以下是修改后的group 文件的一个例子:
galpha::600:alpha
gbeta::601:beta
6. 拷贝passwd 文件和group 文件到NAS 的以下的目录中:
C:\WINNT\system32\drivers\etc
拷贝之前把原有的passwd 文件和group 文件重命名为passwd.tmp 和group.tmp。
7. 设置Server for PCNFS。
确认NAS 已经登录到了本地,用户名为”administrator”,默认的密码为”password”。
双击桌面上的IBM NAS Admin.msc 工具箱,展开File System 子目录,展开Service for
Unix 子目录,点击Server for PCNFS。
依次进入Users 和Groups 页面,SFU 将自动调入Linux 中的所有用户和组,以及用户
和组的包含关系。按屏幕右上角的Apply 按钮。如下图示:
用户的信息:由passwd 文件保存
组信息:由group 文件保存
8. 在NAS 本地的用户管理器上创建相应的用户和组。
双击桌面上的IBM NAS Admin.msc 工具箱,展开Users and Groups 子目录,展开Local
Users and Groups (Local)子目录,展开Users 子目录,在用户列表处点右键选择创建用
户:alpha,beta。展开Groups 子目录,在组列表处点右键选择创建用户:galpha,gbeta。
如下图所示。
创建用户
创建组
9. 建立Windows 用户和Linux 用户的对应关系(User Name
Mapping):
双击桌面上的IBM NAS Admin.msc 工具箱,展开File System 子目录,展开Service for
Unix 子目录,点击User Name Mapping。
在Configuration 页面选择Personal Computer Network File System (PCNFS) 。
Password file path and name: C:\WINNT\system32\drivers\etc\passwd
Group file path and name: C:\WINNT\system32\drivers\etc\group
如下图所示配置,完后点击屏幕右上角的Apply 按钮。
用名子文件进行用户映射
在Maps 的页面,选中Simple Maps 的复选框,按屏幕右上角的Apply 按钮。如下图所
示。简单映射只能映射名子相同的Linux 用户,组和Windows 用户,组。
高级映射可以映射名子不同的用户和组。在Show User Maps,Show Group Maps 列表中,
选择两个希望进行映射的对象,点击Add 按钮创建对应关系。
仅映射名子相同的用户
10. 设置NAS 为用户帐户映射服务器。
D:\>nfsadmin server config mapsvr=9.185.43.150
The settings were successfully updated.
11. 检查用户映射关系是否正确建立。
在DOS 命令窗口输入命令:mapadmin list –all
用户映射列表
12. 在NAS 上创建NFS 共享。
第一步是启动这个用户的命令窗口。命令如下:
C:\>runas /profile /user:IBM5194-23H4530\alpha cmd
Enter password for IBM5194-23H4530\alpha: 输入alpha 的登录密码
Attempting to start "cmd" as user "IBM5194-23H4530\alpha"...
命令运行后打开了一个以alpha 用户身份运行的命令窗口。
注意:密码大小写敏感。
第二步:在命令窗口中创建目录,并给予everyone 只读的权限,给予administrator 组的
成员完全控制的权限。命令如下:
C:\WINNT\system32>mkdir e:\database
C:\WINNT\system32>cacls e:\database /t /e /c /p \everyone:R
C:\WINNT\system32>cacls e:\database /t /e /c /g \administrators:F
C:\WINNT\system32>cacls e:\database /t /e /c /g \administrator:F
检查这些命令执行的结果,参考下图:
Database 目录的安全设置
第三步:给予galpha 组和alpha 用户以完全控制的权限,给予gbeta 组和beta 用户以修
改的权限。命令如下:
E:\ >cacls e:\database /t /e /c /g IBM5194-23H4530\alpha:F
E:\ >cacls e:\database /t /e /c /g IBM5194-23H4530\galpha:F
E:\ >cacls e:\database /t /e /c /g IBM5194-23H4530\beta:C
E:\ >cacls e:\database /t /e /c /g IBM5194-23H4530\gbeta:C
第四步:更改这个目录的拥有者,将其改为alpha。命令如下。
C:\WINNT\system32>chown alpha:galpha e:\database
第五步:将这个目录共享给UNIX 机器。在NAS 的资源管理器中找到database 目录,
选中它点右键,选属性,在NFS sharing 界面配置共享此目录,并选中允许匿名访问。
如下图示。
第六步:用alpha 帐户登录Linux,建立一个mount 点,将NFS share mount 到本地。
[alpha@redhat alpha]$ id
uid=600(alpha) gid=600(galpha) groups=600(galpha)
[alpha@redhat alpha]$ mkdir dbmountp
[alpha@redhat alpha]$ su root
Password:
[root@redhat alpha]# mount 9.185.43.150:/database dbmountp
第七步:检查以上操作是否正确
ü 以alpha 的身份写一个文件alphafile,列出它的属性。
[alpha@redhat dbmountp]$ touch alphafile
[alpha@redhat dbmountp]$ ls -la alphafile
-rw-r--r-- 1 alpha galpha 0 Dec 25 2002 alphafile
ü 以beta 的身份写一个文件,列出它的属性。
[beta@redhat dbmountp]$ touch betatest
[beta@redhat dbmountp]$ ls –la betatest
-rw-r--r-- 1 beta gbeta 0 Dec 24 2002 betatest
ü 在NAS 的资源管理器里修改everyone 用户对betafile 的权限,从只读到读写。Linux
中的权限有相应的变化。
Linux中的权限:
-rw-r--r-- 1 beta gbeta
Linux中的权限:
-rw-r--rw- 1 beta gbeta
二.Windows 域方式:
1. 将NAS 加入到域中。
第一步:将TCP/IP 设置中的DNS 服务器设为域DNS 服务器。如下图:
设置DNS
第二步:将控制面板—>系统—>网络标识—>网络ID 页面打开,如下图。将成员
从工作组改为域,并输入域名。点击OK 后提示输入域的管理员和密码。加入成功。
第三步:重新启动NAS 并登录到域上。
2. 在域控制器上安装SFU 2.2 的Server for NFS Authentication 组
件。
第一步:将NAS根目录下的sfu 目录共享给域控制器。(SFU的安装文件在Supplementary
CD 上也有。)
第二步:在域控制器上打开共享找到文件SfuCustom.msi,双击运行。如图所示:
Service for Unix的安装界面
按NEXT,显示如下,选择Customized Installation。
点击Authentication tools for NFS 右边的加号展开目录,点击server for NFS
Authentication,选择entire feature will be installed on local hard disk。如下图:
按NEXT 完成安装。重新启动机器。
第三步:在其它的所有域控制器上作同样的安装。
3. 在NAS 上添加域用户的管理器。
第一步:点击开始—>运行,键入mmc,如下图示。
运行mmc
第二步:选择添加\删除插件
添加域用户管理器插件
第三步:在Add/Remove Snap-in 窗口选择Add,添加域用户管理器插件。
第四步:在域用户管理器工具中添加用户alpha,创建组galpha,并把alpha 加到galpha
组中。添加用户beta,创建组gbeta,并把beta 加到gbeta 组中。
注意:alpha 用户的默认组是galpha,而不是Domain User。Beta 用户的默认组是gbeta,
而不是Domain User。
4. 建立UNIX 用户与域用户的映射关系。
重复第一部分(工作组方式)中的9 至11 步。
注意第9 步,改为选择NASDOMAIN0。然后按Apply 按钮。
5. 在NAS 上创建NFS 共享。
第一步是启动这个用户的命令窗口。命令如下:
C:\>runas /profile /user:nasdomain0\alpha cmd
Enter password for nasdomain0\alpha: 输入alpha 的登录密码
Attempting to start "cmd" as user "nasdomain0\alpha"...
命令运行后打开了一个以alpha 用户身份运行的命令窗口。
第二步:在命令窗口中创建目录,并给予everyone 只读的权限,给予administrator 组的
成员完全控制的权限。命令如下:
C:\WINNT\system32>mkdir e:\database2
C:\WINNT\system32>cacls e:\database2 /t /e /c /p \everyone:R
C:\WINNT\system32>cacls e:\database2 /t /e /c /g \administrators:F
C:\WINNT\system32>cacls e:\database2 /t /e /c /g nasdomain0\administrator:F
参考第一部分(工作组方式)中的12 步检查这些命令执行的结果。
第三步:给予galpha 组和alpha 用户以完全控制的权限,给予gbeta 组和beta 用户以修
改的权限。命令如下:
E:\ >cacls e:\database2 /t /e /c /g nasdomain0\alpha:F
E:\ >cacls e:\database2 /t /e /c /g nasdomain0\galpha:F
E:\ >cacls e:\database2 /t /e /c /g nasdomain0\beta:C
E:\ >cacls e:\database2 /t /e /c /g nasdomain0\gbeta:C
第四步:更改这个目录的拥有者,将其改为alpha。命令如下。
C:\WINNT\system32> chown nasdomain0\alpha:nasdomain0\galpha database2
第五步:将这个目录共享给UNIX 机器。在NAS 的资源管理器中找到database2 目录,
选中它点右键,选属性,在NFS sharing 界面配置共享此目录,并选中允许匿名访问。
参考第一部分(工作组方式)中的12 步检查这些命令执行的结果。
第六步:用alpha 帐户登录Linux,建立一个mount 点,将NFS share mount 到本地。参
考第一部分(工作组方式)中的12 步骤中的第六,七步检查这些命令执行的结果。
三.性能优化
到2002 年底为止,NAS 产品使用的NFS 版本为3.0。以下是一些性能调整的建议,具体的
参数需要根据具体的应用环境设定。
1. 在NAS 上可做的调整:
ü 将NFS 共享依赖于/绑定于Cluster 的名子和IP 不利于性能优化。建议另外建立一
个IP 资源和网络名称资源,将NFS 共享绑定在这两个资源上。
ü 如果使用了千兆以太网卡,可以在千兆以太网卡的设置工具中设置其使用Jumbo
Frame -- Enable。
ü 在网卡的设置工具里设置MTU 的大小与网络交换机一致。
ü 使用SFU 2.2 的版本,并安装性能优化包Q320715 和补丁Q321096。这两个补丁包
都可以从NAS 的Supplementary CD 2 中得到。
2. 在UNIX/Linux 机器上可做的调整:
ü 在Mount 的参数里指定使用NFS 版本为3。如不指定,默认使用NFS 2 的协议。
参数如下:
mount -o nfsvers=3 9.185.43.150:/database2 /home/alpha/dbmountpt
注意: 如果UNIX 操作系统只支持NFS 版本2,那么mount 时指定用NFS 版本
3 会导致文件丢失。
ü 在Mount 的参数里指定使用读缓存和写缓存的大小,通常越大速度越快,针对具
体情况如何选择需要进行测试和比较。最大支持8192KB,默认为1024KB。设置
的命令如下:
mount 9.185.43.150:/database2 /home/alpha/dbmountpt –o nfsvers=3, rsize=8192,
wsize=8192
在本文的测试环境中,我们改变rsize 和 wsize 做了一系列测试,结果如下:
rsize/wsize (bytes) 写20 条记录 写100 条记录
=================== ========== ===========
768 16 秒 1 分20 秒
1024 13 1 分6 秒
2048 08 43
3072 06 31 <--- 最快
3584 -- 32
8192 06 1 分25 秒
注意:NFS 版本2 不支持大的读写缓存,所以此参数应与nfsvers=3 同时设定。
四.关于文件名称规范的一点说明
UNIX 文件系统和Windows 文件系统中规定在文件名中不可使用的字符不同,例如UNIX
文件名允许用冒号(:)而Windows 不行。Windows 中的文件名不能含有下列字符:
\ / : * ? “ < > |
所以UNIX 用户在NFS共享目录中创建文件时,文件名要受Windows 和UNIX的双重限制。
注意:“.”在UNIX 系统和Windows 系统中都有特殊的定义,在NFS 共享目录中创建的文
件如果名子以“.”开头,在UNIX 中此文件为隐藏文件。
通过设置字符映射,将Windows 不允许用在文件名中的字符映射为Windows 允许的字符可
以规避Windows 对文件名的限制。设置步骤为:
1. 创建一个字符翻译文件
2. 修改一个注册表键值
下面以冒号(:)为例说明映射过程。
第一步:创建一个字符翻译文件(文本文件),需要映射的字符的十六进制用以下格式一行
行排列:0xnn : 0xnn [ ; comment]
第一个nn 表示被映射的字符,第二个nn 表示用来映射的字符,0x 表示十六进制,分号以
后的字符串是注释,可以没有。
例如:冒号和减号的映射关系表示如下。3a 表示冒号,2d 表示减号。
将文件存为c:\sfu\Ctrans.txt
字符的十六进制字符代码可以从Windows 的系统工具Character Map (字符映射表)中找到。
选择开始— >程序—>附件—>系统工具—>字符映射表,点中一个字符,屏幕左下角即为其
十六进制字符代码。如下图:
1. 用注册表编辑器找到以下键值
HKEY_LOCAL_MACHINE\Software \Microsoft\Server For NFS\CurrentVersion\Mapping
编辑CharacterTranslation (REG_SZ) 键值, 指定映射文件的目录及文件名
C:\Sfu\CTrans.txt。如下图。保存后重新启动系统。
2. 测试结果。
用alpha 用户在UNIX 上登录,写一个文件名子为test:file。查看结果:
> touch test:file
> ls -l
-rw-r--r-- 1 alpha galpha 0 Jan 3 2003 test:file
从Windows 的资源浏览器里查看该文件,显示文件名为test-file。
五.常见问题分析:
ü 在图形界面设置了User Name Mapping 但是mapadmin list –all 中不能看到该映射。
检查如下项目:
I. 在图形界面设置的每一步都要按Apply 按钮。
II. 重新启动user name mapping 服务。
Net stop mapsvc
Net start mapsvc
ü 在Unix/Linux上用ls –l 列出NFS 共享目录的文件列表时显示如下:
-rwxr-x--- 1 ibmadm 4294967295 test.1
-rwxr-x--- 2 nobody 4294967295 test.2
-rwxr-x--- 2 nobody nobody test.3
-rwxr-x--- 1 4294967294 4294967295 test.4
-rwxr-x--- 1 nobody 65535 test.5
-rwxr-x--- 2 65534 65535 s test.6
检查如下项目:
I. 检查Mapadmin list –all 的输出结果,其中GID 和UID,与UNIX/Linux的
id 命令显示出的当前用户一致。也就是说需要确认创建文件的用户在User
Name Mapping 中已做了定义。
II. 确认SFU 的Server for PCNFS 中Group 的设置中,组中已包含正确的组员。
III. 确认建立了映射关系的Windows 用户默认组不是Domain User。
IV. 用nfsadmin server 命令来确认用户映射服务器被设置为NAS 了。
V. 确认Server for NFS Authentication 服务已被安装在域里所有的控制器上了。
ü Root 帐户无法Mount NFS 共享:
检查如下项目:
I. 如果NFS 的共享属性中设置为All Machines Read&Write,那么Allow
Anonymous 复选框必须选中。
II. 如果NFS 的共享属性中设置了Unix 机器的访问类型为Root,那么Root
可以Mount。
ü 怎样查看NAS 上的NFS 共享数目:
键入命令:net view /network:nfs
ü NAS 上的SFU 支持与哪些UNIX/Linux 互联:
支持:Solaris 7, Solaris 8, HP-UX 10.2, HP-UX 11.0, AIX 4.3.3 , Red Hat Linux
7.0 ,7.2 及它们的更新版本。
阅读(1101) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~