admin 管理员组文章数量: 887021
2024年3月7日发(作者:linux操作系统的优势和主要特点)
使用Solaris ZFS创建NFS和SMB共享
用过NetApp DataOnTap的都知道,NetApp的核心是WAFL。WAFL集成Filer System, Volume
Manager,Solaris的ZFS也一样,并不仅仅是一个文件系统。需要了解更多关于ZFS的知识请到/os/community/zfs/whatis
创建存储池
首先,列出硬盘
root@tiger:~# format
Searching done
AVAILABLE DISK SELECTIONS:
0. c8t0d0
/pci@0,0/pci10f1,2892@7/disk@0,0
1. c9t0d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3/sd@0,0
2. c9t1d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3/sd@1,0
3. c9t2d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3/sd@2,0
4. c9t3d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3/sd@3,0
5. c10t1d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3,1/sd@1,0
6. c10t2d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3,1/sd@2,0
7. c10t3d0
/pci@15,0/pci1022,7450@a/pci1000,1040@3,1/sd@3,0
我的系统有8块硬盘,一块36G的安装了OS,两块300G的准备做NAS,四块146G的准备做RAID-5为ESX提供存储,一块32G的Intel X25-E SSD用来做slog.
下面创建第一个zpool: nas
root@tiger:~# zpool create nas c9t3d0 c10t1d0
指令很简单,zpool create 存储池名称 硬盘。 根据刚才format得出的信息,两个300G的硬盘为c9t3d0和c10t1d0。下面确认新建的zpool。 rpool为OS盘,是在安装OS是自动创建的。
root@tiger:~# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
nas 556G 76K 556G 0% ONLINE -
rpool 34G 7.09G 26.9G 20% ONLINE -
读取更详细的信息:
root@tiger:~# zpool status -v nas
pool: nas
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
nas ONLINE 0 0 0
c9t3d0 ONLINE 0 0 0
c10t1d0 ONLINE 0 0 0
errors: No known data errors
创建第二个zpool: vol使用RAID-5 (在ZFS中RAID-5称为raidz,RAID-6称为raidz2)
root@tiger:~# zpool create vol raidz c9t1d0 c9t2d0 c10t2d0 c10t3d0 log c8t0d0
zpool create 使用RAID-5(raidz) format读取的硬盘 log SSD硬盘。 log用来存取ZIL (ZFS Intent
Log).使用SSD作为ZIL LOG可以极大程度提升NFS写入速度,但不是必须的。
读取新建的zpool vol的信息:
root@tiger:~# zpool status -v vol
pool: vol
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
vol ONLINE 0 0 0
raidz1 ONLINE 0 0 0
c9t1d0 ONLINE 0 0 0
c9t2d0 ONLINE 0 0 0
c10t2d0 ONLINE 0 0 0
c10t3d0 ONLINE 0 0 0
logs ONLINE 0 0 0
c8t0d0 ONLINE 0 0 0
errors: No known data errors
如果你有六快硬盘,建议做RAID-6 (raidz2)。八块硬盘的话可以做RAID-6或RAID-50。基本上RAID-5建议最多用五块硬盘,RAID-6建议最多用8块硬盘。再多硬盘可以分拆为多个RAI-5/6列阵然后RAID-0起来。
启动CIFS服务
要提供内核基础的CIFS共享服务和iSCSI服务,必须安装storage-server,包括了CIFS服务,iSCSI服务,FC TARGET服务等等存储服务相关的模块。
root@tiger:~# pkg install storage-server
DOWNLOAD PKGS FILES XFER (MB)
Completed 21/21 934/934 32.33/32.33
PHASE ACTIONS
Install Phase 1898/1898
安装完后重启动服务器。
首先确定SAMBA服务禁用,使用svcs指令可以显示所有服务的状态
root@tiger:~# svcs -a | grep samba
disabled 23:25:17 svc:/network/samba:default
接下来打开CIFS服务。CIFS服务称为smb/server
root@tiger:~# svcadm enable -r smb/server
svcadm: svc:/milestone/network depends on svc:/network/physical, which has multiple
instances.
确认CIFS服务已经启用,同样适用svcs指令
root@tiger:~# svcs smb/server
STATE STIME FMRI
online 23:28:45 svc:/network/smb/server:default
为什么在这里我要谈CIFS服务?因为当存储同时共享给NFS和CIFS时,牵涉到locking的问题。NFS和CIFS用的locking是不同的,所以在创建ZFS时我们必须告诉ZFS那样ZFS使用的locking就能同时支持NFS和CIFS。
这个存储服务器最终是为VMware平台提供存储。在VMware ESX中,我们通常把ISO等安装文件存在NFS共享上,在同一个共享上启用CIFS可以使上传ISO文件非常方便,而且通过CIFS共享可以达到平均85MB/s以上的上传速度。
使用ZFS创建NFS和CIFS共享
现在有了两个zpool - nas和vol了。
root@tiger:~# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
nas 556G 76K 556G 0% ONLINE -
rpool 34G 7.09G 26.9G 20% ONLINE -
vol 544G 137K 544G 0% ONLINE -
接下来我们要在nas里建立ZFS并且打开NFS和CIFS共享。
在nas池内创建名称为share的ZFS
root@tiger:~# zfs create -o casesensitivity=mixed -o nbmand=on nas/share
WINDOWS是不分大小写的,但UNIX是分的,这里第一个-o我们告诉ZFS在UNIX下区分大小写,在WINDOWS下忽略。第二个-o告诉ZFS使用NFS和CIFS都支持的locking。
创建ZFS的基本格式为zfs create 选项 zpool名称/ZFS名称。
确定ZFS已经创建,通过zfs list来列出所有的ZFS,可以看见nas/share
root@tiger:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
nas 103K 547G 21K /nas
nas/share 19K 547G 19K /nas/share
rpool 11.3G 22.2G 78.5K /rpool
rpool/ROOT 3.13G 22.2G 19K legacy
rpool/ROOT/opensolaris 3.13G 22.2G 2.99G /
rpool/dump 4.00G 22.2G 4.00G -
rpool/export 130M 22.2G 21K /export
rpool/export/home 130M 22.2G 21K /export/home
rpool/export/home/dilidolo 130M 22.2G 130M /export/home/dilidolo
rpool/swap 4.00G 26.1G 101M -
vol 95.8K 401G 28.4K /vol
我们可以用zfs get all来读取完整的ZFS信息,注意看红字部分。
root@tiger:~# zfs get all nas/share
NAME PROPERTY VALUE SOURCE
nas/share type filesystem -
nas/share creation Mon Jun 1 23:45 2009 -
nas/share used 19K -
nas/share available 547G -
nas/share referenced 19K -
nas/share compressratio 1.00x -
nas/share mounted yes -
nas/share quota none default
nas/share reservation none default
nas/share recordsize 128K default
nas/share mountpoint /nas/share default
nas/share sharenfs off default
nas/share checksum on default
nas/share compression off default
nas/share atime on default
nas/share devices on default
nas/share exec on default
nas/share setuid on default
nas/share readonly off default
nas/share zoned off default
nas/share snapdir hidden default
nas/share aclmode groupmask default
nas/share aclinherit restricted default
nas/share canmount on default
nas/share shareiscsi off default
nas/share xattr on default
nas/share copies 1 default
nas/share version 3 -
nas/share utf8only off -
nas/share normalization none -
nas/share casesensitivity mixed -
nas/share vscan off default
nas/share nbmand on local
nas/share sharesmb off default
nas/share refquota none default
nas/share refreservation none default
nas/share primarycache all default
nas/share secondarycache all default
nas/share usedbysnapshots 0 -
nas/share usedbydataset 19K -
nas/share usedbychildren 0 -
nas/share usedbyrefreservation 0 -
从上面红字部分,可以看见NFS和SMB都是关闭的。接下来我们就要打开NFS和SMB共享。
打开共享有几种方法,这里我介绍最简单的一种,通过ZFS指令直接执行。前面提过,ZFS并不仅仅是一个文件系统,还包括了volume manager,共享管理。
打开NFS
zfs set sharenfs=rw=@192.168.1.0/24,root=@192.168.1.0/24 nas/share
这个指令里,我们告诉ZFS,打开nas/share的NFS共享,网络192.168.1.0/24有读写权限和root权限。
确定NFS共享打开并且权限设置正确:
这里介绍两种方法,
通过zfs get
root@tiger:~# zfs get sharenfs nas/share
NAME PROPERTY VALUE SOURCE
nas/share sharenfs rw=@192.168.1.0/24,root=@192.168.1.0/24 local
通过sharemgr指令
root@tiger:~# sharemgr show -vp
default nfs=()
zfs
zfs/nas/share nfs=() nfs:sys=(rw="@192.168.1.0/24" root="@192.168.1.0/24")
/nas/share
打开SMB (CIFS)共享
首先我们将OpenSolaris系统加入Windows Workgroup,CIFS服务器同样支持加入Windows Active Directory,这里不做介绍。
root@tiger:~# smbadm join -w WORKGROUP
After joining WORKGROUP the smb service will be restarted automatically.
Would you like to continue? [no]: yes
Successfully joined WORKGROUP
CIFS共享权限是基于组的,所以我们先建立一个组称为esx
root@tiger:~# groupadd esx
接下来我把自己加入esx组
root@tiger:~# usermod -G esx dilidolo
UX: usermod: dilidolo is currently logged in, some changes may not take effect until next
login.
上面建立的组是SOLARIS系统的,接下来我们要建立SMB组,与OS组相对应。
root@tiger:~# smbadm create -d "ESX Users" esx
'esx' created.
将我自己加入esx组:
root@tiger:~# smbadm add-member -m dilidolo esx
failed to add dilidolo: unable to obtain SID
失败!之前忘了一个步骤,配置pam
编辑/etc/,找到other password行,加入
other password required pam_smb_.1 nowarn
然后重新通过passwd指令设置密码
root@tiger:~# smbadm add-member -m dilidolo esx
'dilidolo' is now a member of 'esx'
接下来就可以共享share文件夹了,同样通过zfs set指令
root@tiger:~# zfs set sharesmb=name=share,rw=@192.168.1.0/24 nas/share
这里,name=share是从Windows看到共享的名称,rw=@192.168.1.0/24是192.168.1.0网络有读写权限。
最后一步是更改Solaris文件系统权限
root@tiger:~# chown -R dilidolo:esx /nas/share
确认SMB共享打开,和NFS一样,可以通过zfs get 和sharemgr
root@tiger:~# zfs get sharesmb nas/share
NAME PROPERTY VALUE SOURCE
nas/share sharesmb name=share,rw=@192.168.1.0/24 local
root@tiger:~# sharemgr show -vp
default nfs=()
zfs
zfs/nas/share nfs=() smb=() nfs:sys=(rw="@192.168.1.0/24" root="@192.168.1.0/24")
/nas/share
share=/nas/share smb=(rw="@192.168.1.0/24")
CIFS共享的选项很多,和Windows的无缝集成也很复杂,这里不多写,主要就是为了简单和ESX共享文件。
最后谈一下QUOTA
要限制共享的容量,可以用quota
root@tiger:/# zfs set quota=100G nas/share
root@tiger:/# zfs list
NAME USED AVAIL REFER MOUNTPOINT
nas 121K 547G 21K /nas
nas/share 22K 100G 22K /nas/share
版权声明:本文标题:ZFS创建NFS和SMB共享 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1709761334h545964.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论