ZFS文件系統(tǒng)介紹_第1頁(yè)
ZFS文件系統(tǒng)介紹_第2頁(yè)
ZFS文件系統(tǒng)介紹_第3頁(yè)
ZFS文件系統(tǒng)介紹_第4頁(yè)
ZFS文件系統(tǒng)介紹_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)報(bào)告黃宗文1基本概念1.1 ZFS ZFS源自于Sun Microsystems為Solaris操作系統(tǒng)開(kāi)發(fā)的文件系統(tǒng)。ZFS是一個(gè)具有高存儲(chǔ)容量、文件系統(tǒng)與卷管理概念整合、嶄新的磁盤邏輯管理的輕量級(jí)文件系統(tǒng),同時(shí)也是一個(gè)便捷的存儲(chǔ)池管理系統(tǒng)。ZFS是一個(gè)使用CDDL協(xié)議條款授權(quán)的開(kāi)源項(xiàng)目。ZFS文件系統(tǒng)的英文名稱為Zettabyte File System,也叫動(dòng)態(tài)文件系統(tǒng)(Dynamic File System),是第一個(gè)128位文件系統(tǒng)。最初是由Sun公司為Solaris 10操作系統(tǒng)開(kāi)發(fā)的文件系統(tǒng)。作為OpenSolaris開(kāi)源計(jì)劃的一部分,ZFS于2005年11月發(fā)布,被Sun稱

2、為是終極文件系統(tǒng),經(jīng)歷了10年的活躍開(kāi)發(fā)。而最新的開(kāi)發(fā)將全面開(kāi)放,并重新命名為 OpenZFS。1.2 ZFS存儲(chǔ)池ZFS 使用存儲(chǔ)池的概念來(lái)管理物理存儲(chǔ)。以前,文件系統(tǒng)是在單個(gè)物理設(shè)備的基礎(chǔ)上構(gòu)造的。為了利用多個(gè)設(shè)備和提供數(shù)據(jù)冗余性,引入了卷管理器的概念來(lái)提供單個(gè)設(shè)備的表示,以便無(wú)需修改文件系統(tǒng)即可利用多個(gè)設(shè)備。此設(shè)計(jì)增加了更多復(fù)雜性,并最終阻礙了特定文件系統(tǒng)的繼續(xù)發(fā)展,因?yàn)檫@類文件系統(tǒng)無(wú)法控制數(shù)據(jù)在虛擬卷上的物理放置。ZFS 可完全避免使用卷管理。ZFS 將設(shè)備聚集到存儲(chǔ)池中,而不是強(qiáng)制要求創(chuàng)建虛擬卷。存儲(chǔ)池描述了存儲(chǔ)的物理特征(設(shè)備布局、數(shù)據(jù)冗余等),并充當(dāng)可以從其創(chuàng)建文件系統(tǒng)的任意數(shù)據(jù)

