當前位置:首頁 » 服務存儲 » 存儲池調試方法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲池調試方法

發布時間: 2022-07-13 12:03:06

『壹』 誰調整了Windows伺服器的內存池大小

分頁內存池與非分頁內存池在Windows 伺服器上是兩個重要的內核資源。系統及其底層的驅動在分配內存時,會從這兩個內存池中申請相應的內存,用於存儲它們的數據結構。
默認情況下,這兩種資源都是在機器啟動時,系統在硬體組成的基本上自動計算出來的,也就是說它們的值可能根據內存大小及其它硬體的類型的區別,在不同的機器上有所不同。
從公開的資料中,我們一般可以查詢到在Windows操作系統上,Windows 的分頁內存池/非分頁內存池極限值是:

所以一般情況下,在32位的系統上,由於分頁內存池/非分頁內存池的極值都是有限的,且總量並不是很高,如果底層驅動出現內存池泄漏的問題,或是系統總的內存池使用量過高,
就非常容易造成分頁內存池/非分頁內存池耗盡的情況,從而導致用程序無法正常運行,或是服務失去響應甚至藍屏的問題。
目前在Windows中,比較常用的查詢當前系統的分頁內存池/非分頁內存池實時使用量的工具是任務管理器。
圖1:任務管理器查詢實時分頁內存池/非分頁內存池的使用量

而對於當前系統的分頁內存池/非分頁內存池的極值大小的查詢方法,一般是使用process explorer工具(需要網路支持)。
使用方法為:
1: 用默認路徑安裝Windbg工具:
2:下載Process
Explorer工具:
3: 運行Process
Explorer,在Options -> Configure Symbols…中配置符號,如下圖2(註: 這里需要伺服器可連接到微軟的符號伺服器以自動下載符號)。
圖2: Process Explorer配置符號

4: 然後在Process Explorer菜單中,選擇view -> System Information…來查看當前的分頁內存池/非分頁內存池的極值。
這里以一台Windows 2003 sp2 x86的伺服器為例:

