下節概述 ZFS 檔案系統的新增功能。如需有關這些新增功能的更多資訊,請參閱「Solaris ZFS Administration Guide」。
ZFS 安裝和啟動支援 – 從 Solaris 10 10/08 發行版本開始,您可以安裝並啟動 ZFS 根檔案系統。您可以使用初始安裝選項或 JumpStart 功能來安裝 ZFS 根檔案系統。您可以使用 Solaris Live Upgrade 功能,將 UFS 根檔案系統遷移至 ZFS 根檔案系統。此外也提供對交換和傾印裝置的 ZFS 支援。
不必取消掛載即可回復 ZFS 資料集 – 從 Solaris 10 10/08 發行版本開始,您可以回復資料集而不必先取消掛載。此功能代表不再需要 zfs rollback -f 選項來強制進行取消掛載作業。不再支援 -f 選項,並且如果指定,將被忽略。
zfs send 指令的增強功能 – Solaris 10 10/08 發行版本包括 zfs send 指令的下列增強功能:
可以將某個快照的所有增量串流傳送到累計快照。例如:
# zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K - # zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@combo |
此語法顯示如何將 fs@snapA 到 fs@snapD 之間的所有增量快照傳送至 fs@combo。
可以從原始快照傳送增量串流以建立複製。接收端必須存有原始快照,才能接受增量串流。例如:
# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I . . # zfs receive -F pool/clone < /snaps/fsclonesnap-I |
可以將所有子系檔案系統的複製串流上送到已命名的快照。接收之後,就會保留所有特性、快照、子系檔案系統以及複製。例如:
# zfs send -R pool/fs@snap > snaps/fs-R |
可以傳送增量複製串流。
zfs send -R -[iI] @snapA pool/fs@snapD |
如需進階的範例,請參閱「Solaris ZFS Administration Guide」。
僅適用於檔案系統資料的 ZFS 配額和保留 – 從 Solaris 10 10/08 發行版本開始,會提供資料集配額和保留,且不將子項 (例如快照和複製) 納入空間消耗計算。現有 ZFS 配額和保留功能維持如先前 Solaris 發行版本中的一樣。
refquota 特性會限制資料集可以消耗的空間量。此特性會強制限制可供使用的空間量。此項強制限制不包括子系 (例如快照與複製) 所使用的空間。
refreservation 特性會設定資料集能夠使用的最小空間量 (不包括其子系)。
例如,您可以為 studentA 設定一個 10 GB 的 refquota,這樣就會強制限制 referenced 空間為 10 GB。如需額外的彈性,您還可以設定一個 20 GB 的配額,用來管理 studentA 的快照。
# zfs set refquota=10g tank/studentA # zfs set quota=20g tank/studentA |
ZFS 儲存池特性 – Solaris 10 10/08 發行版本中會提供新 ZFS 儲存池特性資訊。
顯示所有的池屬性 – 您可以使用 zpool get all pool 指令顯示所有的池特性資訊。例如:
# zpool get all users NAME PROPERTY VALUE SOURCE users size 16.8G - users used 194K - users available 16.7G - users capacity 0% - users altroot - default users health ONLINE - users guid 14526624140147884971 - users version 10 default users bootfs - default users delegation on default users autoreplace off default users cachefile - default users failmode wait default |
cachefile 特性 – 此發行版本提供 cachefile 特性,可控制池配置資訊的快取位置。系統開機時,會自動匯入快取中的所有儲存池。不過,安裝與叢集環境可能必須在不同的位置快取此項資訊,這樣才不會自動匯入儲存池。
您可以設定此特性,在不同的位置快取儲存池配置,稍後再使用 zpool import -c 指令匯入。大多數的 ZFS 配置都不會使用此特性。
cachefile 特性沒有持續性,且不會儲存在磁碟上。此特性會取代 temporary 特性,後者在前版 Solaris 中用於指示不應該快取哪些儲存池資訊。
failmode 特性 – 此發行版本提供 failmode 特性,用來決定儲存池因遺失裝置連結而發生嚴重失敗時的運作方式,或是儲存池中所有裝置都失敗時的運作方式。failmode 特性可設為下列值:wait、continue 或 panic。預設值是 wait,表示您必須重新連線裝置或替代失敗的裝置,並利用 zpool clear 指令清除錯誤。
failmode 特性的設定方式就像其他可設定的 ZFS 特性一樣,可在建立儲存池之前或之後設定。例如:
# zpool set failmode=continue tank # zpool get failmode tank NAME PROPERTY VALUE SOURCE tank failmode continue local |
# zpool create -o failmode=continue users mirror c0t1d0 c1t1d0 |
ZFS 指令歷程的增強功能 (zpool history) – 從 Solaris 10 10/08 發行版本開始,zpool history 指令提供以下新增功能:
會顯示 ZFS 檔案系統事件資訊。例如:
# zpool history users History for 'users': 2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 2008-07-10.09:43:48 zfs create users/home 2008-07-10.09:43:56 zfs create users/home/markm 2008-07-10.09:44:02 zfs create users/home/marks 2008-07-10.09:44:19 zfs snapshot -r users/home@yesterday |
用來顯示長格式的 -l 選項,此格式會包括使用者名稱、主機名稱和執行作業的區域。例如:
# zpool history -l users History for 'users': 2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 [user root on corona:global] 2008-07-10.09:43:13 zfs create users/marks [user root on corona:global] 2008-07-10.09:43:44 zfs destroy users/marks [user root on corona:global] 2008-07-10.09:43:48 zfs create users/home [user root on corona:global] 2008-07-10.09:43:56 zfs create users/home/markm [user root on corona:global] 2008-07-10.09:44:02 zfs create users/home/marks [user root on corona:global] 2008-07-11.10:44:19 zfs snapshot -r users/home@yesterday [user root on corona:global] |
用來顯示內部事件資訊的 -i 選項,該資訊可用於診斷。例如:
# zpool history -i users History for 'users': 2008-07-10.09:43:05 zpool create users mirror c1t1d0 c1t2d0 2008-07-10.09:43:13 [internal create txg:6] dataset = 21 2008-07-10.09:43:13 zfs create users/marks 2008-07-10.09:43:48 [internal create txg:12] dataset = 27 2008-07-10.09:43:48 zfs create users/home 2008-07-10.09:43:55 [internal create txg:14] dataset = 33 2008-07-10.09:43:56 zfs create users/home/markm 2008-07-10.09:44:02 [internal create txg:16] dataset = 39 2008-07-10.09:44:02 zfs create users/home/marks 2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 42 2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 44 2008-07-10.09:44:19 [internal snapshot txg:21] dataset = 46 2008-07-10.09:44:19 zfs snapshot -r users/home@yesterday |
升級 ZFS 檔案系統 (zfs upgrade) – 從 Solaris 10 10/08 發行版本開始,您可以使用 zfs upgrade 指令,使用新檔案系統增強功能升級現有 ZFS 檔案系統。ZFS 儲存池擁有相似的升級功能,可提供池增強功能給現有的儲存池。
例如:
# zfs upgrade This system is currently running ZFS filesystem version 2. The following filesystems are out of date, and can be upgraded. After being upgraded, these filesystems (and any 'zfs send' streams generated from subsequent snapshots) will no longer be accessible by older software versions. VER FILESYSTEM --- ------------ 1 datab 1 datab/users 1 datab/users/area51 |
在執行較舊軟體發行版本的系統上,將無法存取經過升級的檔案系統以及使用 zfs send 指令升級之檔案系統所建立的任何串流。
ZFS 委託的管理 – 從 Solaris 10 10/08 發行版本開始,您可以委託細化分級之執行 ZFS 管理作業的權限給未授權的使用者。
您可以使用 zfs allow 和 zfs unallow 指令來授予和移除權限。
您可以使用池的 delegation 特性修改使用委託管理的功能。例如:
# zpool get delegation users NAME PROPERTY VALUE SOURCE users delegation on default # zpool set delegation=off users # zpool get delegation users NAME PROPERTY VALUE SOURCE users delegation off local |
依預設,delegation 特性已啟用。
設定個別的 ZFS 記錄裝置 – ZFS 意圖記錄 (ZFS intent log, ZIL) 可滿足 POSIX 進行同步作業事件的需求。例如,資料庫通常需要讓它們的作業事件在從系統呼叫傳回時是在穩定的儲存裝置上。NFS 和其他應用程式也可以使用 fsync() 確保資料的穩定性。依預設,ZIL 是從主儲存池中的區段配置的。不過,透過使用 ZFS 儲存池中個別的 ZIL 裝置 (例如使用 NVRAM 或專屬磁碟) 可能可以提高 Solaris 10 10/08 發行版本的效能,
ZIL 的記錄裝置與資料庫的記錄檔無關。
在建立儲存池的當時或在建立池之後,都可以設定 ZFS 記錄裝置。如需設定記錄裝置的範例,請參閱「Solaris ZFS Administration Guide」。
建立中繼 ZFS 資料集 – 從 Solaris 10 10/08 發行版本開始,您可以將 -p 選項與 zfs create、zfs clone 和 zfs rename 指令搭配使用,以快速建立非現有的中繼資料集 (如果尚未存在)。
例如,在 datab 儲存池中建立 ZFS 資料集 (users/area51)。
# zfs list NAME USED AVAIL REFER MOUNTPOINT datab 106K 16.5G 18K /datab # zfs create -p -o compression=on datab/users/area51 |
如果建立作業時存在中繼資料集,則作業會成功完成。
指定的特性會套用至目標資料集,而不是中繼資料集。例如:
# zfs get mountpoint,compression datab/users/area51 NAME PROPERTY VALUE SOURCE datab/users/area51 mountpoint /datab/users/area51 default datab/users/area51 compression on local |
中繼資料庫是使用預設的掛載點建立的。中繼資料集的所有額外特性都已停用。例如:
# zfs get mountpoint,compression datab/users NAME PROPERTY VALUE SOURCE datab/users mountpoint /datab/users default datab/users compression off default |
如需更多資訊,請參閱 zfs(1M)。
ZFS 熱插式作業的增強功能 – 從 Solaris 10 10/08 發行版本開始,ZFS 可更有效地回應移除的裝置,並提供自動識別插入裝置的機制。
您可以在不使用 zpool replace 指令的情形下,使用等效的裝置來替代現有裝置。
autoreplace 特性可控制自動裝置替代。如果設定為 off,則裝置替代必須經由管理員透過使用 zpool replace 指令來啟動。如果設定為 on,則在與先前池所屬的裝置相同的實體位置中找到的所有新裝置都會自動格式化和替代。預設運作方式為 off。
如果在系統執行時已實際移除裝置,則在移除裝置或緊急備援時,儲存池狀態為 REMOVED。如果可以的話,會用緊急備援裝置來替代移除的裝置。
如果裝置被移除並接著插入,則裝置會在線上。如果緊急備援在裝置重新插入時是啟動的,則在線上作業完成時,緊急備援會被移除。
移除或插入裝置時的自動偵測是視硬體而定的,可能不是所有平台都支援。例如,USB 裝置在插入時會自動進行配置。不過,您可能需要使用 cfgadm -c configure 指令來配置 SATA 磁碟機。
會定期檢查緊急備援,以確定它們都在線上並且可以使用。
如需更多資訊,請參閱「zpool(1M) 線上手冊」。
遞迴重新命名 ZFS 快照 (zfs rename -r) – 從 Solaris 10 10/08 發行版本開始,您可以使用 zfs rename -r 指令,遞迴重新命名所有隸屬 ZFS 快照。
例如,針對一組 ZFS 檔案系統建立快照。
# zfs snapshot -r users/home@today # zfs list NAME USED AVAIL REFER MOUNTPOINT users 216K 16.5G 20K /users users/home 76K 16.5G 22K /users/home users/home@today 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@today 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@today 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@today 0 - 18K - |
接著,隔天重新命名快照。
# zfs rename -r users/home@today @yesterday # zfs list NAME USED AVAIL REFER MOUNTPOINT users 216K 16.5G 20K /users users/home 76K 16.5G 22K /users/home users/home@yesterday 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@yesterday 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@yesterday 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@yesterday 0 - 18K - |
快照是唯一能夠遞迴重新命名的資料集。
GZIP 壓縮現在可供 ZFS 使用 – 從 Solaris 10 10/08 發行版本開始,除了 lzjb 壓縮,您還可以在 ZFS 檔案系統上設定 gzip 壓縮。您可以將壓縮指定為 gzip (預設值) 或 gzip-N,其中的 N 等於 1 到 9。例如:
# zfs create -o compression=gzip users/home/snapshots # zfs get compression users/home/snapshots NAME PROPERTY VALUE SOURCE users/home/snapshots compression gzip local # zfs create -o compression=gzip-9 users/home/oldfiles # zfs get compression users/home/oldfiles NAME PROPERTY VALUE SOURCE users/home/oldfiles compression gzip-9 local |
儲存多份 ZFS 使用者資料副本 – ZFS 檔案系統會盡可能多次自動儲存跨不同磁碟的中介資料,以實現穩定性功能。此功能稱為複製區段。從 Solaris 10 10/08 發行版本開始,您可以使用 zfs set copies 指令,指定也儲存各個檔案系統的多個使用者資料副本。例如:
# zfs set copies=2 users/home # zfs get copies users/home NAME PROPERTY VALUE SOURCE users/home copies 2 local |
可用的值是 1、2 或 3。預設值是 1。這些副本是任何儲存池層級備援以外的副本 (例如在鏡像或 RAID-Z 配置中)。
如需有關使用此特性的更多資訊,請參閱「Solaris ZFS Administration Guide」。
以下是 Solaris 作業系統先前發行版本中所引入的功能:
ZFS 指令歷程 (zpool history) – 在 Solaris 10 8/07 發行版本中,ZFS 會自動記錄成功修改池狀態資訊的 zfs 和 zpool 指令。此功能可讓您或 Sun 支援人員識別用來排解錯誤狀況所執行的正確 ZFS 指令。
改善的儲存池狀態資訊 (zpool status) – 在 Solaris 10 8/07 發行版本中,您可以使用 zpool status -v 指令,顯示具有永久性錯誤的檔案清單。在過去,您必須使用 find -inum 指令,才能夠從顯示的 I 節點清單中辨識檔案名稱。
ZFS 和 Solaris iSCSI 改善 – 在 Solaris 10 8/07 發行版本中,您可以建立 ZFS 磁碟區做為 Solaris iSCSI 目標裝置,方法 是在 ZFS 磁碟區上設定 shareiscsi 特性。此方法可便於迅速設定 Solaris iSCSI 目標。例如:
# zfs create -V 2g tank/volumes/v2 # zfs set shareiscsi=on tank/volumes/v2 # iscsitadm list target Target: tank/volumes/v2 iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a Connections: 0 |
在建立 iSCSI 目標之後,您可以設定 iSCSI 初始器。如需有關設定 Solaris iSCSI 初始器的資訊,請參閱「System Administration Guide: Devices and File Systems」中的第 14 章「Configuring Solaris iSCSI Targets and Initiators (Tasks)」。
如需有關將 ZFS 磁碟區做為 iSCSI 目標進行管理的更多資訊,請參閱「Solaris ZFS Administration Guide」。
ZFS 特性改善
ZFS xattr 特性 – 在 Solaris 10 8/07 發行版本中,您可以使用 xattr 特性,停用或啟用特定 ZFS 檔案系統的延伸屬性。預設值為 on。
ZFS canmount 特性 – 在 Solaris 10 8/07 發行版本中,您可以使用 canmount 特性指定是否能使用 zfs mount 指令掛載資料集。
ZFS 使用者特性 – 在 Solaris 10 8/07 發行版本中,除支援可匯出內部統計或控制 ZFS 檔案系統運作方式的標準原生特性之外,ZFS 還支援使用者特性。使用者特性不會對 ZFS 運作方式產生任何影響,但您可以使用這些特性,在環境中以有意義的資訊對資料集加以註解。
在建立 ZFS 檔案系統時設定特性 – 在 Solaris 10 8/07 發行版本中,除了在建立檔案系統之後設定特性之外,您也可以在建立檔案系統時設定特性。
等效語法如下列範例所說明:
# zfs create tank/home # zfs set mountpoint=/export/zfs tank/home # zfs set sharenfs=on tank/home # zfs set compression=on tank/home |
或者,在建立檔案系統時設定特性。
# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home |
顯示所有的 ZFS 檔案系統資訊 – 在 Solaris 10 8/07 發行版本中,您可以使用不同形式的 zfs get 指令,在未指定資料集的狀況下顯示所有資料集的資訊。在先前的發行版本中,無法使用 zfs get 指令擷取所有的資料集資訊。
例如:
# zfs get -s local all tank/home atime off local tank/home/bonwick atime off local tank/home/marks quota 50G local |
新的 zfs receive -F 選項 – 在 Solaris 10 8/07 發行版本中,您可以使用 zfs receive 指令的新選項 -F,強制在接收之前,將檔案系統回復為最新的快照。如果檔案系統是在進行回復和啟動接收作業這段時間內修改的,則可能要用到此選項。
遞迴 ZFS 快照 – 在 Solaris 10 11/06 發行版本中,遞迴快照可供使用。當您使用 zfs snapshot 指令來建立檔案系統快照時,可以使用 -r 選項,遞迴建立所有子系檔案系統的快照。此外,當銷毀快照時,使用 -r 選項也會遞迴銷毀所有子系快照。
雙重同位檢查 RAID-Z ( raidz2) – 在 Solaris 10 11/06 發行版本中,複製的 RAID-Z 配置現在可以有單一或雙重同位檢查,這表示一或兩部裝置故障能被分別承受,而不會有任何資料遺失。您可以指定 raidz2 關鍵字來進行雙重同位檢查 RAID-Z 配置。或者,也可以指定 raidz 或 raidz1 關鍵字來進行單一同位檢查 RAID-Z 配置。
ZFS 儲存池裝置的緊急備援 – 從 Solaris 10 11/06 發行版本開始,ZFS 緊急備援功能可讓您在一個或多個儲存池中識別可用來替代故障裝置的磁碟。指定裝置為緊急備援表示如果儲存池中的使用中裝置故障,緊急備援便會自動替代故障的裝置。或者,您也可以手動將儲存池中的裝置替代成緊急備援。
將 ZFS 檔案系統替代成 ZFS 複製 (zfs promote) – 在 Solaris 10 11/06 發行版本中,zfs promote 指令可讓您將現有 ZFS 檔案系統替代成該檔案系統的複製。當您要在檔案系統的替代版本上執行測試,然後將該檔案系統的替代版本做為使用中檔案系統時,此功能十分有用。
ZFS 和區域改善 – 在 Solaris 10 11/06 發行版本中,ZFS 和區域互動已得到改善。在安裝有區域的 Solaris 系統上,您可以使用 zoneadm clone 功能,將資料從系統上現有的來源 ZFS zonepath 複製到目標 ZFS zonepath。您無法使用 ZFS 複製功能來複製非全域區域。您必須使用 zoneadm clone 指令。如需更多資訊,請參閱「System Administration Guide: Solaris Containers-Resource Management and Solaris Zones」。
升級 ZFS 儲存池 (zpool upgrade) – 從 Solaris 10 6/06 發行版本開始,您可以使用 zpool upgrade 指令,將儲存池升級為更新版本,以使用最新的功能。此外,zpool status 指令已修改,會在執行舊版儲存池時通知您。
清除裝置錯誤 – 從 Solaris 10 6/06 發行版本開始,您可以使用 zpool clear 指令來清除與裝置或儲存池相關聯的錯誤計數。在過去,錯誤計數會在使用 zpool online 指令使儲存池中的裝置上線時清除。
回復銷毀的池 – 在 Solaris 10 6/06 發行版本中,zpool import -D 指令可讓您回復先前以 zpool destroy 指令所銷毀的池。
ZFS 備份和復原指令重新命名 – 在 Solaris 10 6/06 發行版本中,zfs backup 和 zfs restore 指令已重新命名為 zfs send 和 zfs receive,以更準確地說明它們的功能。其功能是要儲存並復原 ZFS 資料串流表示。
壓縮 NFSv4 ACL 格式 – 從 Solaris 10 6/06 發行版本開始,有三種 NFSv4 ACL 格式可供使用:verbose、positional 及 compact。新的 compact 和 positional ACL 格式可用來設定及顯示 ACL。您可以使用 chmod 指令來設定全部三種 ACL 格式。使用 ls -V 指令可顯示壓縮和位置 ACL 格式。使用 ls - v 指令可顯示詳細 ACL 格式。
暫時讓裝置離線 – 從 Solaris 10 6/06 發行版本開始,您可以使用 zpool offline - t 指令,暫時讓裝置離線。當系統重新開機時,裝置會自動返回 ONLINE 狀態。
ZFS 與 Fault Manager 整合 – 從 Solaris 10 6/06 發行版本開始,包含了 ZFS 診斷引擎,它能夠診斷及報告儲存池故障和裝置故障。還會報告與儲存池或裝置故障相關聯的總合檢查、I/O 及裝置錯誤。診斷錯誤資訊會寫入主控台和 /var/adm/messages 檔案中。此外,藉由使用 zpool status 指令,可以顯示從所報告之錯誤回復的詳細資訊。
如需有關這些改善和變更的更多資訊,請參閱「Solaris ZFS Administration Guide」。
如需相關 ZFS 功能資訊,請參閱下列各個「新增功能」小節: