星期四, 8月 30, 2007

大型邏輯單位支援與 Windows Server 2003 SP1

更新日期: 2005 年 3 月 29 日

此文章在闡述關於 Winodws 作業系統將支援磁碟邏輯單位大小大於 2 TB 的變革。

在 過去的版本中,Windows 使用 32 位元 block number 在低階的儲存 Stack。事實上單一磁碟裝置的支援仍是有限的有可能是一組硬體的 RAID (通常我們稱之為虛擬磁碟或是 LUNs) 它的容量不會超過 2 Terabyte (TB)。要取得容量大於 2 TB 的儲存單位,一則您可以使用磁碟區管理員 (Volume Manager) 結合多個 LUN,結果可能為 RAID0 磁碟區上限為 64 TB 或為 RAID5 其上限為 62 TB。RAID1 也僅能容納最大上限為 2 TB。然而,Volume Manager Set 的使用,會導致效能的問題以及造成某些儲存管理方式的困難或難以達成。

對照之下,檔案系統使用 64-bit signed byte offset,這表示絕對位址檔案系統其實際上限為 254 個 512-byte block。NTFS 則沒有這麼多,因為它支援 32-bit Clustet Number 乘以每個 Cluster 的上限 64K,其值等於 256 TB。

其它較複雜的因素為 Master Book Record (MBR) 分割類別的使用,它僅可容納最多到 232 block。而 GUID Partition Tables (GPT) 則可支援更大數量的 block,但是 windows 僅在 Intel Itanium 機器才有支援 GPT。

注意:Microsoft 建議您關於 Windows Server 2003,應使用 512 Bytes 磁區之磁碟 (動態磁碟將僅可作用於 512 Bytes 磁區)。Windows Vista 與之後的作業系統將支援 4KB 大小之磁區。

*
本頁內容
Windows 支援超過 2 TB 的邏輯單位Windows 支援超過 2 TB 的邏輯單位
詳細內容詳細內容
新的 API 與介面新的 API 與介面
附註附註

Windows 支援超過 2 TB 的邏輯單位

在安裝了 Windows Server 2003 Service Pack 1 (SP1) 或 Windows XP 64 位元版本 (x64) 之後,這些限制將會變更。

Microsoft 在 Disk/Class 層階增加支援 64 位元的 Block Number,需使用包含在 SCSI-3 Block Commands-2 命令集中的新的 SCSI Command。Microsoft 同時啟用 GPT 支援於所有的 Windows Server 2003 SP1 平台。舉例來說,因為這個變更,現在一台 Itanium 機器上的 GPT 分割的資料儲存可以傳送到 32 位元機器為了資料採擷或封存的目的。

新的限制為:

基本或動態磁碟區大小為:264 blocks = 273 bytes

在 Windows 實際可使用的最大的 NTFS 檔案系統大小為:256 TB

附註:若磁碟裝置含有大於 2 TB 的磁碟空間則必須轉換成 GPT 格式方可使得所有的磁碟空間皆可被使用。如果裝置使用 MBR 格式,則磁碟空間超出 2 TB 將無法使用。

詳細內容

如果您設計製造儲存體子系統或 PCI RAID 裝置,您可以透過下列命令建構 SCSI Block Commands-2 16-byte Command Descriptor Blocks (CDBs) 來啟動支援這個功能:
READ CAPACITY (16) 9Eh
READ (16) 88h
WRITE (16) 8Ah
VERIFY (16) 8Fh

同時,您必須支援 REASSIGN BLOCKS (07h) 的 Long LBA 版本 (若您支援區塊重新分派)。為了避免造成困惑,下列說明將告訴您 Windows 如何使用之前所列的命令建置此支援。

READ CAPACITY:在 磁碟初始期間,Disk Class 驅動程式會送出 READ CAPACITY (10) 去查詢裝置的容量。若此命令傳回值 0xFFFFFFFF 表示將送出 RETURNED LOGICAL BLOCK ADDRESS a READ CAPACITY (16) 以取得完整的磁碟容量。如果命令執行成功,此裝置將被標記為 16-byte CDB 合格裝置。否則,表示它不可使用。

READ/WRITE/VERIFY:若裝置在初始期間已被標記為 16-byte 合格裝置,僅有 READ (16)、WRITE (16) 以及 VERIFY (16) 可被使用於此裝置。10-byte 版本的命令將不會被傳送。

