나는 항상 작동할 스토리지 서버(GNU/Linux 또는 FreeBSD 기반)를 구축하고 싶습니다. 데이터 손상을 방지하기 위해(저는 그런 문제가 없었기 때문에 일어날 가능성이 낮지만 후회하는 것보다 안전하는 것이 좋습니다) ECC RAM을 사용하고 싶습니다.
EDD(?)만큼 좋지는 않지만(훨씬 더 비쌉니다) 추가 보호 기능을 제공합니다. ECC는 단일 비트 오류만 수정하는 것 같습니다.
ECC 등록 RAM은 Intel Xeon 또는 AMD interlagos/magny-cours/valencia g34 또는 c32와 같은 워크스테이션/서버 보드에서만 사용할 수 있습니다.
ECC 언버퍼링은 Asus 보드의 Intel Xeon lga1155 또는 AMD AM3+에서 사용할 수 있습니다.
두 번째 옵션은 프로세서와 마더보드 측면에서 훨씬 저렴할 것이며 16GB 이상의 RAM이 필요할지는 의문입니다(버퍼되지 않은 4x4GB ECC는 가장 저렴한 스틱입니다).
내가 갖고 있는 의심은 (주로 asus am3+ 보드와 관련하여): ECC 버퍼링되지 않은 RAM이 ECC 등록 RAM만큼 좋은가요(안전성과 신뢰성의 관점에서)? 아니면 더 나쁜 선택일까요? 나는 속도에 별로 관심이 없다.
자세한 내용: 서버는 최대 24개의 3.5인치 드라이브가 장착된 서버 케이스를 사용하며 가능한 한 적은 양을 소비해야 합니다. 그런 의미에서 LGA1155는 두 배의 가격으로 다른 제품(>80W)에 비해 더 나은 선택(TDP ~ 20-95W)인 것 같습니다. 어떤 제안이라도 환영합니다. 유휴 상태에서 120W 미만이라고 가정해 보겠습니다(하드 디스크 24개 중 10개).
답변1
글쎄, 서버 RAM 범위가 아닌 16GB RAM만 사용하는 경우 표준적인 데스크톱 RAM/sys를 사용해도 괜찮을 것입니다.
스토리지 서버만이라면 그렇게 많은 CPU 성능도 필요하지 않습니다.
말씀하신 대로 Sandy Bridge를 사용하면 멋지고 성능이 뛰어나며 안정적인 시스템을 얻을 수 있습니다.
16GB RAM 범위에 관해 말하면 ECC 문제에 대해 걱정할 필요가 없습니다.
답변2
ECC는 단일 비트 오류만 수정하는 것 같습니다.
옳은. 더 많은 오류를 수정하려면 더 많은 비트가 필요합니다. 현재로서는 이미 8비트의 정보를 저장하기 위해 10비트를 사용하고 있으며, 단일 비트 수정과 최대 2비트의 오류 감지를 허용하기 위해 메모리 칩의 20%를 '낭비'하고 있습니다.
다음과 같이 작동합니다. 0
또는 을 상상해 보세요 1
. 둘 중 하나를 읽는다면 내가 올바른 내용을 읽었기를 바랄 뿐입니다. 우주 방사선이나 불량 칩으로 인해 0이 1로 바뀌었다면 나는 결코 알 수 없습니다.
과거에는 패리티를 사용하여 이 문제를 해결하려고 했습니다. 패리티는 저장된 8비트당 9번째 비트를 추가했습니다. 바이트에 0이 몇 개 있고 1이 몇 개 있는지 확인했습니다. 9번째 숫자는 짝수로 설정되었습니다. (짝수 패리티의 경우) 바이트를 읽었는데 숫자가 잘못된 경우 뭔가 잘못되었음을 알 수 있습니다. 그래도 어느 비트가 잘못되었는지는 알 수 없습니다.
ECC는 이를 확장했습니다. 10비트와 복잡한 알고리즘을 사용하여 단일 비트가 뒤집힌 시기를 검색합니다. 또한 원래 값이 무엇인지도 알고 있습니다. 이를 수행하는 방법을 설명하는 매우 간단한 방법은 다음과 같습니다.
s를 모두 0
로 바꾸세요 000
. s를 모두 1
로 바꾸세요 111
.
이제 6가지 조합을 읽을 수 있습니다:
000
001
010
100
101
111
우리는 원래 무엇이 저장되었는지 결코 100% 확신할 수 없습니다. 만약 우리가 읽었 000
다면 그것은 우리가 기대했던 것과 똑같았을 수도 000
있고, 세 비트가 모두 뒤집혔을 수도 있습니다. 후자는 가능성이 거의 없습니다. 비트는 무작위로 뒤집히지는 않지만 발생합니다. 쉬운 계산을 위해 10번에 한 번 그런 일이 발생한다고 가정해 보겠습니다(현실은 훨씬 적습니다). 이는 올바른 값을 읽을 수 있는 다음과 같은 기회로 작동합니다.
000
-> 둘 중 하나 000
(99.9% 확실함) 또는 트리플 플립(1/1000 확률)
001
-> 우리는 뭔가 잘못되었다는 것을 알고 있습니다. 그러나 그것은
000
1비트가 뒤집혔거나(1:10 확률),
111
2비트가 뒤집혔습니다(1:100 확률). 따라서 마치 읽은 것처럼 처리 000
하고 오류를 기록해 보겠습니다.
010
-> 위와 동일합니다.
100
-> 위와 동일합니다.
011
-> 위와 동일하지만 다음과 같다고 가정합니다.111
101
-> 위와 동일하지만 다음과 같다고 가정합니다.111
110
-> 위와 동일하지만 다음과 같다고 가정합니다.111
111
-> 둘 중 하나 111
(99.9% 확실함) 또는 트리플 플립(1/1000 확률)
111
-> 둘 중 하나 000
(99.9% 확실함) 또는 트리플 플립(1/1000 확률)
ECC는 유사한 트릭을 수행하지만 더 효율적으로 수행합니다. 8비트(1바이트)의 경우 감지하고 수정하는 데 10비트만 사용합니다.
ECC 등록 RAM은 워크스테이션/서버 보드에서만 사용할 수 있습니다. 버퍼링되지 않은 ECC는 Asus 보드의 Intel Xeon lga1155 또는 AMD AM3+에서 사용할 수 있습니다.
나는 이미 ECC 부분이 무엇인지 언급했는데, 이제는 등록된 부분과 버퍼링되지 않은 부분입니다.
최신 CPU에서 메모리 컨트롤러는 오래 전부터 AMD Opteron 칩과 Intel용 Core i 시리즈부터 CPU 다이에 있습니다. 그러면 대부분의 데스크탑 CPU는 RAM을 보유하고 있는 DIMM 소켓과 직접 통신합니다. 작동하며 추가 논리가 필요하지 않습니다. 구축 비용이 저렴하고 메모리 컨트롤러에서 RAM으로 이동하는 데 지연이 없기 때문에 속도가 빠릅니다.
그러나 메모리 컨트롤러는 제한된 전류만 고속으로 구동할 수 있습니다. 이는 마더보드에 추가할 수 있는 메모리 소켓 수에 제한이 있음을 의미합니다. (더 복잡하게 하려면 DIMM이 얼마나 사용할 수 있는지에 따라 메모리 순위가 결정됩니다. 이미 길기 때문에 건너뛰겠습니다.)
서버 보드에서는 데스크탑 시스템보다 더 많은 메모리를 사용하려는 경우가 많습니다. 따라서 "레지스터" 버퍼가 메모리에 추가됩니다. DIMM의 칩에서 읽은 내용은 먼저 이 버퍼에 복사됩니다. 클록 사이클 이후에 이 버퍼는 메모리 컨트롤러에 연결되어 데이터를 전송합니다.
이 버퍼/레지스터는 작업을 지연시켜 메모리 속도를 느리게 만듭니다. 이는 바람직하지 않으므로 메모리 뱅크가 많은 보드에서만 사용/필요합니다. 대부분의 소비자 보드에는 이것이 필요하지 않으며 대부분의 소비자 CPU는 이를 지원하지 않습니다.
직접 연결된, 버퍼링되지 않은 RAM과 버퍼링/등록된 RAM은 어느 쪽이 다른 쪽보다 좋거나 나쁜 경우가 아닙니다. 단지 얼마나 많은 메모리 슬롯을 가질 수 있는지에 따라 서로 다른 장단점이 있습니다. 등록된 RAM을 사용하면 어느 정도 속도(그리고 비용도 들 수 있음)를 희생하여 더 많은 RAM을 사용할 수 있습니다. 가능한 한 많은 메모리가 필요한 대부분의 경우, 추가 메모리는 약간 느린 속도로 실행되는 RAM을 보완하는 것 이상입니다.
내가 갖고 있는 의심은 (주로 asus am3+ 보드와 관련하여): ECC 버퍼링되지 않은 RAM이 ECC 등록 RAM만큼 좋은가요(안전성과 신뢰성의 관점에서)? 아니면 더 나쁜 선택일까요? 속도에는 별로 관심이 없습니다.**
안전성과 안정성의 관점에서 ECC-unbuffered와 ECC-registered는 동일합니다.
자세한 내용: 서버는 최대 24 x 3 ½'' 드라이브가 장착된 서버 케이스를 사용하며 가능한 한 적은 양을 소비해야 합니다.
24개의 드라이브는 많은 전력을 소비하게 됩니다. 드라이브에 따라 금액이 달라집니다. 내 140GB 15K RPM SAS 드라이브는 유휴 상태에서 1TB SATA 7k2 디스크와 마찬가지로 단 10와트만 소모합니다. 사용 시 둘 다 더 많이 그립니다.
여기에 24를 곱합니다. 유휴 상태에서 24x10W는 디스크 플래터의 회전을 유지하고 공기 저항을 극복하기 위해 240W를 의미합니다. 사용하기 위해 두 배로 늘리십시오.
그런 의미에서 LGA1155는 두 배의 가격으로 다른 제품(>80W)에 비해 더 나은 선택(TDP ~ 20-95W)인 것 같습니다.
인텔은 이 글을 쓰는 시점과 언급한 CPU에 대해 저전력 CPU에서 더 좋습니다.
어떤 제안이라도 환영합니다. 유휴 상태에서 120W 미만이라고 가정해 보겠습니다(하드 디스크 24개 중 10개).
FreeBSD를 선택한다면 ZFS를 자세히 살펴보세요. 그것은 좋을 수 있습니다. 많은 고급 기능(예: 중복 제거 및/또는 압축)은 심각한 CPU 성능을 사용하며 충분한 메모리가 필요합니다. ZRAID와 함께 기본적으로 사용하기 위한 ZFS는 언급한 CPU 세트와 16GB 모두에서 잘 작동하지만 중복 제거와 같은 기능을 활성화하는 경우 디스크 용량에 필요한 권장 메모리를 주의 깊게 살펴보아야 합니다. 스토리지 TB당 최대 5GB 권장일부 가이드.
두 가지 더:
- 드라이브 연결에 대해서는 아무 것도 보지 못했습니다. 일부 보드는 최대 10개의 SATA 포트를 사용할 수 있습니다. 하지만 그 이상을 위해서는 추가 카드가 필요합니다. 하드웨어 RAID를 고려한다면 처음부터 이를 계획하는 것이 가장 좋습니다.
- 드라이브 오류: 사용해야 합니다.SATA 포트 승수그런 다음 SATA 드라이브에 장애가 발생하면 어떻게 작동하는지 주의 깊게 살펴보십시오. 예쁘지 않은 경우가 많습니다. 홈 설정에는 큰 문제가 아니지만 엔터프라이즈급은 아닙니다. 개별 드라이브가 오류를 처리하는 방법도 고려해야 할 수도 있습니다. 일부 드라이브에 "NAS" 또는 "RAID"용으로 표시되는 이유는 해당 드라이브가 일반 드라이브와 다르게 오류를 처리하기 때문입니다. RAID가 없으면 드라이브가 가능한 한 여러 번 재시도하기를 원합니다. RAID를 사용하면드라이브가 빨리 고장나기를 원합니다, 다른 사본에서 읽을 수 있습니다.
답변3
두 가지 별도의 문제입니다.
ECC 대 비 ECC
- 가동 시간이 중요한 곳에서는 ECC를 사용하세요
- 비용이 더 많이 듭니다. 8개 대신 9개의 칩이 필요합니다(배수).
- 마더보드는 그것을 사용하기 위해 그것을 지원해야합니다
등록된 것과 버퍼되지 않은 것:
- 등록된 DIMM을 사용하면 더 많은 총 RAM을 설치할 수 있습니다.
- 메모리 컨트롤러 인터페이스의 전기적 부담 감소
- 단, 설치된 모든 DIMM을 등록해야 합니다.
- 등록형으로 업그레이드하는 경우 버퍼링되지 않은 DIMM을 제거해야 합니다.
- 또한 비용이 더 많이 들고 액세스 주기가 더 느립니다.
- 버퍼링되지 않은 경우 지연 시간이 약간 더 낮습니다.
- 어쨌든 모든 무작위 액세스에는 많은주기가 걸립니다
- 참고 절대 액세스 대기 시간(나노초 단위의 시간)은 PC에서 DRAM을 사용한 이력에 비해 크게 개선되지 않았습니다.
- 대신 비용, 용량 및 대역폭이 크게 향상되었습니다.
- 메모리 캐시는 어쨌든 대부분의 메모리 액세스에 대한 대기 시간을 숨깁니다.
- 대기 시간이 길수록 단일 스레드 '실시간' 성능이 가장 저하됩니다.
- 일반적으로 '서버' 사용 사례에는 큰 영향을 미치지 않습니다.
- 대역폭과 전체 성능에 차이가 없거나 최소화됩니다.
- 순차 액세스 대역폭은 영향을 받지 않습니다.
- L2/L3 캐시는 실제 액세스 패턴이 대부분 캐시의 한 번에 행을 대체하므로 일반적으로 '버스트' 액세스라는 것을 의미합니다.