• / 44
  • 下載費用:30 金幣  

用于在數據存儲系統中實現存儲的細粒度、可伸縮分配的方法和裝置.pdf

摘要
申請專利號:

CN201380071937.1

申請日:

2013.02.01

公開號:

CN104956318A

公開日:

2015.09.30

當前法律狀態:

授權

有效性:

有權

法律詳情: 專利權的轉移IPC(主分類):G06F 7/00登記生效日:20190424變更事項:專利權人變更前權利人:日立數據系統工程英國有限公司變更后權利人:日立數據管理有限公司變更事項:地址變更前權利人:英國伯克郡變更后權利人:美國加利福尼亞州|||授權|||實質審查的生效IPC(主分類):G06F 7/00申請日:20130201|||公開
IPC分類號: G06F7/00 主分類號: G06F7/00
申請人: 日立數據系統工程英國有限公司
發明人: 馬克·斯蒂芬·萊克
地址: 英國伯克郡
優先權:
專利代理機構: 北京銀龍知識產權代理有限公司11243 代理人: 范勝杰; 楊繼平
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201380071937.1

授權公告號:

|||||||||

法律狀態公告日:

2019.05.14|||2018.05.18|||2016.03.09|||2015.09.30

法律狀態類型:

專利申請權、專利權的轉移|||授權|||實質審查的生效|||公開

摘要

在一方面,本發明針對一種以細粒度、可縮放的方式擴大針對文件系統的存儲空間的方法。該方法包括由文件服務器確定針對跨度的組塊串偏置,其中該組塊串偏置指示與針對文件系統的地址翻譯表中的條目相關聯的存儲空間的連續組塊的數量。該方法包括由文件服務器接收要擴大針對文件系統的存儲空間的請求。該方法包括由組塊分配器至少部分地基于帶區集上未使用的組塊的數量和帶區集上正由文件系統使用的組塊數量,對一組帶區集中的每一帶區集進行記分。該方法包括由組塊分配器分配帶區集上具有最高記分的組塊,其中所分配的組塊位于預留用于其他文件系統的組塊串之外。

權利要求書

權利要求書
1.  一種由文件服務器擴大針對文件系統的存儲空間的方法,該文件系統包括從多個帶區集選擇的多個組塊,文件服務器將文件系統的虛擬地址空間映射到與組塊關聯的物理存儲地址,該方法包括,通過文件服務器:
保持組塊數據庫以跟蹤與文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向文件系統分配的一部分存儲空間的開始地址和長度相關的信息;
接收請求以擴大文件系統;
基于組塊數據庫識別與文件系統關聯的最后的組塊;
當至少一個組塊可用于向該文件系統分配時,從與最后的組塊相同的帶區集分配該至少一個組塊且該至少一個組塊與最后的組塊連續;以及
更新組塊數據庫中與最后的組塊關聯的條目以反映由所分配的至少一個組塊表示的連續存儲空間的長度的增加。

2.  根據權利要求1所述的方法,還包括:
在確定來自與該最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊是否可用于向文件系統分配之前,預留來自與該最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊,以便該至少一個組塊保持可用。

3.  根據權利要求1所述的方法,還包括:確定來自與該最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊是否可用于向文件系統分配,其中所述確定步驟包括:
確定針對文件系統的活動組塊串長度;以及
確定當活動組塊串長度小于組塊串偏置且存在來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊時,存在至少一個組塊可用于向文件系統分配。

4.  根據權利要求3所述的方法,其中分配至少一個組件的步驟包括:從與最后的組塊相同的帶區集分配多達N個組塊,且該N個組塊與最后的組塊連續,其中N等于組塊串偏置減去活動組塊串長度。

5.  根據權利要求3所述的方法,還包括:
確定組塊串偏置。

6.  根據權利要求5所述的方法,其中確定組塊串偏置的步驟包括:
基于帶區集的數量和文件系統的數量確定組塊串偏置。

7.  根據權利要求1所述的方法,還包括:
當來自與最后的組塊相同的帶區集且與最后的組塊連續的這樣的至少一個組塊被確定為不可用時,從不同的帶區集分配至少一個組塊。

8.  一種數據存儲系統,包括:
存儲器,其中存儲了用于跟蹤與文件系統關聯的組塊的組塊數據庫,組塊數據庫包含固定數量的條目,每一條目能夠存儲與向文件系統分配的一部分存儲空間的開始地址和長度相關的信息;以及
組塊分配器,其被配置成接收要擴大文件系統的請求,基于組塊數據庫識別與文件系統關聯的最后的組塊,當至少一個組塊可用于向文件系統分配時,從與最后的組塊相同的帶區集分配與最后的組塊連續的至少一個組塊,以及更新組塊數據庫中與最后的組塊關聯的條目以反映由所分配的至少一個組塊表示的連續存儲空間的長度的增加。

9.  根據權利要求8所述的數據存儲系統,其中組塊分配器還被配置成在確定來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊是否可用于向文件系統分配之前,預留來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊,以便該至少一個組塊保持可用。

10.  根據權利要求8所述的數據存儲系統,其中組塊分配器被配置成通過確定針對文件系統的活動組塊串長度以及當活動組塊串長度小于組塊串偏置且存在來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊時確定存在至少一個組塊可用于向文件系統分配,來確定來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊是否可用于向文件系統分配。

11.  根據權利要求10所述的數據存儲系統,其中組塊分配器被配置成通過從與最后的組塊相同的帶區集分配與最后的組塊連續的多達N個組塊來分配至少一個組塊,其中N等于組塊串偏置減去活動組塊串長度。

12.  根據權利要求10所述的數據存儲系統,其中組塊分配器還被配置成確定組塊串偏置。

13.  根據將權利要求12所述的數據存儲系統,其中組塊分配器被配置成通過基于帶區集的數量和文件系統的數量確定組塊串偏置,來確定組塊串偏置。

14.  根據權利要求8所述的數據存儲系統,其中組塊分配器還被配置成當來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊被確定為不可用時,從不同的帶區集分配至少一個組塊。

15.  根據權利要求8所述的數據存儲系統,其中組塊數據庫保持在硬件中,且其中數據存儲系統包括在組塊分配器與硬件之間耦合的接口,并且組塊分配器通過該接口訪問組塊數據庫。

16.  一種由文件服務器擴大針對文件系統的存儲空間的計算機程序,該文件系統包括從多個帶區集選擇的多個組塊,文件服務器將文件系統的虛擬地址空間映射到與組塊關聯的物理存儲地址,該計算機程序配置成使文件服務器:
保持組塊數據庫以跟蹤與文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向文件系統分配的一部分存儲空間的開始地址和長度相關的信息;
接收要擴大文件系統的請求;
基于組塊數據庫識別與文件系統關聯的最后的組塊;
當至少一個組塊可用于向該文件系統分配時,從與最后的組塊相同的帶區集分配該至少一個組塊且該至少一個組塊與最后的組塊連續;以及
更新組塊數據庫中與最后的組塊關聯的條目以反映由所分配的至少一個組塊表示的連續存儲空間的長度的增加。

17.  根據權利要求16所述的計算機程序,還被配置成使文件服務器:
在確定來自與該最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊是否可用于向文件系統分配之前,預留來在與該最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊,以便該至少一個組塊保持可用。

18.  根據權利要求16所述的計算機程序,還被配置成使文件服務器確定來自與最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊是否可用于向文件系統分配,所述確定步驟包括:
確定針對文件系統的活動組塊串長度;以及
當活動組塊串長度小于組塊串偏置且存在來自與最后的組塊相同的帶區 集且與最后的組塊連續的至少一個組塊時確定存在至少一個組塊可用于向文件系統分配。

19.  根據權利要求18所述的計算機程序,其中:
分配至少一個組塊的步驟包括從與最后的組塊相同的帶區集分配多達N個組塊,且這N個組塊與最后的組塊連續,其中N等于組塊串偏置減去活動組塊串長度;或
計算機程序還被配置成使文件服務器確定組塊串偏置。

20.  根據權利要求16所述的計算機程序,還被配置成使文件服務器:
當來自與最后的組塊相同的帶區集且與最后的組塊連續的這樣的至少一個組塊被確定為不可用時,從不同的帶區集分配至少一個組塊。

說明書