REASSIGN BLOCKS:6-byte CDB 將傳送邏輯區塊清單到裝置。對於已標記為 16-byte 的裝置,LONGLBA 位元將會被設定且清單將包含 8-byte LBAs。

新的 API 與介面

Disk Class 驅動程式使用下列新的 IOCTL。應用程式與核心模式驅動程式都可呼叫這些 IOCTL。若驅動程式呼叫了這些 IOCTL 其中的一個,則它必須從執行在 IRQL <>

IOCTL_DISK_REASSIGN_BLOCKS_EX
IOCTL 與記錄於 DDK 中的 IOCTL_DISK_REASSIGN_BLOCKS 介面是相似的。此 IOCTL 使用 REASSIGN_BLOCKS_EX 結構,其中 8 bytes 定義用於 LBA。

IOCTL_STORAGE_READ_CAPACITY
IOCTL 可用於查詢磁碟容量並經由 READ CAPACITY 命令傳回值。此命令同時提供總磁碟長度單位為 byte。IOCTL 會傳回 STORAGE_READ_CAPACITY 結構,其定義如下。

回傳值

STATUS_SUCCESS (NO_ERROR)
輸出緩衝區包含 STORAGE_READ_CAPACITY 結構。

STATUS_DEVICE_BUSY (ERROR_BUSY)
無法從裝置取得 READ CAPACITY 資料。

STATUS_INSUFFICIENT_RESOURCES (ERROR_NO_SYSTEM_RESOURCES)
記憶體配置失敗。

STATUS_BUFFER_OVERFLOW (ERROR_MORE_DATA)
輸出的緩衝區大小小於 STORAGE_READ_CAPACITY 結構的大小。

STORAGE_READ_CAPACITY 結構定義

typedef struct _STORAGE_READ_CAPACITY {
// 版本編號, STORAGE_READ_CAPACITY 結構的大小
ULONG Version;
// 此為日期值傳回的大小
// STORAGE_READ_CAPACITY 結構的大小
ULONG Size;
// 每一個 Block 中 Byte 的數目
ULONG BlockLength;
// 磁碟中 Block 的總數量
// 此將為最後一個 LBA + 1
LARGE_INTEGER NumberOfBlocks;
// 磁碟大小單位為 Byte
LARGE_INTEGER DiskLength;
} STORAGE_READ_CAPACITY, *PSTORAGE_READ_CAPACITY;

附註

因 為所有的東西都越來越大, 所以花費的時間也越來越長。一個超大型的磁碟區在執行磁碟檢查 (Chkdsk) 與搜尋時都需花上較長的等候時間,特別當您有數目龐大的檔案時。您並不一定要使用這種儲存配置。而是當您主要使用的應用程式需要使用到大量的資料庫 / 資料倉儲或用來儲存大量的影像資料像是 HD Video。

此 變更並未套用至 SCSI、Fibre Channel 或 iSCSI 等 HBA/controlle 驅動程式,因為通常它們並不需要。通常,系統設計者應該詢問他們的介面卡廠商。有些 PCI RAID 廠商現在也會選擇更新他們的驅動程式與韌體提供此支援在他們的 PCI RAID 卡上。

現在 Windows 支援的 USB、IEEE 1394 或 ATA (單顆 HD;ATA/SATA RAID 卡未來將可使用此功能) 並無任何的變更。

32 位元版本的 Windows XP SP2 並無任何變更。

32 位元版本的 Windows Server 2003 Service Pack 1 (SP1) 與 Windows XP 64-bit Edition (x64) 將無法從 GPT 磁碟啟動。

早期 32 位元版本的 Windows 作業系統 (Windows 9x、Windows NT 4.0、Windows 2000 以及 Windows XP) 不支援 GPT 磁碟。


http://www.microsoft.com/taiwan/whdc/device/storage/LUN_SP1.mspx

1 則留言:

匿名 提到...

Play Baccarat | Play With Free $10 No Deposit Bonus | FEBCASINO
You'll find febcasino hundreds of online 메리트 카지노 쿠폰 casino games including blackjack, craps, 온카지노 roulette, craps, and more in one place at febcasino.com.