• As mentioned - there are plenty of different layers , possible reasons - I/O subsystem problems,I/O subsystem misconfiguration,Fragmentation,Excessive I/O requested by SQL Server,Inefficient placement of data files on disk

    From SQL Server to disk there are plenty of different APIs to create this situation , for some extra details on mechanics , check this link

    SQL Server - IO Requests taking longer than 15 seconds to complete

    Troubleshooting the issue , particuarly in a shared environment , with shared services, SVC etc , SAN replication etc can be a challenge.