跳过导航链接 | |
退出打印视图 | |
从 Oracle Solaris 10 转换到 Oracle Solaris 11 Oracle Solaris 11 Information Library (简体中文) |
1. 从 Oracle Solaris 10 转换到 Oracle Solaris 11(概述)
将 UFS 数据迁移到 ZFS 文件系统(ufsdump 和 ufsrestore)
Oracle Solaris 10 发行版中不可使用的以下 ZFS 文件系统功能现可用于 Oracle Solaris 11:
ZFS 文件系统加密-创建 ZFS 文件系统后可以对其进行加密。有关更多信息,请参见第 9 章。
ZFS 文件系统重复数据删除-有关确定系统环境是否可以支持 ZFS 重复数据删除的重要信息,请参见ZFS 重复数据删除要求。
ZFS 文件系统共享-包括 NFS 和 SMB 文件系统共享更改。有关更多信息,请参见ZFS 文件系统共享更改。
ZFS 手册页更改-zfs.1m 手册页已进行修订,从而核心 ZFS 文件系统功能保持在 zfs.1m 页面中,但是委托管理、加密以及共享语法和示例包含在以下页面中:
安装系统后,请查看 ZFS 存储池和 ZFS 文件系统信息。
使用 zpool status 命令可显示 ZFS 存储池信息。例如:
# zpool status pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c2t0d0s0 ONLINE 0 0 0 errors: No known data errors
使用 zfs list 命令可显示 ZFS 文件系统信息。例如:
# zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT NAME USED AVAIL REFER MOUNTPOINT rpool 5.39G 67.5G 74.5K /rpool rpool/ROOT 3.35G 67.5G 31K legacy rpool/ROOT/solaris 3.35G 67.5G 3.06G / rpool/ROOT/solaris/var 283M 67.5G 214M /var rpool/dump 1.01G 67.5G 1000M - rpool/export 97.5K 67.5G 32K /rpool/export rpool/export/home 65.5K 67.5G 32K /rpool/export/home rpool/export/home/admin 33.5K 67.5G 33.5K /rpool/export/home/admin rpool/swap 1.03G 67.5G 1.00G -
有关根池组件的说明,请参见安装后查看初始 ZFS BE。
在确定可用的池和文件系统空间方面,zpool list 和 zfs list 命令要比以前的 df 和 du 命令出色。使用传统命令,既不能轻易分辨池和文件系统空间,也不能对后代文件系统或快照使用的空间做出解释。
例如,以下根池 (rpool) 有 5.46 GB 的已分配空间和 68.5 GB 的空闲空间。
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 74G 5.46G 68.5G 7% 1.00x ONLINE -
如果通过查看各个文件系统的 USED 列来比较池空间核算和文件系统空间核算,则会看到对池空间的说明。例如:
# zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool 5.41G 67.4G 74.5K /rpool rpool/ROOT 3.37G 67.4G 31K legacy rpool/ROOT/solaris 3.37G 67.4G 3.07G / rpool/ROOT/solaris/var 302M 67.4G 214M /var rpool/dump 1.01G 67.5G 1000M - rpool/export 97.5K 67.4G 32K /rpool/export rpool/export/home 65.5K 67.4G 32K /rpool/export/home rpool/export/home/admin 33.5K 67.4G 33.5K /rpool/export/home/admin rpool/swap 1.03G 67.5G 1.00G -
由 zpool list 命令报告的 SIZE 值通常为池中的物理磁盘空间量,具体大小视池的冗余级别而异。请参见下面的示例。zfs list 命令列出了可供文件系统使用的可用空间,该空间等于磁盘空间减去 ZFS 池冗余元数据开销(若有)。
非冗余存储池-使用一个大小为 136 GB 的磁盘创建,zpool list 命令将 SIZE 值和初始 FREE 值均报告为 136 GB。由于存在少量的池元数据开销,因此 zfs list 命令报告的初始 AVAIL 空间值为 134 GB。例如:
# zpool create tank c0t6d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
镜像存储池-使用两个大小为 136 GB 的磁盘创建,zpool list 命令将 SIZE 值和初始 FREE 值均报告为 136 GB。此处报告的是已压缩空间值。由于存在少量的池元数据开销,因此 zfs list 命令报告的初始 AVAIL 空间值为 134 GB。例如:
# zpool create tank mirror c0t6d0 c0t7d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 136G 95.5K 136G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 72K 134G 21K /tank
RAID-Z 存储池-使用三个大小为 136 GB 磁盘创建,zpool list 命令将 SIZE 值和初始 FREE 值均报告为 408 GB。此处报告的是已解压磁盘空间值,其中包括冗余开销,如奇偶校验信息。由于存在池冗余开销,因此 zfs list 命令报告的初始 AVAIL 空间值为 133 GB。以下示例创建了 RAIDZ-2 池。
# zpool create tank raidz2 c0t6d0 c0t7d0 c0t8d0 # zpool list tank NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT tank 408G 286K 408G 0% 1.00x ONLINE - # zfs list tank NAME USED AVAIL REFER MOUNTPOINT tank 73.2K 133G 20.9K /tank
在以下方面,使 ZFS 文件系统可用与 Oracle Solaris 10 发行版类似:
ZFS 文件系统在创建后自动进行挂载,然后在系统引后自动进行重新挂载。
除非为 ZFS 文件系统创建了传统挂载,否则不必为了挂载 ZFS 文件系统而修改 /etc/vfstab 文件。建议自动挂载 ZFS 文件系统,而非使用传统挂载。
您不必修改 /etc/dfs/dfstab 文件来共享文件系统。有关共享 ZFS 文件系统的更多信息,请参见ZFS 文件系统共享更改。
与 UFS 根类似,/etc/vfstab 文件中必须有交换设备的项。
通过使用 NFS 共享,可在 Oracle Solaris 10 和 Oracle Solaris 11 系统之间共享文件系统。
通过使用 NFS 或 SMB 共享,可在 Oracle Solaris 11 系统之间共享文件系统。
可以从 Oracle Solaris 10 系统中导出 ZFS 存储池,然后将该存储池导入 Oracle Solaris 11 系统。
在 Oracle Solaris 10 中,可以设置 sharenfs 或 sharesmb 属性来创建和发布 ZFS 文件系统共享,或者可以使用传统 share 命令。
在该 Solaris 发行版中,按如下所述创建 ZFS 文件系统共享,然后发布共享:
通过使用 zfs set share 命令来创建 ZFS 文件系统的 NFS 或 SMB 共享。例如:
# zfs create rpool/fs1 # zfs set share=name=fs1,path=/rpool/fs1,prot=nfs rpool/fs1 name=fs1,path=/rpool/fs1,prot=nfs
通过将 sharenfs 或 sharesmb 属性设置为 on 来发布 NFS 或 SMB 共享。 例如:
# zfs set sharenfs=on rpool/fs1 # cat /etc/dfs/sharetab /rpool/fs1 fs1 nfs sec=sys,rw
新共享的主要差异如下:
zfs set share 命令替换了用于共享 ZFS 文件系统的 sharemgr 接口。
sharemgr 接口不再可用。传统的 share 命令和 sharenfs 属性仍然可用。请参见下面的示例。
/etc/dfs/dfstab 文件仍存在,但修改被忽略。SMF 管理 ZFS 或 UFS 共享信息,以便在重新引导系统时自动共享文件系统,这与管理 ZFS 挂载和共享信息的方式类似。
使用 share -a 命令共享的文件系统共享将是永久性的。
后代文件系统不继承共享属性。如果某个后代文件系统是在继承的 sharenfs 属性设置为 on 时创建的,则会为新的后代文件系统创建一个共享。
仍将支持传统共享语法,而无需修改 /etc/dfs/dfstab 文件。传统共享由 SMF 服务进行管理。
可以使用 share 命令共享文件系统。
例如,要共享某个 ZFS 文件系统:
# share -F nfs /tank/zfsfs # cat /etc/dfs/sharetab /tank/zfsfs - nfs rw
上面的语法与共享 UFS 文件系统的语法完全一致:
# share -F nfs /ufsfs # cat /etc/dfs/sharetab /ufsfs - nfs rw /tank/zfsfs - nfs rw
您可以创建启用 sharenfs 属性的文件系统,如在先前发行版中一样。Oracle Solaris 11 行为是将为文件系统创建缺省共享。
# zfs create -o sharenfs=on rpool/data # cat /etc/dfs/sharetab /rpool/data rpool_data nfs sec=sys,rw
以上文件系统共享会立即发布。
在本节中查看共享转换问题。
升级系统-如果因该发行版中的属性更改而导致引导回早期的 BE,则 ZFS 共享将是不正确的。非 ZFS 共享不受影响。如果打算引导回较旧的 BE,则应在执行 pkg update 操作之前保存现有共享配置的副本,以便能够恢复 ZFS 数据集上的共享配置。
在较旧的 BE 中,使用 sharemgr show -vp 命令可列出所有共享及其配置。
使用 zfs get sharenfs filesystem 命令和 zfs sharesmb filesystem 命令可获取共享属性的值。
如果引导回较旧的 BE,请将 sharenfs 和 sharesmb 属性重置为其原始值。
传统的取消共享行为-使用 unshare -a 命令或 unshareall 命令可取消发布共享,但是不会更新 SMF 共享系统信息库。如果尝试重新共享现有的共享,则会检查到共享系统信息库中的冲突,并显示一个错误。
在 Oracle Solaris 11 中,可以使用重复数据删除 (dedup) 属性来删除 ZFS 文件系统中的冗余数据。如果文件系统启用了 dedup 属性,则会以同步方式删除重复的数据块。结果是仅存储唯一的数据,在文件之间共享通用组件。例如:
# zfs set dedup=on tank/home
只有在执行了以下步骤确定系统是否支持重复数据删除后,才能启用驻留在生产系统上的文件系统中的 dedup 属性。
确定数据是否将受益于重复数据删除产生的空间节省。如果不能进行重复数据删除,则启用 dedup 毫无意义。运行以下命令非常占用内存:
# zdb -S tank Simulated DDT histogram: bucket allocated referenced ______ ______________________________ ______________________________ refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE ------ ------ ----- ----- ----- ------ ----- ----- ----- 1 2.27M 239G 188G 194G 2.27M 239G 188G 194G 2 327K 34.3G 27.8G 28.1G 698K 73.3G 59.2G 59.9G 4 30.1K 2.91G 2.10G 2.11G 152K 14.9G 10.6G 10.6G 8 7.73K 691M 529M 529M 74.5K 6.25G 4.79G 4.80G 16 673 43.7M 25.8M 25.9M 13.1K 822M 492M 494M 32 197 12.3M 7.02M 7.03M 7.66K 480M 269M 270M 64 47 1.27M 626K 626K 3.86K 103M 51.2M 51.2M 128 22 908K 250K 251K 3.71K 150M 40.3M 40.3M 256 7 302K 48K 53.7K 2.27K 88.6M 17.3M 19.5M 512 4 131K 7.50K 7.75K 2.74K 102M 5.62M 5.79M 2K 1 2K 2K 2K 3.23K 6.47M 6.47M 6.47M 8K 1 128K 5K 5K 13.9K 1.74G 69.5M 69.5M Total 2.63M 277G 218G 225G 3.22M 337G 263G 270G dedup = 1.20, compress = 1.28, copies = 1.03, dedup * compress / copies = 1.50
如果估计的重复数据删除比大于 2,则重复数据删除可能会带来空间节省。
在此示例中,由于重复数据删除比 (dedup = 1.20) 小于 2,因此不建议启用 dedup。
请确保系统具有足够的内存来支持重复数据删除。
每个核心中重复数据删除表项约为 320 字节。
用分配的块数乘以 320。例如:
in-core DDT size = 2.63M x 320 = 841.60M
当重复数据删除表可以完全装入内存时,重复数据删除的性能最佳。如果不得不将重复数据删除表写入磁盘,则性能将降低。如果对内存资源不足的文件系统启用重复数据删除,则在执行与文件系统相关的操作期间,系统性能可能会降低。例如,删除启用了重复数据删除的内存资源不足的大型文件系统时可能会影响系统性能。