SQL Server에 권장되는 디스크/파티션 설정

SQL Server에 권장되는 디스크/파티션 설정

SQL Server용 디스크/파티션을 설정하는 가장 좋은 방법에 관한 조언을 찾고 있습니다. 내 주요 관심사는 다음과 같습니다.

SQL 파일은 어떻게 분리해야 하나요(데이터 파일, 로그, 임시)?

많은 HDD를 RAID로 구성하고 공간을 분할하는 것이 더 낫습니까, 아니면 각 RAID에 대해 더 적은 수의 디스크로 여러 개의 RAID를 만드는 것이 더 낫습니까?

데이터와 로그 파일은 다른 RAID 유형에 있어야 합니까?

기본 데이터베이스(master,msdb 등...)는 C:에 위치해야 합니까, 아니면 다른 데이터/로그 파일과 동일한 위치에 있어야 합니까?

답변1

다음은 좋은 블로그 게시물입니다.http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

디스크 정렬에 대한 백서:http://msdn.microsoft.com/en-us/library/dd758814.aspx

즉, OS는 RAID 1에 있어야 하고, 데이터 파일은 RAID 10(가급적)에, 로그 파일은 RAID 1에 있어야 합니다.

SQL 성능 문서:http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

최고의 10가지 성능 팁에 대한 PDF:http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf

또한 성능상의 이유로 TEMPDB를 별도의 디스크에 저장하는 것을 잊지 마십시오. 나는 Paul Randal이 여기로 와서 그 이유에 대해 잠시 후에 여러분의 마음을 사로잡을 것이라고 확신합니다.

MS는 tempdb에 대한 이유를 말합니다.http://msdn.microsoft.com/en-us/library/ms175527.aspx

답변2

이것은 '의존적'이라는 큰 질문입니다.

저는 스토리지 전문가가 아니기 때문에 개별 RAID 어레이를 만드는 방법에 대한 질문에 대답할 수 없지만 나머지 부분에 대해서는 제가 도와드릴 수 있습니다.

가장 먼저 고려해야 할 사항은 다양한 데이터베이스(OLTP(읽기/쓰기) 또는 DSS/DW(대부분 읽기))의 워크로드가 무엇인지입니다. 읽기/쓰기 워크로드의 경우 중복성과 뛰어난 읽기/쓰기 성능을 제공하는 RAID 1 또는 RAID 10(RAID 1+0)을 살펴봐야 합니다. 대부분 읽기 작업 부하에는 RAID 5를 사용할 수 있습니다. 읽기/쓰기 작업 부하에 RAID 5를 사용하면 안 되는 이유는 쓰기 시 성능 저하가 발생하기 때문입니다.

트랜잭션 로그는 본질적으로 읽기/쓰기(또는 로그 백업이나 복제 등 트랜잭션 로그를 사용하는지 여부에 따라 대부분 쓰기)이므로 RAID 5에 배치해서는 안 됩니다.

즉, 일부 데이터베이스와 워크로드의 경우 데이터 파일은 RAID 5에, 로그 파일은 RAID 1/10에 있을 수 있으며, 다른 데이터베이스의 경우 모든 것이 RAID 1/10에 있을 수 있습니다. 더 나아가, 분할된 데이터베이스가 있는 경우 일부 읽기 전용 데이터와 일부 읽기/쓰기 데이터가 포함될 수 있습니다. 심지어 동일한 테이블 내에 있을 수도 있습니다. 이를 별도의 파일 그룹으로 분할한 다음 각 파일 그룹을 적절한 RAID 수준에 배치할 수 있습니다.

실제 데이터베이스의 분리는 다시 워크로드와 기본 IO 하위 시스템의 기능에 따라 달라집니다. 예를 들어 SAN보다 개별 RAID 어레이에 항목을 저장하려면 더 높은 수준의 분리가 필요할 수 있습니다.

Tempdb는 일반적으로 로드가 많은 데이터베이스이므로 다른 데이터베이스와 별도로 저장해야 하기 때문에 그 자체로 특별한 경우입니다. 시스템 데이터베이스는 과도하게 사용해서는 안 되며 중복성이 있는 한 어디에나 배치할 수 있습니다.