3、存儲(chǔ)庫(kù)。文件系統(tǒng)不再受限于單個(gè)設(shè)備,允許它們與池中的所有文件系統(tǒng)共享磁盤空間。您不再需要預(yù)先確定文件系統(tǒng)的大小,因?yàn)槲募到y(tǒng)會(huì)在分配給存儲(chǔ)池的磁盤空間內(nèi)自動(dòng)增長(zhǎng)。添加新存儲(chǔ)器后,無(wú)需執(zhí)行其他操作,池中的所有文件系統(tǒng)即可立即使用所增加的磁盤空間。在許多方面,存儲(chǔ)池與虛擬內(nèi)存系統(tǒng)相似:將一個(gè)內(nèi)存 DIMM 加入系統(tǒng)時(shí),操作系統(tǒng)并不強(qiáng)迫您運(yùn)行命令來(lái)配置內(nèi)存并將其指定給個(gè)別進(jìn)程。系統(tǒng)中的所有進(jìn)程都會(huì)自動(dòng)使用所增加的內(nèi)存。1.3事務(wù)性語(yǔ)義ZFS 是事務(wù)性文件系統(tǒng),這意味著文件系統(tǒng)狀態(tài)在磁盤上始終是一致的。傳統(tǒng)文件系統(tǒng)可就地覆蓋數(shù)據(jù),這意味著如果系統(tǒng)斷電(例如,在分配數(shù)據(jù)塊到將其鏈接到目錄中的時(shí)間段內(nèi)斷電

4、),則會(huì)使文件系統(tǒng)處于不一致?tīng)顟B(tài)。以前,此問(wèn)題是通過(guò)使用fsck命令解決的。此命令負(fù)責(zé)檢查并驗(yàn)證文件系統(tǒng)狀態(tài),并嘗試在操作過(guò)程中修復(fù)任何不一致性。這種文件系統(tǒng)不一致問(wèn)題曾給管理員造成巨大困擾,fsck命令并不保證能夠解決所有可能的問(wèn)題。最近,文件系統(tǒng)引入了日志記錄的概念。日志記錄過(guò)程在單獨(dú)的日志中記錄操作,在系統(tǒng)發(fā)生崩潰時(shí),可以安全地重放該日志。由于數(shù)據(jù)需要寫入兩次,因此該過(guò)程會(huì)引入不必要的開(kāi)銷,而且通常會(huì)導(dǎo)致一組新問(wèn)題,例如在無(wú)法正確地重放日志時(shí)。對(duì)于事務(wù)性文件系統(tǒng),數(shù)據(jù)是使用寫復(fù)制語(yǔ)義管理的。數(shù)據(jù)永遠(yuǎn)不會(huì)被覆蓋,并且任何操作序列會(huì)全部被提交或全部被忽略。因此,文件系統(tǒng)絕對(duì)不會(huì)因意外斷電或系

5、統(tǒng)崩潰而被損壞。盡管最近寫入的數(shù)據(jù)片段可能丟失,但是文件系統(tǒng)本身將始終是一致的。此外,只有在寫入同步數(shù)據(jù)(使用 O_DSYNC 標(biāo)志寫入)后才返回,因此同步數(shù)據(jù)決不會(huì)丟失。事務(wù)型文件系統(tǒng)采用類似數(shù)據(jù)庫(kù)的事務(wù)性操作,在一次安全的數(shù)據(jù)寫回操作完成時(shí) ,創(chuàng)建一個(gè)事務(wù)點(diǎn),保存一個(gè)正常狀態(tài),然后執(zhí)行下一次文件操作,在寫回過(guò)程中如果發(fā)生掉電 、系統(tǒng)崩潰等突發(fā)狀態(tài),可以回滾到上一個(gè)事務(wù)點(diǎn)時(shí)刻的文件系統(tǒng)狀態(tài),從而保證數(shù)據(jù)的一致性 。1.4 RAIDRaid-廉價(jià)冗余磁盤陣列是將一對(duì)磁盤通過(guò)相關(guān)的技術(shù)連接起來(lái),構(gòu)成邏輯上的空間。RAID可以使用諸多磁盤驅(qū)動(dòng)器同時(shí)傳輸數(shù)據(jù),在邏輯上他們又是一個(gè)磁盤驅(qū)動(dòng)器,用RAI

6、D可以使單個(gè)的磁盤驅(qū)動(dòng)器提高數(shù)倍的速率。磁盤陣列根據(jù)RAID控制器采用的工作模式和算法不同有不同的級(jí)別,分別可以提供不同的速度、安全性和性價(jià)比。常用的有RAID0、RAID1、RAID5。RAID0-磁盤條帶化,又稱數(shù)據(jù)分塊,把數(shù)據(jù)分布在多個(gè)盤上,在讀寫時(shí)是以并行的方式對(duì)磁盤同時(shí)進(jìn)行操作。提高了數(shù)據(jù)訪問(wèn)性能,但是沒(méi)有冗余。圖 1 RAID0數(shù)據(jù)存儲(chǔ)格式Fig 1 RAID0 data storage formatRAID1-磁盤鏡像,即每個(gè)工作磁盤都有一個(gè)鏡像盤,每次寫數(shù)據(jù)時(shí)必須同時(shí)寫入鏡像盤,讀數(shù)據(jù)時(shí)只從工作盤中讀出數(shù)據(jù)。提高了可靠性,但是容量降低了一半。圖 2 RAID1數(shù)據(jù)存儲(chǔ)格式Fig

