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可读可写(以UID=1000的身份也是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存储,I/0的消耗将会由NAS存储分担
2、备份方便
3、提供较好的存储扩展能力
4、标准的访问方式是通过NFS/CIFS
5、比较友好的存储访问界面和存储配置界面
-----------------
思路:
1、硬件冗余 ---RAID
2、存储扩展 --- LVM
3、标准共享存储访问方式---CIFS/NFS
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、CIFS/NFS
]# 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。(FTP/CIFS)
3、一旦指定了身份,你就可以尝试配置磁盘配额,来限定对存储的空间的使用
到此NAS 演示完毕。请注意标注红色部分和蓝色部分。
转载于:https://blog.51cto.com/jeffreylee/564570