Я пытаюсь создать сервер виртуализации. Однако я задавал себе вопрос: следует ли мне использовать RAM без ECC для этого сервера или нет?
Это потому, что я нашел процессор Xeon, который укладывается в выделенный мне бюджет. Однако, если я хочу иметь ЦП, поддерживающий ОЗУ с ECC, это выходит за рамки текущего бюджета.
На сервере будет работать около 10 виртуальных машин 24/7, смешанные с виртуальными машинами Linux и Windows.
Есть какие-нибудь мнения по этому поводу?
Это зависит от того, согласны ли вы с более высоким риском повреждения памяти.
ECC никоим образом не гарантирует, что все ошибки будут исправлены или обнаружены - но он довольно хорошо справляется с обнаружением и даже исправлением довольно многих типов сбоев. Это особенно актуально, если ваш стек работает на одном узле, а не на HA / реплицируется на нескольких узлах. Если у вас есть только один пул памяти, который действует как единственный источник истины, вам лучше сделать его хорошим.
Тем не менее, все дело в варианте использования. Допустим, у вас выходит из строя модуль (или все в порядке, и вы живете близко к звезде), и вы начинаете незаметно искажать данные (здесь мы не используем ECC). Влияет ли на ваш бизнес, если некоторые данные будут потеряны или повреждены до обнаружения проблемы? В большинстве случаев это так, поэтому стоит потратить немного больше денег на оборудование, чтобы уменьшить вероятность в этих случаях.
Как правило, приложения и их разработчики в значительной степени полагаются на надежность канала данных. Не будет ли менее надежный стек тратить много времени администратора и разработчика? Это может оказаться дороже, чем просто покупка лучшего оборудования.
Отчасти это можно смягчить, если ваша инфраструктура кластеризована и реплицирована, поскольку существует множество систем хранения и приложений, которые могут выполнять контрольную сумму набора данных, охватывающего несколько аппаратных узлов. Один плохой узел не работает обязательно испортить кучу в этих системах, поэтому в некоторых масштабах вы можете позволить себе уменьшить избыточность для каждого узла и проверку ошибок. Однако это не похоже на ситуацию.