7、 2 RAID1 data storage formatRAID5-磁盤條帶化并具有分布式校驗(yàn),采用奇偶校驗(yàn),校驗(yàn)信息是分散在不同的硬盤驅(qū)動(dòng)器上的。是一種快速、大容量和容錯(cuò)分布合理的磁盤陣列。圖 3 RAID5數(shù)據(jù)存儲(chǔ)格式Fig 3 RAID5 data storage format1.5 RAID5寫漏洞RAID5在寫條帶(strip)數(shù)據(jù)的時(shí)候,如果突然系統(tǒng)斷電、系統(tǒng)崩潰、磁盤位錯(cuò)誤等故障,可能導(dǎo)致寫條帶數(shù)據(jù)單元(chunk)數(shù)據(jù)丟失的發(fā)生,從而導(dǎo)致在降級(jí)模式下無(wú)法通過(guò)正常的異或運(yùn)算計(jì)算出正確的數(shù)據(jù)。RAID5的寫漏洞問(wèn)題一直是一個(gè)影響RAID5可靠性的重要問(wèn)題。1.6 RAID5小寫問(wèn)題

8、對(duì)于RAID5來(lái)說(shuō),執(zhí)行小塊數(shù)據(jù)寫的效率較低,即小寫問(wèn)題。對(duì)于RAID5而言,每執(zhí)行一次小塊數(shù)據(jù)寫操作,不僅需要寫入新的用戶數(shù)據(jù),而且需要寫入新的校驗(yàn)數(shù)據(jù),校驗(yàn)值的計(jì)算要用到舊的用戶數(shù)據(jù),所以要完成每一個(gè)小寫請(qǐng)求都要經(jīng)歷4個(gè)磁盤操作過(guò)程:讀取舊用戶數(shù)據(jù),讀取舊校驗(yàn)值,寫入新用戶數(shù)據(jù),寫入新校驗(yàn)值。使得RAID5相應(yīng)時(shí)間大大增長(zhǎng)。2互相比較 2.1 ZFS和傳統(tǒng)文件系統(tǒng)的區(qū)別傳統(tǒng)的文件系統(tǒng)被限制在單個(gè)磁盤設(shè)備之內(nèi),它們的尺寸是不能超越單個(gè)磁盤設(shè)備。傳統(tǒng)文件系統(tǒng)需要駐留于單獨(dú)設(shè)備或者需要一個(gè)卷管理系統(tǒng)去使用一個(gè)以上的設(shè)備,而ZFS建立在虛擬的,被稱為“zpools”的存儲(chǔ)池之上 (存儲(chǔ)池最早在Ad

9、vFS實(shí)現(xiàn),并且加到后來(lái)的Btrfs)。過(guò)去的文件系統(tǒng)是被影射到一個(gè)物理存儲(chǔ)單元,如:分區(qū);所有的ZFS文件系統(tǒng)共享池內(nèi)的可獲得的存儲(chǔ)空間。ZFS已經(jīng)拋棄了卷管理,邏輯卷可以不再使用。因?yàn)閆FS在使用和管理raw設(shè)備能夠有更好的表現(xiàn)。2.2 RAIDZ1和RAID5的區(qū)別RAIDZ-1和RAID-5是很相似的,有一個(gè)單一的奇偶校驗(yàn)位位于所以的磁盤陣列中,而且條帶的寬度都是可變的,基本可以涵蓋所有的磁盤陣列的寬度,可以是很多的磁盤,或者很少的磁盤。如同raid-5一樣,RAIDZ是一種數(shù)據(jù)奇偶校驗(yàn)。與raid5不同的是,它使用的是動(dòng)態(tài)地存儲(chǔ)條寬度。不論數(shù)據(jù)塊的大小是多少,每個(gè)塊均是raid-z的

