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 演示完畢。請注意標註紅色部分和藍色部分。