博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: network

Solaris与Sun产品新手必读<不断更新中…>

[复制链接]
 楼主| 发表于 2008-1-6 21:27:29 | 显示全部楼层
ZFS文件系统管理

创建和删除ZFS文件系统

ZFS文件系统能够通过zfs create和zfs destory命令进行创建和删除。
创建ZFS文件系统
ZFS文件系统可以通过命令zfs create命令进行创建。Create子命令可以使用担搁参数创建文件系统名称。文件系统名称是从
pool-name/[filesystem-name/]filesystem-name
一个新的文件系统被创建的时候在他的路径标示层次上用存储池的名字和文件系统开始的名字所有的文件系统的名字必须是在存储池中存在的。文件系统的名字必须符合ZFS文件名组成的要求。
(任何一个ZFS文件系统名字的组成必须符合下面的规则:
不允许为空EEmpty components are not allowed.
任何一个名字只能包含文字和数字以及下面4个特殊字符:
&#61607; Underscore (_)
&#61607; Hyphen (-)
&#61607; Colon (
&#61607; Period (.)
存储池的名字必须是用小写字母开始。除了开始开始序列c[0-9] 是不允许的。同时,存储池的名字象mirror, raidz, 和 spare是不允许的,因为这些是保留的。
Dataset 的名字是文字和数字)
下面的例子显示文件系统bonwick被创建到tank/home文件系统上。
# zfs create tank/home/bonwick
ZFS如果创建成功它会自动mount到新创建的文件系统上。默认的文件是mount为/dataset,为create命令提供文件系统名提供使用路径。例如:新创建的bonwick文件系统是/tank/home/bonwick更多的关于自动mount点的信息参考Managing ZFS Mount Points.
更多的关于zfs create的命令请参考zfs。
删除ZFS文件系统
.删除ZFS文件系统使用zfs destroy命令。删除文件系统是自动umount和unshared。关于更多的automanaged mounts和 automanaged shares,请考Automatic Mount Points
.看下面的例子:
# zfs destroy tank/home/tabriz
注意:使用destroy命令没有确认提示出现。
如果文件系统在删除的时候是忙的和不能unmount则zfs destroy命令失败。删除活动的文件系统,使用-f参数。使用这个参数要注意,它能够umount unshare和删除活动的文件系统,引起一些非预见的应用活动。
# zfs destroy tank/home/ahrens
cannot unmount 'tank/home/ahrens': Device busy
# zfs destroy -f tank/home/ahrens
如果文件系统是子系统在使用zfs destroy时也会失败。要递归删除文件系统和所有的相关信息。使用-r参数递归删除同时也要注意同时会删除snapshots
# zfs destroy tank/ws
cannot destroy 'tank/ws': filesystem has children
use '-r' to destroy the following datasets:
tank/ws/billm
tank/ws/bonwick
tank/ws/maybee
# zfs destroy -r tank/ws
如果文件系统间接的删除了一些信息。则递归删除也会出现失败。则需要强迫删除所有的信息,包括外部层次上的客龙文件系统。则需要使用-R参数。
# zfs destroy -r tank/home/schrock
cannot destroy 'tank/home/schrock': filesystem has dependent clones
use '-R' to destroy the following datasets:
tank/clones/schrock-clone
# zfs destroy -R tank/home/schrock
注意在使用-f –r –R参数时没有出现确认提示消息。
为ZFS文件系统更名
文件系统可以使用zfs rename命令进行更名。使用rename命令可以执行以下操作。
&#61607; 改变文件系统名
&#61607; 重新分配文件系统到新定位的ZFS结构上。
&#61607; 为文件系统更名并且重新定位ZFS结构。
下面是一个使用rename命令的例子
# zfs rename tank/home/kustarz tank/home/kustarz_old
将 kustarz 文件系统更名为 kustarz_old.
下面的例子显示将文件系统重新定位
# zfs rename tank/home/maybee tank/ws/maybee
这个例子中如果maybee文件系统重新定位冲tank/home到tank/ws。当你重新定位文件系统通过rename命令,新定位的点必须有同样的存储池并且有足够的空间来提供给新的文件系统。如果,新的定位点没有足够的空间,可能是存储池已经达到容量了。则rename失败。
如果rename操作尝试着unmount/remount操作为文件系统和下级文件系统。如果操作不能unmount活动的文件系统则rename失败。如果这样的问题发生了。则需要强制unmount文件系统。