10、一個(gè)數(shù)據(jù)條帶。這意味著,每個(gè)RAIDZ寫操作是一個(gè)全條帶寫操作。同時(shí),與ZFS的寫復(fù)制事物語(yǔ)義相結(jié)合,就完全解決了RAID5的寫漏洞問(wèn)題。RAIDZ還比傳統(tǒng)的raid快,因?yàn)樗鼜膩?lái)不用執(zhí)行rmw。然而,這樣的方式會(huì)增加RAIDZ重構(gòu)的實(shí)現(xiàn)復(fù)雜度。因?yàn)閿?shù)據(jù)條帶的大小各異,必須遍歷ZFS文件系統(tǒng)元數(shù)據(jù)來(lái)進(jìn)行RAIDZ的重構(gòu)。圖 4 RAID5和RAIDZ1存儲(chǔ)格式比較Fig 4 Comparison of RAID5 and RAIDZ1 storage formats3.環(huán)境3.1 LINUX系統(tǒng)3.1.1硬件HP電腦,i5處理器,8G內(nèi)存,除去裝系統(tǒng)的硬盤,給虛擬機(jī)添加8個(gè)1G的硬盤3.1.2

11、軟件(1) VMware Workstation 12 Pro(2) ubuntu-16.04-desktop-amd64.iso3.2環(huán)境搭建3.2.1創(chuàng)建一個(gè)虛擬機(jī),內(nèi)存為1G,主機(jī)名為Ubuntu16.043.2.2 搭建ZFS和ZFSraidz1環(huán)境(1) 首先搭建ZFS,在Ubuntu中打開(kāi)終端(2) sudo su #始終需要管理員權(quán)限(3) apt install zfsutils-linux #安裝zfs組件 (4) zpool create myzpool /dev/sdb /dev/sdc #創(chuàng)建普通的存儲(chǔ)池(5) zfs create myzpool/fly #在存儲(chǔ)池中

12、添加文件系統(tǒng)(6) zpool create myraidz1 raidz1 /dev/sdd /dev/sde /dev/sdf #創(chuàng)建raidz1存儲(chǔ)池(7) zfs create myraidz1/home #向raidz1存儲(chǔ)池中添加文件系統(tǒng)(8)zpool list #顯示存儲(chǔ)池列表(9)zfs list #顯示ZFS文件系統(tǒng)列表3.2.3 搭建raid5環(huán)境(1) apt install mdadm #安裝mdadm包(2) mdadm examine /dev/sdg /dev/sdh /dev/sdi #檢查磁盤是否存在RAID塊(3) fdisk /dev/sdg圖 5 分區(qū)

13、創(chuàng)建過(guò)程Fig 5 Partition create process請(qǐng)按照下面的說(shuō)明在/dev/sdg硬盤上創(chuàng)建分區(qū)。-按n創(chuàng)建新的分區(qū)-然后按e選擇擴(kuò)展分區(qū)。-接下來(lái)選擇分區(qū)號(hào)1.默認(rèn)就是1.-接下來(lái)是選擇柱面大小,我們選擇默認(rèn)大小,所以只需要按兩次Enter鍵默認(rèn)將整個(gè)容量分配給它。-按p來(lái)打印創(chuàng)建好的分區(qū)。-改變分區(qū)類型,按l可以列出所有可用的類型。-按t修改分區(qū)類型。-這里使用fd設(shè)置為RAID的類型。-然后再次使用p查看我們所做的更改。-使用w保存更改。(4) 重復(fù)上述操作,對(duì)/dev/sdh /dev/sdi進(jìn)行相同處理。注意要對(duì)應(yīng)好相應(yīng)的硬盤號(hào)。(5) mdadm examine

14、 /dev/sdg /dev/sdh /dev/sdi #創(chuàng)建分區(qū)后,檢查磁盤的變化,磁盤類型為fd類型。(6) mdadm create /dev/md0 level=5 raid-devices=3 /dev/sdg1 /dev/sdh1 /dev/sdi1 #使用所有新建的分區(qū)(sdg1,sdh1,sdi1)創(chuàng)建一個(gè)RAID設(shè)備“md0”,-level=5因?yàn)閯?chuàng)建的是raid5,-raid-devices=3因?yàn)槭褂昧?個(gè)設(shè)備,后面跟設(shè)備名。(7)mkfs.ext4 /dev/md0 #掛載前為md0設(shè)備創(chuàng)建ext4文件系統(tǒng)(8)mkdir /mnt/raid5(9)mount /dev