說明書用于在數據存儲系統中實現存儲的細粒度、可伸縮分配的方法和裝置
技術領域
本發明涉及數據存儲系統,而且更具體地,本發明涉及能夠向文件系統進行磁盤空間的細粒度、可伸縮分配的數據存儲系統。
背景技術
在今天的信息時代,數據存儲系統經常管理不時需要動態擴大磁盤空間的文件系統。經常,文件系統在存儲增量方面擴大(在本申請中稱為“組塊”)。數據存儲系統可以允許選擇不同的指導組塊大小,雖然存儲系統可以分配大小偏離指導組塊大小的組塊。在一個示例性的數據存儲系統中,組塊大小可以從1千兆字節(GiB)到100GiB。在另一示例性數據存儲系統中,組塊大小可以從0.5GiB到18GiB。
這樣的系統的文件服務器將文件系統空間中磁盤空間的虛擬地址翻譯成物理存儲器中的磁盤空間的地址,且其可以使用固定大小的表來跟蹤向文件系統分配的磁盤空間的組塊(例如,在一示例性的數據存儲系統中具有1023條目的表,其中例如,每一條目用于存儲組塊的開始物理地址和與組塊的大小相關的信息(例如,組塊長度或組塊的結束地址)并映射到虛擬文件系統地址的范圍)。使用固定大小的表通常限制了文件系統的最大大小,即僅允許向文件系統分配預定的最大數目的組塊。可以在硬件中實現固定大小的表,而且在任何情況下,增加表大小以允許支持更大的文件系統可能是行不通的。
為特定的文件系統選擇指導組塊大小實質上是用戶期望文件系統增長多大和存儲空間的利用效率之間的折衷。一般而言,選擇較小的指導組塊大小提供了高效的存儲空間利用率但是限制了文件系統的最大大小,而選擇較大的指導組塊大小經常導致低效的存儲空間利用但是增加了最大的文件系統大小。
發明內容
在某些實施例中,提供了一種用于擴大用于文件系統的存儲空間的方法和數據存儲系統,該文件系統包括從多個帶區集中選擇的多個組塊,其中文件系 統的虛擬地址空間被映射到與組塊關聯的物理存儲地址。該方法包含保持組塊數據庫以跟蹤與文件系統關聯的組塊,組塊數據庫包含固定數量的條目,每一條目能夠存儲與分配給文件系統的一部分存儲空間的開始地址和長度相關的信息;接收請求以擴大文件系統;基于組塊數據庫識別與文件系統關聯的最后組塊;當至少一個組塊可用于向文件系統分配時,從與最后的組塊相同的帶區集分配該至少一個組塊且該至少一個組塊與最后的組塊連續;以及更新組塊數據庫中與最后的組塊關聯的條目以反映由所分配的至少一個組塊所表示的連續存儲空間的長度的增加。
在各個可供替換的實施例中,在確定來自與該最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊可用于向文件系統分配之前,預留來自與該最后的組塊相同的帶區集且與該最后的組塊連續的至少一個組塊,以便該至少一個組塊保持可用。
確定來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊是否可用于向文件系統分配可涉及:確定針對文件系統的活動組塊串長度以及當活動組塊串長度小于組塊串偏置以及存在來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊時確定存在可用于向文件系統分配的至少一個組塊。在這個方面,分配至少一個組塊可涉及:從與最后的組塊相同的帶區集分配多達N個組塊,且這N個組塊與最后的組塊連續,其中N等于組塊串偏置減去活動組塊串長度。該方法還可涉及:確定組塊串偏置,例如通過基于帶區集的數量和文件系統的數量確定組塊串偏置。
該方法還可涉及:當來自與最后的組塊相同的帶區集且與最后的組塊連續的這樣的至少一個組塊被確定為不可用時,從不同的帶區集分配至少一個組塊。
在某些實施例中,可以在硬件中保持組塊數據庫,且數據存儲系統可以包括在基于軟件的組塊分配器和該硬件之間耦合的接口,并且組塊分配器通過該接口訪問組塊數據庫。
在其它實施例中,提供了一種用于以細粒度、可縮放的方式擴大用于文件系統的存儲空間的方法和數據存儲系統。該方法包括:由文件服務器確定針對一跨度的組塊串偏置,其中該組塊串偏置指示了與用于文件系統的地址翻譯表中的條目相關聯的磁盤空間的多個連續的組塊。該方法包括由文件服務器接收 對于擴大用于文件系統的磁盤空間的請求。該方法包括由組塊分配器至少部分地基于在帶區集上的多個未使用的組塊的數目和正由文件系統使用的帶區集上的組塊的數目,對一組帶區集中的每一帶區集記分。該方法包括由組塊分配器分配帶區集上的具有最高記分的組塊,其中所分配的組塊位于預留用于其他文件系統的組塊串之外。
確定針對一跨度的組塊串偏置可以包括由文件服務器確定缺省組塊串偏置。確定針對一跨度的組塊串偏置可以包括由文件服務器基于帶區集的數目和文件系統的數目確定組塊串偏置。
對每一帶區集的記分可以包括由組塊分配器確定文件系統的所分配的最后的組塊之后的組塊可用;由組塊分配器確定針對文件系統的當前帶區集的偏置因子,其中當前的帶區集包括文件系統的所分配的最后的組塊;以及由組塊分配器對具有偏置因子的當前的帶區集記分。對每一帶區集記分可以包括由組塊分配器確定在文件系統的所分配的最后的組塊之后的組塊由另一文件系統使用;以及由組塊分配器至少部分地基于帶區集上未使用的組塊的數目與預留用于其他文件系統的組塊的數目之間的差,來對一組帶區集中的每一帶區集進行記分。對每一帶區集記分可以包括由組塊分配器至少部分地基于帶區集上未使用的組塊的數目、跨度權重、正由文件系統使用的帶區集上的組塊的數目、以及文件系統權重,來對一組帶區集中的每一帶區集進行記分。
在具有最高分數的帶區集上分配組塊可以包括由組塊分配器選擇文件系統的所分配的最后的組塊之后的組塊。分配帶區集上的具有最高分數的組塊可以包括由組塊分配器搜索長度至少為組塊串偏置的未預留的組塊的組塊串;以及,由組塊分配器選擇該組塊串中的第一組塊。分配帶區集上具有最高分數的的組塊可以包括由組塊分配器搜索其長度至少是組塊串偏置的預留組塊的組塊串;以及由組塊分配器選擇在該組塊串的后半部分中的第一組塊。
在又一實施例中,提供了一種用于擴大用于文件系統的存儲空間的方法和數據存儲系統,該文件系統包括從多個帶區集選擇的多個組塊,其中文件系統的虛擬地址空間被映射到與組塊關聯的物理存儲地址。該方法涉及:保持組塊數據庫以跟蹤與多個文件系統關聯的組塊,該組塊數據庫包含固定數量的條目,每一條目能夠存儲與向文件系統中的一個文件系統所分配的一部分存儲空間 的開始地址和長度相關的信息;接收用于擴大多個文件系統中的一文件系統的請求;選擇從其處分配存儲空間的帶區集;利用帶區集上的開始地址從組塊數據庫獲取條目,其中該條目與多個文件系統中的不同文件系統的活動組塊串相對應;識別帶區集上位于N個組塊之后的至少一個組塊,上述N個組塊跟在活動組塊串中最后的組塊之后且與該最后的組塊連續,其中N等于組塊串偏置減去活動組塊串的活動組塊串長度;以及如果該至少一個組塊可用,則向文件系統分配至少一個組塊。
在各種可供替換的實施例中,該方法可以進一步涉及:繼續利用帶區集上的開始地址從組塊數據庫獲取條目以及識別位于N個組塊之后的至少一個組塊,上述N個組塊跟在活動組塊串中的最后的組塊之后且與該最后的組塊連續,直到該至少一個組塊可用。識別帶區集上的至少一個組塊可涉及:識別等于組塊串偏置的可用的組塊的組塊串或識別帶區集上可用的組塊的最長組塊串。
在又一其它實施例中,提供了一種用于擴大用于文件系統的存儲空間的方法和數據存儲系統,該文件系統包括從多個帶區集中選擇的多個組塊,其中文件系統的虛擬地址空間被映射到與組塊關聯的物理存儲地址。該方法涉及:保持組塊數據庫以跟蹤與多個文件系統關聯的組塊,組塊數據庫包含固定數量的條目,每一條目能夠存儲與向文件系統中的一個文件系統所分配的一部分存儲空間的開始地址和長度相關的信息;接收用于擴大多個文件系統中的一文件系統的請求;確定針對該請求的組塊的數目超過組塊串偏置中的組塊數目乘以跨度上帶區集的數目;通過將針對該請求的組塊的數目除以帶區集的數目來確定從每一帶區集分配的組塊的數目;在每一帶區集上搜索可用的組塊的組塊串,其等于要從每一帶區集分配的組塊的數目;從每一帶區集分配可用組塊的組塊串;以及,針對可用組塊的每一組塊串在組塊數據庫中創建與可用組塊的組塊串關聯的條目,其中條目包括組塊串的長度。
實施例還可以包括配置成執行上述方法中的任何一個方法的計算機程序。
實施例還可以包括裝置,該裝置包含有形的計算機可讀介質,在該有形的計算機可讀介質中包含配置成執行上述方法中的任何一個方法的計算機程序。
可以公開和主張保護另外的實施例。
附圖說明
通過參考隨后的具體描述將更容易理解本發明的前述特征,參考附圖,其中:
圖1是表示根據本發明一示例性實施例的文件存儲系統的示意性框圖;
圖2是表示根據本發明一示例性實施例示出文件系統的通用格式的示意性框圖;
圖3是表示在本發明的示例性實施例中示出在存儲塊與帶區集(stripeset)之間的關系的示意圖;
圖4是表示文件存儲系統的文件服務器的示意性框圖;
圖5是表示帶區集中組塊的示意性表示,其包含已經被使用的一些組塊以及可向文件系統分配的一些空閑的組塊;
圖6是表示如在示例性的現有技術的實施例中在特定的點適時可以找到的表9025的示意性表示,其中在單獨的表條目中存儲用于每一新的組塊的信息;
圖7是表示如在示例性的實施例中在特定的點適時可以找到的表9025的示意性表示,其中可以在單個表條目中存儲針對連續組塊的信息,代替在圖6中示出的表9025。
圖8是表示根據一示例性實施例示出圖7中的表條目9030如何被修改成合并兩個另外的連續組塊的表9025的示意性表示;
圖9是表示根據一示例性實施例將圖4中的文件系統空間擴大相同大小(例如X)的三個組塊的示意性表示;
圖10是表示根據一示例性實施例的用于通用組塊分配過程的流程圖;
圖11是表示選擇帶區集和要向文件系統分配的帶區集上的組塊的方法的示例性流程圖;
圖12是表示選擇帶區集的方法的示例性流程圖,在當前的帶區集包含針對所示出和描述的該文件系統的可擴大的活動組塊串時將從該帶區集分配組塊;
圖13是表示選擇帶區集的方法的示例性流程圖,在當前的帶區集不包含針對所示出和描述的該文件系統的可擴大的活動組塊串時將從該帶區集分配 組塊;
圖14是表示存儲向文件系統分配的組塊串的文件系統空間中的開始和結束地址的示例性表;
圖15是表示減小組塊串偏置以提高橫跨跨度(span)的負載平衡的方法的示例性流程圖;
圖16是表示搜索帶區集上用于向文件系統分配的非預留的組塊的方法的示例性流程圖;以及
圖17是表示橫跨跨度中的所有帶區集分配存儲空間的方法的示例性流程圖。
應該注意的是,前述的附圖和附圖中描述的元件不一定繪制成一致的比例或繪制成任何比例。除非上下文另有說明,否則類似的元件由類似的數字指示。具體實施方式
定義。如在說明書和所附權利要求書中所使用的,隨后的術語應該具有所指示的含義,除非上下文另有需求:
“存儲設備”是用于存儲數據的設備或系統。存儲設備可以包括一個或多個磁或磁光或光盤驅動器、固態存儲設備、或磁帶。為了方便起見,存儲設備有時被稱為“磁盤”或“硬盤”。數據存儲系統可以包括具有相同或不同存儲容量的相同或不同類型的存儲設備。
“RAID控制器”是將若干存儲設備的存儲容量組合到存儲空間的虛擬塊中的設備或系統,該存儲空間的虛擬塊或者可以被稱為“系統驅動器”(“SD”)、“邏輯單元”(“LU”或“LUN”)、或“卷”。典型地,SD大于單個存儲設備,從若干存儲設備獲取空間,且包含冗余信息,以便其能夠經得起某些數量的磁盤的故障而沒有數據損失。在示例性的實施例中,每一SD與唯一的標識符相關聯,該唯一的標識符在下文中被稱為“邏輯單元標識符”或“LUID”,且每一SD將不大于預定的最大尺寸,例如2TB-64TB或更大的。當向SD發送命令時,RAID控制器典型地同時向SD的所有存儲設備轉發命令。RAID控制器有助于克服典型的存儲設備的三個主要限制,即存儲設備典型地是存儲系統中最慢的組件,其典型地最可能遭受災難性的故障,且其典型地具有相對較小的存儲容量。
“RAID系統”是包含一個或多個RAID控制器和多個存儲設備的設備或系統。典型地,RAID系統將包含兩個RAID控制器(以便在另一個故障的情況下,一個能夠保持工作,以及還在兩個都正常工作時共享負載)和許多存儲設備。在示例性的實施例中,RAID系統典型地配置有2個和32個之間的SD,雖然在各個實施例中,示例性的RAID系統可以有更多個SD。當文件服務器需要存儲或獲取數據時,其向RAID系統的RAID控制器發送命令,其繼而負責向前向單個存儲設備路由命令并在必要時存儲或獲取數據。利用一些RAID系統,可以在SD之間建立鏡像關系,使得為了冗余的目的,向一個SD(被稱為“主SD”)寫入的數據由RAID系統自動地向另一SD(在本申請中被稱為“輔助SD”或“鏡像SD”)寫入。可以由與主SD相同的RAID系統或由不同的本地或遠程RAID系統管理輔助SD。鏡像SD有效地提供了跨SD的RAID 1+0功能,以提供從一SD的丟失或損壞中的恢復或在一些情形下可能從甚至多個SD的丟失或損壞中的恢復。
“文件系統”是在文件存儲系統中存儲的文件和目錄(文件夾)的結構。在一些實施例中,文件系統是在一個或多個帶區集的組塊上駐留的磁盤空間的虛擬化區域。在文件存儲系統中,典型地使用多個虛擬存儲結構來管理文件系統,且在示例性實施例中,使用被稱為范圍、帶區集和跨度的虛擬存儲結構的層級來管理文件系統。“范圍”由主SD獨自或應該包含相同的數據并從而將相同的存儲容量提供為單個SD的主/輔助SD對組成。“帶區集”由一個或多個范圍組成。在一些實施例中,帶區集可以包含多達三十二(32)個邏輯單元(“LU”)。如果其全部組塊都被使用,則該帶區集是“滿的”。否則,該帶區集是“不滿的”。“跨度”由一個或多個帶區集(例如,多達64個帶區集,其中帶區集不需要彼此具有相同的容量或包含相同數目的LU)。在一些實施例中,跨度包含多個文件系統(例如,多達128個文件系統)組成。從而,跨度最終由一個或多個SD組成(典型地4到50個SD)。跨度可以被劃分成一個或多個文件系統,每一文件系統具有單獨的名稱和標識符以及潛在不同的特性(例如,一文件系統可以被格式化具有32KB簇而另一個文件系統具有4KB簇,一文件系統可以是蠕蟲而另一個不是等)。跨度上的每一文件系統分別被格式化、安裝和卸載。可以以任何順序以及在任何時候創建和刪除文件系統。文件 系統可以被配置成自動擴大(或可供選擇的避免或限制自動擴大)或可以被手動擴大。在某些實施例中,文件服務器在“組塊數據庫”中存儲文件系統的磁盤空間的虛擬和物理地址。為了文件系統的目的,跨度上磁盤空間的不連續的組塊看上去是連續的磁盤空間。在各個實施例中,文件服務器將關于文件系統的磁盤空間的信息存儲在磁盤接口(DI)芯片上表的條目中。表中的每一條目包括向文件系統分配的一部分磁盤空間的開始和結束位置。
“組塊”是單個帶區集上的磁盤空間區域。在一些實施例中,組塊可以是添加到文件系統的磁盤空間的增量。每一組塊駐留在單個帶區集上,例如組塊不跨越多個帶區集。在一些實施例中,組塊的大小的范圍可以在1千兆字節(GiB)和100GiB之間。當一組塊尚未向文件系統分配時,該組塊是“可用的”或“空閑的”。當一組塊已經被分配時,組塊是“被使用的”且不能向另一文件系統分配或在相同的文件系統中被重用。組塊是“空閑的”或“被使用的”,例如,組塊不能被部分使用和部分空閑。在一些實施例中,當跨度被創建時,管理員設置指導組塊大小。指導組塊大小是對該跨度中組塊大小的近似。允許文件服務器分配不同大小的組塊。從而,跨度中的組塊可以具有彼此不同的容量以及與指導組塊大小不同的容量。
“組塊串(run)”是在文件系統空間內和邏輯單元空間內連續的一系列一個或多個組塊。從而,文件服務器可以對一個組塊串中的所有組塊執行單個連續的讀或寫操作。此外,可以將讀或寫操作翻譯成針對帶區集中的邏輯單元中的每一個可比較的操作,以在每一邏輯單元上以相同的地址開始以及在每一邏輯單元上以相同的地址結束。在典型的實施例中,在某些環境下,一個組塊串可以以單個組塊開始并被擴大成包括來自單個帶區集的多個連續的組塊。
“組塊串偏置”是在用于存儲向文件系統分配的磁盤空間的地址的表中的單個條目中存儲的組塊串的優選長度。組塊串偏置可以指示文件服務器可以容忍帶區集之間的負載失衡的程度。當組塊串偏置較低時,文件服務器更頻繁地從不同的帶區集分配組塊以保持橫跨跨度的負載平衡(例如,文件服務器在其開始從一個帶區集分配組塊之前從另一個帶區集分配較少的組塊)。在一些實施例中,當跨度具有較少的組塊但是許多帶區集時,文件服務器確定更低的組塊串偏置以提供橫跨跨度的負載平衡。
“活動組塊串”是向可以擴大的文件系統分配的組塊的組塊串。該組塊串是文件系統中的最后的組塊串,且緊跟在該組塊串之后的是與該組塊串相同的帶區集上的空閑組塊。
可以將帶區集上空閑組塊的組塊串分成兩個組塊串。組塊串中的一個是“主張的組塊串”,其是緊跟在活動組塊串之后的空閑組塊的組塊串,其長度比組塊串偏置更短。所主張的組塊串可以包括需要延長該活動組塊串以便其長度等于組塊串偏置的多個組塊。
“未主張的組塊串”是緊跟著主張的組塊串之后的空閑組塊的組塊串。組塊分配器任意從未主張的組塊串分配組塊。
“組塊數據庫”是用于跟蹤與一個或多個文件系統關聯的組塊的存儲結構。圖1是根據本發明的一示例性實施例的文件存儲系統的示意性框圖。除了其他的之外,文件存儲系統包括通過諸如互聯網協議網絡(例如,互聯網)之類的通信網絡9004與各種客戶端設備90061-9006M通信以及還通過諸如光纖通道網絡之類的存儲網絡9010與各種RAID系統90081-9008N通信的多個文件服務器(為了簡單和方便起見示出了單個文件服務器9002)。客戶端設備90061-9006M和文件服務器9002使用諸如CIFS和/或NFS之類的一個或多個網絡文件協議通信。文件服務器9002和RAID系統90081-9008N使用諸如SCSI之類的存儲協議通信。應該注意的是,文件存儲系統應該包括在各種配置中互連的多個文件服務器和多個RAID系統,包括全網狀配置,在該全網狀配置中任何文件服務器可以通過冗余和交換光纖通道網絡與任何RAID系統通信。
文件服務器9002管理一個或多個文件系統。文件服務器9002可以被配置成允許客戶端訪問文件系統的一部分,諸如在指定名稱下的樹或子樹。在CIFS用語中,可以將這樣的訪問稱為“共享”,而在NFS用語中,可以將這樣的訪問稱為“出口”。在內部,文件服務器9002可以包括各種硬件實現的和/或硬件加速的子系統,例如,如在美國專利申請No.09/879,798和10/889,158中所描述的,通過引用上文將其并入,且其可以包括基于硬件的、包含多個鏈接的子模塊的文件系統,例如,如在美國專利申請No.10/286,015和11/841,353中所描述的,通過引用上文可以將其并入。
每一RAID系統9008通常包括至少一個RAID控制器(且為了冗余,通 常是兩個RAID控制器)以及由RAID控制器管理的多個物理存儲設備(例如,磁盤)。RAID系統9008將其存儲資源聚集到多個SD中。例如,每一RAID系統9008可以被配置具有2到32個之間的SD,雖然在一些示例中,每一個RAID系統可以被配置用于更多的SD。每一SD可以被限制在預定的最大尺寸(例如,2TB-64TB或更多)。將若干存儲設備組合到SD可以提供多種益處,包括增加的速度(相對較慢的單個存儲設備,但是可以跨若干存儲設備對數據進行條帶化處理以使瓶頸變寬)、增加的容量(單個存儲設備相對較小,但是可以組合若干存儲設備來提供更可用的空間)、抽象化(所使用的空間量可以大于或小于單個存儲設備的大小)、回彈性(可以將相同的或冗余的信息存儲在每一存儲設備上,以便SD可以承受存儲設備的損失)。
文件服務器9002被配置成使用一個或多個SD,其可以來自單個RAID系統或來自多個RAID系統。文件服務器9002通常可以詢問RAID系統以發現每一SD是主要的還是輔助的。控制哪一個SD由文件服務器9002使用的方法在本申請中被稱為“許可”。從而,在實踐中,文件服務器9002將典型地被許可用于一些SD以及不被許可用于其他的SD。
在內部,文件服務器9002能夠將若干SD組合到在本申請中被稱為“跨度”的更大的存儲池。在本質上,跨度是若干SD的RAID 0陣列。將若干SD組合到跨度內提供了與通過將多個物理磁盤組合到SD內獲得的益處相類似的益處,包括增加的速度(在多個RAID系統上的多個SD之間擴展I/O可以進一步加寬存儲瓶頸)、增加的存儲容量(跨度可以比單個SD更大,其可以被限制在二兆兆字節)、以及另外的抽象化,其可以允許更靈活的存儲空間分配。
圖2是根據本發明一示例性實施例的跨度的示意框圖。如所示出的,跨度9011由邏輯上提供連續存儲空間的編號為90121-9012K的多個帶區集組成。每一帶區集9012繼而由一個或多個范圍以及從而一個或多個SD組成。在該示例中,帶區集90121包括編號90131-9013J的范圍。
當向帶區集寫入大量的數據時,文件服務器9002通常跨帶區集中的多個范圍/SD將數據“條帶化”而不是向單個范圍/SD寫入所有的數據。例如,當寫入大量的數據時,文件服務器9002可以將第一個4MB數據寫入范圍/SD90131中、將下一個4MB數據寫入范圍/SD 90132中等等,在向范圍/SD 9013J 寫入數據之后,循環回到范圍/SD 90131。除了其他的之外,這樣的“條帶化”增加了文件服務器9002使用若干SD(以及從而若干存儲設備)的機會,上述若干SD可能由若干RAID系統管理。
應該注意的是,在示例性的實施例中,當創建跨度時,跨度9011初始地包含單個帶區集,但是隨著時間的過去,可以向跨度添加另外的帶區集,且不同的帶區集可以具有不同數目的范圍/SD。在示例性的實施例中,每一帶區集可以包含多達32個SD,而不管其容量。可以鏡像化每一SD,但是這樣的鏡像由RAID系統執行而不是由文件服務器9002執行;從而,對于被鏡像化的SD,文件服務器9002僅向主SD發送命令,且對于每帶區集的32個SD的限制,只有主SD才被計數。此外,在示例性的實施例中,一旦創建了帶區集,則不再向帶區集添加SD。從而,為了將SD添加到跨度,為了另外的SD形成新的帶區集,且在本質上新的帶區集被連接到跨度中現有的帶區集。
從而,例如,跨度初始地可以包括具有編號為0-3的四個SD的單個帶區集。為了將三個編號5-7的新的SD添加到該跨度,創建了包含SD 5-7的第二帶區集,且第二帶區集被連接到第一帶區集。現有的數據橫跨在跨度中的所有7個SD未“被重復條帶化”。
本質上,可以將文件系統視作為具有N個順序的存儲塊的連續的存儲空間。為了討論的目的,可以順序地從0至N-1將塊邏輯地編號。實際上,文件系統存儲空間在跨度中可能在物理上是不連續的,但是其可以包含來自多個帶區集的存儲空間。一般而言,文件服務器9002將文件系統存儲塊映射到跨度內的物理存儲位置。從而,在文件系統包括來自多個帶區集的存儲空間的示例性的實施例中,第一組文件系統存儲塊將映射到第一帶區集,第二組文件系統存儲塊將映射到第二帶區集,以此類推。
圖3是示出在本發明的示例性實施例中在存儲塊與帶區集之間的關系的示意圖。在該示例中,存在包括來自兩個帶區集的組塊的編號為0-(N-1)的N個存儲塊,其中第一個M個塊(編號為0至M-1)映射到來自帶區集1的組塊,并且剩余的N-M個塊(編號為M至N-1)映射到來自帶區集2的組塊。應該注意的是,可能存在與每一帶區集關聯的數百萬個塊,且塊的數目可能在每一帶區集中是不同的。應該注意的是,因為隨著時間的變化向文件系統進行 分配,因此典型的文件系統將具有來自每一帶區集的許多范圍。例如,其可能具有來自帶區集0的7GiB、來自帶區集2的9GiB、來自帶區集1的13GiB、來自帶區集0的11GiB、來自帶區集1的18GiB、來自帶區集0的8GiB、來自帶區集2的21GiB等。此外,其可以具有來自相同帶區集的不同區域的若干連續的范圍,在跨度僅包含一個或兩個帶區集的情況下,這尤其可能。
圖4是根據一示例性實施例的文件服務器9002上的跨度管理器9003的示意框圖。除了其他的之外,跨度管理器9003包括一個或多個組塊分配器9014和VLSI接口9015,通過VLSI接口9015跨度管理器9003與各種基于硬件的文件系統組件接口,包括具有表9025的磁盤接口(DI)芯片9020,該表9025存儲向文件系統分配的組塊串的位置。跨度管理器9003還與組塊數據庫9030接口,該組塊數據庫9030存儲與向文件系統分配的組塊相關的信息。在許多實施例中,組塊數據庫9030存儲關于跨度上的每一組塊的信息。組塊數據庫9030存儲關于跨度上的每個組塊的信息。跨度管理器9003的組塊分配器9014操作組塊數據庫9030。
DI芯片9020負責連接到物理存儲器(例如,在后端光纖通道SAN上的磁盤和/或固態存儲器)以及負責控制數據如何被存儲并在這些物理設備之間分布。當跨度管理器9003從客戶端設備9006接收請求以擴大文件系統的磁盤空間時,組塊分配器9014確定向文件系統分配哪一個或那些組塊。
在一些實施例中,文件服務器9002包括單個組塊分配器9014。組塊分配器9014針對不同的跨度存儲跨度權重和文件系統權重組,如在本申請中進一步描述的。組塊分配器9014基于被擴大的文件系統駐留在其上的跨度來選擇跨度權重和文件系統權重。在其他實施例中,文件服務器9002包括不同的組塊分配器9014,每一組塊分配器9014存儲不同組的跨度和文件系統權重。在一些實施例中,跨度管理器9003基于客戶端設備9006選擇組塊分配器9014。在一些實施例中,跨度管理器9003基于要被擴大的文件系統來選擇組塊分配器9014。
組塊分配器9014確定組塊的虛擬地址和邏輯單元上磁盤空間中的相應物理地址,以及邏輯單元的設備標識符。組塊分配器9014存儲與組塊數據庫9025中以及DI芯片9020中的表9025中所分配的組塊相關的信息。在一些實施例 中,組塊分配器9014將關于每一單個分配的組塊的信息存儲在組塊數據庫9025中。組塊分配器9014還通過VLSI接口9015更新DI芯片9020上的表9025以反映新分配的組塊。
在一些實施例中,表9205包括卷映射表和帶區集映射表。組塊分配器9014存儲和/或更新在卷映射表的條目中的組塊串的文件系統空間的開始和結束地址。帶區集映射表存儲文件系統空間中的地址與SD空間中的地址之間的關系。從而,使用卷映射和帶區集映射表,文件系統可以訪問已經分配給其的磁盤空間的組塊。在一些實施例中,組塊分配器9014存儲諸如虛擬地址、物理地址、以及與組塊相對應的設備標識符之類的信息。在一些實施例中,虛擬地址是文件系統偏移,設備標識符是LU設備標識符,且物理地址是邏輯單元上的偏移。
在示例性的實施例中,當文件系統由一個或多個組塊擴大而不是以隨便的方式從帶區集分配組塊以及針對每一添加的組塊使用組塊數據庫9025中的單獨的表條目時,跨度管理器9003,尤其是組塊分配器9014,在下文更充分討論的某些環境下,從與文件系統中存在的最后的組塊(即,與組塊數據庫9025中最后填充的條目關聯的組塊)相同的帶區集分配一個或多個組塊,且上述一個或多個組塊與上述最后的組塊相連,且組塊數據庫9025中相應的條目被更新成反映向文件系統分配的磁盤空間中的有效增加。以此方式,與最后的表條目關聯的虛擬文件系統地址的范圍增長并映射到物理存儲器的多個連續的組塊,而不利用另外的表條目,并從而將這些表條目留用于進一步擴大。因此,通常可以擴大文件系統以在不擴大表大小的情況下包括更大的組塊數目(例如,在使用具有1023個條目的固定大小的表的系統中超過1023個組塊)。
圖5是在一帶區集中組塊的示意性表示,該帶區集包括一些已經被使用的組塊和一些可向文件系統分配的空閑的組塊。為了方便起見,“空閑的”組塊被稱為“空閑1”、“空閑2”等。在該實施例中,帶區集包括被使用的組塊的不連續組塊串。已使用的組塊1和2被分配給相同的文件系統。當文件服務器9002搜索空閑的組塊來分配給不同的文件系統時,文件服務器9002搜索跟在文件系統的活動組塊串(例如,所主張的組塊串)之后的預定數目的空閑組塊,如在本申請中進一步描述的。從而,文件服務器9002繞開空閑的組塊,以便文件系統在后來可以擴大到所主張的組塊串中的組塊。文件服務器9002在所 主張的組塊串之后向不同的文件系統分配組塊,例如,組塊“被使用的3”。為了展示的目的,假設針對跨度管理器9003接收一請求,以將給定的文件系統擴大大小為X的三個組塊。跨度管理器從可用的存儲器分配三個組塊。雖然三個組塊可以來自單個帶區集或來自兩個或三個不同的帶區集,為了該展示,假定來自圖5的組塊“空閑1”、“空閑2”和“空閑3”被分配用于該文件系統。
圖6是表9025的示意性表示,如在示例性的現有技術實施例中在特定的時間點可以找到的,其中針對每一新的組塊的信息存儲在單獨的表條目中。為了方便和簡單起見,將該表表示為存儲組塊指針和大小,雖然在實際的實施例中,該表可以包含用于跟蹤與向文件系統分配的組塊關聯的邏輯和物理地址和設備的、另外的和/或可供選擇的信息(例如,存儲向文件系統分配的組塊或組塊的組塊串的開始和結束地址)。當首先創建文件系統時,表9025中的字段是空白的。當文件服務器9002向文件系統分配組塊時,每一新近分配的組塊的地址和大小被存儲在條目字段中。文件服務器9002可以向文件系統分配三個新的組塊,從而占用了表9025中的三個條目。向表條目9030中寫入針對第一組塊的信息,包括指向在先前的空字段9040中的組塊開始的指針(在該示例中,指向組塊“空閑1”的開始的指針)且組塊大小X在字段9050中;針對第二組塊的信息被寫入表條目9031中,包括指向在先前的空字段9041中的組塊開始的指針(在該示例中,指向組塊“空閑2”的開始的指針)且組塊大小X在字段9051中;且針對第三組塊的信息被寫入到表條目9032中,包括指向在先前的空字段9042中的組塊開始的指針(在該示例中,指向組塊“空閑3”的開始的指針)且組塊大小X在字段9052中。虛擬文件系統地址空間被增加了3X。在備選的實施例中,每一分配的組塊可以具有相同的大小。在這些實施例中,表9025可以包括單個列,其中列中的每一條目存儲了組塊的開始的地址。
圖7是表9025的示意性表示,如在示例性實施例中在特定的時間點可以找到的,其中針對連續組塊的信息可以存儲在單個表條目中,代替在表6中示出的表9025。特別地,使用上文所述的、在其中來自圖5的連續的組塊“空閑1”、“空閑2”、和“空閑3”被分配用于文件系統的示例,表條目9030用 于存儲組塊串的三個連續的組塊的信息。指向組塊串的開始的指針(在該示例中,指向組塊“空閑1”的開始的指針)已經被寫入字段9040。指向組塊串的結束的指針(在該示例中,指向組塊“空閑3”的結束的指針)已經被寫入字段9050。以此方式,即使跨度管理器9003分配三個新的組塊并將上述組塊添加到文件系統,連續的組塊也僅占據一個表條目并使得其在表9025作為具有較大組塊尺寸的單個組塊出現(即,跨越所存儲的地址的組塊)。
為了進一步展示的目的,假設接收了進一步的請求以供跨度管理器9003將文件系統擴大兩個或更多個組塊,且組塊管理器9003確定其應該從相同的帶區集分配接下來的兩個連續的組塊(例如,圖5中的組塊“空閑4”和“空閑5”)。
圖8是根據一示例性的實施例示出圖7中的表條目9030如何被修改成并入了兩個另外的連續塊的表9025的示意性表示。具體地,指向組塊串中的第一個組塊的開始的指針保持在字段9040中,而存儲在字段9050中的組塊串的結束的地址被改變(在該示例中,被改變為組塊“空閑5”的結束),以便在開始和結束地址之間的磁盤空間包含另外兩個連續分配的組塊。以此方式,即使跨度管理器9003現在已經從存儲器分配了5個連續的組塊并將上述組塊添加到文件系統,連續的組塊仍然僅占據一個表條目。
在典型的實施例中,僅利用在表9025中最后使用或未使用的表條目來進行使用聚合的連續組塊的文件系統的擴大,以便將虛擬的文件系統地址空間的相應擴展映射到被添加到文件系統末尾的新存儲空間。例如,再次參考圖4,如果將3個組塊添加到文件系統,則文件系統地址空間將從N增加到(N+3X),但是與針對塊0至(N-1)的存儲空間相對應的物理地址必須維持不變或特定的虛擬文件系統地址則指向無效的物理地址位置。圖9是圖4中擴大3個大小為X的組塊的文件系統空間的示意性表示。原始文件系統空間9060維持在邏輯地址范圍0至(N-1)且新近分配的文件系統空間9070位于邏輯地址范圍N至(N+3X-1)。
圖10是根據一示例性實施例的針對通用組塊分配過程的流程圖。具體地,圖10描述了用于由文件服務器擴大針對文件系統的存儲空間的通用組塊分配過程,其中文件系統包括從多個帶區集選擇的多個組塊,且文件服務器將文件 系統的虛擬地址空間映射到與組塊關聯的物理存儲地址。在塊1002中開始,文件服務器保持組塊數據庫以跟蹤與文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向文件系統分配的一部分存儲空間的開始地址和長度相關的信息。在框1004中,文件服務器接收要擴大文件系統的請求。在框1006中,文件服務器基于組塊數據庫識別與文件系統關聯的最后的組塊。在框1008中,文件服務器確定來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊是否可用于向文件服務器分配。在本申請中討論的示例性實施例的上下文中,確定來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊是否“可用于”向文件系統分配可以不僅將組塊是否空閑考慮在內而且可以將諸如組塊串偏置和其他因素之類的其他因素考慮在內,如在下文所討論的。在框1010中,當至少一個組塊被確定為可用時,文件服務器分配來自與最后的組塊相同的帶區集且與最后的組塊連續的至少一個組塊。在框1012中,文件服務器更新與文件系統的最后的組塊關聯的表中的條目,以反映由所分配的至少一個組塊代表的連續存儲空間的長度的增加。
在某些示例性實施例中,向能夠從帶區集分配且與單個表條目關聯的多個連續組塊施加了各種限制(下文更充分討論的),以便在一些情形中,即使另外的連續組塊可能已經從特定的帶區集分配且與單個表條目關聯,組塊中的至少一些組塊也從不同的帶區集分配以跨多個帶區集分布存儲空間(以及從而存儲空間訪問)。例如,假設特定的文件系統中最后的組塊是來自特定帶區集的A個連續組塊的一個組塊串的一部分(在本申請中其可以被稱為“活動組塊串長度”),其中A大于或等于一但是小于預定的組塊串偏置。此外,假設接收要將文件系統擴大B個組塊的請求,其中(A+B)大于預定的組塊串偏置。即使存在從與最后的組塊相同的帶區集可用且與最后的組塊連續的B個組塊,組塊分配器9014通常也將僅從該帶區集分配N個組塊,其中N等于組塊串偏置減去活動組塊串長度;組塊分配器9014通常將從一個或多個其他的帶區集分配剩余的組塊,如根據預定的選擇方案所選擇、下文更充分討論的。但是,在一些實施例中,如果最近已經將帶區集添加到跨度且上述帶區集比其他帶區集成比例地更空,則組塊分配器9014可以在更空的帶區集分配較長的組塊串,而不管組塊串偏置的長度。
雖然,在一些示例性的實施例中,組塊分配器9014可以實時確定一個或多個組塊是否可以從與最后的組塊相同的帶區集分配且與最后的組塊連續,在某些示例性實施例中,組塊分配器9014可以在下文更充分討論的某些環境下,至少暫時地從帶區集預留一個或多個連續的組塊,以允許這樣的組塊在未來的時間以連續的方式被分配至文件系統。具體地,在這樣的情形下,當組塊分配器9014從帶區集分配一個或多個連續的組塊以向文件系統分配且存在另外的連續的組塊在未來可以被分配給文件系統的可能性時,組塊分配器9014可以預留該帶區集中、與所分配的組塊連續的一個或多個組塊,以便如果且當該文件系統在未來被擴大時,這樣的預留組塊可用于分配給文件系統。一般而言,組塊分配器9014將僅預留組塊至預留的組塊可以被分配而不超過預定的組塊串偏置的程度,即如果已經從帶區集向文件系統分配的連續的組塊的數目(在本申請中其被稱為“活動組塊串長度”)已經到達預定的組塊串偏置,則組塊分配器9014典型地不預留任何組塊;否則,組塊分配器9014可以預留多達N個組塊,其中N等于預定的組塊串偏置減去活動組塊串長度。當針對其他的文件系統分配組塊時,組塊分配器9014避免預留的組塊,至少直到預留的組塊被返回到可用組塊的“池”中(例如,如果預留的組塊變成僅有的可用于被分配的組塊)。應該注意的是,組塊分配器9014可以針對多個不同文件系統中的每一個文件系統保持一組單獨的預留組塊。
從而,當文件系統的存儲空間擴大時,文件服務器9002可以從預留用于文件系統的組塊串中分配組塊。因為具有多個組塊的組塊串可以占用組塊數據庫中的單個條目,所以文件系統可以包括比組塊數據庫將允許的更多的組塊。從而,在該系統中,可以有效地使用存儲空間,文件系統可以以較小的增量添加存儲空間,文件系統可以是可縮放的,且可以迅速地執行地址翻譯。
此外,文件服務器9002可以試圖跨帶區集分配文件系統的累積負載和每一文件系統的單個負載。當文件系統請求磁盤空間擴大時,文件服務器9002考慮多個因素以確定選擇哪一個帶區集用于磁盤空間的下一次分配。用于評估帶區集的示例性因素包括在帶區集上需要分配的組塊的數目,以使得帶區集與最滿的帶區集和在帶區集上正由文件系統使用的組塊的數目成比例地滿。
在一些實施例中,示例性的因素對跨帶區集平衡文件系統的負載在帶區集 上實現平衡總負載的優先級,或者反之亦然。當跨度上的大多數或全部的文件系統被預計很忙時,跨帶區平衡總負載可能具有更重要的優先級。當小比例的文件系統被預計很忙時,在任何給定的時刻或在峰值時刻期間,跨帶區集平衡每一文件系統的負載可能變成優先。可以以應用于參數的權重來實現這些目標的相對重要性以確定下一個應該從其處分配磁盤空間的帶區集。上述權重可以是跨度權重和文件系統權重。較大的跨度權重以平衡跨帶區集的跨度的總負載為優先,且跨度權重被應用于測量跨帶區集的組塊分配的不平衡(例如,在帶區集上將需要分配的以使得帶區集與最滿的帶區集成比例的滿的組塊的數目)。較大的文件系統權重以跨帶區集平衡活動文件系統為優先,且文件系統權重被應用于針對跨帶區集的特定文件系統測量組塊分配的不平衡。
在一些實施例中,文件服務器9002具有針對跨度和文件系統權重存儲不同值的單個組塊分配器9014。在各個實施例中,文件服務器9002具有不同的組件分配器9014,其可以針對跨度和文件系統權重具有不同的值,且文件服務器9002可以基于客戶端進行請求、文件系統被擴大或任何其他的變量選擇組塊分配器9014以處理對磁盤空間擴大的請求。基于本申請中討論的至少這些參數,文件服務器9002上的組塊分配器9014選擇包括向文件系統分配的最后的組塊的帶區集或一新的帶區集。
當組塊分配器9014選擇具有文件系統的最后分配的組塊的帶區集時,組塊分配器9014,當可能時,分配緊跟在最后的組塊之后的組塊。當組塊分配器9014選擇新的帶區集時,組塊分區器9014分配組塊且其還針對來自文件系統的未來的請求(例如,主張的組塊串),預留磁盤空間的多個隨后的、連續的組塊。從而,當文件系統請求另外的磁盤空間時,組塊分配器9014可以從已經為其留出的磁盤空間分配組塊。此外,當組塊分配器9014在新的帶區集上搜索磁盤空間時,組塊分配器9014可以繞過已經被預留用于其他文件系統的可用組塊。
關于要預留的連續組塊的數目,文件服務器9002可以確定用于跨度的組塊串偏置。雖然文件服務器9002將分配與組塊串偏置對應的組塊的數目,但是在一些情形下,文件服務器9002可以分配不同的數目,如下文更詳細描述的。
現在描述具體示例性實施例的細節。在這些具體的示例性實施例中,文件服務器9002接收關于與跨帶區集分配單個文件系統的負載相比跨帶區集分配跨度的總負載的相對重要性的信息。在一些實施例中,文件服務器9002針對跨度權重和文件系統權重存儲缺省值。在一些實施例中,文件服務器9002的管理員可以將跨度權重和文件系統權重輸入到文件服務器9002。在一些實施例中,管理員針對跨度中的每一文件系統輸入個別的和/或不同的文件系統權重。在一些實施例中,在向文件服務器系統訂制或請求新的文件系統之后,客戶端可以輸入跨度和/或文件系統權重以由文件服務器9002存儲。文件服務器9002可以將權重存儲在組塊分配器9014中。在一些實施例中,文件服務器9002將權重存儲在跨度磁盤上配置中(例如,Cod)。
在各個實施例中,權重的值的范圍在零(0)和十(10)之間。跨度權重和文件系統權重的缺省值可以是10。在一些實現中,如果客戶不提供關于針對負載分配的優先級的信息,則文件服務器9002將跨度權重和文件系統權重設置成相同的值。該值可以是十(10)、五(5)、或由本領域的普通技術人員所期望的任何其他值。
文件服務器9002確定針對該跨度的組塊串偏置。在一些實施例中,文件服務器9002使用由客戶針對客戶的跨度和/或文件系統輸入的組塊串偏置。在一些實施例中,文件服務器9002使用在存儲器中存儲的缺省值。缺省組塊串偏置可以是64個組塊,雖然還可以使用其他的缺省值。
在一些實施例中,文件服務器9002基于文件系統的數目和跨度上帶區集的數目來確定組塊串偏置。例如,當跨度具有幾個組塊和很多帶區集時,較小的組塊串偏置可以提高跨帶區集的負載平衡。文件服務器9002可以根據跨度的參數減小組塊串偏置。
在一些實施例中,文件服務器9002可以將帶區集的數目除以2。文件服務器9002可以將結果值除以文件系統的數目。文件服務器9002可以將結果值與在存儲器中存儲的缺省組塊串偏置進行比較,并將組塊串偏置設置成較小的值。在一些實施例中,針對跨度的組塊串偏置可以在0個組塊與250個組塊之間,雖然還可以使用其他范圍的針對組塊串偏置的潛在值。
在操作中,在客戶端設備9006處的用戶向文件服務器9002發送請求以擴 大針對文件系統的磁盤空間。在一些實施例中,該請求包括要添加到文件系統的磁盤空間量。文件服務器9002確定與磁盤空間量相對應的組塊數量,例如,通過將所請求的磁盤空間量除以組塊的指導大小。
當接收請求以擴大文件系統時,組塊分配器9014選擇一個或多個帶區集以向文件系統分配組塊。如上文所描述的,組塊分配器9014可以針對文件系統預留帶區集上的組塊串。由于該原因,當組塊分配器9014確定用于向文件系統進行下一次分配的帶區集時,組塊分配器9014可以具有朝向帶區集的偏置,其包括文件系統的最近分配的組塊(在本申請中也稱為“當前的帶區集”)。在一些情形下,組塊分配器9014還可選擇用于分配的新的帶區集。組塊分配器9014可以改變成其他的帶區集以平衡跨度的總負載、跨帶區集平衡文件系統負載、或出于任何其他的原因。
在一些實施例中,組塊分配器9014基于至少在帶區集中需要分配以使得帶區集與最滿的帶區集成比例地滿的組塊數目、帶區集上已經分配給正被擴大的文件系統的所使用的組塊數量、跨度權重、以及文件系統權重來選擇帶區集。如果組塊分配器9014確定當前的帶區集上所剩余的可能是有利的,則當選擇該帶區集時,組塊分配器9014可以通過將偏置因子添加到當前的帶區集上可用的組塊數目來偏置其選擇。
在一些實施例中,組塊分配器9014可以使用各種標準來確定是否將帶區集的選擇朝向當前的帶區集偏置。例如,僅在文件系統已經具有至少一個所分配的組塊的情況下,組塊分配器9014可以偏置選擇,從而具有當前的帶區集,且在文件系統的所分配的最后的組塊之后的組塊可用,以便分配器總是偏置朝向使用下一個組塊且避免了開始新組塊串的需要。當首先創建了文件系統時,因為文件系統尚不具有跨帶區集分配的負載,所以組塊分配器9014可能主要關心分配跨度的總負載。在另一示例中,如果緊跟在所分配的文件系統的最后的組塊之后的組塊可用,則組塊分配器9014可以偏置選擇。如果該組塊不可用,則文件系統被認為擴大成預留用于該文件系統的組塊的整個組塊串。由于下一個分配需要表中的新條目,所以當前帶區上剩余的不一定有利。在一些實施例中,在偏置選擇之前,文件服務器9002可能需要這些條件中的一個或多個。
可以以多種方式來確定偏置因子。在一些實施例中,組塊分配器9014確定要向正被擴大的文件系統分配的組塊的數量。例如,組塊分配器9014可以將由文件系統所請求的分配的大小除以組塊的指導大小。組塊分配器9014可以確定可在當前的帶區集上分配的組塊的數量。例如,組塊分配器9014可以將擴大的組塊的數目除以仍然具有可以被分配的磁盤空間的帶區集的數量。
組塊分配器9014可以計算偏置因子,該偏置因子考慮了在磁盤上連續放置較大組塊串且當跨度具有許多文件系統時避免分裂組塊串的有利條件。為了考慮前者,組塊分配器9014可以確定與在當前的帶區集上分配的多個組塊的相比較更大的組塊串偏置(在本申請中還被稱為“連續因子”)。為了考慮后者,文件服務器9002可以將文件系統的數量除以帶區集的數量。如果該商大于1,則偏置因子可以是該商乘以連續因子。否則,偏置因子可以等于連續因子。
為了選擇帶區集,組塊分配器9014對每一帶區集進行記分并選擇具有最高分的帶區集。上述記分可以包括跨度子記分和文件系統子記分。在一些實施例中,記分可以是跨度子記分和文件系統子記分的總和。對于跨度子記分,組塊分配器9014可以首先確定需要在帶區集上分配以使得帶區集與最滿的帶區集成比例地滿的組塊的數目。在一些實施例中,跨度子記分可以是跨度權重和需要在帶區上分配以使得帶區集與最滿的帶區集成比例地滿的組塊的數目的乘積。從而,帶區集的記分的一部分可以考慮相對于其他帶區集該帶區集的可用性,以推定該跨度的負載。
針對文件系統子記分,組塊分配器9014可以確定帶區集上已經向文件系統分配的組塊的數量。文件系統子記分可以是文件系統權重和該組塊數量的乘積。從而,帶區集的記分的一部分可以考慮將向帶區集分配以使得其如最滿的帶區集一樣滿的組塊的數量。
在一些實施例中,當文件服務器9002不將選擇偏置朝向當前的帶區集時,組塊分配器9014可以考慮當組塊分配器9014確定帶區集上可用的組塊的數目時已經被預留用于其他文件系統的組塊。例如,如果其他文件系統中的任何一個文件系統在帶區集上具有活動組塊串,則為了組塊串長度等于組塊串偏置,組塊分配器9014可以確定將需要附加到活動組塊串的組塊的數目。組塊分配器9014可以從帶區集上可用的組塊的總數目減去該數目。最后的數目可以乘 以跨度權重以確定帶區集的跨度子記分。然后,組塊分配器9014確定帶區集的文件系統記分和總記分。組塊分配器9014選擇選擇具有最高記分的帶區集。
在一些實施例中,當文件服務器9002將選擇偏置朝向當前的帶區集時,帶區集上可用組塊的數量可是未分配的組件的總數目。此外,組塊分配器9014可以將偏置因子加到當前的帶區集上可用的組塊數量。如果當前的帶區集具有最高的記分或針對最高記分的連結,則組塊分配器9014選擇當前的帶區集。否則,組塊分配器9014重新計算記分,如同組塊分配器9014未偏置選擇并選擇具有最高記分的帶區集。
在一些實施例中,當組塊分配器9014選擇第一個組塊用于新的文件系統時,組塊分配器9014選擇在超過一個SD上托管的帶區集。在許多實施例中,文件系統的第一個組塊包括與文件系統的結構相關的信息(例如,元數據)。通過選擇在超過一個SD上托管的帶區集,組塊分配器9014冗余地存儲這樣的關鍵信息以確保在另一備份故障的情況下可獲得至少一個備份。在一些實施例中,在選擇帶區集時,組塊分配器9014將單個SD上的所有帶區集排除在外。在一些實施例中,如果多SD帶區集中沒有帶區集具有空閑的組塊,則組塊分配器9014返回考慮單SD帶區集。
組塊分配器9014在所選擇的帶區集上選擇一個或多個組塊以向文件系統分配。如果組塊分配器9014選擇當前的帶區集,則組塊分配器9014可以確定緊跟在文件系統的所分配的最后的組塊之后的組塊是否可用。如果可用,則組塊分配器9014向文件系統分配該組塊。
當組塊分配器9014選擇新的帶區集時,組塊分配器9014可以搜索未預留的組塊的組塊串并將其中的第一個組塊分配至文件系統。組塊分配器9014可以搜索其長度至少為組塊串偏置的未預留的組塊的組塊串。如果組塊分配器9014找到這樣的組塊串,則文件服務器9002可以向文件系統分配該組塊串中的第一個組塊。組塊分配器9014可以搜索帶區集上未預留的組塊的最長組塊串并向文件系統分配該組塊串中的第一個組塊。
在一些情形下,組塊分配器9014可能無法找到具有期望長度的未預留組塊的組塊串,例如組塊串偏置。在這些情形下,組塊分配器9014可以搜索所主張的組塊串(例如,預留用于其他文件系統的未分配的組塊串)。在一些實 施例中,組塊分配器9014可以搜索其長度等于組塊串偏置的所主張的組塊串。組塊分配器9014可以向文件系統分配所主張的組塊串的后半部分中的第一個組塊。在一些實施例中,如果文件系統已經請求了擴大需要所主張的組塊串中超過一半的組塊的磁盤空間,則組塊分配器9014識別所主張的組塊串的前半部分中的組塊,以便所請求的組塊的分配將填充所主張的組塊串的后一部分。以此方式,文件服務器9002可以針對文件系統保留一些可伸縮性,即使當可用的磁盤空間變得不足時。如果組塊分配器9014無法找到長度等于組塊串偏置的所主張的組塊串,則組塊分配器9014可以搜索帶區集上的最長的所主張的組塊串并向文件系統分配其第一個組塊。
在一些實施例中,如果組塊分配器9014無法找到用于分配的組塊,則分配可能失敗。文件服務器9002可以向客戶端9006返回錯誤消息。
在一些實施例中,組塊分配器9014可以搜索組塊串等于用于期望在帶區集上分配的文件系統的組塊數量的組塊串而不是搜索長度等于組塊串偏置的組塊串。如上文所描述的,該數量可以是要向文件系統分配的組塊的總數除以不滿的帶區集的數量。在一些實施例中,當長度超過跨度的組塊串偏置時,組塊分配器9014根據該長度進行搜索。
在一些情形下,請求針對文件系統的磁盤空間擴大包括指示從其處應該分配磁盤空間的帶區集。如果該帶區集不是文件系統的當前的帶區集,則組塊分配器9014可以根據本申請中描述的方法中的任何一個方法搜索組塊。
如果帶區集是文件系統的當前的帶區集,則組塊分配器9014可以緊跟在活動組塊串之后分配該組塊。如果擴大需要超過一個組塊,則組塊分配器9014可以繼續分配組塊直到組塊串的長度等于組塊串偏置。在一些實施例中,如果活動組塊串之后的組塊可用,則組塊分配器9014可以擴大組塊串超過組塊串偏置。在一些實施例中,對于擴大中剩余的組塊,組塊分配器9014可以根據本申請中描述的其他方法中的任何一個方法搜索磁盤空間。
在一些情形下,來自用戶的請求包括請求磁盤空間的較大擴大。為了橫跨跨度分配新負載,組塊分配器9014可以從具有可用組塊的每一帶區集向文件系統分配組塊。在一些實施例中,組塊分配器9014可以將請求中的組塊數量除以未滿帶區集的數量。組塊分配器9014可以針對長度等于商的未主張的組 塊串搜索每一帶區集,且每一組塊串可以占據文件系統的表中的單個條目。在一些情形下,組塊分配器9014可以在每一帶區集上分配長度比組塊串偏置更長的組塊串。在一些實施例中,如果商比組塊串偏置更小,則組塊分配器9014可以根據本申請中所描述的方法中的任何一個方法選擇帶區集并分配等于組塊串偏置的組塊的組塊串。組塊分配器9014可以繼續選擇帶區集并分配組塊串偏置的組塊,直到請求中的所有磁盤空間已經被分配給文件系統。
現在參考圖11,示出和描述了一種選擇帶區集以及帶區集上用于向文件系統分配的組塊的方法的示例性流程圖。該方法包括針對跨度確定組塊串偏置,其中組塊串偏置指示與針對文件系統的地址翻譯表中的條目相關聯的磁盤空間的連續組塊的數目(步驟5005)。當組塊分配器已經向文件系統分配的帶區集上的磁盤空間的連續組塊的數目等于組塊串偏置時,組塊分配器可以確定用于提供磁盤空間擴大的新的帶區集。在一些實施例中,文件服務器可以獲取在存儲器中存儲的缺省組塊串偏置。在一些實施例中,文件服務器基于帶區集的數量和文件系統的數量確定潛在的組塊串偏置。例如,文件系統可以將帶區集的數量除以2并將結果值除以文件系統的數量。如果該結果比缺省組塊串偏置更小,則該結果可以變成組塊串偏置。
該方法包括接收要擴大針對文件系統的磁盤空間的請求(步驟5010)。在一些實施例中,文件服務器基于文件系統請求擴大磁盤空間獲取跨度權重和文件系統權重。在一些實施例中,文件服務器的單個組塊分配器獲取跨度權重和文件系統權重。在其他實施例中,文件服務器基于文件系統從多個組塊分配器選擇組塊分配器。在這些實施例中,每一組塊分配器可以存儲唯一的一對跨度和文件系統權重。
該方法包括至少部分地基于帶區集上未使用的組塊的數量和帶區集上正由文件系統使用的組塊的數量對一組帶區集中的每一帶區集進行記分(步驟5015)。對于每一帶區集,組塊分配器可以將跨度權重乘以帶區集上需要分配的以使該帶區集與最滿的帶區集成比例地滿的組塊的數量。對于每一帶區集,組塊分配器還可以將文件系統權重乘以帶區集上正由文件系統使用的組塊的數量。組塊分配器可以將帶區集的記分設置成等于這兩個乘積的總和。在一些實施例中,組塊分配器可以包括當針對當前的帶區集確定記分時的偏置因子。 在一些實施例中,帶區集上未使用的組塊的數目可以考慮預留用于其他文件系統的磁盤空間的未分配的組塊。
該方法包括分配帶區集上具有最高記分的組塊,其中所分配的組塊位于預留用于其他文件系統的組塊串之外(步驟5020)。如果文件系統當前的帶區集具有最高的記分,則組塊分配器可以分配在所分配的、文件系統的最后的組塊之后的組塊。在一些實施例中,組塊分配器可以搜索未預留的組塊的組塊串并向文件系統分配其中的第一個組塊。組塊分配器可以搜索長度為至少組塊串偏置的未預留的組塊的組塊串并向文件系統分配組塊串中的第一個組塊。組塊分配器可以搜索帶區集上未預留組塊的最長的組塊串并向文件系統分配該組塊串中的第一個組塊。
在一些實施例中,組塊分配器可以搜索長度等于組塊串偏置的所主張的組塊串。組塊分配器可以向文件系統分配所主張的組塊串的后半部分中的第一個組塊,或如由本申請中描述的其他方法所描述的在所主張的組塊串中的任何其他組塊。在一些實施例中,組塊分配器可以搜索在帶區集上最長的所主張的組塊串并向文件系統分配其第一個組塊。
現在參考圖12,示出并描述了一種選擇帶區集的方法的示例性流程圖,在當前的帶區集包括針對文件系統可擴大的活動組塊串時,將從上述帶區集分配組塊。該方法包括確定帶區集上在文件系統的所分配的最后組塊之后的組塊可用(步驟6005)。組塊分配器可以定位文件系統的所分配的最后組塊并確定隨后的組塊是否可用。在一些實施例中,組塊分配器可以確定文件系統的活動組塊串的長度不等于組塊串偏置。
該方法包括確定針對具有文件系統的所分配的最后的組塊的帶區集的偏置因子(步驟6010)。在一些實施例中,組塊分配器首先通過例如將由文件系統所請求的分配的大小除以組塊的指導大小來確定要向正被擴大的文件系統分配的組塊的數目。組塊分配器可以通過例如將擴大中的組塊的數目除以仍然具有能被分配的磁盤的帶區集的數目來確定在當前的帶區集上可以被分配的組塊的數目。
偏置因子可以考慮當跨度具有許多文件系統時,在磁盤空間中連續設置較大的組塊串并避免分裂組塊串的有利條件。為了考慮前者,組塊分配器可以確 定與在當前的帶區集上可以分配的組塊的數目相比較更大的組塊串偏置(在本申請中也被稱為連續因子)。為了考慮后者,文件服務器可以將文件系統的數目除以帶區集的數目。如果商大于1,則偏置因子可以是該商乘以連續因子。否則,偏置因子可以等于連續因子。
該方法可以包括至少部分地基于偏置因子、在帶區集上需要分配以使得帶區集與最滿的帶區集成比例地滿的組塊數量、和/或在正由文件系統使用的帶區集上的組塊數量,對具有文件系統的所分配的最后的組塊的帶區集進行記分(步驟6015)。組塊分配器可以將偏置因子添加到帶區集上可用組塊的數量。組塊分配器可以將該數量乘以寬度權重以及正由文件系統使用的帶區集上的組塊數量乘以文件系統權重。這兩個乘積的總和可以是當前帶區集的記分。
該方法可以包括至少部分地基于在帶區集上需要分配以使得帶區集與最滿的帶區集成比例地滿的組塊的數量、和/或帶區集上正由文件系統使用的組塊數量,來對其他帶區集中的每一個帶區集進行記分(步驟6020)。對于每一帶區集,組塊分配器可以將跨度權重乘以在帶區集上需要分配以使得帶區集與最滿的帶區集成比例地滿的組塊的數量,且文件系統權重乘以帶區集上正由文件系統使用的組塊數量。這兩個乘積的總和可以是帶區集的記分。
該方法可以包括選擇具有最高記分的帶區集(步驟6025)。如果當前的帶區集具有最高記分或針對最高記分的連結,則文件服務器選擇當前的帶區集。否則,文件服務器可以重新計算記分,就像文件服務器不將選擇偏置朝向當前的帶區集一樣,如在本申請中所描述的,并選擇具有最高記分的帶區集。
現在參考圖13,示出并描述了一種在當前的帶區集不包含針對該文件系統的可擴大的活動組塊串時選擇帶區集的方法的示例性流程圖。該方法包括確定帶區集上在文件系統的所分配的最后的組塊之后的組塊正由另一文件系統使用、位于不同的帶區集上、還是不存在(步驟7005)。組塊分配器可以定位文件系統的所分配的最后的組塊并確定隨后的最后是否可用。在一些實施例中,組塊分配器可以確定已經向另一文件系統分配了該組塊。在一些實施例中,組塊分配器可以確定文件系統的所分配的最后的組塊是帶區集上最后的組塊,使得下一個組塊不存在。在一些實施例中,組塊分配器可以確定下一個組塊在不同的帶區集上。
該方法包括至少部分地基于在帶區集上需要分配以使得帶區集與最滿的帶區集成比例地滿的組塊的數量與預留用于其他文件系統的組塊的數量之間的差、以及帶區集上正由文件系統使用的組塊數量,來對一組帶區集中的每一帶區集進行記分(步驟7010)。對于每一帶區集,文件服務器可以確定未使用的組塊數量和預留用于文件系統的組塊的數量。文件服務器可以將預留的組塊的數量從未使用的組塊的數量中減去,并將該差乘以跨度權重。文件服務器可以將帶區集上正由文件系統使用的組塊數量乘以文件系統權重。乘積的總和將是帶區集的記分。
該方法包括選擇具有最高記分的帶區集(步驟7015)。文件服務器比較帶區集的記分并選擇具有最高記分的帶區集。
現在參考圖14,示出并描述了存儲向文件系統分配的組塊串的文件系統空間中的開始和結束地址的示例性表9025’。表9025’位于DI芯片上,例如DI芯片9020。示例性的表9025’是卷映射表。在示例性實施例中,針對文件系統的卷映射表具有也存儲在DI芯片上的相關聯的帶區集映射表(為了方便起見,未示出)。卷映射表中的條目將地址存儲在用于組塊串的文件系統中。帶區集映射表中相應的條目將位置存儲在SD上,其中文件系統空間中的地址映射到上述SD。
在表9052’的一示例性使用中,跨度具有64個組塊的缺省組塊串偏置且文件服務器9002已經針對其組塊串偏置選擇了缺省的組塊串偏置。表9025’具有三個條目且每一條目將位置存儲在向文件系統分配的組塊的組塊串的文件系統空間中。為了第一個組塊串,組塊分配器9014選擇帶區集并搜索16個組塊的未主張組塊串。組塊分配器9014選擇并將針對未主張的組塊串中的第一個組塊的開始地址BA1存儲在表中的第一個條目中。組塊分配器9014還將該組塊的最后一個地址EA1存儲在表條目中,其代表活動組塊串的結束。當文件系統請求另外的磁盤空間擴展時,組塊分配器9014分配在EA1之后連續的組塊并更新所存儲的組塊串的結束地址EA1,直到在BA1與EA1之間的文件空間與已經向文件系統分配的磁盤空間的16個連續的組塊相對應。
下一次文件系統請求擴大磁盤空間時,組塊分配器9014選擇帶區集并搜索16個組塊的另一個未主張的組塊串。組塊分配器9014選擇并將針對在該下 一個未主張的組塊串中的第一組塊的開始地址BA2和結束地址EA2存儲在表中的第二個條目中。再次,組塊分配器9014分配在EA2之后的連續的組塊并更新所存儲的該組塊串的結束地址EA2直到在BA2與EA2之間的文件空間與已經向文件系統分配的磁盤空間的16個連續的組塊相對應。
為了磁盤空間的下一次擴大,組塊分配器9014再次選擇帶區集并搜索16個組塊的未主張組塊串。組塊分配器9014選擇并將針對該下一個未主張組塊串中的第一個組塊的開始地址BA3和結束地址EA3存儲在該表的第三個條目中。再次,組塊分配器9014分配在EA3之后的連續的組塊并更新所存儲的該組塊串的結束地址EA3,直到在BA3與EA3之間的文件空間與已經向文件系統分配的磁盤空間的16個連續的組塊相對應。在對表9052’的另一示例性的使用中,跨度具有三個帶區集和16個組塊的缺省組塊串偏置。文件系統已經請求了等于300個組塊的磁盤空間的較大分配。為了平衡橫跨跨度的負載,組塊分配器9014試圖向三個帶區集中的每一個帶區集分配100個組塊。在該實施例中,組塊分配器9014針對100個組塊的未主張組塊串搜索每一帶區集。組塊分配器9014在地址BA1與EA1之間找到在第一帶區集上的100個組塊的未主張組塊串。組塊分配器9014向文件系統分配這100個組塊并將地址BA1和EA1存儲到表9025’的第一個條目中。
組塊分配器9014在地址BA2與EA2之間在第二帶區集上找到100個組塊的未主張組塊串。組塊分配器9014向文件系統分配這100個組塊并將地址BA2和EA2存儲到表9025’的第二個條目中。組塊分配器9014在地址BA3與EA3之間在第三帶區集上找到100個組塊的未主張組塊串。組塊分配器9014向文件系統分配這100個組塊并將地址BA3和EA3存儲到表9025”的第三個條目中。以此方式,不管16個組塊的組塊串偏置如何,組塊分配器9014能夠分配較長的組塊串以在使用盡量少的額外表條目的同時橫跨跨度分布較大的磁盤空間分配。
現在參考圖15,示出并描述了一種減少組塊串偏置以提高橫跨跨度的負載平衡的方法的示例性流程圖。該方法包括獲得缺省的組塊串偏置(步驟1505)。在一些實施例中,文件服務器9002從存儲器獲取由數據存儲系統的用戶輸入的缺省組塊串偏置。在其他實施例中,文件服務器9002從存儲器獲取 由跨度的管理員所設置的缺省組塊串偏置。該方法包括將帶區集的數量除以2并將結果值除以文件系統的數量(步驟1510)。該方法包括將產生的商與缺省組塊串偏置進行比較(步驟1515)。該方法包括設置組塊串偏置等于較小的值(步驟1520)。
現在參考圖16,示出并描述了一種搜索帶區集上用于向文件系統分配的未預留的組塊的方法的示例性流程圖。該方法包括保持組塊數據庫以跟蹤與多個文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向文件系統中的一個所分配的一部分存儲空間的開始地址和長度相關的信息(步驟1605)。該方法包括接收要擴大多個文件系統中的一文件系統的請求(步驟1610)。該方法包括選擇從其處分配存儲空間的帶區集(步驟1615)。該方法包括利用帶區集上的開始地址從組塊數據庫中獲取條目,其中該條目與在多個文件系統中不同文件系統的活動組塊串相對應(步驟1620)。該方法包括識別帶區集上位于N個組塊之后的至少一個組塊,上述N個組塊跟在活動組塊串中的最后的組塊之后并與該最后的組塊連續,其中N等于組塊串偏置減去活動組塊串的活動長度(步驟1625)。該方法包括在至少一個組塊可用的情況下向文件系統分配至少一個組塊(步驟1630)。
現在參考圖17,示出并描述了一種由文件服務器擴大用于文件系統的存儲空間的方法的示例性流程圖,該文件系統包括從多個帶區集選擇的多個組塊,文件服務器將文件系統的虛擬地址空間映射到通過文件服務器與組塊相關聯的物理存儲地址。
該方法包括保持組塊數據庫以跟蹤與多個文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向其中一個文件系統分配的一部分存儲空間的開始地址和長度相關的信息(步驟1705)。該方法包括接收要擴大多個文件系統中的一文件系統的請求(步驟1710)。該方法包括確定針對該請求的組塊數量超過組塊串偏置中的組塊數量與跨度上的帶區集數量的乘積(步驟1715)。該方法包括通過將針對該請求的組塊數量除以帶區集的數量來確定要從每一帶區集分配的組塊數量(步驟1720)。該方法包括在每一帶區集上搜索等于要從每一帶區集分配的組塊數量的可用組塊的組塊串(步驟1725)。該方法包括從每一帶區集分配可用組塊的組塊串(步驟1730)。該方法包括針 對可用組塊的每一組塊串在與可用組塊的組塊串相關聯的組塊數據庫中創建一條目,其中該條目包括組塊串的長度(步驟1735)。
在上文描述的示例性實施例中,可以使用組塊串偏置來限制向文件系統分配的組塊的組塊串長度。從而,雖然基于固定長度的組塊數據庫,上文的示例性實施例通常允許向文件系統分配較大數量的組塊,但是組塊串偏置仍然可以有效地限制文件系統可以被擴大到多大,例如,而不是文件系統被限制成X個組塊,其中X是組塊數據庫中的條目數量,在某些實施例中,文件系統可以被有效地限制成(組塊串偏置*X)個組塊。從而,在各個備選的實施例中,當文件系統處于或接近其最后的組塊數據庫條目時,組塊串偏置限制(以及組塊串偏置被應用的方式以及組塊被預留的方式)可以被修改成允許更長的組塊串長度。僅作為一個示例,當文件系統處于其最后的組塊數據庫條目時,可以針對文件系統增加或完全地去除組塊串偏置以允許文件系統繼續擴大,且結合這樣的對組塊串偏置的增加或去除,可以預留較大數目的連續組塊,例如,預定的最大數量的組塊或對文件系統的預定百分比的增加(例如,需要將文件系統擴大預定百分比所需的組塊數量)。
應該注意的是,在本申請中使用術語“服務器”來描述可以在通信系統中使用的設備且其不應被解釋為將本發明限制成任何特定類型的設備。從而,本發明的實施例可以在客戶端、服務器、計算機、交換機、或其他類型的通信設備中實現。
本發明可以以許多不同的形式來實現,其包括但絕不限制于,用于與處理器一起使用的計算機程序邏輯(例如,微處理器、微控制器、數字信號處理器、或通用計算機)、用于與可編程邏輯設備一起使用的可編程邏輯(例如,現場可編程門陣列(FPGA)或其他PLD)、分立組件、集成電路(例如,專用集成電路(ASIC))、或包括其任何組合的任何其他模塊。
實現先前在本申請中描述的功能的全部或一部分的計算機程序邏輯可以以各種形式實現,包括但絕不限于,源代碼形式、計算機可執行形式、以及各種中間形式(例如,由匯編器、編譯器、鏈接器、或定位器產生的形式)。源代碼可以包括以合適的編程語言(例如,目標代碼、匯編語言、或諸如Fortran、C、C++、JAVA、或HTML之類的高級語言)實現的一系列計算機程序指令, 以與各種操作系統或操作環境一起使用。源代碼可以定義并使用各種數據結構和通信消息。源代碼可以為計算機可執行的形式(例如,通過解釋器),或源代碼可以被轉換成計算機可執行形式(例如,通過翻譯器、匯編器、或編譯器)。
計算機程序可以永久地或暫時地以任何形式(例如,源代碼形式、計算機可執行形式、或中間形式)固定在有形的存儲介質中,例如半導體存儲設備(例如,RAM、ROM、PROM、EEPROM、或閃速可編程RAM)、磁存儲設備(例如,磁盤或固定磁盤)、光存儲設備(例如,CD-ROM)、PC卡(例如,PCMCIA卡)、或其他存儲設備。計算機程序可以以任何形式固定在信號中,該信號可以使用各種通信技術中的任何一種向計算機發送,包括但不限于模擬技術、數字技術、光學技術、無線技術(例如,藍牙)、聯網技術、和網絡互聯技術。計算機程序可以作為具有伴隨著的印刷或電子文檔(例如,緊縮套裝軟件)的可移動存儲介質以任何形式分布,利用計算機系統(例如,在系統ROM或固定磁盤上)預裝載、或通過通信系統(例如,互聯網或萬維網)從服務器或電子公告板發布。
實現先前在本申請中描述的功能的全部或一部分的硬件邏輯(包括可編程邏輯以與可編程邏輯設備一起使用)可以使用傳統手工方法來設計或可以使用諸如計算機輔助設計(CAD)、硬件描述語言(例如,VHDL或AHDL)、或PLD編程語言(例如,PALASM、ABEL、或CUPL)之類的各種工具來設計、捕獲、仿真、或電子歸檔。
可編程邏輯可以永久地或暫時地固定在有形存儲介質中,例如半導體存儲設備(例如,RAM、ROM、PROM、EEPROM、或閃速可編程RAM)、磁存儲設備(例如,磁盤或固定磁盤)、光存儲設備(例如,CD-ROM)、或其他存儲設備。可編程邏輯可以固定在信號中,該信號可以使用各種通信技術中的任何一種向計算機發送,包括但不限于模擬技術、數字技術、光學技術、無線技術(例如,藍牙)、聯網技術、和網絡互聯技術。可編程邏輯可以作為具有伴隨著的印刷或電子文檔(例如,緊縮套裝軟件)的可移動存儲介質分布、利用計算機系統(例如,在系統ROM或固定磁盤上)預裝載、或通過通信系統(例如,互聯網或萬維網)從服務器或電子公告板發布。
本發明的各個實施例的特征可以在于在該段之后(且在本申請的末尾提供 的實際權利要求之前)的段落中列出的潛在權利要求。這些潛在的權利要求形成了本申請的書面描述的一部分。因此,隨后的潛在權利要求的主題可以在后面的程序中被呈現為實際的權利要求,上述后面的程序包括該申請或基于該申請主張優先權的任何申請。包含這樣的潛在權利要求不應該被解釋為意味著實際的權利要求不覆蓋潛在權利要求的主題。從而,不將這些潛在權利要求呈現在后面的程序中的決定不應被解釋為將本主題捐贈給公眾。
在沒有限制的情況下,可以請求保護的潛在主題(以字母“P”開始以避免與下文中呈現的實際權利要求混淆)包括:
P16.一種以細粒度、可縮放的方式擴大針對文件系統的存儲空間的方法,該方法包括:
由文件服務器確定針對跨度的組塊串偏置,其中該組塊串偏置指示與針對文件系統的地址翻譯表中的條目相關聯的存儲空間的多個連續組塊;
由文件服務器接收對針對文件系統的存儲空間擴大的請求;
由組塊分配器至少部分地基于帶區集中未使用的組塊的數量和帶區集上正由文件系統使用的組塊的數量對一組帶區集中的每一帶區集進行記分;以及
由組塊分配器分配帶區集上具有最高記分的組塊,其中所分配的組塊位于預留用于其他文件系統的組塊串之外。
P17.根據權利要求P16所述的方法,其中確定針對跨度的組塊串偏置包括:
由文件服務器確定缺省組塊串偏置。
P18.根據權利要求P16所述的方法,其中確定針對跨度的組塊串偏置包括:
由文件服務器基于帶區集的數量和文件系統的數量確定組塊串偏置。
P19.根據權利要求P16所述的方法,其中對每一帶區集記分還包括:
由組塊分配器確定在文件系統的所分配的最后的組塊之后的組塊可用;
由組塊分配器確定針對文件系統的當前的帶區集的偏置因子,其中當前的帶區集包括文件系統的所分配的最后的組塊;以及
由組塊分配器利用該偏置因子對當前的帶區集記分。
P20.根據權利要求P16所述的方法,其中對每一帶區集進行記分還包括:
由組塊分配器確定在文件系統的所分配的最后的組塊之后的組塊由另一文件系統使用;以及
由組塊分配器至少部分地基于帶區集上未使用的組塊的數量與預留用于其他的文件系統組塊的數量之間的差,對一組帶區集中的每一帶區集進行記分。
P21.根據權利要求P16所述的方法,其中對每一帶區集記分還包括:
由組塊分配器至少部分地基于帶區集上未使用的組塊的數量、跨度權重、帶區集上正由文件系統使用的組塊的數量、以及文件系統權重來對該組帶區集中的每一帶區集進行記分。
P22.根據權利要求P16所述的方法,其中分配帶區集上具有最高記分的組塊包括:
由組塊分配器選擇在文件系統的所分配的最后的組塊之后的組塊。
P23.根據權利要求P16所述的方法,其中分配帶區集上具有最高記分的組塊包括:
由組塊分配器搜索長度為至少所述組塊串偏置的未預留的組塊的組塊串;以及
由組塊分配器選擇該組塊串中的第一組塊。
P24.根據權利要求P16所述的方法,其中分配帶區集上具有最高記分的組塊包括:
由組塊分配器搜索長度為至少所述組塊串偏置的預留的組塊的組塊串;以及
由組塊分配器選擇該組塊串的后半部分中的第一組塊。
P25.一種數據存儲系統,包括:
文件服務器,該文件服務器包括組塊分配器,其中文件服務器被配置成確定針對跨度的組塊串偏置,其中該組塊串偏置指示與針對文件系統的地址翻譯表中的條目相關聯的存儲空間的多個連續組塊;以及
其中組塊分配器被配置成至少部分地基于帶區集中未使用的組塊的數量和帶區集上正由文件系統使用的組塊的數量對一組帶區集中的每一帶區集進行記分;并且分配帶區集上具有最高記分的組塊,其中所分配的組塊位于預留用于其他文件系統的組塊串之外。
P26.根據權利要求P25所述的數據存儲系統,其中文件服務器還被配置成確定缺省的組塊串偏置。
P27.根據權利要求P25所述的數據存儲系統,其中文件服務器進一步被配置成基于帶區集的數量和文件系統的數量確定組塊串偏置。
P28.根據權利要求25所述的數據存儲系統,其中組塊分配器還被配置成確定在文件系統的所分配的最后的組塊之后的組塊可用;確定針對文件系統的當前的帶區集的偏置因子,其中當前的帶區集包括文件系統的所分配的最后的組塊;以及利用該偏置因子對當前的帶區集記分。
P29.根據權利要求P25所述的數據存儲系統,其中組塊分配器還被配置成確定在文件系統的所分配的最后的組塊之后的組塊由另一文件系統使用;以及至少部分地基于帶區集上未使用的組塊的數量與預留用于其他的文件系統組塊的數量之間的差,對一組帶區集中的每一帶區集進行記分。
P30.根據權利要求P25所述的數據存儲系統,其中組塊分配器還被配置成至少部分地基于帶區集上未使用的組塊的數量、跨度權重、帶區集上正由文件系統使用的組塊的數量、以及文件系統權重來對該組帶區集中的每一帶區集進行記分。
P31.根據權利要求P25所述的數據存儲系統,其中組塊分配器還被配置成選擇在文件系統的所分配的最后的組塊之后的組塊。
P32.根據權利要求P25所述的數據存儲系統,其中組塊分配器還被配置成搜索長度為至少所述組塊串偏置的未預留的組塊的組塊串;以及選擇該組塊串中的第一組塊。
P33.根據權利要求P25所述的數據存儲系統,其中組塊分配器還被配置成搜索長度為至少所述組塊串偏置的預留的組塊的組塊串;以及選擇該組塊串的后半部分中的第一組塊。
P34.一種由文件服務器擴大針對文件系統的存儲空間的方法,該文件系統包括從多個帶區集選擇的多個組塊,文件服務器將文件系統的虛擬地址空間映射到與組塊關聯的物理存儲地址,該方法包括,通過文件服務器:
保持組塊數據庫以跟蹤與多個文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向文件系統中的一個文件系統分配的一部分 存儲空間的開始地址和長度相關的信息;
接收要擴大多個文件系統中的一文件系統的請求;
選擇從其處要分配存儲空間的帶區集;
利用帶區集上的開始地址從組塊數據庫獲取條目,其中該條目與多個文件系統中不同文件系統的活動組塊串相對應;
識別帶區集上位于N個組塊之后的至少一個組塊,上述N個組塊跟在活動組塊串中的最后的組塊之后且與該最后的組塊連續,其中N等于組塊串偏置減去活動組塊串的活動組塊串長度;以及
如果上述至少一個組塊可用,則向文件系統分配該至少一個組塊。
P35.根據權利要求P34所述的方法,還包括:
繼續利用帶區集上的開始地址從組塊數據庫獲取條目并識別位于N個組塊之后的至少一個組塊,直到該至少一個組塊可用,上述N個組塊跟在活動組塊串中的最后組塊之后且與該最后的組塊連續。
P36.根據權利要求P34所述的方法,其中識別帶區集上的至少一個組塊包括:
識別等于組塊串偏置的可用組塊的組塊串。
P37.根據權利要求P34所述的方法,其中識別帶區集上的至少一個組塊包括:
識別帶區集上可用組塊的最長組塊串。
P38.一種數據存儲系統,包括:
存儲器,其中存儲了用于跟蹤與多個文件系統關聯的組塊的組塊數據庫,組塊數據庫包含固定數量的條目,每一條目能夠存儲與向文件系統分配的一部分存儲空間的開始地址和長度相關的信息;以及
組塊分配器,其被配置成接收要擴大多個文件系統中的一文件系統的請求,選擇從其處要分配存儲空間的帶區集,利用帶區集上的開始地址從組塊數據庫獲取條目,其中該條目與多個文件系統中不同文件系統的活動組塊串相對應,識別帶區集上位于N個組塊之后的至少一個組塊,上述N個組塊跟在活動組塊串中的最后的組塊之后且與該最后的組塊連續,其中N等于組塊串偏置減去活動組塊串的活動組塊串長度,以及如果上述至少一個組塊可用,則向文件 系統分配該至少一個組塊。
P39.根據權利要求P38所述的數據存儲系統,其中組塊分配器還被配置成繼續利用帶區集上的開始地址從組塊數據庫獲取條目并識別位于N個組塊之后的至少一個組塊,直到至少一個組塊可用,上述N個組塊跟在活動組塊串中的最后的組塊之后且與該最后的組塊連續。
P40.根據權利要求P38所述的數據存儲系統,其中組塊分配器還被配置成識別等于組塊串偏置的可用組塊的組塊串。
P41.根據權利要求P38所述的數據存儲系統,其中組塊分配器還被配置成識別帶區集上可用組塊的最長組塊串。
P42.一種用于由文件服務器擴大針對文件系統的存儲空間的方法,該文件系統包括從多個帶區集選擇的多個組塊,文件服務器將文件系統的虛擬地址空間映射到與組塊關聯的物理存儲地址,該方法包括,通過文件服務器:
保持組塊數據庫以跟蹤與多個文件系統關聯的組塊,組塊數據庫包括固定數量的條目,每一條目能夠存儲與向文件系統中的一個文件系統分配的一部分存儲空間的開始地址和長度相關的信息;
接收要在多個文件系統中擴大文件系統的請求;
確定針對該請求的組塊數量超過組塊串偏置中組塊的數量與跨度上帶區集的數量的乘積;
通過將針對請求的組塊的數量除以帶區集的數量來確定要從每一帶區集分配的組塊的數量;
在每一帶區集上搜索等于要從每一帶區集分配的組塊數量的可用組塊的組塊串;
從每一帶區集分配可用組塊的組塊串;以及
針對可用組塊的每一組塊串,在組塊數據庫中創建與可用組塊的組塊串關聯的條目,其中該條目包括組塊串的長度。
P43.一種數據存儲系統,包括:
存儲器,其中存儲了用于跟蹤與多個文件系統關聯的組塊的組塊數據庫,組塊數據庫包含固定數量的條目,每一條目能夠存儲與向文件系統中的一個文件系統分配的一部分存儲空間的開始地址和長度相關的信息;以及
組塊分配器,其被配置成接收要擴大多個文件系統中的一文件系統的請求,確定針對該請求的組塊的數量超過組塊串偏置中組塊的數量與跨度上帶區集的數量的乘積,通過將針對請求的組塊的數量除以帶區集的數量來確定要從每一帶區集分配的組塊的數量,在每一帶區集上搜索等于要從每一帶區集分配的組塊數量的可用組塊的組塊串,從每一帶區集分配可用組塊的組塊串,以及針對可用組塊的每一組塊串,在組塊數據庫中創建與可用組塊的組塊串關聯的條目,其中該條目包括組塊串的長度。
本發明可以在不偏離本發明的真正范圍的情況下以其他特定的形式實現。在所有的方面將所描述的實施例僅認為是示例性的且非限制性的。

關 鍵 詞:
用于 數據 存儲系統 實現 存儲 細粒度 伸縮 分配 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:用于在數據存儲系統中實現存儲的細粒度、可伸縮分配的方法和裝置.pdf
鏈接地址:http://www.rgyfuv.icu/p-6381493.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图