вы не упомянули, есть ли у вас аппаратный RAID или вы будете делать это программно через что-то вроде mdadm. моя рекомендация держаться подальше от программного рейда, который реализуется во время и после загрузки вашей системы, потому что он полагается на операционную систему linux для первой загрузки и запуска. Любые перебои в подаче электроэнергии могут привести к повреждению файловой системы, что сведет на нет цель программного рейда.
Это, наряду с настройкой аппаратного рейда, не защищает вас от повреждения файловой системы или неправильной конфигурации системных файлов, в результате чего система либо не загружается, либо не запускается. на мой взгляд это самая частая проблема, а не отказавший винчестер.
с аппаратным рейдом, я думаю, выбор сводится к тому, нужно ли вам, чтобы ваша система всегда работала круглосуточно и без выходных? Если это так, то аппаратный рейд может защитить от одного или нескольких отказавших дисков, что является его основной целью. Если нет, то это может иметь небольшую добавленную стоимость, и вам будет лучше использовать 1 из этих 4 дисков в качестве зеркальной копии (не raid-1), содержащей полную резервную копию жесткого диска вашей операционной системы, чтобы вы могли загрузить любой диск. привод.Поймите, что то, что я говорю, отличается от двух дисков в качестве аппаратного raid-1, потому что, если вы испортите свои файлы при настройке raid-1, оба диска испортятся. Я считаю, что вы обновляете резервную копию диска операционной системы только с того рабочего диска, который, как вы знаете, исправен и правильно настроен. И в качестве предложения, поскольку у вас всего 4 диска, и если вы разделяете мое мнение, что современный жесткий диск Диски имеют низкую частоту отказов:
если диск 1 или 3 не запускается, то у вас есть диски 2 и 4, которые можно использовать и решить проблему.
если диск операционной системы 1 не загружается или выходит из строя, но диск все еще работает, то вы просто переустанавливаете на нем операционную систему linux; все ваши данные находятся на диске 3, и их резервная копия сохраняется на диск 4. вы также можете загрузиться с резервного диска 2, смонтировать и исправить диск 1, выяснив, чем он отличается от рабочего диска2.
Состояние относится к припаркованному состоянию. Это состояние действительно только для ядер от 3.9 до 3.13. Согласно man страница:
state %c
One of the following characters, indicating process
state:
R Running
S Sleeping in an interruptible wait
D Waiting in uninterruptible disk sleep
Z Zombie
T Stopped (on a signal) or (before Linux 2.6.33)
trace stopped
t Tracing stop (Linux 2.6.33 onward)
W Paging (only before Linux 2.6.0)
X Dead (from Linux 2.6.0 onward)
x Dead (Linux 2.6.33 to 3.13 only)
K Wakekill (Linux 2.6.33 to 3.13 only)
W Waking (Linux 2.6.33 to 3.13 only)
P Parked (Linux 3.9 to 3.13 only)
Это состояние также называется Непрерывный сон . См. эту ссылку для получения более подробной информации.
См.http://people.redhat.com/anderson/crash_sources/task.c
char *
task_state_string(ulong task, char *buf, int verbose)
{
long state;
int exclusive;
int valid, set;
if (_RUNNING_ == TASK_STATE_UNINITIALIZED)
initialize_task_state();
if (verbose)
return task_state_string_verbose(task, buf);
if (buf)
sprintf(buf, verbose ? "(unknown)" : "??");
state = task_state(task);
set = valid = exclusive = 0;
if (valid_task_state(_EXCLUSIVE_)) {
exclusive = state & _EXCLUSIVE_;
state &= ~(_EXCLUSIVE_);
}
if (state == _RUNNING_) {
sprintf(buf, "RU");
valid++;
}
if (state & _INTERRUPTIBLE_) {
sprintf(buf, "IN");
valid++;
set++;
}
if (state & _UNINTERRUPTIBLE_) {
if (valid_task_state(_NOLOAD_) &&
(state & _NOLOAD_))
sprintf(buf, "ID");
else
sprintf(buf, "UN");
valid++;
set++;
}
if (state & _ZOMBIE_) {
sprintf(buf, "ZO");
valid++;
set++;
}
if (state & _STOPPED_) {
sprintf(buf, "ST");
valid++;
set++;
}
if (valid_task_state(_TRACING_STOPPED_) &&
(state & _TRACING_STOPPED_)) {
sprintf(buf, "TR");
valid++;
set++;
}
if (state == _SWAPPING_) {
sprintf(buf, "SW");
valid++;
set++;
}
if ((state & _DEAD_) && !set) {
sprintf(buf, "DE");
valid++;
set++;
}
if (state == _PARKED_) {
sprintf(buf, "PA");
valid++;
}
if (state == _WAKING_) {
sprintf(buf, "WA");
valid++;
}
if (state == _NEW_) {
sprintf(buf, "NE");
valid++;
}
if (valid && exclusive)
strcat(buf, "EX");
return buf;
}