다음은 귀하에게 도움이 될 수 있도록 제가 작성하는 데 도움을 준 백서에 대한 링크입니다.물리적 데이터베이스 스토리지 설계. 또한 IO 하위 시스템이 예상 작업 부하를 처리할 수 있는지 확인하십시오. 이 백서를 참조하세요.배포 전 I/O 모범 사례. 마지막으로 올바른 RAID 스트라이프 크기(최신 시스템에서는 일반적으로 64K 이상), 올바른 NTFS 할당 단위 크기(일반적으로 64K)를 사용하고 Windows Server 2008 이전 시스템에서는 디스크 파티션 오프셋을 올바르게 설정했는지 확인하세요. . 이에 대한 정보와 추가 정보에 대한 포인터, 이러한 방식으로 구성해야 하는 이유는 다음 블로그 게시물을 참조하세요.디스크 파티션 오프셋, RAID 스트라이프 크기 및 NTFS 할당 단위가 올바르게 설정되어 있습니까?.

결론: 워크로드와 IO 하위 시스템 기능을 파악한 다음 그에 따라 구현하십시오.

이것이 당신에게 도움이 되기를 바랍니다.

PS tempdb에 관한 한 이를 구성하는 방법에 대한 큰 문제가 있으며 온갖 종류의 상충되는 정보가 있습니다. 나는 tempdb 데이터 파일 구성에 대한 포괄적인 블로그 게시물을 작성했습니다.TF 1118에 대한 오해.

답변3

내가 설정한 서버에 대한 짧은 대답은 항상 다음과 같습니다.

별도의 물리적 디스크, RAID 1 또는 10(스트라이핑 + 미러링)에 로그

성능 요구에 따라 일반적으로 RAID5 자체 디스크에 데이터베이스

RAID 컨트롤러에 많은 캐시가 있습니다.

OS와 Windows 페이지 파일을 다시 별도의 어레이(일반적으로 미러(Raid 1))에 두는 것이 좋습니다. 이렇게 하면 모든 쓰기 작업이 분리되어 유지되므로 성능이 높아도 모든 작업이 중단되지 않습니다.

내가 과거에 경험한 바는 데이터베이스 쓰기 + 로그 쓰기 + 페이지 파일 쓰기를 수행하면 Raid5 어레이가 정체되고 성능이 엄청나게 저하된다는 것입니다. 문제는 테스트, 개발 등에서 성능이 괜찮을 것이라는 점입니다. 그러나 생산 및 사용량이 급증하면 이 문제는 "예외"로 나타나고 사용자 불만이 급증하게 됩니다.

답변4

여기에는 나보다 훨씬 나은 MSSQL 전문가가 있지만 일반적으로 다음을 제안합니다.

C의 OS 및 코드: - 이는 로컬 디스크여야 하며 RAID1 어레이 쌍이어야 합니다. - 이를 위해 2개의 2.5인치 SAS 146GB 10krpm 디스크를 사용하지만 2개의 SATA 7.2 디스크를 사용할 수도 있습니다. 데이터는 필요한 크기에 관계없이 매우 빠른(10krpm 이상) RAID 1/10, 5/50/6/60 어레이에 있어야 합니다. 우리는 일반적으로 '계층 2'/10krpm 디스크 그룹의 FC SAN LUN에 데이터를 보관합니다. . 로그는 별도의 매우 빠른(15krpm) 소형(10GB 이하?) RAID 1 어레이 쌍에 있어야 합니다. 우리는 FC SAN LUN, 일반적으로 매우 작은 'tier1'/15krpm 디스크 그룹 또는 'tier0'/ SSD 그룹.

어느 쪽이든 성능을 위해 이들 각 덩어리를 별도의 스핀들/어레이에 두기를 원합니다. 물론 모두 단일 디스크에서 작동하지만 성능과 비용의 균형을 찾고 있는 것 같습니다.

우리는 master/tempdb를 일반 데이터베이스와 함께 저장하지만 이를 별도의 데이터 어레이 LUN으로 나눌 수 있습니다.

도움이 되었기를 바랍니다.

관련 정보