管理和共享ZFS文件系统
管理ZFSmount点
默认的所有的ZFS文件系统的mount是通过SMF'svc://system/filesystem/local服务来启动的。文件系统是mount在/path文件系统名路径上的。
你能够通过设置mount点的属性通过使用zfs set命令来指定mount点。ZFS文件系统自动创建mount点,如果需要自动mount文件系统使用命令zfs mount –a来引入,不需要你来编辑/etc/vfstab文件。(这点本人感觉有点象AIX上的感觉,直接建立/etc/filesystems)
,mount点的属性是继承的。比如:如果pool/home是mount点设置在/export/stuff上则pool/home/user继承/export/home/user为它mount点的属性。
Mount点的属性能够设置为none来防止文件系统重复mount.
如果需要,文件系统也可以直接通过mount接口来管理,通过zfs set命令来管理mount点。这样做可以防止ZFS文件系统自动mount和管理文件系统。这个接口包括mount和umount命令,同时要注意/etc/vfstab文件。
:当更改mount点管理策略时要注意下面的行为:
&#61607; 自动mount点行为
&#61607; 继承mount点的行为
自动mount点
&#61607; 当改变到legacy或none ZFS自动mount文件系统
&#61607; 如果ZFS是当前的文件系统但是它的状态是unmount的。如果mount点的属性改变以后,文件系统还是保持unmount的状态。
Mount点的属性并不是通过ZFS来管理legacy。下面的例子显示创建ZFS自动管理的mount点。

# zfs create pool/filesystem
# zfs get mountpoint pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mountpoint /pool/filesystem default
# zfs get mounted pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mounted yes -
你也可以直接设置mount点的属性,看下面的例子。

# zfs set mountpoint=/mnt pool/filesystem
# zfs get mountpoint pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mountpoint /mnt local
# zfs get mounted pool/filesystem
NAME PROPERTY VALUE SOURCE
pool/filesystem mounted yes -
当mount点的属性改变的时候,文件系统是自动从老的mount点上umount的然后重新mount到新的mount点上。Mount点目录是需要创建的。如果ZFS并不能unmount文件系统在文件系统活动期间,这个错误是被报告的并且需要手工强制unmount。
Legacy Mount点
你能够管理ZFS文件系统通过legacy工具来设置mount点的属性的legacy。Legacy文件系统不许通过mount和umount命令和/etc/vfstab文件来管理。ZFS文件系统不能启动的时候自动mount legacy文件系统同时ZFS mount和umount命令并不能操作datasetl类型。下面的例子显示如何设置和管理ZFS dataset。

# zfs set mountpoint=legacy tank/home/eschrock
# mount -F zfs tank/home/eschrock /mnt
特殊情况下,如果你设置ZFS为/usr或者/var文件系统,你必须指示他们为legacy文件系统。附加的,你需要在/etc/vfstab文件中为自动mount他们创建条目。另外,当系统启动的时候在保持模式下属于system/filesystem/local服务。
在启动的时候自动mount legacy文件系统。你必须在/etc/vfstab文件中增加条目。下面的例子显示/etc/vfstab

#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#

tank/home/eschrock - /mnt zfs - yes -
e device to fsck 和fsck pass 条目是设置为 -. 这是因为 fsck命令并不能应用于ZFS 文件系统..
Mounting ZFS 文件系统
ZFS文件系统在创建时是自动mount的或者当系统启动的时候。使用zfs mount明明只有当改变mount选项或者直接mount和unmount文件系统的时候是必须的。
zfs mount命令没有参数的时候显示当前mount的文件系统。Legacy管理的mount点并不显示:

# zfs mount
tank /tank
tank/home /tank/home
tank/home/bonwick /tank/home/bonwick
tank/ws /tank/ws
你能够使用-a选项来mount所有ZFS管理的文件系统。Legacy管理文件系统不能mount。

# zfs mount -a
默认的ZFS并不能允许mount在非空目录之上。如果强迫mount到非空目录之上,使用-O选项。

