Questions 1-4:
1. If the execution plan shows key lookups, or loop joins, which require disk IO, more than likely it will be 8K read IO, except when the cache is cold, in which case it will be 64K. Scans and large index seek ranges will probably generate 64K or larger IO, I have seen 384K. There are situations that generate 8K sequential. Writes are whatever is required, it you modified 8K pieces, then 8K, if you modified entire 64K extents, then 64K.
2. Partition offset, unless you are Windows 2008, if you created the partitions from the GUI, as oppose to diskpart, you are 31.5K offset, which is serious bad news for RAID 0, 5, and 10. Disk sector size in Windows is always 512 bytes for current and previous generations (hard disks can do bigger, hd vendors want MS to go bigger). RAID stripe in in the RAID controller, probably 64K by default.
3. All RAID 0,5, and 10 should get 64K alignment. single disk JBOD and RAID 1 (2 disks mirrored) don't care, as this affects stripes. Also, if the OS boot drive is not aligned, maybe you don't want to reinstall, so keep the big important data and log off it. I think it is mostly data that this matters. Get the big data files partition aligned. Master, model, pubs, adventure works etc should have very little activity, so who cares.
4. no influence of space efficiency, it improves (reduces) IO for disk access. Keep ntfs cluster size at default 4K if you want space efficiency for many small files. If you have big partitions for just a few SQL related files, don't worry. ie file server and sql server should be separate.
article questions:
1. correct
2. you can align C, but save this for the next OS install
3. 2000 and 2003 do the goofy 31.5K (from the GUI), 2008 does 1MB align
Try to find the powerpoint: Partition Alignment for SQL Server.
Look up cscript vbs syntax to make sure the script is correct, particularly with respect to carriage returns.
Save the following text as GetPartitionOffsets.vbs
'GetPartitionOffsets.vbs
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_DiskPartition",,48)
'Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_DiskPartition instance"
For Each objItem in colItems
Wscript.Echo "DiskIndex: " & objItem.DiskIndex & " -- Name: " & objItem.Name & " -- StartingOffset: " & objItem.StartingOffset
Next
Execute via command line
C:\>cscript GetPartitionOffsets.vbs