全面了解Solaris 10 ZFS文件系統的管理
原創【51CTO獨家特稿】本文對ZFS文件系統的特點、結構、命令、管理等方面進行了詳細的介紹,讀者可以通過本文了解管理ZFS文件系統的各種方法。
51CTO編輯推薦:下一代Linux文件系統
ZFS是Sun公司Jeff Bonwick在領導開發的一種128位文件系統,最早宣布于04年9月,代表"Zettabyte File System",ZFS文件系統是***個128位的文件系統,同時ZFS又被Sun稱作史上***一個文件系統(The Last Word In File Systems)。ZFS作為一個全新的文件系統,全面拋棄傳統File System + Volume Manager + Storage(文件系統+卷管理+存儲)的架構,所有的存儲設備是通過ZFS 池進行管理,只要把各種存儲設備加入同一個ZFS 池,大家就可以輕松的在這個ZFS 池管理配置文件系統。
ZFS 分層結構
ZFS 包括一系列具有分層結構的存儲元素,其中既有物理存儲元素,又有邏輯存儲元素。所有這些元素都以有助于方便管理的方式相關聯。
◆存儲池—是若干存儲設備的集合,可由許多 ZFS 文件系統共享。存儲池中的任何 ZFS 文件系統都可使用該池中任何磁盤上的任何存儲空間。當需要更多存儲器時,可以很容易地將更多磁盤添加到池中。池中的文件系統會立即開始使用新的存儲設備。
◆數據集—ZFS 會指定池的特定部分用于存儲。一般將這些部分稱為數據集。在各種類型的數據集中,有文件系統、卷、克隆和快照。
◆文件系統數據集—這些數據集用于容納文件系統,包括文件、文件夾以及文件夾中的文件夾。
◆卷數據集—與文件系統數據集相對,卷數據集提供原始存儲空間,不在卷數據集上強制存儲文件系統。卷數據集最常用于交換設備。只要需要使用未格式化的空間來存儲數據(如在數據庫中),就會使用卷數據集。圖1是ZFS文件系統與傳統文件系統的對比圖。
圖1 ZFS文件系統與傳統文件系統的對比圖
#p#
一 ZFS命令行工具簡介
管理ZFS最簡單的是使用命令行工具方式進行ZFS文件系統的配置。
1 了解zpool命令列表
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命令
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 得到文件系統的一個專門屬性
#p#
二 使用Web瀏覽器管理ZFS文件系統
1 基于Web瀏覽器的ZFS文件系統簡介
前面介紹了使用命令管理ZFS文件系統,需要說明的是兩個主要命令:zfs和zpool,每個大致300多個參數。對于初學者使用命令行有一些困難,所以在Solaris 10里我們在使用命令行進行ZFS的管理的同時,Solaris 10也為我們提供了一個WEB管理界面。利用此基于 Web 的 ZFS 管理工具可以執行某些管理任務,如設置參數、查看各種池和文件系統以及對它們進行更新。包括如下功能:
◆創建新的存儲池。
◆向現有存儲池添加容量。
◆將存儲池移動(導出)到其他系統。
◆導入以前導出的存儲池,使之可用于其他系統。
◆查看有關存儲池的信息表。
◆創建文件系統。
◆創建卷。ZFS 中的卷標識代表塊設備的數據集。
◆捕獲文件系統或卷的快照。
◆將文件系統回滾到前一快照。
2 Java Web Console簡介
Java Web Console 是一個Web 頁,您可在其中查找在系統上安裝和注冊的、基于Web的Sun 系統管理應用程序。所有符合J2EE 的Web 應用程序都可用該Web 控制臺進行注冊,使經過驗證和授權的用戶可以使用該應用程序。注冊是在安裝過程中自動進行的,因此無需管理員介入。Java Web Console 包括以下兩個管理命令:smcwebserver -此命令可啟動和停止控制臺的Web 服務器。smreg -此命令可注冊應用程序和控制配置屬性。從Java Web Console 的啟動頁啟動應用程序步驟:
◆啟動與JavaWeb Console 兼容的Web 瀏覽器,如Mozilla 或者Firefox。
◆在Web 瀏覽器的位置字段中鍵入URL。例如,如果知道管理服務器主機的IP,則URL 為https://ip:6789。通過此URL 將進入Web 控制臺登錄頁面,將在這里進行驗證和授權。接受服務器的證書,隨后會顯示該Web 控制臺的登錄頁面。
◆對于服務器的證書只需接受一次,而無需在每次啟動應用程序時都執行接受操作。
◆在驗證成功之后,將顯示啟動頁。
◆單擊與要運行的應用程序相對應的鏈接。
說明:如果要在新窗口中運行應用程序,請單擊相應的復選框。否則,該應用程序將在缺省窗口中運行,并取代啟動頁。如圖2 。
圖-2 Java Web Console管理頁面
#p#
三使用Web瀏覽器管理ZFS文件系統實戰
1 zfs的web管理頁面布局
點擊zfs管理鏈接進入zfs的web管理頁面,如圖 3 。
圖 3 zfs的web管理頁面
zfs的web管理頁面右邊的部分包括五大部分,十八個小項:
◆***使用
創建存儲池
導入存儲池
◆文件系統
創建文件系統
刪除文件系統
將文件系統回滾到前一快照
◆卷
創建卷
刪除卷
將卷回滾到前一快照
◆存儲池
創建存儲池
刪除存儲池
向存儲池添加容量
導入存儲池
導出存儲池
替換存儲池中的設備
◆快照
創建快照
刪除快照
克隆文件系統快照
克隆卷快照
zfs的web管理頁面左邊的部分是控制面板包括兩個部分,五個小項:
系統摘要/任務
◆存儲池
◆文件系統
◆卷
◆快照
設備分層結構設備分層結構
#p#
2 存儲池管理
ZFS 存儲池是若干存儲設備的集合,可由許多 ZFS 文件系統共享。例如,存儲池可包含以下三個磁盤:/dev/dsk/c0t0d0、/dev/dsk/c0t1d0 和 /dev/dsk/c0t2d0??梢允褂谜麄€磁盤,而不是只使用磁盤的片來創建存儲池。該存儲池中的任何 ZFS 文件系統都可使用該池中任何磁盤上的任何存儲空間。存儲池中可包含任意數量的 ZFS 文件系統,直至達到該存儲池中可用的存儲空間的***容量。創建 ZFS 存儲池后,可隨時通過添加新設備來擴大該存儲池。存儲池中的文件系統會立即開始使用新的存儲設備,而無需進行進一步配置。創建存儲池包括五個步驟:
a. 命名存儲池
命名存儲池如圖4。
圖4 命名存儲池
說明:有效的存儲池名稱必須以字母開頭,其長度介于 1 到 256 個字符之間,并且可以包含以下字符:A-Z、a-z、0-9、.、_ 和 -。將保留某些名稱(例如 mirror、raidz 和以 c 開頭、后跟數字的名稱),所以您不能使用這些名稱。就冗余級別而言,選擇“動態條帶化(striping)”可以創建沒有冗余的池。選擇“鏡像”或 "RAID-Z" 可以創建有冗余的池。
b.選擇要包含的設備
選擇要包含的設備如圖5 。
圖5 選擇要包含的設備
c.檢查所選的配置
檢查名稱以及為新存儲池選擇的設備如圖6。
圖6檢查所選的配置
在創建存儲池之前,如果要進行更改,請在“步驟”選項卡中單擊前面的某個步驟,或單擊“上一步”按鈕在向導中向前導航。
d.預覽要執行的命令
預覽要執行的命令如圖7。
圖7預覽要執行的命令
說明:通過此步驟,您可以查看更改 ZFS 配置時所使用的命令。這些命令將基于所選的選項將設備添加到請求的存儲池。
單擊“保存”按鈕保存這些命令以供將來參考。這里命令是:#/usr/sbin/zpool create -f tank c2t2d0
e.查看命令結果
如果出現圖8是成功建立存儲池界面。
圖8成功建立存儲池界面
#p#
3 文件系統管理
創建文件系統包括四個步驟:
a.定義文件系統
命名新文件系統,然后選擇父文件系統??蛇x擇性地選擇現有快照作為新文件系統的基礎。如圖9。
圖9命名新文件系統
說明:有效的文件系統名稱長度介于 1 到 256 個字符之間,并且可以包含以下字符:A-Z、a-z、0-9、.、:、_ 和 -。此處還可以選擇一個現有文件系統快照作為新文件系統的基礎。如果要克隆現有快照,則新文件系統的存儲池必須和包含要克隆的快照的存儲池相同。新文件系統或克隆的內容最初和它所基于的現有文件系統快照相同。創建克隆幾乎是瞬時的,并且最初不占用存儲池的其他空間。下面為新文件系統指定掛載點如圖10。
圖10 新文件系統指定掛載點
說明:創建 ZFS 文件系統或快照后,會自動掛載該文件系統或快照。ZFS 通過為每個文件系統建立持久性的掛載點屬性來管理文件系統掛載點,并始終在該位置上掛載文件系統。缺省情況下,會在 /<池名稱>/<文件系統名稱> 下掛載所有文件系統。缺省情況下也會啟用以下選項:
◆校驗和、壓縮和存取時間
◆setuid—控制文件系統是否遵照 set-UID 位
◆exec—控制是否可從此文件系統中執行進程
◆devices—控制是否可在此文件系統中打開設備節點
此外,readonly 的缺省值為 off,readonly 控制是否可修改此數據集。
指定此文件系統的掛載點。包括幾種:
◆無 - 不掛載此文件系統。
◆傳統 - 只通過傳統方法掛載此文件系統,如 /etc/vfstab 或 mount(1m) 命令。
◆繼承 - 以父文件系統掛載點作為此文件系統掛載點的基礎。
◆自定義掛載點 - 將覆蓋缺省掛載點。
下面更改配額或預留空間如圖11 。
圖11 更改配額或預留空間
說明:配額設置文件系統的***容量。一旦達到該容量后,不管基礎存儲池的可用空間有多大,都無法再將數據寫入文件系統。預留空間指定有多少存儲池空間專用于此文件系統。***預留空間受存儲池中的可用空間容量限制。
下面更改控制此文件系統如何工作的屬性如圖12 。
圖12 更改控制此文件系統如何工作的屬性
說明:更改控制此文件系統如何工作的屬性??蓮母肝募到y繼承每個屬性,或為此文件系統明確設置這些屬性。
屬性分為兩種類型:本機屬性和用戶定義的屬性。本機屬性用于導出內部統計信息或控制 ZFS 文件系統行為。此外,本機屬性是可設置的或只讀的。用戶屬性對 ZFS 文件系統行為沒有影響,但可通過用戶環境中有意義的方式來注釋數據集。大多數可設置的屬性也是可繼承的??衫^承屬性是這樣的屬性:如果為父級設置了該屬性,則該屬性會向下傳播給其所有后代。所有可繼承屬性都有一個關聯源。源用于指明獲取屬性的方法。屬性的源可具有以下值:
◆locallocal 源表示屬性是使用 zfs set 命令對數據集進行顯式設置的,如設置 ZFS 屬性中所述。
◆inherited from dataset-name值為 inherited from dataset-name 表示屬性是從指定的祖先繼承的。
◆default值為 default 表示屬性設置不是繼承或本地設置的。如果沒有祖先具有屬性源 local,則會使用此源。
b. 檢查所選的配置
檢查所選的配置如圖13
圖13 檢查所選的配置
說明:在創建文件系統之前,如果要進行更改,請在“步驟”選項卡上單擊前面的某個步驟,或單擊“上一步”按鈕在向導中向前導航。
c.預覽要執行的命令
預覽要執行的命令如圖14 。
圖14 預覽要執行的命令
說明:通過此步驟,您可以查看更改 ZFS 配置時所使用的命令。這些命令將基于所選的選項創建請求的文件系統。單擊“保存”按鈕保存這些命令以供將來參考。
d.查看命令結果
如果出現命令執行成功字樣是成功建立文件系統的標志。
#p#
4 ZFS文件系統的實時監控
我們可以使用zfs list 和zpool list等命令對ZFS文件系統的實時監控。通過web瀏覽器方式也可以完成。
a 查看存儲池
通過點擊控制面板的存儲池鏈接可以查看存儲池情況如圖15 。
圖15 查看存儲池
每個存儲池的屬性頁都包含“常規”部分,其中會顯示“池狀態”。 表1 介紹了每個可能的狀態值,
表1存儲池狀態
狀態 | 描述 |
正常 | 存儲池正常運行,未出現錯誤。 |
缺少帶有副本的設備 | 一個或多個設備無法打開。存在足夠的副本可供池在降級的狀態下繼續工作。 |
缺少不帶副本的設備 | 一個或多個設備無法打開。沒有足夠的副本可供池繼續工作。 |
帶有副本的設備標簽錯誤 | 由于缺少標簽或標簽無效而導致一個或多個設備無法使用。存在足夠的副本可供池在降級的狀態下繼續工作。 |
不帶副本的設備標簽錯誤 | 由于缺少標簽或標簽無效而導致一個或多個設備無法使用。沒有足夠的副本可供池繼續工作。 |
設備遇到錯誤 | 一個或多個設備發生了不可修復的錯誤。已嘗試修復錯誤。應用程序未受影響。 |
設備脫機 | 管理員已將一個或多個設備轉至脫機狀態。存在足夠的副本可供池在降級的狀態下繼續工作。 |
正在重新同步 | 當前一個或多個設備正在進行重新同步。在重新同步期間,ZFS 會檢查確認即將過期的指定存儲池中的所有數據,以驗證數據是否正確執行校驗和。ZFS 會自動修復重新同步期間發現的所有受損數據。該池將可能在降級的狀態下繼續工作。 |
b 查看文件系統
通過點擊控制面板的文件系統池鏈接可以查看文件系統情況。
輸出實際是zfs list 命令的html格式的顯示。
此外通過點擊控制面板的池可以查看卷使用情況。
點擊控制面板的快照鏈接可以查看快照使用情況。
到此為止筆者介紹了管理Solaris 10 ZFS文件系統的方法。在下一篇里,筆者會以Opensolaris 為例介紹管理ZFS文件系統的不同方法,包括使用時間滑塊和shell腳本。
【編輯推薦】