輕松玩轉(zhuǎn)Solaris ZFS文件系統(tǒng)的備份恢復(fù)
原創(chuàng)【51CTO獨(dú)家特稿】在全面了解Solaris 10 ZFS文件系統(tǒng)的管理一文當(dāng)中,我們對(duì)ZFS文件系統(tǒng)的特點(diǎn)、結(jié)構(gòu)、命令、管理等方面進(jìn)行了詳細(xì)的介紹。本篇文章是之前一篇的續(xù)作,將以O(shè)penSolaris為例,介紹管理ZFS文件系統(tǒng)的不同方法。
51CTO編輯推薦:下一代Linux文件系統(tǒng)
ZFS文件系統(tǒng)的快照是一個(gè)很方便的功能,可以輕松地對(duì)系統(tǒng)進(jìn)行備份、恢復(fù)而無(wú)需擔(dān)心系統(tǒng)受到修改。你可以通過(guò)命令行進(jìn)行快照的創(chuàng)建、刪除和修改,也可以通過(guò)瀏覽器進(jìn)行圖形化的管理。除此之外,OpenSolaris中還提供了非常方便的時(shí)間滑塊功能,而我們還可以更加方便的使用一些shell腳本組合進(jìn)行批處理。
一、ZFS文件系統(tǒng)快照簡(jiǎn)介
快照是文件系統(tǒng)或卷在給定時(shí)間點(diǎn)上的只讀版本。使用文件系統(tǒng)快照可以對(duì)動(dòng)態(tài)文件系統(tǒng)進(jìn)行聯(lián)機(jī)備份??煺杖襞c日志技術(shù)相結(jié)合,可實(shí)現(xiàn)文件系統(tǒng)的快速恢復(fù)??煺招袨轭愃朴谖募到y(tǒng)的只讀副本,反映文件系統(tǒng)在創(chuàng)建快照的時(shí)間點(diǎn)的狀態(tài)??煺諏?duì)于備份和最終用戶能否從錯(cuò)誤中恢復(fù)非常重要。可從文件系統(tǒng)根目錄中的 .zfs/snapshot 目錄下訪問(wèn)文件系統(tǒng)快照。
用戶通常無(wú)需使用磁帶備份便可恢復(fù)意外刪除的文件,并可在開(kāi)始進(jìn)行風(fēng)險(xiǎn)升級(jí)或執(zhí)行其他任務(wù)前捕獲快照,以便在需要時(shí)可以回復(fù)到升級(jí)或執(zhí)行其他任務(wù)前的狀態(tài)。ZFS 允許進(jìn)行回復(fù)或“回滾”,這可將文件系統(tǒng)的內(nèi)容復(fù)位到捕獲該快照時(shí)的狀態(tài)。ZFS 利用寫(xiě)復(fù)制 (copy-on-write, COW) 機(jī)制來(lái)存儲(chǔ)數(shù)據(jù),并且?guī)缀蹩梢宰鳛閿?shù)據(jù)存儲(chǔ)的副效應(yīng)來(lái)生成快照。COW 在將新數(shù)據(jù)寫(xiě)入磁盤前會(huì)讀入舊數(shù)據(jù)。之后,COW 會(huì)將舊數(shù)據(jù)寫(xiě)入某個(gè)新位置以供快照使用。此讀取和復(fù)制數(shù)據(jù)的過(guò)程同時(shí)適用于用戶數(shù)據(jù)和文件系統(tǒng)的專用數(shù)據(jù)(元數(shù)據(jù))。任何后續(xù)寫(xiě)入操作都將導(dǎo)致通過(guò) COW 機(jī)制分配新塊,因此永遠(yuǎn)不會(huì)修改組成快照的那些塊。
從本質(zhì)上而言,從某個(gè)備份進(jìn)行恢復(fù)的步驟與從傳統(tǒng)備份恢復(fù)的步驟是一樣的:
◆重建文件系統(tǒng)。
◆恢復(fù)完整備份。
◆恢復(fù)每個(gè)增量備份。
我們也可以創(chuàng)建某個(gè)特定快照的克隆(克隆指一個(gè)其初始內(nèi)容與某個(gè)快照的內(nèi)容相同的文件系統(tǒng))。正如可以修改其他文件系統(tǒng)屬性一樣,可以修改克隆的屬性和內(nèi)容。
二、使用命令創(chuàng)建和刪除ZFS快照
我們使用zfs snapshot命令來(lái)創(chuàng)建快照,這個(gè)命令只有一個(gè)變量就是快照的名字??煺彰秩缦滤荆?/p>
filesystem@snapname
volume@snapname
◆創(chuàng)建快照
# zfs snapshot rpool/tank@sun
通過(guò)使用 -r 選項(xiàng)可為所有后代文件系統(tǒng)創(chuàng)建快照。
# zfs snapshot -r tank1/home@now
然后使用命令查看所有快照,如圖1 。
# zfs list -t snapshot
圖1 使用命令查看所有快照
說(shuō)明:快照不能被修改屬性,也不能使數(shù)據(jù)集的屬性應(yīng)用到快照上。
◆刪除快照
請(qǐng)使用zfs destroy命令刪除快照:
# zfs destroy tank/home/ahrens@Friday
在快照存在的情況下,數(shù)據(jù)集不能被刪除。另外,如果存在快照的克隆,也不能刪除數(shù)據(jù)集。
◆修改快照名稱
可以使用zfs rename命令,給快照改名字。
將cindys快照的名字改為today:
# zfs rename tank/home/cindys@111205 pool/home/cindys@today
◆顯示和訪問(wèn)ZFS快照
快照可以使用下面的方法進(jìn)行顯示:
# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT tank/home@now 0 - 19K - tank1/home@now 0 - 19K - tank1/home/bo@now 16K - 18K -
◆恢復(fù)到最初的快照
使用zfs rollback命令能使快照放棄所有的改變,恢復(fù)到建立快照的最初狀態(tài)。如果有些最近的快照的話,使用-r選項(xiàng)能強(qiáng)制刪除這些快照,而恢復(fù)到最初的快照。
恢復(fù)pool/home/ahrens文件系統(tǒng)的星期二的快照:
# zfs rollback pool/home/ahrens@tuesday # zfs rollback -r pool/home/ahrens@tuesday
#p#
三 通過(guò)瀏覽器管理快照
1 安裝配置Java Web Console
和Solaris 10相比,OpenSolaris 沒(méi)有預(yù)先配置Java Web Console,需要自行安裝配置,這里需要使用Solaris 10 安裝DVD光盤或者ISO文件。
安裝操作如下:
# lofiadm -a sol-10-u8-ga-x86-dvd.iso /dev/lofi/1 # mkdir /mnt2 # mount -F hsfs /dev/lofi/1 /mnt2 # cd Solaris_10/ # cd Product/ # cp -rf SUNWjhrt SUNWjhdev SUNWj5dev SUNWj5rt SUNWj6rt SUNWjato SUNWmconr SUNWmcon SUNWmcos SUNWmcosx SUNWmctag SUNWmfrun SUNWzfsgr SUNWzfsgu /var/spool/pkg # pkgadd
配置Java Web Console :
執(zhí)行以下命令以恢復(fù)對(duì) RPC 通信的外部訪問(wèn)。
# svccfg svc:> select system/webconsole svc:/system/webconsole> setprop options/tcp_listen=true svc:/system/webconsole> quit # /usr/sbin/smcwebserver start starting Sun Java(TM) Web Console Version 3.1 ... The console is running # netstat -a | grep 6789 *.6789 *.* 0 0 49152 0 LISTEN *.6789 *.* 0 0 49152 0 LISTEN
最后一條命令的輸出應(yīng)返回一個(gè) 6789 項(xiàng),該項(xiàng)為用于連接到 Sun Java Web Console 的端口號(hào)。
如果希望服務(wù)器在系統(tǒng)引導(dǎo)時(shí)自動(dòng)啟動(dòng),請(qǐng)運(yùn)行以下命令:
# /usr/sbin/smcwebserver enable
如果沒(méi)有Solaris 10 安裝DVD 光盤可以訪問(wèn)Oracle/Sun的官網(wǎng)(需注冊(cè))下載Java Web Console 3.0.2 軟件包。安裝過(guò)程從略。
2 進(jìn)入ZFS的管理界面
點(diǎn)擊zfs管理鏈接進(jìn)入zfs的web管理頁(yè)面,如圖 2 。
圖2 zfs的web管理頁(yè)面
相比Solaris 10,這里只有英文界面了,對(duì)于中國(guó)用戶可能稍微有些麻煩,下面稍微說(shuō)明下。
◆創(chuàng)建普通快照
包括四個(gè)部分:
a.定義快照
圖3 定義快照
說(shuō)明:有效的快照名稱長(zhǎng)度介于 1 到 256 個(gè)字符之間,并且可以包含以下字符:A-Z、a-z、0-9、.、:、_ 和 -。
b.檢查配置
圖4檢查配置
在創(chuàng)建快照之前,如果要進(jìn)行更改,請(qǐng)?jiān)?ldquo;步驟”選項(xiàng)卡中單擊前面的某個(gè)步驟,或單擊“上一步”按鈕在向?qū)е邢蚯皩?dǎo)航。
c.預(yù)覽要執(zhí)行的命令
在創(chuàng)建快照之前,可以預(yù)覽所要執(zhí)行的命令。
d.查看命令結(jié)果
如果出現(xiàn)命令執(zhí)行成功字樣是成功建立快照成功的標(biāo)志。
◆克隆文件系統(tǒng)快照
克隆指一個(gè)其初始內(nèi)容與某個(gè)快照的內(nèi)容相同的文件系統(tǒng)。借助克隆,可對(duì)文件系統(tǒng)進(jìn)行快速?gòu)?fù)制,這種方法可高效利用空間??寺∽钸m用于需要某個(gè)數(shù)據(jù)集的許多幾乎完全相同的副本的情況。例如,可能有多個(gè)系統(tǒng)映像,每個(gè)區(qū)域?qū)?yīng)一個(gè)系統(tǒng)映像。與其他文件系統(tǒng)一樣,可以修改克隆的設(shè)置和內(nèi)容??寺∥募到y(tǒng)快照同樣包括四個(gè)步驟:
定義文件系統(tǒng)克隆、檢查配置、預(yù)覽要執(zhí)行的命令、以及查看命令結(jié)果。
圖5 定義文件系統(tǒng)克隆
和之前一樣。有效的文件系統(tǒng)名稱長(zhǎng)度介于 1 到 256 個(gè)字符之間,并且可以包含以下字符:A-Z、a-z、0-9、.、:、_ 和 -。此處還必須選擇一個(gè)現(xiàn)有文件系統(tǒng)快照,以作為新文件系統(tǒng)的基礎(chǔ)。新文件系統(tǒng)的存儲(chǔ)池必須和包含要克隆的快照的存儲(chǔ)池相同。新文件系統(tǒng)或克隆的內(nèi)容最初和它所基于的現(xiàn)有文件系統(tǒng)快照相同。第2-4個(gè)步驟與之前一樣,此處不再贅述。
#p#
四、ZFS自動(dòng)快照服務(wù)的管理:時(shí)間滑塊
OpenSolaris在ZFS自動(dòng)快照服務(wù)之上引進(jìn)了時(shí)間滑塊服務(wù),并將這些功能整合進(jìn)GNOME桌面環(huán)境。這些創(chuàng)新使得我們能輕松使用GNOME文件管理器來(lái)管理ZFS自動(dòng)快照服務(wù)。時(shí)間滑塊功能默認(rèn)是關(guān)閉的,可以通過(guò)系統(tǒng)-系統(tǒng)管理-時(shí)間滑塊進(jìn)行開(kāi)啟和設(shè)置,如圖6 。
圖6 時(shí)間滑塊進(jìn)行開(kāi)啟和設(shè)置
要查看以前的備份,打開(kāi)想查看的文件夾,如果下圖中的紅線標(biāo)識(shí)的按鈕可以,說(shuō)明文件的備份可用。點(diǎn)擊該按鈕,就會(huì)顯示時(shí)間滑塊。時(shí)間滑塊顯示如圖7,滑動(dòng)滑快就能看到指定時(shí)間上的備份。
圖7 時(shí)間滑塊顯示
顯示以前版本的文件或目錄后,就可以通過(guò)拖拽或復(fù)制粘貼將舊版本恢復(fù)到其他目錄,也可以選中要恢復(fù)文件或文件夾,點(diǎn)擊右鍵選擇恢復(fù)到桌面。
五、使用shell腳本管理ZFS
從命令行輸入命令時(shí),每輸入一次命令,就可得到系統(tǒng)的一次響應(yīng)。當(dāng)需要經(jīng)常一個(gè)接一個(gè)地連續(xù)執(zhí)行命令,而得到最后的結(jié)果時(shí),再像這種操作方法進(jìn)行操作就顯得沒(méi)有效率了。在這種情況下,可以利用shell程序或shell腳本來(lái)實(shí)現(xiàn)這一目的。剛開(kāi)始理解shell編程的時(shí)候,可以把它想像成DOS下的批處理程序。DOS離不開(kāi)批處理,每一個(gè)DOS甚至是Windows都會(huì)由一個(gè)批處理文件(autoexec.bat)在它在啟動(dòng)后不久運(yùn)行一連串的程序,完成為用戶服務(wù)的準(zhǔn)備工作。同樣,在Unix系統(tǒng)中,用戶也可以為每次登錄系統(tǒng)配置環(huán)境、刪除垃圾文件等,這就要用到shell編程。shell程序器其實(shí)不像批處理程序,它遠(yuǎn)比批處理要強(qiáng)大。shell編程有很多C語(yǔ)言和其他編程語(yǔ)言的特征,然而又沒(méi)有編程語(yǔ)言那么復(fù)雜。shell程序是通過(guò)文本編輯程序放在一個(gè)文件中的一系列Unix命令和實(shí)用程序。執(zhí)行shell程序時(shí),通過(guò)Unix一個(gè)接一個(gè)地解釋和執(zhí)行每個(gè)命令。
一位國(guó)外的資深系統(tǒng)管理員Prashant Shashikant在Sun的社區(qū)上分享了一系列管理ZFS的shell腳本組合,51CTO的讀者們可以在這里下載它們:
http://www.sun.com/bigadmin/scripts/submittedScripts/zfsufs_scripts.zip
您可以修改該腳本也可以直接使用。建立一個(gè)用戶名pilankar
,并且建立一個(gè)目錄/export/home/pilankar/fs-scripts 把zip解壓縮到該目錄
命令行下運(yùn)行fsadmin
腳本就可以使用。這些腳本可用于執(zhí)行以下任務(wù):
◆創(chuàng)建一個(gè)ZFS存儲(chǔ)池
◆添加到存儲(chǔ)池設(shè)備
◆創(chuàng)建一個(gè)存儲(chǔ)池在一個(gè)文件系統(tǒng)
◆設(shè)置配額在ZFS文件系統(tǒng)
◆創(chuàng)建一個(gè)鏡像存儲(chǔ)池
◆添加到設(shè)備鏡像存儲(chǔ)池
◆創(chuàng)建一個(gè)RAID - Z的(增強(qiáng)RAID5的)存儲(chǔ)池
◆添加至RAID - Z的存儲(chǔ)池設(shè)備
◆摧毀一個(gè)存儲(chǔ)池
◆確定是否問(wèn)題存在于一個(gè)存儲(chǔ)池
◆創(chuàng)建的UFS文件系統(tǒng),并且安裝
命令行下運(yùn)行fsadmin
腳本工作界面如圖8
圖 8使用shell腳本管理ZFS
腳本的使用詳細(xì)教程可參考Prashant寫(xiě)的技術(shù)文檔。
【編輯推薦】