2016-12-14

Disk Partition Alignment für SQL-Server

Da das Partition Alignment für den SQL-Server sehr wichtig ist und immer wieder vergessen wird, hier ein paar snippets dazu.
   
 
Basic Disk Partition Offset mit wmic.exe abfragen
C:\>wmic partition get BlockSize, StartingOffset, Name, DeviceID, DiskIndex, Index, NumberOfBlocks, Size
BlockSize  DeviceID               DiskIndex  Index  Name                               NumberOfBlocks  Size          StartingOffset
512        Disk #0, Partition #0  0          0      Datenträgernr. 0, Partitionsnr. 0  204800          104857600     1048576
512        Disk #0, Partition #1  0          1      Datenträgernr. 0, Partitionsnr. 1  104646656       53579087872   105906176
512        Disk #1, Partition #0  1          0      Datenträgernr. 1, Partitionsnr. 0  943712256       483180675072  1048576
Auf der HDD mit DiskIndex 1 (Laufwerk D:) liegen die Daten vom SQL-Server. Wie hier zu sehen ist der StartingOffset bei 1MB (1048576 Bytes)
 





So sehen die Festplatten in der Datenträgerverwaltung aus (Diskmgmt.msc)

File Allocation Unit Size abfragen

C:\>fsutil fsinfo ntfsinfo d:
NTFS-Volumeseriennummer :           0xcb8b7a13d76713fa
Version :                           3.1
Anzahl der Sektoren :               0x00000000383fe7ff
Gesamtzahl Cluster :                0x000000000707fcff
Freie Cluster :                     0x0000000001b0683a
Insgesamt reserviert :              0x0000000000000000
Bytes pro Sektor :                  512
Bytes pro physischen Sektor :       <Nicht unterstützt>
Bytes pro Cluster :                 4096
Bytes pro Dateidatensatzsegment :   1024
Cluster pro Dateidatensatzsegment : 0
MFT-gültige Datenlänge :            0x0000000000a00000
MFT-Start-LCN :                     0x00000000000c0000
MFT2-Start-LCN :                    0x0000000000000002
MFT-Zonenstart :                    0x00000000000c0a00
MFT-Zonenende :                     0x00000000000ccec0
RM-Bezeichner:        AB0E95F2-51A2-AE11-AC87-0031549C000F

Die File Allocation Unit Size (Bytes pro Cluster) ist hier 4096 (4KB), die HDD ist damit nicht aligned. Warum sich das negativ auf die IO-Performance auswirken kann, ist im obigen Link/Dokument unter "Appendix: Disk Partitioning Alignment Internals" beschrieben.
Mit Diskpart.exe die Festplatte formatieren
Hier ist ein Beispiel, bei dem das Laufwerk D:, auf Festplatte 1 erstellt wird, ausgerichtet mit einem Offset von 1.024 KB und formatiert mit einer Datei Zuordnungseinheit (Cluster) von 64 KB. 

C:\>diskpart
Microsoft DiskPart-Version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
Auf Computer: LOCALHOST
DISKPART> list disk
  Datenträger ###  Status         Größe    Frei     Dyn  GPT
  ---------------  -------------  -------  -------  ---  ---
  Datenträger 0    Online           50 GB  1024 KB
  Datenträger 1    Online          450 GB  1024 KB
DISKPART> select disk 1
DISKPART> create partition primary align=1024
DISKPART> assign letter=D
DISKPART> format fs=ntfs unit=64K label="MyFastDisk" nowait
 

1 comment: