分类:
2008-04-14 11:37:58
创建ZFS 存储池
第2 章• ZFS 入门23
tank 80G 137K 80G 0% ONLINE -
有关查看池状态的更多信息,请参见第44 页中的“查询ZFS 存储池的状态”。
创建ZFS 文件系统分层结构
创建用于存储数据的存储池之后,即可创建文件系统分层结构。分层结构是用于组织信息
的简单但功能强大的机制。使用过文件系统的任何用户对分层结构也都很熟悉。
使用ZFS 可将文件系统组织为任意分层结构,其中每个文件系统仅有一个父级。分层结构
的根始终是池名称。ZFS 通过支持属性继承来利用此分层结构,以便可在整个文件系统树中
快速轻松地设置公用属性。
确定ZFS 文件系统分层结构
选择文件系统粒度。
ZFS 文件系统是管理的中心点。它们是轻量型的,很容易创建。适用的模型是每个用户或项
目对应一个文件系统,因为此模型允许按用户或按项目控制属性、快照和备份。
第25 页中的“创建ZFS 文件系统”中创建了两个ZFS 文件系统bonwick 和billm。
有关管理文件系统的更多信息,请参见第5 章。
对相似的文件系统进行分组。
使用ZFS 可将文件系统组织为分层结构,以便可对相似的文件系统进行分组。此模型提供
了一个用于控制属性和管理文件系统的管理中心点。应使用一个公用名称来创建相似的文
件系统。
对于第25 页中的“创建ZFS 文件系统”中的示例,两个文件系统都放置在名为home 的文
件系统下。
选择文件系统属性。
大多数文件系统特征都是通过使用简单属性来控制的。这些属性可以控制多种行为,包括
文件系统的挂载位置、共享方式、是否使用压缩以及是否有任何生效的配额。
对于第25 页中的“创建ZFS 文件系统”中的示例,所有起始目录都挂载在
/export/zfs/user 中,都通过使用NFS 来共享并且都已启用压缩。此外,还对bonwick 强制
实施了10 GB 的配额。
有关属性的更多信息,请参见第66 页中的“ZFS 属性”。
1
2
3
创建ZFS 文件系统分层结构
24 Solaris ZFS 管理指南• 2006 年10 月
创建ZFS 文件系统
成为超级用户或承担具有适当ZFS 权限配置文件的等效角色。
有关ZFS 权限配置文件的更多信息,请参见第138 页中的“ZFS 权限配置文件”。
创建所需的分层结构。
在本示例中,创建了一个可充当各文件系统的容器的文件系统。
# zfs create tank/home
然后,在池tank 中的home 文件系统下对各文件系统进行分组。
设置继承的属性。
建立文件系统分层结构之后,设置应在所有用户之间共享的任何属性:
# zfs set mountpoint=/export/zfs tank/home
# zfs set sharenfs=on tank/home
# zfs set compression=on tank/home
# zfs get compression tank/home
NAME PROPERTY VALUE SOURCE
tank/home compression on local
有关属性和属性继承的更多信息,请参见第66 页中的“ZFS 属性”。
创建各文件系统。
请注意,文件系统可能已创建,并可能已在home 级别更改了属性。所有属性均可在使用文
件系统的过程中动态进行更改。
# zfs create tank/home/bonwick
# zfs create tank/home/billm
这些文件系统从其父级继承属性设置,因此会自动挂载在/export/zfs/user 中并且通过NFS
共享。您无需编辑/etc/vfstab 或/etc/dfs/dfstab 文件。
有关创建文件系统的更多信息,请参见第64 页中的“创建ZFS 文件系统”。
有关挂载和共享文件系统的更多信息,请参见第80 页中的“挂载和共享ZFS 文件系统
”。
设置文件系统特定的属性。
在本示例中,为用户bonwick 指定了10 GB 的配额。此属性可对该用户可以使用的空间量施
加限制,而无需考虑池中的可用空间大小。
# zfs set quota=10G tank/home/bonwick
1
2
3
4
5
创建ZFS 文件系统分层结构
第2 章• ZFS 入门25
查看结果。
使用zfs list 命令查看可用的文件系统信息:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 92.0K 67.0G 9.5K /tank
tank/home 24.0K 67.0G 8K /export/zfs
tank/home/billm 8K 67.0G 8K /export/zfs/billm
tank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick
请注意,用户bonwick 仅有10 GB 的可用空间,而用户billm 则可使用整个池(67GB) 。
有关查看文件系统状态的更多信息,请参见第72 页中的“查询ZFS 文件系统信息”。
有关空间的使用和计算方法的更多信息,请参见第28 页中的“ZFS 空间记帐”。
6
创建ZFS 文件系统分层结构
26 Solaris ZFS 管理指南• 2006 年10 月
ZFS 与传统文件系统之间的差别
本章讨论ZFS 与传统文件系统之间的一些重要差别。了解这些关键差别有助于在使用传统
工具与ZFS 进行交互时避免混淆。
本章包含以下各节:
第27 页中的“ZFS 文件系统粒度”
第28 页中的“ZFS 空间记帐”
第28 页中的“空间不足行为”
第28 页中的“挂载ZFS 文件系统”
第29 页中的“传统卷管理”
第29 页中的“新SolarisACL模型”
ZFS 文件系统粒度
以前,文件系统被局限于一个设备,因此文件系统自身会受到该设备大小的限制。由于存
在大小限制,因此创建和重新创建传统文件系统很耗时,有时候还很难。传统的卷管理产
品可帮助管理此过程。
由于ZFS 文件系统不局限于特定设备,因此可以轻松、快捷地创建,其创建方法与目录的
创建方法相似。在为存储池分配的空间内,ZFS 文件系统可以自动增长。
要管理许多用户子目录,可以为每个用户创建一个文件系统,而不是只创建一个文件系统
(如/export/home)。此外,ZFS 还提供了一个文件系统分层结构,这样只需应用分层结构
内文件系统可继承的属性,便可轻松设置和管理许多文件系统。
有关创建文件系统分层结构的示例,请参见第24 页中的“创建ZFS 文件系统分层结构”。
3第3 章
27
ZFS 空间记帐
ZFS 建立在池存储概念的基础上。与典型文件系统映射到物理存储器不同,池中的所有ZFS
文件系统都共享该池中的可用存储器。因此,即使文件系统处于非活动状态,实用程序
(例如df)报告的可用空间也会发生变化,因为池中的其他文件系统会使用或释放空间。
注意,使用配额可以限制最大文件系统大小。有关配额的信息,请参见第87 页中的“设
置ZFS 文件系统的配额”。使用预留功能可以保证文件系统拥有相应空间。有关预留的信
息,请参见第88 页中的“设置ZFS 文件系统的预留空间”。此模型与从同一文件系统
(例如/home)挂载多个目录的NFS 模型非常相似。
ZFS 中的所有元数据都是动态分配的。其他大部分文件系统都会预分配其大量元数据。因
此,创建文件系统时需要针对此元数据的即时空间成本。此行为还意味着文件系统支持的
文件总数是预先确定的。由于ZFS 根据需要分配其元数据,因此不需要初始空间成本,并
且文件数只受可用空间的限制。对于ZFS 文件系统,对df -g 命令输出的解释必须和其他文
件系统不同。报告的total files 只是根据池中可用的存储量得出的估计值。
ZFS 是事务性文件系统。大部分文件系统修改都捆绑到事务组中,并异步提交至磁盘。这些
修改在被提交到磁盘之前称为暂挂更改。已用空间量、可用空间量以及文件或文件系统引
用的空间量并不考虑暂挂更改。通常,暂挂更改仅占用几秒钟的时间。即使使用fsync(3c)
或O_SYNC 将更改提交到磁盘也不一定能保证空间使用信息会立即更新。
空间不足行为
文件系统的快照开销很小,并且很容易在ZFS 中创建。在大多数ZFS 环境中,快照很可能
是通用的。有关ZFS 快照的信息,请参见第6 章。
尝试释放空间时,快照的存在会引起某种意外行为。通常,获取适当的权限后,可从整个
文件系统中删除一个文件,此操作会使文件系统有更多的可用空间。但是,如果要删除的
文件存在于文件系统的快照中,则删除该文件不会获得任何空间。快照将继续引用该文件
使用的块。
由于需要创建新版本的目录来反映名称空间的新状态,因此删除文件会占用更多的磁盘空
间。此行为意味着,尝试删除文件时可能获得意外的ENOSPC 或EDQUOT。
挂载ZFS 文件系统
ZFS 旨在降低复杂性和减轻管理负担。例如,如果使用现有文件系统,则必须在每次添加新
文件系统时编辑/etc/vfstab 文件。ZFS 可根据数据集的属性自动挂载和取消挂载文件系
统,从而消除了上述要求。无需管理/etc/vfstab 文件中的ZFS 项。
有关挂载和共享ZFS 文件系统的更多信息,请参见第80 页中的“挂载和共享ZFS 文件系
统”。
ZFS 空间记帐
28 Solaris ZFS 管理指南• 2006 年10 月
传统卷管理
如第16 页中的“ZFS 池存储” 中所述,ZFS 不需要单独的卷管理器。ZFS 对原始设备执行
操作,因此可能会创建由逻辑卷(软件或硬件)构成的存储池。由于ZFS 在使用原始物理
设备时可获得最佳工作状态,因此建议不使用此配置。使用逻辑卷可能会牺牲性能和/或可
靠性,因此应尽量避免。
新SolarisACL模型
Solaris OS 的早期版本支持主要基于POSIXACL草案规范的ACL实现。基于POSIX 草案的
ACL用来保护UFS 文件。基于NFSv4 规范的新ACL模型用来保护ZFS 文件。
新SolarisACL模型的主要差别如下:
基于NFSv4 规范并与NT 样式的ACL类似。
提供更全面的访问权限集。
分别使用chmod 和ls 命令(而非setfacl 和getfacl 命令)进行设置和显示。
提供更丰富的继承语义,以便指定如何将访问权限从目录应用于子目录等。
有关将ACL用于ZFS 文件的更多信息,请参见第7 章。
以上文章转自于 : http://developers.sun.com.cn/