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


本文标签: 共享 服务 硬盘 打开 权限