# zfs mount tank/home/lalt
cannot mount '/export/home/lalt': directory is not empty
use legacy mountpoint to allow this behavior, or use the -O flag
# zfs mount -O tank/home/lalt
legacy mount点必须是通过legacy工具进行管理的。当尝试使用ZFS工具会引起错误的。

# zfs mount pool/home/billm
cannot mount 'pool/home/billm': legacy mountpoint
use mount(1M) to mount this filesystem
# mount -F zfs tank/home/billm
当文件系统是mount的。它使用一些基于属性的值结合dataset的mount选项。下面显示如下:
Property
Mount Options
devices
devices/nodevices
exec
exec/noexec
readonly
ro/rw
setuid
setuid/nosetuid
The mount option nosuid is an alias for nodevices,nosetuid.
临时Mount属性
I如果以上的选项通过zfs mount的-o选项被设置,结合这些属性的值是被临时使用的。这些选项的值被告知为临时通过zfs get命令可以看到,当文件系统umont后他们将恢复他们原来的值。如果属性值在dataset mount的时候被改变,则改变将会立即生效。
I下面的例子显示为tank/home/perrin文件系统设置临时的只读mount选项。

# zfs mount -o ro tank/home/perrin
下面的例子显示文件系统确认是unmount的。临时改变文件系统的属性在mount状态,你必须使用remount选项。

# zfs mount -o remount,noatime tank/home/perrin
# zfs get atime tank/home/perrin
NAME PROPERTY VALUE SOURCE
tank/home/perrin atime off temporary
.
Unmounting ZFS 文件系统
你能够使用zfs unmount命令来umount文件系统。
下面的例子显示通过文件系统名umount文件系统。

# zfs unmount tank/home/tabriz
下面的例子显示通过mount点来umount文件系统。

# zfs unmount /export/home/tabriz
如果文件系统是活动的或者正忙则umount命令失败。你可以使用-f参数来强制umount文件系统。当强制umount文件系统需要注意的是文件系统的数据是活动正在使用的。

# zfs unmount tank/home/eschrock
cannot unmount '/export/home/eschrock': Device busy
# zfs unmount -f tank/home/eschrock
提供向后的能力,legacy umount命令能够够使用umount命令来umount ZFS文件系统。

# umount /export/home/bob

Sharing ZFS 文件系统
和mount点近似。ZFS能够自动共享文件系统通过使用sharefs属性。使用这种方法当你增加一个新的文件系统的时候并不需要修改/etc/dfs/dfstab文件。共享属性是用逗号分割选项的在share命令上。为别名指定的值是on在默认共享选项上为所有的用户指定为read/write权限。当指定值为off知识文件系统不通过ZFS文件系统管理同时通过传统的方式进行共享比如:/etc/dfs/dfstab文件。所有的这些文件系统的sharenfs在共享启动的时候是打开的。
控制Share Semantics
默认的所有文件系统是非共享的。共享新的文件系统通过zfs set设置。

# zfs set sharenfs=on tank/home/eschrock
属性是继承的,当文件系统自动共享创建则他们的继承属性是打开的。

# zfs set sharenfs=on tank/home
# zfs create tank/home/bricker
# zfs create tank/home/tabriz
# zfs set sharenfs=ro tank/home/tabriz
在tank/home/bricker和tank/home/tabriz初始共享为写是因为他们继承了sharenfs属性从tank/home。一旦属性被设置为ro 则(readonly), tank/home/tabriz共享属性为只读则忽略sharenfs来自tank/home的属性。
Unsharing ZFS文件系统
许多的文件系统在启动的时候自动share和unshare。有时候创建和删除文件系统需要直接unshare。

# zfs unshare tank/home/tabriz
命令unshares tank/home/tabriz文件系统。需要unshare所有的ZFS文件系统,需要使用-a选项。

# zfs unshare -a
Sharing ZFS 文件系统
很多的时候需要ZFS在启动和创建share的时候需要自动的行为,足够的正常操作。有些原因,在unshare文件系统的时候,你需要再一次share文件系统功过zfs share命令。

# zfs share tank/home/tabriz
你也能够share所有的ZFS文件系统功过-a选项。

