ZFS文件系统Snapshot技术的分析
- 格式:doc
- 大小:495.50 KB
- 文档页数:8
zfs使用心得【原创实用版3篇】目录(篇1)1. ZFS 简介2. ZFS 的特点3. ZFS 的使用方法4. ZFS 的优点5. ZFS 的缺点6. 总结正文(篇1)1. ZFS 简介ZFS(Zettabyte File System)是一种高性能、可扩展的文件系统,主要用于存储大量数据。
ZFS 是由 Sun Microsystems 公司开发的,现在由 OpenZFS 社区维护。
ZFS 的特点是数据完整性高、可扩展性强、性能优秀,因此在企业级存储领域得到了广泛应用。
2. ZFS 的特点ZFS 具有以下几个显著特点:(1)数据完整性:ZFS 支持数据校验和,可以检测和修复数据错误,保证数据的完整性。
(2)可扩展性:ZFS 支持无限大的文件系统,可以存储大量数据。
(3)高性能:ZFS 具有高效的磁盘 I/O 调度算法,可以提高系统的磁盘吞吐量。
3. ZFS 的使用方法要使用 ZFS,首先需要在操作系统中安装 ZFS 模块。
在 Linux 系统中,可以通过安装 zfs-tools 软件包来获得 ZFS 支持。
在 FreeBSD 系统中,ZFS 已经被集成到内核中,无需额外安装。
目录(篇2)1.ZFS 简介2.ZFS 的主要特点3.ZFS 的实际应用4.ZFS 的未来发展前景正文(篇2)【ZFS 简介】ZFS(Zettabyte File System)是一种用于管理大规模数据的文件系统,最早由 Sun Microsystems 公司开发。
ZFS 的主要特点是数据可靠性高、可扩展性强以及性能优越。
它能够提供大量的数据存储和处理能力,因此非常适合用于企业级服务器和大型数据中心。
【ZFS 的主要特点】1.数据可靠性:ZFS 采用了一种名为“数据完整性”的技术,可以确保数据的完整性和可靠性。
即使在硬盘故障或者意外断电的情况下,ZFS 也能够自动修复数据,确保数据的安全。
2.可扩展性:ZFS 可以轻松地扩展到数百 TB 甚至数 PB 的存储空间,满足大规模数据的存储需求。
第一章、快照(Snapshot)技术发展综述摘要:传统数据备份技术存在备份窗口、恢复时间目标RTO和恢复时间点RPO 过长的问题,无法满足企业关键性业务的数据保护需求,因此产生了数据快照技术。
本文对快照技术的概念、特点、实现技术和发展现状进行了概括性阐述,并对其未来的发展进行了展望。
关键词:快照,备份,复制,镜像,写时复制,指针重映射作者简介:刘爱贵,研究方向为网络存储、数据挖掘和分布式计算;毕业于中科院,目前就职于赛门铁克@Symantec,从事存储软件研发。
Email: Aigui.Liu@注:作者学识和经验水平有限,如有错误或不当之处,敬请批评指正。
PDF格式下载:/source/1613486一. 引言随着计算机技术和网络技术的不断发展,信息技术水平不断得到提高。
人类进入称为信息社会的二十一世纪后,诸如数字通信、数字多媒体、电子商务、搜索引擎、数字图书馆、天气预报、地质勘探、科学研究等海量数据型应用的涌现,各种信息呈现爆炸式的增长趋势,存储成为信息计算技术的中心。
应用对存储系统的要求不断提高,存储容量不断升级,从GigaByte到TeraByte、 PetaByte、ExaByte,愈显巨大。
图灵奖获得者Jim Gray提出一个新的经验定律:网络环境下每18个月生产的数据量等于有史以来的数据量之和。
与此同时,现代企业对计算机的依赖性严重增强,信息数据逐渐成为企业赖以生存的基础,数据损坏或丢失将给企业带来巨大的损失。
由于黑客、病毒、硬件设备的失效以及火灾、地震等自然灾害的原因,使系统和数据信息遭到破坏甚至毁灭,如果不及时地进行恢复,将对企业造成巨大的损失,所以备份容灾技术显得尤为重要。
尤其,9.11等事件造成的灾难性后果使人们更加深刻地认识到数据信息的价值和意义,日益重视数据的保护。
在过去的20多年中,虽然计算机技术取得了巨大的发展,但是数据备份技术却没有长足进步。
数据备份操作代价和成本仍然比较高,并且消耗大量时间和系统资源,数据备份的恢复时间目标和恢复点目标比较长。
ZFS 参数什么是ZFS?ZFS(Zettabyte File System)是一种先进的文件系统和逻辑卷管理器,它在存储管理方面提供了许多独特的功能和优势。
ZFS最初由Sun Microsystems开发,并在2005年以开源软件的形式发布。
它被设计用于处理大容量、高性能和高可靠性的存储需求,并具有自我修复和数据完整性保护等关键功能。
ZFS 的参数在使用ZFS时,我们可以通过调整一些参数来优化其性能和功能。
下面是一些常见的ZFS参数及其作用:1. ashiftashift参数指定了磁盘扇区大小的对数值。
默认情况下,它设置为9,表示512字节扇区大小。
如果您使用的是4KB扇区大小的磁盘,应将ashift设置为12。
正确设置ashift可以提供更好的性能和空间利用率。
2. recordsizerecordsize参数定义了每个文件记录(或块)的大小。
默认情况下,它设置为128KB。
根据不同的工作负载,您可能需要调整此值以获得最佳性能。
3. compressioncompression参数指定了数据压缩算法。
ZFS提供了多种压缩算法可供选择,包括lz4、gzip、zle等。
通过启用压缩,您可以节省存储空间并提高读写性能。
4. atimeatime参数控制是否记录文件的访问时间。
默认情况下,它设置为on,表示每次访问文件时都会更新访问时间。
如果您对访问时间不感兴趣,可以将其设置为off以提高性能。
5. syncsync参数指定了数据同步策略。
默认情况下,它设置为standard,表示数据会在写入磁盘之前进行同步。
如果您对数据的持久性要求不高,可以将其设置为disabled以提高写入性能。
6. primarycache 和 secondarycacheprimarycache参数定义了ZFS文件系统的主缓存策略,默认设置为all,表示所有读取都从内存中进行。
secondarycache参数定义了ZFS文件系统的二级缓存策略,默认设置也是all。
zfs 参数ZFS(Zettabyte File System)是一种文件系统,它是由Sun Microsystems为FreeBSD、OpenSolaris和illumos 等操作系统开发的。
ZFS是一种高性能、可扩展的文件系统,它具有许多优秀的特性,如数据完整性、可扩展性、高可用性等。
在ZFS中,有许多参数可以配置和调整,以优化文件系统的性能和可靠性。
以下是一些常用的ZFS参数:1.ashift:这个参数用于设置文件系统簇(block)的大小,它决定了文件系统能够支持的最大文件大小。
通常,较大的簇大小可以提高文件系统的性能,但会减少磁盘空间的利用率。
2.checksum:这个参数用于设置文件系统的校验和算法,它可以确保文件数据的完整性。
ZFS支持多种校验和算法,如CRC32、SHA256等。
3.compression:这个参数用于设置文件系统的压缩算法,它可以减少磁盘空间的占用。
ZFS支持多种压缩算法,如LZJB、ZLE、Zstandard等。
4.dedup:这个参数用于设置文件系统的重复数据删除功能。
当多个文件具有相同的内容时,ZFS可以将其合并,以节省磁盘空间。
5.logbias:这个参数用于设置文件系统日志的偏斜度,它可以影响日志的性能和磁盘空间的利用率。
6.spa_size:这个参数用于设置文件系统的最大存储空间,它决定了文件系统能够存储的最大数据量。
7.spd_max:这个参数用于设置文件系统的最大I/O并发数,它可以影响文件系统的性能。
8.txg_timeout:这个参数用于设置文件系统事务组的超时时间,它可以影响文件系统的可靠性和性能。
以上仅是ZFS的一些常用参数,实际上还有很多其他的参数可以调整和配置。
在使用ZFS时,需要根据实际情况选择合适的参数配置。
zfs 快照备份方法ZFS快照备份方法ZFS是一种先进的文件系统,具有许多强大的功能和特点。
其中之一就是快照(snapshot)功能,它可以让我们在文件系统中创建一个可读的只读副本,以便随时恢复文件系统到该副本的状态。
本文将介绍ZFS快照备份的方法和步骤。
1. 创建快照在ZFS中创建快照非常简单,只需要使用"zfs snapshot"命令即可。
例如,我们可以使用以下命令创建一个名为"mybackup"的快照:```zfs snapshot tank/mydata@mybackup```其中,"tank"是我们的ZFS存储池,"mydata"是我们要备份的文件系统。
2. 查看快照我们可以使用"zfs list"命令查看所有快照的列表。
例如,我们可以使用以下命令查看"mydata"文件系统的所有快照:```zfs list -t snapshot tank/mydata```这将显示所有以"tank/mydata"为前缀的快照。
3. 恢复快照如果我们需要恢复文件系统到某个特定的快照状态,可以使用"zfs rollback"命令。
例如,我们可以使用以下命令将"mydata"文件系统恢复到"mybackup"快照的状态:```zfs rollback tank/mydata@mybackup```注意,恢复快照会覆盖当前文件系统的所有更改,请确保在执行此操作之前进行必要的备份。
4. 删除快照当我们不再需要某个快照时,可以使用"zfs destroy"命令将其删除。
例如,我们可以使用以下命令删除"mybackup"快照:```zfs destroy tank/mydata@mybackup```请注意,删除快照后,快照占用的磁盘空间将被释放。
一、概念解释快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。
快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
而从具体的技术细节来讲,**快照是指向保存在存储设备中的数据的引用标记或指针**。
二、快照技术类型快照技术的作用:1.主要是能够进行在线数据恢复,当存储设备发生应用故障或者文件损坏时可以进行及时数据恢复,将数据恢复成快照产生时间点的状态。
2.快照的另一个作用是为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。
因此,所有存储系统,不论高中低端,只要应用于在线系统,那么快照就成为一个不可或缺的功能。
创建一个快照不同的设备需要不同的命令,但对于系统来说,基本都包括如下几个步骤:1、首先发起创建指令;2、在发起时间点,指令通知操作系统暂停应用程序和文件系统的操作;3、刷新文件系统缓存,结束所有的读写事务;4、创建快照点;5、创建完成之后,释放文件系统和应用程序,系统恢复正常运行。
现在,快照技术已经超越了简单的数据保护范畴。
我们可以用快照进行高效且无风险的应用软件测试。
用快照数据做测试,不会对生产数据造成任何的破坏。
对于数据挖掘(data mining)和电子发现(eDiscovery)应用,快照也是理想的测试数据源。
在灾难恢复方面,快照是一种非常有效的方法——甚至是首选,非常适合遭到恶意软件攻击、人为误操作和数据损坏等逻辑错误发生时的数据恢复。
过去我们认为只有磁盘阵列具备快照功能,但事实上磁盘阵列只是其中之一而已。
**广义的快照技术通常可有7个不同类型的实现主体:**1、主机文件系统(包括服务器、台式机、笔记本电脑);2、逻辑卷管理器(LVM);3、网络附加存储系统(NAS);4、磁盘阵列;5、存储虚拟化设备;6、主机虚拟化管理程序;7、数据库。
NAS技术详解:SnapShot技术详解SnapShot是WAFL文件系统“任意位置写入”功能带来的一项突出优势。
一份SnapShot是文件系统的在线只读拷贝。
创建文件系统的一份SnapShot仅仅需要几秒钟的时间,并且除非原始文件被删除或者更改,数据快照并不占用额外的磁盘空间。
这种只有当数据快发生改动时才进行数据快复制的技术被称作“Copy-on-write”,只有修改活动文件系统中的数据块并写入磁盘中新的位置时,SnapShot才会占用额外的磁盘空间。
用户可以采用SnapShot作为数据的在线备份,以备将来进行数据恢复时使用。
用户也可以方便的把SnapShot快照备份到磁带上。
无需将Filer系统下线,用户管理员就可以将最近的SnapShot快照备份到离线存储系统中。
SnapShot技术详述WAFL文件系统本身就可以理解成数据块树状结构,其根部的数据结构描述了inode文件信息。
这份inode文件信息则包含了对文件系统中所有inode的描述,它包含诸如空闲块图和空闲inode图等元数据信息。
WAFL通过复制根数据结构创建新的数据拷贝SnapShot。
因为根数据结构只有128B,并且不需要在硬盘上复制其他数据块,一个新的SnapShot几乎不耗额外的磁盘存储空间,除非用户修改或者删除文件系统中的数据。
Filer可以对一个卷组创建最多255个SnapShot快照。
SnapShot快照可以通过手动或者人为预先定制策略的方式来自动创建。
每一个SnapShot快照可以保存的时间取决于文件系统变动的频度。
在众多应用环境中,文件系统中的大部分数据并不是每天在变化,比如一个使用10MB大小Home Directory的用户,其数据通常每天只变动100到500KB。
当文件变动缓慢的时候,SnapShot可以在线保存数天甚至数周,直到他们消耗的磁盘空间过多以至用户无法接受。
而另外一些文件系统中的数据则在经常不停的变动,比如CAD应用环境下,需要经常覆盖写入许多大尺寸的文件,甚至可能一两天内就会更新整个文件系统的存储内容。
S n a p s h o t技术平台中文文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]Snapshot技术平台SnaPshot技术平台是Applied Biosystems,ABI公司推出了专为检测 SNP 设计的分析软件和试剂盒可对多个 SNP 位点同时进行基因分型 ,也被称为 minisequencing 。
该方法针对不同突变位点设计不同长度的引物SNaPshot 反应后 ,产物通过电泳分离、五色荧光检测、Gene mapper 分析 ,可在一次电泳胶内检测多个 SNP位点。
这个平台是建立在3730,3130等PCR测序仪上的技术。
3730XL型DNA序列检测仪一. SnaPshot工作原理应用 SNaPshot 进行定点的序列分析 ,其基本原理遵循了DNA 直接测序中的双脱氧终止法 ,所不同的是 PCR 反应中只有不同荧光标记的ddNTP。
由于每个 SNP 位点的引物 3′端都紧靠SNP点 ,因此每一种引物在聚合酶作用下 ,根据模板的的序列 ,只延伸一个核苷酸。
然后用先进的荧光检测系统 ,检测延伸的那个核苷酸的种类。
1.多重SNaPshot反应的工作原理:在一个SNaPshot反应体系中,针对每个待测SNP 位点在其上游或下游设计一条单向的寡核苷酸引物(正向引物或反向引物),引物的Tm 值要求在50度以上,在 AmpliTaq聚合酶和 4种不同荧光标.记的ddNTP存在的情况下,各条引物与各自互补的DNA 模板结合, 聚合酶在引物的3’末端延伸单个碱基反应即告终止,产物的长度为引物长度+1bp。
延伸的碱基就是该样本在该位点上的基因型,其中纯合子表现为单峰,杂合子表现为双峰。
为了能够分辨不同SNP的不同基因型,可在引物的5’末端加上不同长度的Poly C 或Poly T,使各条引物以长度区分。
经电泳将其分开。
最短的引物一般设定为20bp, 相邻两个SNP的引物之间长度一般相差 4-6个核苷酸,以便区分。
ZFS(Zettabyte File System)是一种先进的文件系统,它具有强大的数据完整性保护和管理能力。
然而,即使是最先进的文件系统也无法完全避免数据丢失的风险。
在某些情况下,用户可能会遇到需要恢复ZFS文件系统数据的情况。
本文将介绍一些常见的ZFS文件系统数据恢复方法,帮助用户在遇到问题时能够及时有效地恢复数据。
一、使用ZFS快照进行数据恢复1. 创建ZFS快照要使用ZFS快照进行数据恢复,首先需要创建ZFS快照。
用户可以使用以下命令创建ZFS快照:```zfs snapshot poolname/datasetsnapshotname```其中,poolname是ZFS存储池的名称,dataset是数据集的名称,snapshotname是快照的名称。
2. 恢复数据一旦创建了ZFS快照,用户可以通过以下命令将数据恢复到快照所对应的状态:```zfs rollback poolname/datasetsnapshotname```这将使数据集回滚到创建快照时的状态,从而恢复数据。
二、使用ZFS数据备份进行恢复1. 创建ZFS数据备份在ZFS文件系统中,用户还可以使用ZFS发送和接收功能进行数据备份。
通过将数据发送到另一个存储池,用户可以创建ZFS数据备份。
2. 恢复数据一旦创建了ZFS数据备份,用户可以使用以下命令将备份数据恢复到原始位置:```zfs receive -F poolname/newdataset < backupfile```其中,poolname是原始存储池的名称,newdataset是要恢复数据的数据集的名称,backupfile是备份数据的文件。
三、使用ZFS修复工具进行数据修复1. 检查和修复数据损坏ZFS文件系统具有自动数据完整性检查和修复功能。
用户可以通过以下命令手动触发数据完整性检查和修复:```zpool scrub poolname```这将触发ZFS对存储池进行数据完整性检查,并尝试修复损坏的数据块。
ZFS文件系统Snapshot技术的分析摘要:快照是一种重要的存储数据的技术,可以在不停止应用程序的情况下对数据进行备份。
本文对Solaris平台下的ZFS文件系统中的快照技术进行了分析,介绍了快照的工作原理、实现技术及数据结构,并在ZFS中进行快照创建、数据恢复的实例分析,结果表明ZFS文件系统中的快照技术能避免数据的丢失,可以有效地保护该系统下的数据,并且在操作系统的实验教学中对文件系统的分析具有较大的实践意义。
关键词:快照;Copy-on-Write;ZFS;Solaris1引言随着计算机技术在各个领域的广泛应用,信息量迅速增长,越来越多的单位、公司以及个人对计算机数据的依赖性逐步增强,数据的损坏或者丢失将对用户造成不可弥补的损失。
为保护重要数据,用户不得不频繁地备份数据。
传统的数据备份是冷备份,需要停止系统运行才能进行,在备份期间,无法进行正常的数据访问。
但对于许多关键性的应用环境,如电子商务系统或者银行系统等,系统需要连续不断地运转,停机就意味着业务的停顿和商业机会的丢失,停止系统来进行数据备份就会造成难以估量的损失。
因此,如何在系统运行期间对系统数据进行备份,并保证数据版本的一致性就变得尤为重要。
Snapshot技术正是为了解决该问题提出的。
Snapshot能在不停止应用程序的情况下生成某一瞬间的数据映像,用户可以对该数据映像进行保存备份,当系统出现问题或者数据丢失时,用户可以安全方便地获得快照创建时刻的数据映像。
2Snapshot技术介绍Snapshot也称为快照,是本地保留的按时间点保存的数据映像。
产生一个文件系的Snapshot,并不是对所有数据块进行拷贝,只是对文件系统当前点的信息记录。
快照不能被直接访问,但是可以对它们执行克隆、备份、回滚等操作,通过这些操作,系统可以有效地保护数据。
Snapshot技术的实现方式目前有两种:即写即拷(Copy-on-Write)方式和分割镜像(Split-Mirror)方式。
Snapshot需要建立一个完整一致的映像,为了保证这一点,必须在某个特定的时刻完成全部数据的拷贝,通常这种拷贝不可能在一瞬间完成的。
实际上在进行Snapshot操作时,并不是对所有的数据进行完全复制,而是使用Copy-on-Write技术或者Split-Mirror方式。
建立一个Snapshot只需要极少的工作,在极短的时间内完成即可。
Copy-on-Write技术可以在每次输入新数据或已有数据被更新时生成对存储数据改动的Snapshot,这样做可以在发生硬盘写错误、文件损坏或程序故障时迅速恢复数据。
但是,如果需要对网络或存储媒介上的所有数据进行完全的存档或恢复时,所有以前的快照都必须可供使用。
Copy-on-Write方式通常也被称为“元数据”拷贝,即所有的数据并没有被真正拷贝到另一个位置,只是指示数据所处位置指针被拷贝,从而使得实际用于保存Snapshot所需要的空间大大减少。
Split-Mirror快照引用镜像硬盘组上所有数据。
每次引用运行时,都生成整个卷的Snapshot,而不只是新数据或更新的数据。
这种方式使离线访问数据成为可能,并且简化了恢复、复制或存档一块硬盘上的所有数据的过程。
但是,这是个较慢的过程,而且每个快照需要占用更多的存储空间。
3ZFS系统中Snapshot的实现分析3.1ZFS中Snapshot的工作原理ZFS是Solaris系统上一个全新的文件系统,它完全抛弃了传统的文件系统+卷管理+存储的架构,所有的存储设备通过ZFS Pool进行管理,通过把各种存储设备加入同一个ZFS Pool,可以轻松地在ZFS Pool文件系统下工作。
Solaris ZFS文件系统通过快照可避免删除数据时出现意外丢失,也可以通过适当权限把文件系统中的所有文件移动到远程系统,以节省本地ZFS系统空间。
ZFS通过使用Copy-on-Write的方式提供Snapshot功能,ZFS下的Snapshot为系统提供了更安全有效的数据保护方式,其工作原理如图1所示。
图1(b)是对图1(a)所示的活动的文件系统得一个Snapshot。
在创建一个新的Snapshot映像时,系统仅仅简单地复制一个根节点,新的Snapshot节点与原始的根节点指向完全相同的数据块,如图1(b)所示。
一段时间后,如果文件系统发生变化,如删除了一个文件时,在活动的文件系统中,此文件已经丢失,但在磁盘上并没有真正删除此文件,Snapshot中仍然记录此文件的信息,图1(c)所示。
也就是说,通过Snapshot仍然可以找到该文件。
而修改文件系统中的某个数据块时,系统在修改前复制该数据块,然后修改根节点的相关数据的同时,对复制块数据进行修改。
这样,仅仅那些修改了的数据块才需要进行复制,不仅提高了复制效率,也提高了系统磁盘空间的利用率。
需要备份时,从Snapshot根节点开始,可以读取到该时间点的完整的存储系统映像。
而实际的操作仍从根节点开始,这样可以正确地访问到最新的数据。
3.2Snapshot结构分析ZFS文件系统的Snapshot是文件系统的只读副本。
Snapshot几乎可以即时创建,而且最初不占用池中的其他磁盘空间。
但是当活动数据集中的数据发生更改时,Snapshot通过继续引用数据占用磁盘空间,从而阻止释放该空间。
ZFS Snapshot 的特征有以下几点: 在系统重新引导前后保持不变; 用户理论上可以创建的最大快照数为264,且可以根据用户需求为Snapshot重命名; 不使用单独的后备存储,Snapshot直接占用存储池(从中创建这些快照的文件系统所在的存储池)中的磁盘空间。
文件系统中的Snapshot的存在不会影响系统的效率,ZFS中Snapshot的实现主要是在ZFS的DSL(Dataset and Snapshot Layer)层。
ZFS文件系统在磁盘上可以被描绘成包含诸多叶子节点树形结构,叶子节点包含数据和含有元数据的内部数据块,数据块为dnode_phys类型。
在该文件系统中,修改磁盘上的一个数据块,并不是直接覆盖磁盘上的原始数据块,而是创建一个新的数据块。
然后通过修改数据块父节点的指针,使其指向新数据块的内容。
通过持续该操作,直到到达文件系统的根节点,来实现数据的更新,如图2所示。
Snapshot也是一种数据块类型,在ZFS中用dsl_dataset_ phys结构描述。
ZFS 为维护Snapshot技术主要维护两种数据结构: blkptr结构体,其中的blk_birth记录每个数据块创建的时间;dsl_dataset_phys结构体,维护每个文件系统的“dead”数据块列表和Snapshot结构,各数据结构的内部关系如图3所示。
dsl_dataset_phys通过dsl_dataset指针链接到dsl目录中,由dsl目录结构维护整个文件系统中Snapshot 以及数据集的关系;blkptr结构体记录每个数据块创建的时间,并通过blk_dva所保存的128位虚地址指向具体的数据块结构。
系统通过dsl_dataset_snapshot_sync()执行创建快照的功能。
创建快照时,会生成一个新的dsl_dataset_phys节点,并将该节点加入到dsl目录中。
新的快照节点的与当前的文件系统根节点指向相同的数据集。
当文件系统的数据被修改时,如删除某个数据块时,需要判断该数据块是否可以被完全释放。
此时系统调用dsl_dataset_block_born()来进行判断,通过比较该数据块的创建时间(blk_birth)与文件系统中所有的Snapshot的创建时间,如果数据块是在Snapshot之前创建,该数据块不能被释放,而是将其加入到文件系统的dead list中;如果数据块是在Snapshot之后创建的,则必须释放该数据块。
通过该方法,当文件系统回滚到Snapshot创建点时,文件系统才能找回创建点的所有数据。
当Snapshot被删除时,系统调用dsl_dataset_destroy_sync()函数,并在该函数中决定哪些数据块需被释放,并以此维护文件系统的dead list。
3.3Snapshot实例在ZFS文件系统中,Snapshot的创建可以随时进行,当用户为文件系统创建一个新的Snapshot时,它的初始大小为0KB。
如图4所示,为文件系统fs001创建快照fs_snapshot01,其初始大小为0。
因为新创建Snapshot时,没有进行数据更新,系统只是创建了一个Snapshot节点指向文件系统的数据块。
当进行文件更新时,如在fs001文件系统中创建了一个新的文件test002.txt,并删除原来的test001.txt文件,此时再观察fs_snapshot01,其大小已经变为18.5K,而在文件系统fs001中已经找不到文件test001.txt(图5所示)。
为观察Snapshot是否保存有test001.txt文件,我们通过mdb进入系统内核,查看ZFS文件系统的信息。
从mdb中可以看到为fs001文件系统创建的Snapshot 路径的信息,命令如下所示:#mdb –k /*进入mdb*/>::walk vfs |::fsinfo –v !grep zfs/*查看名为zfs的文件信息*/fffffffffbacad650zfs /ffffff00c9cd8690zfs /rpoolffffff0e84c679c0zfs /rpool/fs001ffffff00d5c7f358 zfs/rpool/fs001/.zfs/snapshot/fs_snapshot01从图6可以看出,进入/rpool/fs001/.zfs/snapshot/fs_ snapshot01文件夹,可以看到,在该文件夹中保存有fs_snapshot01创建时fs001文件中完全相同的数据信息。
创建文件系统的快照时,每个文件系统会在自身的根目录下创建.zfs/snapshot的文件夹,该系统的所有快照信息数据均被保存在这个目录下。
创建Snapshot后,对文件系统中的数据进行修改或删除,并没有真正地从磁盘上删掉修改或删除的文件,只是改变了文件系统数据块的指针指向,原始的数据仍然保存在磁盘上,而通过快照回滚,仍然可以找回快照创建点的数据。
通过Snapshot可以避免因不正当操作误删数据等,能有效地保护系统的数据。
5结束语本文主要分析了Solaris平台下ZFS文件系统中Snapshot技术,详细阐述了在ZFS系统中Snapshot的工作原理,主要功能及数据结构,并通过具体的实例分析了Snapshot保护数据的有效性。