15、/md0 /mnt/raid5/ #掛載設(shè)備md04.測(cè)試5.1冗余測(cè)試5.1.1Raid5冗余測(cè)試(1)cd /mnt/raid5/ #轉(zhuǎn)到目錄/mnt/raid5/下(2)vi hello.c #創(chuàng)建hello.c文件,并寫入“hello world”(3)mdadm fail /dev/md0 /dev/sdg1 #標(biāo)記sdg1為失效(4)mdadm detail /dev/md0 #顯示細(xì)節(jié)圖 6 標(biāo)記磁盤失效Fig 6 Mark disk failure(5)mdadm remove /dev/md0 /dev/sdg1 #刪除磁盤(6)mdadm detail /dev/md0 #

16、顯示細(xì)節(jié)圖 7 卸載磁盤Fig 7 Umount disk(7) vi hello.c #打開(kāi)hello.c文件,看文件是否能正常打開(kāi)圖 8 查看hello.c文件Fig 8 Check hello.c file(8)mdadm manage /dev/md0 add /dev/sdg1 #把磁盤添加回去5.1.2ZFSraida1冗余測(cè)試(1)cd /myraidz1/home/(2)vi hello.c(3)zpool offline myraidz1 /dev/sdd #使sdd磁盤脫機(jī)(4)zpool status #顯示當(dāng)前所有存儲(chǔ)池狀態(tài) 圖 9 存儲(chǔ)池狀態(tài)Fig 9 State o

17、f the storage pool(5) vi hello.c圖 10 查看hello.c文件Fig 10 Check hello.c file(6)zpool online myraidz1 /dev/sdd #使sdd磁盤聯(lián)機(jī)(7)zpool status圖 11 存儲(chǔ)池狀態(tài)Fig 11 State of the storage pool5.2讀寫性能測(cè)試安裝filebench(1)下載filebench-1.5-alpha3.tar.gz壓縮包,網(wǎng)址:(2)cd 下載(3)tar zxvf filebench-1.5-alpha3.tar.gz #解壓壓縮文件(4)cd fileben

18、ch-1.5-alpha3 #進(jìn)入文件目錄(5)sudo su #轉(zhuǎn)換管理員身份(6)apt install intltool automake libtool flex bison #安裝filebench依賴的軟件包(7)./configure #手動(dòng)安裝軟件步驟(8)make #編譯軟件(9)make install #編譯并安裝軟件5.2.1LinuxFS讀寫性能測(cè)試(1)編寫LinuxFS.f文件set $dir=/mnt/raid5set $filesize=100mset $iosize=cvar(type=cvar-uniform,parameters=lower:4096;u

19、pper:8192)define file name=singlefile,path=$dir,size=$filesize,preallocdefine process name=filereader,instances=1thread name=filereader,memsize=1m,instances=1flowop openfile name=open1,filesetname=singlefile,fd=1flowop read name=read1,fd=1,iosize=$iosizeflowop closefile name=close1,fd=1run 60(2)file

20、bench f LinuFS.f #測(cè)試文件讀寫性能,注意執(zhí)行命令時(shí)要在LinuxFS.f同一目錄5.2.2普通ZFS讀寫性能測(cè)試(1)編寫ZFS.f文件set $dir=/myzpool/flyset $filesize=100mset $iosize=cvar(type=cvar-uniform,parameters=lower:4096;upper:8192)define file name=singlefile,path=$dir,size=$filesize,preallocdefine process name=filereader,instances=1thread name=f

21、ilereader,memsize=1m,instances=1flowop openfile name=open1,filesetname=singlefile,fd=1flowop read name=read1,fd=1,iosize=$iosizeflowop closefile name=close1,fd=1run 60(2)filebench f ZFS.f #測(cè)試文件讀寫性能,注意執(zhí)行命令時(shí)要在ZFS.f同一目錄5.2.3ZFSraidz1讀寫性能測(cè)試(1)編寫ZFSraidz1.f文件set $dir=/myraidz1/homeset $filesize=100mset $iosize=cvar(type=cvar-uniform,parameters=lower:4096;upper:8192)define file name=singlefile,path=$dir,size=$filesize,preallocdefine process name=filereader,instances=1thread name=filereader,memsize=1m,instances=1flowop openfile name=open1,filesetname=singlefile,fd=1flowop read name=re

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論