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

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