# zfs share -a
Legacy Share 行为
如果sharenfs属性是关闭的。则ZFS不能够尝试共享或者非共享文件系统。通过传统的方法也能够进行管理,比如:/etc/dfs/dfstab文件。
.不象传统的mount命令,传统的share和unshare命令能够作用于ZFS文件系统。一些情况下,你能够够手工share文件系统通过设置sharenfs属性的不同选项。这种管理模式是不推荐的。选择任意一个NFS share来完成对ZFS的管理或者通过/etc/dfs/dfstab文件来管理。ZFS管理模式被设计为更简单和更少的工作量比起传统的模式
 楼主| 发表于 2008-1-6 22:05:59 | 显示全部楼层
solaris 10 IP Filter 基本配置方法


# svcs -a |grep network |egrep "pfil|ipf"
disable 4:36:25 svc:/network/pfil:default
online 23:41:33 svc:/network/ipfilter:default
(查看IP Filter服务是否启动)

# ifconfig -a inet
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
pcn0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 10.4.128.226 netmask ffffff00 broadcast 10.4.128.25
(查看网卡设备名)

#vi /etc/ipf/pfil.ap
.......
#dnet -1 0 pfil
#pcelx -1 0 pfil
#spwr -1 0 pfil
pcn -1 0 pfil
.......
(将网卡设备名前注释去掉)

#vi /etc/ipf/ipf.conf
block in log quick proto tcp from 10.4.128.0/24 to any port = ftp
(编辑防火墙规则)

#svcadm enable svc:/network/ipfilter:default
(启动服务)

#svcs -a |grep -i ipf
(再次查看服务是否启动)

#autopush -f /etc/ipf/pfil.ap
(生效pfil.ap配置,此步骤只需要做一次,以后更改防火墙规则就不需要再做)

#ifconfig pcn0 down unplumb
(禁用网卡)

#ifconfig pcn0 plumb 10.4.128.226 netmask 255.255.255.0 broadcast 10.4.128.255 up
(启用网卡)

这时候防火墙已经生效,大家可以试着FTP配置好的服务器,若以后需要更改规则请参照以下步骤:
#vi /etc/ipf/ipf.conf
block in log proto tcp from 10.4.128.0/24 to any port = ftp
block in log proto tcp from 10.4.128.0/24 to any port = telnet

#ipf -Fa -f /etc/ipf/ipf.conf
#ipfstat -io
#ipfstat
#ipmon

更改完以后可以再次试着FTP。

大家可能比较迷茫的就是规则方面了,其实它的规则很好懂,配置起来也很简单:
禁止就是block
通过就是pass
进来就是in
出去就是out

那么配合起来使用就行了,再加上可以指定在哪个网卡上使用,也就是再加个on pcn0,另外还有一个关键字就是all,这是匹配(禁止或者通过)所有的包,组合起来的例子就是:
block in on pcn0 all
(禁止所有的包进入)

还可以针对网段、IP以及端口的配置,就是在包的后面加如from .... to .... port = ..就可以,等号的地方可以改成其他运算符,如<、>
网段:block in log proto tcp from 10.4.128.0/24 to any port = ftp
地址:block in log proto tcp from 10.4.128.163/32 to any port = ftp

对于协议的控制,它一样可以做的很好。协议的关键字有4种(icmp、tcp、udp、tcp/udp),启用对协议的控制就是在协议的关键字前加proto关键字如:
block in on pcn0 proto icmp from any to any

在使用ICMP协议控制的时候,可以使用icmp-type关键字来指定ICMP协议的类型,类型的值有4种:
ICMP Type Value Keyword
Echo reply 0 echorep
Echo request 8 echo
Router advertisement 9 routerad
Router solicitation 10 routersol

例如:
block out quick proto icmp from any to 10.4.128.163/32 icmp-type 0
(禁止对PING的响应)

在这里要解释一下quick的用法,这是个很好用的关键字,假如你的防火墙有100条规则,最有用的可能只有前10条,那么quick是非常有必要的。
pass in log quick proto tcp from 10.4.128.163/32 to any port = telnet
block in log all from any to any
假如你希望禁止服务器的所有包而只希望一个IP只能够telnet的话,那么就可以加上quick关键字,quick的作用是当包符合这条规则以后,就不再向下进行遍历了。如果没有quick的情况下,每一个包都要遍历整个规则表,这样的开销是十分大的,但是如果滥用quick也是不明智的,因为它毕竟不会产生日志。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-4-26 18:06 , Processed in 0.079773 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表