NAS 网络附加存储

NAS 网络附加存储

测试环境 Red Hat Enterprise Linux 5

关键技术:
RAID5
LVM
QUOTA
CIFS
NFS
FTP
文件传输协议

FTP

FTP 文件传输协议
vsftpd

1
、安装vsftpd程序,直接启动服务,即可匿名访问,去下载共享出的文件
]# yum -y install vsftpd
]# service vsftpd start
client
主机可以通过匿名帐号直接访问FTP服务器端
访问方法有:
通过浏览器: ftp://ftpserver_ip
通过一些专门用于连接FTP服务器的客户端软件:
linux OS
lftp gftp
windows OS
flashfxp
所谓的匿名帐号指是的用户名称为: ftp/ anonymous
[root@localhost pg]# grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
系统中的FTP帐号就是vsftpd包装完生成的匿名访问FTP服务器的帐号。实际上,当以匿名帐号访问FTP时的共享位置时,就是直接访问到ftp用户的家目录 /var/ftp

-------也就是说匿名共享的根目录就是/var/ftp,你只需要把文件放到此目录下,并对ftp帐号有r权限。即可被匿名下载

2
、如果希望实现可以上传下载。可以考虑使用一个定义好的帐号。
useradd -s /sbin/nologin ftpuser
这种直接在FTP服务器端useradd创建的帐号是可以做为FTP服务的登录帐号的,而登录FTP后,访问到的共享位置就是此用户的家目录 ftpuser----- /home/ftpuser

lftp username
ftpserver_ip


3
、匿名能上传下载,需要配置两种权限:
a.
配置文件中定义的权限
b.
共享的目录本身的系统权限 ftp帐号可以w目录
两者取交集

vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
]# service vsftpd restart

]# mkdir /var/ftp/public
]# ls -ld /var/ftp/public/
drwxr-xr-x 2 root root 4096 04-02 15:10 /var/ftp/public/
]# chown ftp.ftp /var/ftp/public/
]# ls -ld /var/ftp/public/
drwxr-xr-x 2 ftp ftp 4096 04-02 15:10 /var/ftp/public/

