高速掌握sinox2014激动人心的ZFS和RAID技术
Sinox2014引入激动人心的zfs系统以及其支持的RAID,让用户高速打造便宜的高可靠性文件server。
1文件介绍
|
1
|
# zpool create tank mirror c1t0d0 c1t1d0 |
|
1
2
3
|
# zpool listNAME SIZE USED AVAIL CAP HEALTH ALTROOTtank 80G 137K 80G 0% ONLINE - |
2系统层次
|
1
|
# zfs create tank/home |
|
1
2
3
4
5
6
|
# zfs set mountpoint=/export/zfs tank/home# zfs set sharenfs=on tank/home# zfs set compression=on tank/home# zfs get compression tank/homeNAME PROPERTY VALUE SOURCEtank/home compression on local |
|
1
2
|
# zfs create tank/home/bonwick# zfs create tank/home/billm |
|
1
|
# zfs set quota=10G tank/home/bonwick |
|
1
2
3
4
5
6
|
# zfs listNAME USED AVAIL REFER MOUNTPOINTtank 92.0K 67.0G 9.5K /tanktank/home 24.0K 67.0G 8K /export/zfstank/home/billm 8K 67.0G 8K /export/zfs/billmtank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick |
3相关差别
- 传统的文件系统被限制在单个磁盘设备之内,它们的尺寸是不能超越单个磁盘设备。
- 传统文件系统须要驻留于单独设备或者须要一个卷管理系统去使用一个以上的设备,而ZFS建立在虚拟的,被称为“zpools”的存储池之上 (存储池最早在AdvFS实现,而且加到后来的Btrfs)。[1]
- 过去的文件系统是被影射到一个物理存储单元,如:分区;全部的ZFS文件系统共享池内的可获得的存储空间。
- ZFS 文件系统不须要通过编辑/etc/vfstab 文件来维护。
4创建过程
|
1
|
# zpool create tank c1t0d0 c1t1d0 |
|
1
|
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0 |
|
1
|
# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0 |
|
1
2
3
4
5
6
7
|
# zpool create tank c1t0d0 c1t1d0invalid vdev specificationuse ’-f’ to override the following errors:/dev/dsk/c1t0d0s0 is currentlymounted ondev/dsk/c1t0d0s1 is currentlymounted on swap/dev/dsk/c1t1d0s0 is part of active ZFS pool ’zeepool’Please see zpool(1M) |
|
1
2
3
4
|
Mounted file system The disk or one of its slices contains a file system that is currently mounted. To correct this error,use the umount command.File system in /etc/vfstab The disk contains a file system that is listed in the /etc/vfstab file,but the file system is not currently mounted. To correct this error,remove or comment out the line in the /etc/vfstab file.Dedicated dump device The disk is in use as the dedicated dump device for the system. To correct this error,use the dumpadm command.Part of a ZFS pool The disk or file is part of an active ZFS storage pool. To correct this error,use the zpool command to destroy the pool. |
5存储池管理设备
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# zpool add -n zeepool mirror c3t1d0 c3t2d0would update ’zeepool’ to the following configuration:zeepoolmirrorc1t0d0c1t1d0mirrorc2t1d0c2t2d0mirrorc3t1d0c3t2d0 |
6查询存储池状态
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# zpool listNAME SIZE USED AVAIL CAP HEALTH ALTROOTtank 80.0G 22.3G 47.7G 28% ONLINE -dozer 1.2T 384G 816G 32% ONLINE -NAME:The name of the pool.SIZE:The total size of the pool,equal to the sum top-level virtualdevices.USED:The amount of space allocated by all datasets and internal metadata. Note thatthis amount is different from the amount of space as reported at the file system level.AVAILABLE:The amount of unallocated space in CAPACITY (CAP):The amount of space used,expressed as a percentage of total space.HEALTH:The current health status of the pool.ALTROOT:The alternate root of the pool,if any. |
|
1
2
3
|
# zpool list tankNAME SIZE USED AVAIL CAP HEALTH ALTROOTtank 80.0G 22.3G 47.7G 28% ONLINE - |
|
1
2
3
4
5
|
# zpool list -o name,sizeNAME SIZEtank 80.0Gdozer 1.2TScripting ZFS Storage Pool Output |
than by spaces. For example,to request a simple list of all pool names on the system:
|
1
2
3
4
5
6
7
|
# zpool list -Ho nametankdozerHere is another example:# zpool list -H -o name,sizetank 80.0Gdozer 1.2T |
|
1
2
3
4
5
6
|
# zpool iostatcapacity operations bandwidthpool used avail read write readwrite---------- ----- ----- ----- ----- ----- -----tank 100G 20.0G 1.2M 102K 1.2M 3.45Kdozer 12.3G 67.7G 132K 15.2K 32.1K 1.20K |
7管理方式
cache->HDD ZFS的三层结构。在FreeNAS中这点做得非常好,设置非常方便,有文章指出,4G系统内存下,网络訪问速度约为400Mbit/sec read + 300Mbit/sec write,而8G内存+64G SSD的缓存结构下,能够达到900Mbit/sec read + 600Mbit/sec write,跑满千兆网络,同一时候iSCSI性能飞升,生产环境中也应该这样搭建使用。命令也非常easy,仅仅须要在create的时候添加cache SSD0,也能够单独使用命令
8创新
Silent Data Corruption。而在ZFS中,对全部数据无论是用户数据还是文件系统自身的metadata数据都进行256位的Checksum(校验),当ZFS在提交数据时会进行校验,彻底杜绝这样的Silent Data Corruption情况。
在ZFS中则提出了相相应的ZFS Mirror和RAID-Z方式,它在负责读取数据的时候会自己主动和256位校验码进行校验,会主动发现这样的Silent Data Corruption,然后通过相应的Mirror硬盘或者通过RAID-Z阵列中其它硬盘得到正确的数据返回给上层应用,而且同一时候自己主动修复原硬盘的 Data Corruption 。
RAID技术在存储领域的有着很关键的数据,满足了不同的需求。RAID依照实现原理的不同分为不同的级别,不同的级别之间工作模式是有差别的。整个的 RAID结构是一些磁盘结构,通过对磁盘进行组合达到提高效率,降低错误的目的,不要由于这么多名词而被吓坏了,它们的原理实际上十分简单。以下我就给大家简介一下在ZFS中能够实现的三种RAID技术:RAID 0、RAID 1和RAID Z(RAID 5的改进)。RAID 0:无差错控制的带区组
要实现RAID0必需要有两个以上硬盘驱动器,RAID0实现了带区组,数据并非保存在一个硬盘上,而是分成数据块保存在不同驱动器上。RAID0分为串联卷和并两卷两种。
串联卷写数据是依照顺序写进不同的可用分片,当第一个分片写满时才写第二个分片,这样的存储方式仅仅是为我们提供了一种方便的管理结构,便于我们将多个硬盘组合起来,却没有实现更好的性能。
并联卷在写数据时,是将数据平均分布到各个分片上。由于将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比較平衡。假设刚好所须要的数据在不同的驱动器上效率最好。它不须要计算校验码,实现easy。它的缺点是它没有数据差错控制,假设一个驱动器中的数据错误发生,即使其他盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。假设用户进行图象(包含动画)编辑和其他要求传输比較大的场合使用RAID0比較合适。同一时候,RAID0能够提高传输数据速率,比方所需读取的文件分布在两个硬盘上,这两个硬盘能够同一时候读取。那么原来读取相同文件的时间被缩短为1/2。在全部的级别中,RAID
0的速度是最快的。可是RAID 0没有冗余功能的,假设一个磁盘(物理)损坏,则全部的数据都无法使用。
在ZFS文件系统里,我们能够非常easy的实现这样的结构,在我们组建存储池的过程中,我们就能够建立我们须要的RAID结构的存储池,而在默认情况下,ZFS建立的就是RAID0结构的存储池。
比如:命令 Tonsen#zpool create mypool c0d0 c0d1 就是将c0d0和c0d1组成了一个RAID0结构的存储池,以后向这个池中添加数据时,它的数据分布就是採用平均分布的形式。
RAID 1:镜象结构
对于使用这样的RAID1结构的设备来说,RAID控制器必须能够同一时候对两个盘进行读操作和对两个镜象盘进行写操作,所以必须有两个驱动器。由于是镜象结构在一组盘出现故障时,能够使用镜象,提高系统的容错能力。它比較easy设计和实现。每读一次盘仅仅能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率同样。由于RAID1的校验十分完备,因此对系统的处理能力有非常大的影响,通常的RAID功能由软件实现,而这样的实现方法在server负载比較重的时候会大大影响server效率。当您的系统须要极高的可靠性时,如进行数据统计,那么使用RAID1比較合适。并且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完成仅仅要从镜像盘上恢复数据就可以。当主硬盘损坏时,镜像硬盘就能够取代主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这样的硬盘模式的安全性是非常高的,RAID
1的数据安全性在全部的RAID级别上来说是最好的。可是其磁盘的利用率却仅仅有50%,是全部RAID级别中最低的。
在ZFS文件系统里,我们能够通过在命令中添加mirror參数来构建镜像结构的存储池。
比如:命令 Tonsen#zpool create mypool mirror c0d0 c0d1 就是将c0d0和c0d1组成了一个RAID1结构的镜像存储池,以后向这个池中添加数据时,它的数据分布是会写到它全部的镜像盘上。
使用命令 Tonsen#zpool status 我们能够非常清楚的看到镜像结构,例如以下:
pool: mypool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
mirror ONLINE 0 0 0
c0d0 ONLINE 0 0 0
c0d1 ONLINE 0 0 0
errors: No known data errors
我们甚至能够在ZFS中将RAID0和RAID1组合起来,形成一个综合的RAID结构。
比如:命令 Tonsen#zpool create mypool mirror c0d0 c0d1 mirror c1d0 c1d1 就是将c0d0、c0d1和c1d0、c1d1分别组成两个镜像,然后这两个镜像又构成一个RAID0的结构。这样的结构既提高了可靠性也提高了性能。
使用命令 Tonsen#zpool status 查看一下它的结构,例如以下:
pool: mypool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
mirror ONLINE 0 0 0
c0d0 ONLINE 0 0 0
c0d1 ONLINE 0 0 0
mirror ONLINE 0 0 0
c1d0 ONLINE 0 0 0
c1d1 ONLINE 0 0 0
errors: No known data errors
RAID 5:分布式奇偶校验的独立磁盘结构
它的奇偶校验码存在于全部磁盘上,当中的p0代表第0带区的奇偶校验值,其他的意思也同样。RAID5的读出效率非常高,写入效率一般,块式的集体訪问效率不错。由于奇偶校验码在不同的磁盘上,所以提高了可靠性,同意单个磁盘出错。RAID 5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,不论什么一个硬盘损坏,都能够依据其他硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1。可是它对传输数据的并行性解决不好,并且控制器的设计也相当困难。而对于RAID
5来说,大部分传输数据仅仅对一块磁盘操作,可进行并行操作。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,当中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID Z:是RAID5的改进版本号,是solaris10里ZFS特有的一种Raid级别。
容错能力与RAID 5同样,可是对于RAID 5的写入漏洞问题提供了软件解决方式,使用动态的条带化。传统的RAID 5都存在着“写漏洞”,就是说假设RAID 5的stripe在正写数据时,假设这时候电源中断,那么奇偶校验数据将跟该部分数据不同步,因此前边的写无效;RAID-Z用了“variable- width RAID stripes”技术,因此全部的写都是full-stripe writes。之所以能实现这样的技术,就是由于ZFS集成了文件系统和设备管理,使得文件系统的元数据有足够的信息来控制“variable-width
RAID stripes”。理论上说,创建RAID-Z须要至少三块磁盘,这跟RAID 5差点儿相同。
比如:Tonsen#zpool create mypool raidz c0d0 c0d1 c1d0 c1d1 就是创建了一个由c0d0、c0d1、c1d0和c1d1四块硬盘组成的raidz结构。
使用命令 Tonsen#zpool status 来查看它的结构例如以下:
pool: mypool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz1 ONLINE 0 0 0
c0d0 ONLINE 0 0 0
c0d1 ONLINE 0 0 0
c1d0 ONLINE 0 0 0
c1d1 ONLINE 0 0 0
errors: No known data errors
在ZFS文件系统里,我们能够通过非常easy的方式,就能组织我们须要的各种RAID结构的存储单元,这为我们提供了异常强大的存储管理能力.
高速掌握sinox2014激动人心的ZFS和RAID技术的更多相关文章
- 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID10
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
- 【转】RAID 技术发展综述
原文地址:https://blog.csdn.net/liuaigui/article/details/4581970 摘要 :现代企业信息化水平不断提高,数据已经取代计算成为了信息计算的中心.这 ...
- 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
- RAID技术全解图解-RAID0、RAID1、RAID5、RAID100【转】
图文并茂 RAID 技术全解 – RAID0.RAID1.RAID5.RAID100…… RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转 ...
- RAID技术超详细讲解
RAID 技术是一种多磁盘技术,面对数据的各方面有着两面性的影响,整体来说优点大于缺点的,下面我将详细介绍一下 RAID ,简称磁盘阵列技术. 一.RAID 概述 1988 年美国加州大学伯克利分校的 ...
- RAID 技术全解
图文并茂 RAID 技术全解 – RAID0.RAID1.RAID5.RAID100-- RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转 ...
- RAID技术介绍
RAID技术介绍 简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAI ...
- [转]RAID技术介绍和总结
以下内容转自伯乐在线:http://blog.jobbole.com/83808/ 原文出处: 涯余(@若东临于沧海) ---------------------------------------- ...
- RAID技术介绍和总结
简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAID全称为独立磁盘冗 ...
随机推荐
- BZOJ 1901 Dynamic Rankings 树董事长
标题效果:间隔可以改变k少 我的两个天树牌主席... 隔断Count On A Tree 之后我一直认为,随着树的主席的变化是分域林木覆盖率可持久段树. .. 事实上,我是误导... 尼可持久化线段树 ...
- JTree
http://www.easyicon.net/ package swing.tree; import java.awt.BorderLayout; import java.awt.Component ...
- 为什么在Python3.4.1里输入print 10000L或10000L失败
打开Python的命令行交互窗体,而且在里面进行以下的输入: Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 ...
- opencv-形态处理
开运算 (Opening) 原理摘自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closi ...
- 刷牙LeetCode思考
时间已经到了不自觉地,3在五月中旬.今天正式LeetCode自由181刷牙的问题.感觉,以提高他们的算法非常有帮助. 第一个主要的深搜索,广泛搜索,DP他已经掌握7788.也有自己写的代码格公式,使用 ...
- 7.oracle学习门户系列七---网络管理和配置
oracle学习门户系列七 网络管理和配置 们学习了模式和用户.包含模式定义以及模式的作用. 这篇我么来看下ORACLE数据库中的网络管理和配置.只是这篇好像和上篇没有继承啊.这怎么看? Ok,事实上 ...
- RandomAccessFile实时读取大文件(转)
最近有一个银行数据漂白系统,要求操作人员在页面调用远端Linux服务器的shell,并将shell输出的信息保存到一个日志文件,前台页面要实时显示日志文件的内容.这个问题难点在于如何判断哪些数据是新增 ...
- atitit.无损传输二进制数据串传输网络
atitit.无损传输二进制数据串传输网络 1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 1 2. base64 2 3. iso-8859-1 (推荐) 2 4. utf-8 ...
- AIX6.1/11.2.0.3在有关数据库SWAP一个BUG
昨天南京到客户服务数据库的优化调整,其中新上线,经过审查alert.log当日志现在是在过去一段时间内取得,每隔几个小时的时间滞后,班会报似的内容: Thu Aug 21 09:01:26 2014 ...
- 【SSH 基金会】SSH框架--struts进一步的详细解释(两)
继上篇博客 既然我们知道了不使用struts给我们带来这么多弊端,那么以下我们来看看struts是怎样封装的.怎么解决我们出现的问题的? 先来说一下struts的基本流程,帮助大家理解以下的代码: S ...
ZFS