在上面示例的系統上,我們可以看到當前伺服器在2GB物理內存的情況下,分頁內存池極限值為362,496KB,約354MB,而非分頁內存池的極值是262,140KB,約256MB。
比較上述極值與我們之前查詢到的理論值,我們可以看到,非分頁內存池的大小(256MB)與資料中查到的極限值基本一致,但是分頁內存池的值354MB要遠小於理論上的470
- 650MB。這是為什麼呢?
這個主要是因為在Windows 2003安裝完成後,系統中並沒有把paged pool設置到可以支持的最大值,而是有一定的保留。我們可以根據KB312362(http://support.microsoft.com/?id=312362),手動的調整下面的注冊表值,把分頁內存池的極值上調到當前機器可支持的最大值
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session
Manager\Memory Management\PagedPoolSize
= 0xFFFFFFFF.
上述注冊表值默認是0,表示讓系統自動設定。如果把它設置成0xffffffff,就可以把當前機器的paged
pool 的極值,調整到機器真正支持的最大值了。
同樣是前面我們測試的伺服器,在做了相應調整後,我們可以看到它的分頁內存池的最大值被調整到了530MB左右:
圖4:Windows 2003 SP2 x86調整PagedPoolSize後的分頁內存池大小

這里我們看到530MB已經是這台伺服器的極值了。如果這台機器的物理內存進行調整,分頁內存池的最大值也可能隨之有一定的增減。
對於非分頁內存池的極大值,系統默認已經是使用到了所支持的最大值,它是不能通過注冊表的設置來提高它的極大值的。
從操作系統的層面,除去調整上述的注冊表值PagedPoolSize做手動的指定,還會有兩種情況會影響到系統的分頁內存池/非分頁內存池的大小:
1:系統運行在/3GB的模式。
2:系統安裝了終端伺服器的角色。
這邊我們看一下這兩種情況下,系統的內存池的極值有什麼變化:
1:在開啟/3GB的模式(即在boot.ini中增加了/3GB)時,系統的內核地址定址空間從2GB下降到1GB,這樣的話系統的內存池的極值也下調了,而且幅度比較大。
在同一台Windows 2003 SP2 x86伺服器上,我們可以看到增加/3GB後,系統的分頁內存池/非分頁內存池的極值降低了很多:
圖5:Windows 2003 SP2 x86開啟/3GB後的分頁內存池/非分頁內存池大小

在/3GB的模式下,我們看到分頁內存池極值調整為196,608KB,約192MB,而分頁內存池的大小下降為129,276KB,約126MB。
2:在安裝了終端伺服器的角色後,系統的分頁內存池也會有一定下降:
圖6:Windows 2003 SP2 x86終端伺服器的分頁內存池/非分頁內存池大小

可以看到系統的分頁內存池下降到了256,000KB,約250MB,而非分頁內存池沒有變化。
上述兩種情況都是從操作系統的角度,對內存池的大小進行調整。
除去上述兩種情況,其實在硬體層面上,我們還有另一個選項,會影響到系統的分頁內存池極值大小,這個選項就是內存熱插拔功能(hot-add memory)。
在Windows 2003 x86的企業版本/數據中心版本中,操作系統本身提供對內存熱插拔的支持,即在不關機的情況下,可以動態的支持新增的內存,這樣可以避免機器的維護時間及停機周期。但是相應的,伺服器也需要在硬體層面上支持內存熱插拔的功能。此項功能只會在硬體支持內存熱插拔時,才會對系統的分頁內存池有影響。在有一些虛擬機上,由於它們也提供發對伺服器內存熱插拔功能的支持,所以這些虛擬伺服器也可能會碰到相似的問題。
具體情況為:
在硬體/系統都支持內存熱插拔功能的前提下,為了實現對熱插內存的支持,系統需要事先在開機時,就分配出一部分內核資源,用於提供對可能新增加的內存的支持。也就是說這部分事先分配的資源並不是依賴於當前硬體配置,而是依賴於伺服器可以支持到的最大內存容量。在32位系統上,系統最大可支持的內存是64GB,所以內存熱插拔最大可以預留對64GB熱插拔內存的支持。而這部分資源的分配,就會影響到系統總的分頁內存池大小。
通過之前的測試,我們知道一台Windows 2003 sp2 x86的終端伺服器系統上,如果4GB物理內存,且不支持內存熱插拔時,分頁內存池應該是略大於250MB(如圖6),大概在260MB左右。
當這台機器提供64GB的熱插拔內存支持時,系統的分頁內存池會下降大約80MB左右,從DUMP文件中我們可以很清楚的看到這一點。下面這部分數據來自一台Windows 2003 sp2 x86 4GB物理內存的企業版本終端伺服器的DUMP文件。
1:
kd> !vm
***
Virtual Memory Usage ***
Physical Memory: 1048347 ( 4193388 Kb)

NonPagedPool Usage: 26116 ( 104464 Kb)
NonPagedPool Max: 65536 ( 262144 Kb) < —— 非分頁內存池大小沒有變化
PagedPool 0 Usage: 5141 ( 20564 Kb)
PagedPool 1 Usage: 9470 ( 37880 Kb)
PagedPool 2 Usage: 9484 ( 37936 Kb)
PagedPool 3 Usage: 9483 ( 37932 Kb)
PagedPool 4 Usage: 9430 ( 37720 Kb)
PagedPool Usage: 43008 ( 172032 Kb)
PagedPool Maximum: 43008 ( 172032 Kb) < —– 分頁內存池已經比不提供內存熱插拔時的250MB低了約82MB,目前只有168MB。
內存熱插拔可以提供更靈活的內存管理機制,但是也會同時影響到伺服器的分頁內存池極值,造成分頁內存池更容易被耗盡,而引起各種異常。
從系統的角度,我們在注冊表中提供了一個介面,用於指定系統可以支持的熱插拔內存大小:

Path

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

Value

DynamicMemory

Type

REG_DWORD

Data

0x1

這個值指定了系統可以支持多少GB的熱插拔內存。由於系統內存大都超過1G,設置成1就表示系統已經基本禁用了Hot-add Memory的功能。這樣就可以避免系統分頁內存池在開機時大幅降低的問題。當然,我們也可以考慮直接把熱插拔內存的功能從硬體的層面禁用掉。虛擬機控制平台也可能有相應的選項來禁用熱插拔內存的功能。上述4GB內存的伺服器在硬體層面上禁用掉熱插拔內存功能後,系統的內存池的變化為:
kd> !vm
*** Virtual Memory Usage ***
Physical Memory: 1048375 ( 4193500 Kb)

NonPagedPool Usage: 12526 ( 50104 Kb)
NonPagedPool Max: 65279 ( 261116 Kb)
PagedPool0 Usage: 26806 ( 107224 Kb)
PagedPool1 Usage: 5100 ( 20400 Kb)
PagedPool2 Usage: 5125 ( 20500 Kb)
PagedPool3 Usage: 5128 ( 20512 Kb)
PagedPool4 Usage: 5103 ( 20412 Kb)
PagedPool Usage: 47262 ( 189048 Kb)
PagedPool Maximum: 66560 ( 266240 Kb) < —-分頁內存池已經調整回260MB
這樣就可以避免由於熱插拔內存功能預留大量內核資源,導致分頁內存池大量下降的問題了。
綜上所述,我們知道除去系統本身的硬體配置外,還有四個設定可能會影響到分頁內存池/非分頁內存池的極值大小:
1: 手動的設定PagedPoolSize注冊表值,可以影響分頁內存池的大小。
2: 使用/3GB的模式,會影響分頁內存池/非分頁內存池的大小。
3: 使用終端伺服器模式,會影響到分頁內存池/非分頁內存池的大小。
4: 使用內存熱插拔的功能支持大的熱插拔內存時,會影響到分頁內存池的大小。

『貳』 KVM實現動態遷移如何共享存儲池

這種SAN存儲,共享存儲都是有集群軟體,比如sql集群,這樣同時分享同一個券上的硬碟分區。
否則可以通過FC引到不同機器,但是讀寫會混亂,而且不安全。之前測試過。

但是冷轉是可以的。比如在SAN的卷A定位到1機器上,掛載成/data分區,斷開後可以通過管理器,SAN管理器,遷移到新的伺服器2上。

如果要兩台或者以上機器共享同一存儲區域,只能用管理工具,通常來說,我們稱之是群集軟體,負責調試和負載冗餘。

『叄』 創建新的池和存儲空間點不了

Win8創建存儲池的方法如下: 這個名為ldquo;存儲空間rdquo;的新功能將利用一個物理存儲設施組成數據池。這個數據池將使用SATA、USB和SAS硬碟創建,並且能夠使用額外的硬體擴展。 這些稱作ldquo;空間rdquo;的虛擬硬碟能夠把4TB存儲空間擴大到10TB。這些存儲空間還提供一個彈性層以解決不同物理媒介的錯誤問題。 這個功能的另一個好處是,一旦物理硬碟發生故障,這個ldquo;存儲池rdquo;能夠自動生成受影響的地方的數據的副本。 首先,創建存儲池之前要連接外接存儲設備,否則創建不了。 每次創建的時候都會格式化存儲設備,所以要備份數據。操作步驟: 一、打開控制面板,找到系統和安全。 二、系統和安全下找到存儲空間。 三、點擊存儲空間後,找到ldquo;創建新的池和存儲空間rdquo;並點擊。 四、點擊ldquo;創建池rdquo;後,會看到移動的存儲設備。 五、此時,會出現配置界面。 六、選擇簡單(無復原),配置大小。 七、創建完成。

『肆』 asp.net 怎樣調試 sqlserver 資料庫的存儲過程

1.在wep.config中找到對應的數據連接字元串,增加一個選項Polling=false,即關閉連接池,(調試完成後記得將該選項刪除)
2.然後在vs環境下的伺服器視圖,打開sqlserver視圖,添加「sqlserver伺服器"(如果沒有的話),然後右鍵資料庫伺服器,允許"允許程序調試"
3.最後在vs里打開資料庫里的存儲過程,設置斷點,然後f5使用的此存儲過程的asp.net項目。
這樣當使用該存儲過程時,就能像普通的代碼的調試的一樣進行了,最後完成後將Polling=false關閉

『伍』 大佬們 為什麼win10恢復系統後只剩下C盤無法創建存儲池

創建存儲空間的具體步驟如下:
1、右擊Windows 10開始菜單,選擇「控制面板」命令。以「小圖標」方式查看控制面板選項,在「所有控制面板項」列表中選擇「存儲空間」選項。
2、進入「存儲空間」創建窗口。
3、在「存儲空間」創建窗口中,點擊「創建新的池和存儲空間」。
小提示:如果沒有看到任務鏈接,請單擊「更改設置」進行設置。
4、選擇要用來創建存儲池的驅動器,然後點擊「創建池」。指定驅動器名稱和驅動器號,然後選擇一種布局,指定存儲空間大小,然後單擊「創建存儲空間」。
該方法是通過將內部硬碟與外界存儲設備相互連接,形成一個存儲空間,一旦硬碟數據遭到破壞或是丟失就可以自動備份到其他空間上。

『陸』 伺服器操作系統每次安裝都要做RAID嗎

是的,要做RAID,具體方法如下:

1、第一步,啟動後,MNAS將報警並登錄到後台管理系統,見下圖,轉到下面的步驟。

『柒』 Win10硬碟設置保全數據方法

我們平時使用的Windows系統一般至少有一塊硬碟,有時還可能另外掛接一些硬碟(內置的或移動的),在使用過程中,難免會遇到一些邏輯的或物理的錯誤。許多情況下,除刪除文件外,發生錯誤的文件多數難以修復,尤其是當硬碟發生物理磁軌錯誤甚至整個硬碟遭到物理損壞時,對數據的打擊是毀滅性的。這時,無論電腦中掛接了幾塊硬碟,只要存儲數據的某塊硬碟發生錯誤,如果用戶對文件沒有進行備份,那麼文件丟失的可能性極大。
如果我們將系統所用的硬碟和手頭上的所有硬碟或移動硬碟,在Windows
8.1或Windows
10環境下聯合組成“存儲空間”,讓其為數據保駕護,這樣,一旦硬碟發生故障,哪怕是物理故障,數據也有恢復的希望。甚至在多塊硬碟組成的存儲池中,其中的兩塊硬碟出現故障,存儲池會通過第三個設備自動生成恢復副本,確保用戶數據的安全。
Win10硬碟設置保全數據方法讓各種存儲器聯合“作戰”完成存儲任務,可以保證數據的安全或為使用提供方便。創建存儲空間的具體步驟如下:
第一步:右擊Windows
10開始菜單,選擇“控制面板”命令。
第二步:以“小圖標”方式查看控制面板選項,在“所有控制面板項”列表中選擇“存儲空間”選項,進入“存儲空間”創建窗口。
第三步:在“存儲空間”創建窗口中,點擊“創建新的池和存儲空間”。
小提示:如果沒有看到任務鏈接,請單擊“更改設置”進行設置。
第四步:選擇要用來創建存儲池的驅動器,然後點擊“創建池”。指定驅動器名稱和驅動器號,然後選擇一種布局(三種布局的具體含義見“小知識”)。指定存儲空間大小,然後單擊“創建存儲空間”。
特別提示:創建存儲池之前首先要連接外接存儲設備,否則無法創建。每次創建的時候都會格式化驅動器,所以如果接入的驅動器中有數據,一定要先備份數據。

註:更多精彩教程請關注三聯電腦教程欄目,三聯電腦辦公群:189034526歡迎你的加入

『捌』 Windows 8如何設置存儲空間

「存儲空間」的新功能將利用一個物理存儲設施組成數據池。這個數據池將使用 SATA、USB 和 SAS 硬碟創建,並且能夠使用額外的硬體擴展。 這些稱作「空間」的虛擬硬碟能夠把 4TB 存儲空間擴大到 10TB 。這些存儲空間還提供一個彈性層以解決不同物理媒介的錯誤問題。微軟在官方聲明中稱,用戶只需較少的設置就可以根據需要增加存儲池中的容量。
隨著用戶復制更多的文件和接近存儲池中的可用物理容客的極限,這個「存儲空間」可以增加。微軟還解釋了增加新硬碟所需要的步驟。一旦用戶成功地創建存儲空間,它就能夠像操作人員正常使用硬碟一樣使用。這個功能的另一個好處是,一旦物理硬碟發生故障,這個「存儲池」能夠自動生成受影響的地方的數據的副本。
操作步驟:1、打開計算機,計算機——打開控制面板;
2、查看方式設置成「大圖標」;
3、Create a new pool and storage space,創建存儲池;
4、選擇移動硬碟,Create pool,創建存儲池,注意如果移動硬碟上有重要數據需要自己備份出來,不然創建後就沒有了。
5、創建過程
6、創建存儲空間,選擇彈性機制和其他選項,作為創建空間的一部分,用戶可以分配一個盤符和採取格式化;
6.1第一種彈性機制:簡單的布局存儲一個副本的數據,並不能保護你從驅動器故障,這種彈性類型需要至少一個驅動器;
6.2第二種彈性機制:雙向鏡象布局存儲復制的數據,保護你從一個驅動器的失敗,這種彈性型至少需要兩個驅動器;
6.3第三種彈性機制:三次鏡象布局存儲復制的數據,這個系統可以容忍兩個物理磁碟發生故障,這種彈性類型需要至少三個驅動器;
6.4最後一種為額外的校驗空間,單擊「創建一個存儲空間」,然後在布局選項中選擇Parity(奇偶校驗位):奇偶校驗存儲你的數據布局以及奇偶校驗,允許一個物理磁碟發生故障.這種布局需要至少三個驅動器;
以創建第一種為例:
7、創建成功界面:
創建前「計算機」和「磁碟管理」磁碟界面的狀態:
創建後「計算機」和「磁碟管理」磁碟界面的狀態:
可以看出我們的硬碟空間少了一半,原因是一半作為了「布局存儲一個副本的數據」使用了。
8、刪除方法:進入存儲空間後,點擊更改設置;
先刪除存儲空間
再刪除存儲池刪除完成。

『玖』 告訴你Win8系統創建存儲空間的辦法

有朋友說WIN8經常玩游戲時提示系統內存不夠大的情況,很多用戶希望通過創建更大的存儲空間的方法來解決這個問題。那麼win8系統該如何創建存儲空間,下面請跟我一起看看創建的方法吧!
1、打開控制面板,點擊存儲空間
2、點擊」創建新的池和存儲空間」
3、如果電腦此時只有win8系統所在的一塊硬碟,下一步不會識別到任何信息,如果連接上更多的硬碟或者USB介面的U盤/移動硬碟,這里就可以識別到。勾選想要加入存儲池的硬碟,然後點擊右下角的」創建池」。
4、上一步是將用於備份的容量加到一個大的」池」中,如果想發揮備份的功能,還需要將「池」中的容量繼續劃分成一個或者若干個」存儲空間」。這一步就是建立不同復原類型的存儲空間。默認創建的是雙向鏡像,另外還有簡單/三向鏡像/奇偶校驗幾項類型可以選擇。
注意:每種類型對於硬碟數量和所佔用的大小都是有要求的。如果當前加入」存儲池」中的硬碟數量達不到復原類型的最低要求,是沒法完成創建的。(如圖所示,當只有一塊硬碟加入」存儲池」時,雙向/三向/奇偶校驗都沒法創建,只有簡單可以創建)
這樣通過擴大存儲空間,玩大型游戲是不是覺得更加順暢了。以上方法希望可以幫到大家!

『拾』 有沒有詳細介紹文件系統的書籍

其實你想知道什麼想弄明白什麼可以直接在網上搜下資料很全想要專業性的書籍大概免費的很少比如你想了解ZFS文件系統
查得(你還可以繼續深入的去查……不好意思,或者我說的與你的意思擰了,^_^建議而已):ZFS文件系統的英文名稱為Zettabyte File System,也叫動態文件系統(Dynamic File System),是第一個128位文件系統。
ZFS是基於存儲池的,與典型的映射物理存儲設備的傳統文件系統不同,ZFS所有在存儲池中的文件系統都可以使用存儲池的資源。
什麼是ZFS
ZFS 文件系統是一個革命性的全新的文件系統,它從根本上改變了文件系統的管理方式,這個文件系統的特色和其帶來的好處至今沒有其他文件系統可以與之媲美,ZFS 被設計成強大的、可升級並易於管理的。
ZFS 用「存儲池」的概念來管理物理存儲空間。過去,文件系統都是構建在物理設備之上的。為了管理這些物理設備,並為數據提供冗餘,「卷管理」的概念提供了一個單設備的映像。但是這種設計增加了復雜性,同時根本沒法使文件系統向更高層次發展,因為文件系統不能跨越數據的物理位置。
ZFS 完全拋棄了「卷管理」,不再創建虛擬的卷,而是把所有設備集中到一個存儲池中來進行管理!「存儲池」描述了存儲的物理特徵(設備的布局,數據的冗餘等等),並扮演一個能夠創建文件系統的專門存儲空間。從此,文件系統不再局限於單獨的物理設備,而且文件系統還允許物理設備把他們自帶的那些文件系統共享到這個「池」中。你也不再需要預先規劃好文件系統的大小,因為文件系統可以在「池」的空間內自動的增大。當增加新的存貯介質時,所有「池」中的所有文件系統能立即使用新增的空間,而不需要而外的操作。在很多情況下,存儲池扮演了一個虛擬內存。
創建一個池的例子
# zpool create tank mirror c1t0d0 c1t1d0
這是一個被鏡像了的池,名叫「tank」。如果命令中的設備包含有其他的文件系統或者以別的形式被使用,那麼命令不能執行。
要查看池是否成功創建,用 zpool list 命令,例如:
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 80G 137K 80G 0% ONLINE -
ZFS 文件系統的層次
不管層次如何,根總是池的名字。
1、為每個用戶及項目創建一個文件系統是個不錯的辦法!
2、ZFS可以為文件系統分組,屬於同一組的文件系統具有相似的性質,這有點像用戶組的概念!相似的文件系統能夠使用一個共同的名字。
3、大多數文件系統的特性都被用簡單的方式進行控制,這些特徵控制了各種行為,包括文件系統被mount在哪裡,怎麼被共享,是否被壓縮,是否有限額
創建一個文件系統
# zfs create tank/home
下一步,就可以創建各個文件系統,把它們都歸組到 home 這個文件系統中。
同時可以設置home的特性,讓組內的其他文件系統繼承的它的這些特性。
當一個文件系統層次創建之後,可以為這個文件系統設置一些特性,這些特性將被所有的用戶共享:
# zfs set mountpoint=/export/zfs tank/home
# zfs set sharenfs=on tank/home
# zfs set compression=on tank/home
# zfs get compression tank/home
NAME PROPERTY VALUE SOURCE
tank/home compression on local
4、創建單個的文件系統
注意:這些文件系統如果被創建好,他們的特性的改變將被限制在home級別,所有的特性能夠在文件系統的使用過程中動態的改變。
# zfs create tank/home/bonwick
# zfs create tank/home/billm
bonwick、billm文件系統從父文件系統home中繼承了特性,因此他們被自動的mount到/export/zfs/user 同時作為被共享的NFS。管理員根本不需要再手工去編輯 /etc/vfstab 或 /etc/dfs/dfstab 文件。
每個文件系統除了繼承特性外,還可以有自己的特性,如果用戶bonwick的磁碟空間要限制在10G。
# zfs set quota=10G tank/home/bonwick
5、用 zfs list 命令查看可獲得的文件系統的信息,類似於過去的 df -k 命令了,呵呵 .
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 92.0K 67.0G 9.5K /tank
tank/home 24.0K 67.0G 8K /export/zfs
tank/home/billm 8K 67.0G 8K /export/zfs/billm
tank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick
ZFS和傳統文件系統的區別
1、傳統的文件系統被限制在單個磁碟設備之內,它們的尺寸是不能超越單個磁碟設備。
2、過去的文件系統是被影射到一個物理存儲單元,如:分區;所有的ZFS文件系統共享池內的可獲得的存儲空間。
3、ZFS 文件系統不需要通過編輯/etc/vfstab 文件來維護。
ZFS已經拋棄了卷管理,邏輯卷可以不再使用。因為ZFS在使用和管理raw設備能夠有更好的表現。
Components of a ZFS Storage Pool
組成ZFS存儲池的元件有:磁碟、文件、虛擬設備,其中磁碟可以是整個硬碟(c1t0d0),也可以是單個slice(c0t0d0s7)。推薦使用整個硬碟,這樣可以省去分區操作(format)。
RAID-Z 跟 RAID-5的區別
傳統的raid-5都存在著「寫漏洞」,就是說如果raid-5的stripe在正寫數據時,如果這時候電源中斷,那麼奇偶校驗數據將跟該部分數據不同步,因此前邊的寫無效;RAID-Z用了「variable-width RAID stripes」技術,因此所有的寫都是full-stripe writes。之所以能實現這種技術,就是因為ZFS集成了文件系統和設備管理,使得文件系統的元數據有足夠的信息來控制「variable-width RAID stripes」
理論上說,創建RAID-Z需要至少三塊磁碟,這跟raid-5差不多。例如:
raidz c1t0d0 c2t0d0 c3t0d0
還可以更加復雜一點,例如:
raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0 c12t0d0 c13t0d0 c14t0d0
上邊這個例子創建了14個磁碟的RAID-Z , 這14個盤被分成了兩組,但下邊這句話有點不大明白:
RAID-Z configurations with single-digit groupings of disks should perform better.
RAID-Z具有自動修復數據的功能
當有損壞的數據塊被檢測到,ZFS不但能從備份中找到相同的正確的數據,而且還能自動的用正確數據修復損壞的數據。
創建ZFS存儲池
1、創建一個基本的存儲池,方法很簡單:
# zpool create tank c1t0d0 c1t1d0
這時可以在 /dev/dsk 目錄下看到一個大的slice,數據動態的stripe跨過所有磁碟!
2、創建一個鏡像的存儲池
也是很簡單,只要在上邊命令基礎上增加「mirror」關鍵字就可以了,下邊是創建一個兩路(two-way)鏡像的例子:
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
3、創建RAID-Z存儲池
使用「raidz」關鍵字就可以了,例如:
# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0
這里/dev/dsk/c5t0d0其實跟用c5t0d0是一樣的,由此可以看出,在創建ZFS的時候,磁碟完全可以用物理設備名就可以,不需要指出全路徑。
這句話不大明白:However, the disks must be preformatted to have an appropriately sized slice zero.
4、檢測正在使用的設備
在格式化設備之前,ZFS首先決定磁碟是否已經在用或者是否裝有操作系統,如果磁碟在用了,那麼將會出現下邊的錯誤提示:
# zpool create tank c1t0d0 c1t1d0
invalid vdev specification
use 』-f』 to override the following errors:
/dev/dsk/c1t0d0s0 is currentlymounted on /
/dev/dsk/c1t0d0s1 is currentlymounted on swap
/dev/dsk/c1t1d0s0 is part of active ZFS pool 』zeepool』
Please see zpool(1M)
有些錯誤可以用 -f 選項來強制覆蓋,但是大多錯誤是不能的。下邊給出不能用-f覆蓋的錯誤情況,這時只能手工糾正錯誤:
Mounted file system The disk or one of its slices contains a file system that is currently mounted. To correct this error, use the umount command.
File system in /etc/vfstab The disk contains a file system that is listed in the /etc/vfstab file,but the file system is not currently mounted.To correct this error,remove or comment out the line in the /etc/vfstab file.
Dedicated mp device The disk is in use as the dedicated mp device for the system. To correct this error, use the mpadm command.
Part of a ZFS pool The disk or file is part of an active ZFS storage pool. To correct this error, use the zpool command to destroy the pool.
5、創建存儲池時默認的mount點
在創建存儲池時,如果mount點所在目錄不存在,系統會自動創建,如果存在,根數據集(root dataset)會自動mount到這個目錄上。
To create a pool with a different default mount point, use the -m option of the zpool create command:
# zpool create home c1t0d0
default mountpoint 』/home』 exists and is not empty
use 』-m』 option to specifya different default
# zpool create -m /export/zfs home c1t0d0
This command creates a new pool home and the home dataset with a mount point of /export/zfs.
6、刪除存儲池
Pools are destroyed by using the zpool destroy command. This command destroys the pool even if it contains mounted datasets.
# zpool destroy tank
用ZFS存儲池管理設備
1、增加設備到存儲池
用戶可以通過增加一個新的頂級虛擬設備的方法動態給存儲池增加空間,這個空間立即對空間中的所有數據集(dataset)有效。要增加一個虛擬設備到池中,用「zpool add」命令,例如:
# zpool add zeepool mirror c2t1d0 c2t2d0
該命令也可以用 -n選項進行預覽,例如:
# zpool add -n zeepool mirror c3t1d0 c3t2d0
would update 』zeepool』 to the following configuration:
zeepool
mirror
c1t0d0
c1t1d0
mirror
c2t1d0
c2t2d0
mirror
c3t1d0
c3t2d0
2、增加和減少一路鏡像
用「zpool attach」命令增加一路鏡像,例如:
# zpool attach zeepool c1t1d0 c2t1d0
在這個例子中,假設 zeepool 是第一點里的那個zeepool(已經是兩路鏡像),那麼這個命令將把zeepool升級成三路鏡像。
用「zpool detach」命令來分離一路鏡像
# zpool detach zeepool c2t1d0
如果池中不存在鏡像,這個才操作將被拒絕。錯誤提示如下邊這個例子:
# zpool detach newpool c1t2d0 cannot detach c1t2d0: onlyapplicable to mirror and replacing vdevs
3、管理設備的「上線」和「下線」
ZFS允許個別的設備處於offline或者online狀態。當硬體不可靠或者還沒有完全不能用的時候,ZFS會繼續向設備讀寫數據,但不過是臨時這么做,因為設備還能將就使用。一旦設備不能使用,就要指示ZFS忽略該設備,並讓這個壞掉的設備下線。ZFS不會向offline的設備發送任何請求。
注意:如果只是為了更換設備(被換設備並沒有出問題),不需要把他們offline。如果offline設備,然後換了一個新設備上去,再把新設備online,這么做會出錯!
用「zpool offline」命令讓設備下線。例如:
# zpool offline tank c1t0d0
bringing device c1t0d0 offline
下邊這句話沒怎麼看懂:
You cannot take a pool offline to the point where it becomes faulted. For example, you cannot take offline two devices out of a RAID-Z configuration, nor can you take offline a top-level virtual device.
# zpool offline tank c1t0d0
cannot offline c1t0d0: no valid replicas
默認情況下,offline設備將永久保持offline狀態,直到系統重新啟動。
要臨時offline一個設備,用-t選項,例如:
# zpool offline -t tank c1t0d0
bringing device 』c1t0d0』 offline
用「zpool onine」命令使設備上線
# zpool online tank c1t0d0
bringing device c1t0d0 online
注意:如果只是為了更換設備(被換設備並沒有出問題),不需要把他們offline。如果offline設備,然後換了一個新設備上去,再把新設備online,這么做會出錯!在這個問題上文檔是這么說的:(但願我沒理解錯)
Note that you cannot use device onlining to replace a disk. If you offline a
device, replace the drive, and try to bring it online, it remains in the faulted state.
4、清掃存儲池設備
如果設備因為出現錯誤,被offline了,可以用「zpool clear」命令清掃錯誤。
如果沒有特別指定,zpool clear命令清掃池裡所有設備。例如:
# zpool clear tank
如果要清掃指定設備,例如:
# zpool clear tank c1t0d0
5、替換存儲池裡的設備
用「zpool replace」命令替換池中設備,例如:
# zpool replace tank c1t1d0 c1t2d0
c1t1d0 被 c1t2d0 替換
注意:如果是mirror或者RAID-Z,替換設備的容量必須大於或等於所有設備最小容量!
查詢ZFS存儲池的狀態
1、ZFS存儲池的基本信息
用「zpool list」命令查看存儲池的基本信息,例如:
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 80.0G 22.3G 47.7G 28% ONLINE -
dozer 1.2T 384G 816G 32% ONLINE -
NAME: The name of the pool.
SIZE: The total size of the pool, equal to the sum of the size of all top-level virtual
devices.
USED: The amount of space allocated by all datasets and internal metadata. Note that
this amount is different from the amount of space as reported at the file system level.
AVAILABLE: The amount of unallocated space in the pool.
CAPACITY (CAP): The amount of space used, expressed as a percentage of total space.
HEALTH: The current health status of the pool.
ALTROOT: The alternate root of the pool, if any.
可以通過指定名字來查看某一個池的狀態,例如:
# zpool list tank
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 80.0G 22.3G 47.7G 28% ONLINE -