client
测试结果:看是否可以匿名上传文件到public目录
[root@localhost pg]# lftp localhost
lftp localhost:~> cd public/
lftp localhost:/public> ls
lftp localhost:/public> put /tmp/file
4 bytes transferred
lftp localhost:/public> ls
-rw------- 1 14 50 4 Apr 02 07:12 file
lftp localhost:/public> mkdir a
mkdir
成功, 建立 `a'
但是你会发现,并不让做删除这种写操作,只允许创建这种写操作
lftp localhost:/public> ls
drwx------ 2 14 50 4096 Apr 02 07:12 a
-rw------- 1 14 50 4 Apr 02 07:12 file
lftp localhost:/public> rm -r a
rm: Access failed: 550 Permission denied. (a)
lftp localhost:/public> rm file
rm: Access failed: 550 Permission denied. (file)
lftp localhost:/public>
如果需要允许做删除这种写操作
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
再添加这样一行。
]# service vsftpd restart

[root@localhost pg]# lftp localhost
lftp localhost:/> cd public/
lftp localhost:/public> ls
drwx------ 2 14 50 4096 Apr 02 07:12 a
-rw------- 1 14 50 4 Apr 02 07:12 file
lftp localhost:/public> rm file
rm
成功, 删除 `file'
lftp localhost:/public> rm -r a
rm
成功, 删除 `a'
lftp localhost:/public> ls
lftp localhost:/public>

4
、看vsftpd.conf的手册
]# man 5 vsftpd.conf

anon_max_rate
匿名的最大数据传输速率

The maximum data transfer rate
permitted, in bytes per second,
for anonymous clients.


anon_max_rate
30000 表示30KB/s

local_max_rate
本地帐号的最大数据传输速率
The maximum data transfer rate
permitted, in bytes per second,
for local authenticated users.

Default: 0 (unlimited)

anon_root
指定匿名访问的共享根目录位置

anon_root=/ftp
举例:
[root@localhost pg]# mkdir /ftp
[root@localhost pg]# ls -ld /ftp
drwxr-xr-x 2 root root 4096 04-02 15:25 /ftp
[root@localhost pg]# ls -ld /
drwxr-xr-x 27 root root 4096 04-02 15:25 /
[root@localhost pg]# grep anon_root /etc/vsftpd/vsftpd.conf
anon_root=/ftp
[root@localhost pg]# service vsftpd restart
关闭 vsftpd [确定]
vsftpd 启动 vsftpd [确定]

注意:这里指定的目录权限一定不能对ftp这个匿名帐号有写权限。如果你chmod 777 /ftp ,则会在登录FTP时,遇到 如下错误:
[root@localhost tmp]# lftp localhost
lftp localhost:~> ls
ls:
登录失败: 500 OOPS: vsftpd: refusing to run with writable anonymous root


CIFS


common internet filesystem
实现的软件:samba

samba
软件包有三个:
samba
主程序包 /etc/init.d/samba启动脚本的提供
samba-common
协议支持包 ,提供了 /etc/samba/smb.conf

samba-client
客户端访问samba服务器的工具包。
]# rpm -qf `which smbclient`
samba-client-3.0.33-3.28.el5
]# rpm -qf `which mount.cifs`
samba-client-3.0.33-3.28.el5

]# yum -y install samba samba-common samba-client

!!!!配置samba的用户!!!!
用户首先应该在samba服务器的系统中存在
其次,密码不可是系统密码,而是专门用smbpasswd命令设置的密码
]# useradd -s /sbin/nologin sambauser1
]# smbpasswd -a sambauser1
New SMB password:
Retype new SMB password:
设置密码时,出现如下报错,原因是没有启动samba服务
tdbsam_open: Converting version 0 database to version 3.
account_policy_get: tdb_fetch_uint32 failed for field 1 (min password length), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 2 (password history), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 3 (user must logon to change password), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 4 (maximum password age), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 5 (minimum password age), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 6 (lockout duration), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 7 (reset count minutes), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 8 (bad lockout attempt), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 9 (disconnect time), returning 0
account_policy_get: tdb_fetch_uint32 failed for field 10 (refuse machine password change), returning 0
Added user sambauser1.

启动一下服务,再创建帐号密码
[root@localhost tmp]# /etc/init.d/smb start
启动 SMB 服务: [确定]
启动 NMB 服务: [确定]
[root@localhost tmp]# smbpasswd -a sambauser1
New SMB password:123
Retype new SMB password:123


1
、只要安装好samba的服务器端包,并启动服务。
就可以访问共享了!
smbclient -L sambaserver_ip

]# smbclient -L 192.168.1.254

[root@localhost tmp]# smbclient -L 192.168.1.254
Password:
这是不要输密码,除非指定了帐号才要输密码
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------
LOCALHOST Samba Server Version 3.0.33-3.28.el5

Workgroup Master
--------- -------
MYGROUP


指定以samba帐号查看共享!
[root@localhost tmp]# smbclient -L 192.168.1.254 -U sambauser1
Password: 123
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
sambauser1 Disk Home Directories
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------

Workgroup Master
--------- -------
MYGROUP

mount.cifs //samba_server_ip/sharename /mountpoint -o user=xxx,pass=xxx

mount.cifs //192.168.1.254/sambauser1 /net -o user=sambauser1,pass=123

这个家目录的共享,哪来的呢?
/etc/samba/smb.conf中定义的!
如下:
246 #============================ Share Definitions ==============================
247
248 [homes]
这是共享名 sharename ,注意,上面所看到共享名是sambauser1,而不是homes,这是什么情况?
249 comment = Home Directories
250 browseable = no
251 writable = yes
252 ; valid users = %S
253 ; valid users = MYDOMAIN\%S
254
以下两命令结果一样!因为家目录的共享 ,共享名既可以是配置文件中定义的homes,也可以是与用户名字同名
[root@localhost tmp]# mount.cifs //192.168.1.254/sambauser1 /net -o user=sambauser1,pass=123
[root@localhost tmp]# mount.cifs //192.168.1.254/homes /net -o user=sambauser1,pass=123


2
、如果希望自定义共享,必须学习samba的共享定义段的语法
vim /etc/samba/smb.conf
在此配置文件的最后加上如下共享定义
[root@localhost tmp]# mkdir /sambadir1
[root@localhost tmp]# setfacl -m user:sambauser1:rwx /sambadir1/
如果新fdisk分的区,需要在mount时,加上-o acl选项
[root@localhost tmp]# tail -n 5 /etc/samba/smb.conf
[pgshare]
comment = test for pg samba
path = /sambadir1
writable = yes
browseable = no
决定了smbclient命令是否可以查看到共享
]# service smb restart

[root@localhost tmp]# useradd -s /sbin/nologin sambauser2
[root@localhost tmp]# smbpasswd -a sambauser2

[root@localhost tmp]# mount -t cifs //192.168.1.254/pgshare /net -o user=sambauser1
[root@localhost tmp]# cd /net
[root@localhost net]# ls
[root@localhost net]# mkdir a
[root@localhost net]# ls
a
[root@localhost net]# mount -t cifs //192.168.1.254/pgshare /media/ -o user=sambauser2
Password:
[root@localhost net]# mkdir /media/bb
mkdir:
无法创建目录 “/media/bb”: 权限不够

体现出以下两种权限取交集的概念
a.
配置文件中定义的权限
b.
共享的目录本身的系统权限
man smb.conf
的更多 关于samba共享权限的描述!


NFS

NFS
网络文件系统
端口: 111 2049 (至少这两端口,其它的端口不固定)
/etc/sysconfig/nfs
中定义固定的端口号码

功能:主要用于实现unix-like系统间的共享
共享服务器端只需要在/etc/exports文件中定义
/path/directory IP/NET/*(
权限)
注意:最终的共享权限应该是
配置中的权限

文件在文件系统中的权限
交集

要使用NFS的客户端:
showmount
mount.nfs



1
/nfsdir
共享给192.168.1.0/24网络中的所有主机
权限是可读可写
1
、创建目录
[root@localhost ~]# mkdir /nfsdir
[root@localhost ~]# ls -ld /nfsdir/
drwxr-xr-x 2 root root 4096 04-06 10:49 /nfsdir/
2
、定义NFS配置文件
[root@localhost ~]# vim /etc/exports
[root@localhost ~]# tail -n 1 /etc/exports
/nfsdir 192.168.1.0/255.255.255.0(rw)
3
、启动 服务
]# service nfs restart
4
、客户端挂载使用
]# showmount -e 192.168.1.254
Export list for 192.168.1.254:
/nfsdir 192.168.1.0/255.255.255.0
]# mount.nfs 192.168.1.254:/nfsdir /mountpoint

总结: nfs客户端挂载服务器端的共享的时候,计算权限的方式应该
是配置文件中的权限和nfsnobody帐号对共享目录的权限。

也就是说,客
\u603b\u8ba1 0
户端映射到服务器端的用户身份是nfsnobody用户
(不管客户端以什么用户 身份挂载服务器端的共享 ,都被压制为nfsnobody用户)


例子2
[root@localhost /]# ls -ld /nfsdir/
drwx------ 4 root root 4096 04-06 11:07 /nfsdir/
[root@localhost /]# cat /etc/exports
/nfsdir 192.168.1.0/255.255.255.0(rw,no_root_squash)

例子3
指定不同的客户端访问同一个共享时,压制成不同的用户身份
[root@localhost /]# cat /etc/exports
/nfsdir 192.168.1.34(rw,all_squash,anonuid=1000) 192.168.1.0/24(rw,all_squash,anonuid=1001)

[root@localhost /]# useradd -u 1000 pp
[root@localhost /]# useradd -u 1001 qq
[root@localhost /]# ls -ld /nfsdir/
drwx------ 2 root root 4096 04-06 11:09 /nfsdir/
[root@localhost /]# setfacl -m u:pp:rwx /nfsdir/
[root@localhost /]# setfacl -m u:qq:rx /nfsdir/


结果: 192.168.1.34可读可写(以UID1000的身份也是pp),其它主机只读
[root@localhost nfsdir]# pwd
/nfsdir
[root@localhost nfsdir]# ll
总计 4
drwxr-xr-x 2 pp nfsnobody 4096 04-06 11:15 laocui
也体会出了权限取交集

以下挂载选项要理解 !!!
ro,rw,no_root_squash,all_squash,no_squash,anonuid=XX,anongid=XX,sync,async


QUOTA

具体实现

NAS
1
、服务器使用NAS存储,I0的消耗将会由NAS存储分担
2
、备份方便
3
、提供较好的存储扩展能力
4
、标准的访问方式是通过NFSCIFS
5
、比较友好的存储访问界面和存储配置界面

-----------------
思路:
1
、硬件冗余 ---RAID
2
、存储扩展 --- LVM
3
、标准共享存储访问方式---CIFSNFS
4
、以太网访问 ---IP /网卡
5
、备份软件和访问、配置界面

实现:
1
、做RAID5
]# mdadm -C /dev/md0 -l 5 -n 3 /dev/hdb{5,6,7}
]# mdadm -C /dev/md1 -l 5 -n 3 /dev/hdb{8,9,10}
]# cp /usr/share/doc/mdadm-2.6.9/mdadm.conf-example /etc/mdadm.conf
]# vim /etc/mdadm.conf
DEVICE /dev/hdb5 /dev/hdb6 /dev/hdb7 /dev/hdb9 /dev/hdb8 /dev/hdb10
]# mdadm -D -s >> /etc/mdadm.conf
写配置文件的目的是重 启后raid设备 能激活
]# grep mdadm /etc/rc.d/rc.sysinit
if [ -f /etc/mdadm.conf ]; then
/sbin/mdadm -A -s

2
LVM
]# pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
]# pvcreate /dev/md1
Physical volume "/dev/md1" successfully created
]# vgcreate nasvg /dev/md0 /dev/md1
]# lvcreate -n naslv -L +2G nasvg
3
CIFSNFS
]# mkfs.ext3 /dev/nasvg/naslv
]# mkdir /nas
]# mount /dev/nasvg/naslv /nas/
]# df -T /nas/
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/mapper/nasvg-naslv
ext3 2064208 68680 1890672 4% /nas
]# ls -l /dev/nasvg/naslv
lrwxrwxrwx 1 root root 23 04-06 10:35 /dev/nasvg/naslv -> /dev/mapper/nasvg-naslv
[root@localhost mnt]# ls -ld /nas/
drwxr-xr-x 4 root root 4096 04-06 11:51 /nas/
[root@localhost mnt]# ls -l /nas/
总计 20
drwx------ 2 root root 16384 04-06 10:36 lost+found
drwxr-xrwx 3 root root 4096 04-06 11:56 public

配置CIFS 或者NFS共享
]# grep public /etc/exports
/nas/public *(rw)
]# service nfs restart

-----------------------
samba
配置匿名可以读写共享
vim /etc/samba/smb.conf
#security = user
security = share

[nas]
这是共享名称,在smbclient查看时和mount.cifs挂载都要用到
comment = test for pg nas
共享描述,在smbclient查看时可以看到
path = /nas/public
实现想通过samba共享的路径
writable = yes
是否允许读写
browseable = yes
是否允许在smbclient查看时,看到共享名字
guest ok = yes
security级别设置为share的时候,是否可以被匿名挂载成功
~
]# service smb restart

4
、通过以太访问
挂载

[root@localhost nas]# mount.nfs 192.168.1.254:/nas/public /mnt
[root@localhost nas]# cd /mnt
[root@localhost mnt]# mkdir a
[root@localhost mnt]# ll
总计 4
drwxr-xr-x 2 nfsnobody nfsnobody 4096 04-06 11:55 a
[root@localhost mnt]#

]# smbclient -L //192.168.1.254
Password:
密码不用敲
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Sharename Type Comment
--------- ---- -------
nas Disk test for pg nas
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]

Server Comment
--------- -------
LOCALHOST Samba Server Version 3.0.33-3.28.el5

Workgroup Master
--------- -------
MYGROUP
[root@localhost mnt]#
[root@localhost mnt]# smbclient -L //192.168.1.254
[root@localhost mnt]# mount.cifs //192.168.1.254/nas /net
Password:
密码为空

[root@localhost mnt]# cd /net
[root@localhost net]# mkdir b
[root@localhost net]# ll
总计 0
drwxr-xr-x 2 nfsnobody nfsnobody 0 04-06 11:55 a
drwxr-xr-x 2 nobody nobody 0 04-06 12:01 b


5
、存储的扩展 ----扩展LV


先看vg有没有空闲 ,如果有,再lvextent扩展LV
[root@localhost net]# vgdisplay
/dev/cdrom: open failed:
找不到介质
--- Volume group ---
VG Name nasvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 3.77 GB
PE Size 4.00 MB
Total PE 964
Alloc PE / Size 512 / 2.00 GB
Free PE / Size 452 / 1.77 GB
VG UUID vd8Lhn-KN6m-bFaU-8cny-NqUo-oVLx-vObF2l

[root@localhost net]#

[root@localhost net]# df -Th /nas
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/nasvg-naslv
ext3 2.0G 68M 1.9G 4% /nas

[root@localhost net]# lvextend -L +1G /dev/nasvg/naslv
Extending logical volume naslv to 3.00 GB
Logical volume naslv successfully resized

[root@localhost net]# df -Th /nas
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/nasvg-naslv
ext3 2.0G 68M 1.9G 4% /nas
[root@localhost net]# resize2fs /dev/nasvg/naslv
resize2fs 1.39 (29-May-2006)
ext文件系统实现在线扩容
Filesystem at /dev/nasvg/naslv is mounted on /nas; on-line resizing required
Performing an on-line resize of /dev/nasvg/naslv to 786432 (4k) blocks.
The filesystem on /dev/nasvg/naslv is now 786432 blocks long.

[root@localhost net]# df -Th /nas
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/nasvg-naslv
ext3 3.0G 68M 2.8G 3% /nas


=======================
1
、你也可以通过FTP来实现存储空间的共享
2
、并且,你可以配置帐号,让使用存储的客户端必须 以指定帐号来访问nas。(FTPCIFS
3
、一旦指定了身份,你就可以尝试配置磁盘配额,来限定对存储的空间的使用

 

到此NAS 演示完毕。请注意标注红色部分和蓝色部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章