网站帮助文档怎么写,正规引流推广公司,外贸平台网站建设,网站命名的原则包括Linux使用ZFS文件系统 来源#xff1a;it168网站 ZFS(Zettabyte File System)作为一个全新的文件系统#xff0c;全面抛弃传统File System Volume Manager Storage(文件系统卷管理存储)的架构#xff0c;所有的存储设备是通过ZFS 池进行管理#xff0c;只要把各种存储设备… Linux使用ZFS文件系统 来源it168网站 ZFS(Zettabyte File System)作为一个全新的文件系统全面抛弃传统File System Volume Manager Storage(文件系统卷管理存储)的架构所有的存储设备是通过ZFS 池进行管理只要把各种存储设备加 入同一个ZFS 池大家就可以轻松的在这个ZFS 池管理配置文件系统。 ZFS 包括一系列具有分层结构的存储元素其中既有物理存储元素又有逻辑存储元素。所有这些元素都以有助于方便管理的方式相关联。如下图是ZFS文件系统与传统文件系统的对比。 图1 ZFS文件系统与传统文件系统的对比图 一、为Linux服务器配置安装ZFS文件系统 (1) 为rhel 配置EPEL repo 如果既想获得 RHEL 的高质量、高性能、高可靠性又需要方便易用(关键是免费)的软件包更新功能那么 Fedora Project 推出的 EPEL(Extra Packages for Enterprise Linux)正好适合你。EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL就像在 Fedora 上一样可以通过 yum install package-name随意安装软件。安装 EPEL 非常简单 RHEL 6 系列使用 # rpm -Uvh http://download.fedora.redhat.com/pub/epel/beta/6/i386/epel-release-6-1.noarch.rpm RHEL 5 系列使用 #rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm (2)安装zfs-fuse模块 # yum install zfs-fuse (3)从源代码安装 如果要源代码安装首先安装如下模块 su -c yum install -y fuse-devel libattr-devel libaio-devel libacl-devel zlib-devel fuse-devel scons openssl-devel 然后下载http://zfs-fuse.net/releases/0.6.9/zfs-fuse-0.6.9.tar.bz2 #/configure;make;make install 加载zfs内核模块 #modprobe zfs 二、 在Linux服务器上使用ZFS文件系统 1了解zfs管理命令 Zfs命令包括一组子命令主要如下 create 创建zfs文件系统 destroy 摧毁一个ZFS文件系统 snapshot 建立一个文件系统的快照 rollback 从一个文件系统的快照中恢复 clone 建立一个文件系统的克隆 promote 从一个克隆创建一个文件系统 upgrade 升级 ZFS 文集系统 list查看和询问数据集的信息 allow 将用于执行 ZFS 管理任务的细粒度权限委托给非特权用户 unallow 将用于执行 ZFS 管理任务的细粒度权限删除 share 共享zfs文件系统 unshared 取消共享zfs文件系统 rename 重命名 ZFS 快照 mount 挂载zfs文件系统 umount 卸载zfs文件系统 set 可以设置或修改数据集的属性 get 得到文件系统的一个专门属性 zpool命令包括一组子命令如下 create 使用指定的实际设备建立存储池 destroy摧毁一个ZFS存储池但是不删除设备中数据 add 在存储池中添加虚拟设备 remove 在存储池中删除虚拟设备但是不删除设备中数据 list 显示所有存储池 iostat查看存储池I/O状况 status 查看存储池健康状况 online把存储池状态设置为在线 offline把存储池状态设置为离线 clear 消除存储池设备错误计数 attach 固定一个设备在存储池中 detach 从存储池中分离设备 replace 替换存储池中的设备 scrub 校验存储池 import 导入存储池 export 导出存储池 upgrade 升级存储池 history 显示所有存储池操作命令 get 找回和列出存储池的设备 set 设置一个或者多个设备在一个存储池 2 zfs使用实例 (1) 使用 losetup 建立虛擬磁盘 $ mkdir zfstest $ cd zfstest $ dd if/dev/zero ofdisk1.img bs64M count1 $ dd if/dev/zero ofdisk2.img bs64M count1 $ dd if/dev/zero ofdisk3.img bs64M count1 $ dd if/dev/zero ofdisk4.img bs64M count1 $ dd if/dev/zero ofdisk5.img bs64M count1 (2)建立简单存储池 #zpool create -f zfstest1 /dev/loop0 使用-f选项强行创建存储池和文件系统。 (3)创建RAID-Z池。 RAID-Z类似RAID-5是个存储数据及在多个磁盘上进行校验的虚拟设备。RAID(Redundant Array of Inexpensive (or Independent) Disks廉价(独立)磁盘冗余阵列)指的是称为阵列的一组磁盘。依据不同的配置此阵列可以改善可靠性、响应时间或存储容量。ZFS 使用 RAID-ZRAID-Z 类似于 RAID-5因为它将数据和奇偶校验信息都置于三个或更多驱动器上。但是与 RAID-5 不同的是RAID-Z 始终执行完全条带化 (full-stripe) 写操作。将会对所有数据都执行校验和操作。Snapshot在某个时间文件系统或卷的映像。快照是文件系统或卷的只读的拷贝。快照的创建快速而且容易。不过快照的建立需要消耗存储池的空间。可以使用关键字raidz来创建RAID-Z存储池。 # zpool create cjhzpool -f raidz /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 (4)删除存储池 当写在磁盘中的数据不再需要的时候就可以使用zpool destroy命令删除存储池。 # zpool destroy zfstest1 注意存储池被删除后数据也同时会丢失。 (5) 实时监控存储池 显示基本的 ZFS 存储池信息 可以使用 zpool list 命令显示有关池的基本信息。如果不使用参数则此命令会显示系统中所有池的所有字段。如图2 。 图2显示基本的 ZFS 存储池信息 图2输出显示了以下信息 NAME 池的名称。 SIZE 池的总大小等于所有顶层虚拟设备大小的总和。 USED 由所有数据集和内部元数据分配的空间量。请 AVAILABLE 池中未分配的空间量。 CAPACITY (CAP) 已用空间量以总空间的百分比表示。 HEALTH 池的当前运行状况。 ALTROOT 池的备用根(如果有)。 可以使用 -o 选项请求特定的统计信息。使用此选项可以生成自定义报告或快速列出相关信息。例如要仅列出每个池的名称和大小可使用以下语法 # zpool list -o name,size NAME SIZE cjhzpool 238M zfstest1 59.5M (6)查看 ZFS 存储池 I/O 统计信息 要请求池或特定虚拟设备的 I/O 统计信息请使用 zpool iostat 命令。它与 iostat 命令类似此命令也可以显示目前为止所有 I/O 活动的静态快照以及每个指定时间间隔的更新统计信息。如果不使用任何选项则 zpool iostat 命令会显示自引导以来系统中所有池的累积统计信息。如图3 。 图3查看 ZFS 存储池 I/O 统计信息 图3输出显示了以下信息 USED CAPACITY 当前存储在池或设备中的数据量。由于具体的内部实现的原因此数字与可供实际文件系统使用的空间量有少量差异。 AVAILABLE CAPACITY 池或设备中的可用空间量。与 used 统计信息一样这与可供数据集使用的空间量也有少量差异。 READ OPERATIONS 发送到池或设备的读取 I/O 操作数包括元数据请求。 WRITE OPERATIONS 发送到池或设备的写入 I/O 操作数。 READ BANDWIDTH 所有读取操作(包括元数据)的带宽以每秒单位数表示。 WRITE BANDWIDTH 所有写入操作的带宽以每秒单位数表示。 (7)确定 ZFS 存储池的运行状况 ZFS 提供了一种检查池和设备运行状况的集成方法。池的运行状况是根据其所有设备的状态确定的。使用 zpool status 命令可以显示如图4 信息。 图4确定 ZFS 存储池的运行状况 每个设备都可以处于以下状态之一 ONLINE 设备处于正常工作状态。尽管仍然可能会出现一些瞬态错误但是设备在其他方面处于正常工作状态。 DEGRADED 虚拟设备出现故障但仍能够工作。此状态在镜像或 RAID-Z 设备缺少一个或多个组成设备时最为常见。池的容错能力可能会受到损害因为另一个设备中的后续故障可能无法恢复。 FAULTED 虚拟设备完全无法访问。此状态通常表示设备出现全面故障以致于 ZFS 无法向该设备发送数据或从该设备接收数据。如果顶层虚拟设备处于此状态则完全无法访问池。 OFFLINE 管理员已将虚拟设备显式脱机。 UNAVAILABLE 无法打开设备或虚拟设备。在某些情况下包含 UNAVAILABLE 设备的池会以 DEGRADED 模式显示。 REMOVED 系统正在运行时已物理移除了该设备。设备移除检测依赖于硬件而且并非在所有平台上都受支持。 对系统中所有存储池进行健康查询使用命令 # zpool status -x all pools are healthy 表示所有池运行状况良好。 显示一个存储池的详细情况 #zfs get all cjhzpool如图5 。 图5显示一个存储池的详细情况 (8)ZFS文件系统快照管理 ZFS文件系统快照简介 ZFS 利用写复制 (copy-on-write, COW) 机制来存储数据并且几乎可以作为数据存储的副效应来生成快照。COW 在将新数据写入磁盘前会读入旧数据。之后COW 会将旧数据写入某个新位置以供快照使用。此读取和复制数据的过程同时适用于用户数据和文件系统的专用数据(元数据)。任何后续写入操作都将导致通过 COW 机制分配新块因此永远不会修改组成快照的那些块。 从本质上而言从某个备份进行恢复的步骤与从传统备份恢复的步骤是一样的 重建文件系统。 恢复完整备份。 恢复每个增量备份。 可以创建某个特定快照的克隆(副本)。克隆指一个其初始内容与某个快照的内容相同的文件系统。正如可以修改其他文件系统属性一样可以修改克隆的属性和内容。 使用命令创建和删除ZFS快照 我们使用zfs snapshot命令来创建快照这个命令只有一个变量就是快照的名字。快照名字如下所示 filesystemsnapname volumesnapname 创建快照 # zfs snapshot zfstest1cjh 通过使用 -r 选项可为所有后代文件系统创建快照。 # zfs snapshot -r zfstest1cjh 然后使用命令查看所有快照如图6 。 ▲ # zfs list -t snapshot 图6 使用命令查看所有快照 说明快照不能被修改属性也不能使数据集的属性应用到快照上。 请使用zfs destroy命令删除快照。 删除快照 # zfs destroy zfstest1cjh 在快照存在的情况下数据集不能被删除。另外如果存在快照的克隆也不能删除数据集。 恢复到最初的快照 使用zfs rollback命令能使快照放弃所有的改变恢复到建立快照的最初状态。如果有些最近的快照的话使用?-r选项能强制删除这些快照而恢复到最初的快照。 恢复pool/home/ahrens文件系统的星期二的快照。 # zfs rollback pool/home/ahrenstuesday