Диагностика серверов FirstDEDIC

    Автоматическая диагностика – первое, что мы делаем перед продажей дедика.

    Если это новый сервер – проверяем корректность работы и заносим информацию о конфигурациях в базу.

    Если сервер уже был в работе – проверяем исправность компонентов и обновляем данные в базе. Информация на сайте должна соответствовать тому, что мы продаём. Бывает, что прошлому клиенту заменили диски, и нигде это не обозначили, тариф не поменяли. Тогда следующий клиент рискует получить 240 Гб SSD вместо заявленных 4000 Гб HDD.

    Мы учитываем эти риски. Если не обновляем информацию вручную, система делает это автоматически для каждого нового или освободившегося сервера. Загружается по сети с ядром ОС Linux и запускает программу диагностики, которая:

    • собирает данные о новых дисках и заносит в базу, оттуда они выгружаются на сайт;
    • выявляет неисправности сервера.

    Что проверяем


    CPU

    • температуру процессора,
    • корректность работы процессора.

    Для стресс-теста CPU на 30 минут запускается программа mprime-bin.

    /usr/bin/timeout 30m /opt/mprime -t
    /bin/grep -i error /root/result.txt
    

    Каждую минуту ipmi sensors проверяют температуру процессора, допустимая – меньше 60С. Программа выявляет ошибки архитектуры CPU в файлах /proc/kmsg и mprime results.txt.

    RAM

    Некоторые ячейки памяти могут быть повреждены – нужно проверить каждую. Классический Memtest+ не подойдёт. В бесплатной версии он не сохраняет результаты, только отображает на экране. Поэтому мы используем memtester. Запускаем его из под ОС, при этом проверяются ячейки не занятые ОС.

    memtester `cat /proc/meminfo |grep MemFree | awk '{print $2-1024}'`k 5
    

    Смотрим результат запроса: если память работает должным образом программа возвращает 0.

    Хранилище

    Программа находит все устройства в /dev/sd? и /dev/cciss/c0d? и проверяет каждый элемент – диск это или нет.

    hdlist() {
     HDLIST=$(ls /dev/sd?)
     HDLIST="${HDLIST} $(ls /dev/cciss/c0d? 2>/dev/null)"
     REAL_HDLIST=""
     for disk in ${HDLIST}; do
            	if head -c0 ${disk} 2>/dev/null; then
         REAL_HDLIST="${REAL_HDLIST} ${disk}"
            	fi
     done
     echo "${REAL_HDLIST}"
    }
    

    Теперь нужно проверить все диски.

    HDD

    – полностью очищаем жёсткий диск от данных предыдущего пользователя:

    for DISK in $(hdlist)
      do
        echo "Clearing ${DISK}"
        parted -s ${DISK} mklabel gpt
        dd if=/dev/zero of=${DISK} bs=512 count=1
      done
      if [ "($FULL_HDD_CLEAR)" = "YES" ]; then
      echo "Clearing disks full (very slow)"
      wget -O /dev/null -q --no-check-certificate "${STATEURL}&info=slowhddclear"
      for DISK in $(hdlist)
      do
        echo "Clearing ${DISK}"
        dd if=/dev/zero of=${DISK} bs=1M
      done
      fi
    

    • проверяем значение smart атрибута Reallocated Sectors Count – должен быть не меньше 100,
    • проверяем скорость диска.

    Программа оценивает скорость в трёх смещениях диска: в начале, середине и конце – каждое смещение 4 Гб. Этого достаточно, чтобы сделать общий вывод. Для каждого смещения мы используем эту функцию:

    sysctl -w vm.drop_caches=3 > /dev/null
            	zcav -c 1 -s ${SKIP_COUNT} -r ${OFFSET} -l /tmp/zcav1.log -f ${DISK}
            	if [ $? -ne 0 ]; then
                        	echo err
                        	exit
            	fi
            	SPEED=$(cat /tmp/zcav1.log | awk '! /^#/ {speed+=$2; count+=1}END{print int(speed/count)}')
    

    SSD-накопитель

    Проверяем значение smart атрибутов:

    Media_Wearout_Indicator – это время жизни или износ диска: для нового – 100, минимально допустимое – 10.

    Reallocated_Sector_Count – количество переназначенных секторов – должно быть меньше 100.

    Статус RAID

    Идентифицируем диск по модели RAID и проверяем статус массива. Если он в рабочем режиме, будет “optimal”.

    detect_raid_type() {
      RAIDSTR=$(lspci | grep -i raid)
      if echo ${RAIDSTR} | grep -iq adaptec; then
        # THis is adaptec
        echo "adaptec"
      elif echo ${RAIDSTR} | grep -iqE 'lsi|megaraid'; then
        # THis is LSI
        echo "lsi"
      elif echo ${RAIDSTR} | grep -iq '3ware'; then
        # THis is 3ware
        echo "3ware"
      elif echo ${RAIDSTR} | grep -iqE 'Hewlett-Packard.*Smart'; then
        # THis is HP Smart Array
        echo "HP-SmartArray"
      elif dmesg | grep -q cciss/ ; then
        echo cciss
      else
        echo "unknown"
      fi
    }
    raid_status_adaptec() {
      RSTATUS=$(arcconf getconfig 1 ld | awk -F: '/Status of logical device/ {print $2}')
      if ! echo "${RSTATUS}" | grep -q 'Optimal' ;then
        echo "${RSTATUS}"
        return 1
      fi
    }
    
    raid_status_3ware() {
      echo "We have not support 3ware yet"
      return 0
    }
    
    raid_status_lsi() {
      RSTATUS=$(megacli -LDInfo -Lall -aALL |awk -F: '$1 ~ /State/ {print $2}')
      if ! echo "${RSTATUS}" | grep -q 'Optimal' ;then
        echo "${RSTATUS}"
        return 1
      fi
    }
    
    raid_status_unknown() {
      echo "Unknown RAID"
      return 0
    }
    
    raid_status_cciss() {
      RSTATUS=$(cciss_vol_status /dev/cciss/c*d0)
      if ! echo ${RSTATUS} | grep -q "OK" ; then
        echo "${RSTATUS}"
        return 1
      fi
    }
    

    Сеть

    Проверяем скорость скачивания по сети – должна быть больше 300 Мбит.

    curl -k --progress-bar -w "%{speed_download}" -o /dev/null "($CGI_MGR_URLv4)/speedtest_cgi?id=($AUTH_ID)&func=server.speedtest"
    


    Статистика

    Программа диагностики проверяет в среднем 323 сервера в месяц, 124 из них не проходят тест – эти серверы мы не продаём. Сначала инженеры дата-центра меняют диски, ремонтируют кулеры. CPU и RAM мы обычно меняем по гарантии.

    Посмотрим статистику по рабочим HDD. Для анализа мы взяли 1800 отчётов для разных дисков – всего 103 модели.
    Название атрибута min Ожидаемое значение max Стандартное отклонение Описание
    Temperature_Celsius 14 25.81 40 4.09 25C – отличная температура для диска
    Power_On_Hours 407 24033 59363 12910 Забавно. Некоторые диски наработали по 6 лет
    Reallocated_Sector_Ct 0 92.3496 10728 496 100 – хороший порог
    Raw_Read_Error_Rate 0 32416965 4294967295 126899820.1 Все значения большие. При малейшей проблеме набегает много ошибок на триггере
    SSD Power_On_Hours 10 23159 918502 134915 Больше двух лет – неплохо

    Отличные цифры, теперь проверим сколько в среднем работает HDD. Для этого мы составили статистику по сломанным дискам, ориентировались на Raw Read Error Rate.
    Название атрибута min Ожидаемое значение max Стандартное отклонение Описание
    Power_On_Hours 0 25040 57178 12030 HDD работает 33 ± 16 месяцев. Большой разброс – сложно сделать выводы

    Статистика интересная вещь, но не главная. Диагностику мы делаем не ради цифр, а для клиентов: чтобы в дата-центре были рабочие серверы, а на сайте – обновлённая информация. Тогда каждый клиент получает:

    • сервер нужной мощности – оплата согласно тарифу;
    • надёжное оборудование – никаких перебоев в работе проектов.
    FirstVDS / FirstDEDIC
    44,00
    Компания
    Поделиться публикацией

    Комментарии 6

      +1
      вы уверены, что создание новой таблицы разделов и запись 512 байт 0x00 «полностью очищают жёсткий диск от данных предыдущего пользователя»?
        0
        nope. Это ошибка:
        if [ "($FULL_HDD_CLEAR)" = "YES" ]; then
          echo "Clearing disks full (very slow)"
          wget -O /dev/null -q --no-check-certificate "${STATEURL}&info=slowhddclear"
          for DISK in $(hdlist)
          do
            echo "Clearing ${DISK}"
            dd if=/dev/zero of=${DISK} bs=1M
          done
        fi
        

          0
          Поправили в тексте.
            0
            Как давно вы начали проверять сервера перед продажей? Брал у вас 4 сервера для себя, на двух диски в течении месяца после продажи вышли из строя. Хорошо поддержка быстро и без вопросов сразу сделали замену. Сейчас первым делом после покупки проверяю диски. Было 2 года назад.
              0
              Диагностика запускается в DCImanager уже несколько лет. Если речь идет об HDD дисках, то такая ситуация возможна. Скажите ID услуги, я посмотрю и расскажу подробности.
              0
              По поводу Raw_Read_Error_Rate, выкиньте из статистики все диски Seagate и получите правдивые цифры, на сигадах этот параметр мусорный.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое