4

В моей системе Linux Mint 17.1 для резервного копирования используется жесткий диск Western Digital WD20EZRX. Чтобы минимизировать энергопотребление и продлить срок службы накопителя, я хочу, чтобы жесткий диск обычно находился в режиме ожидания с замедлением вращения и вращался только тогда, когда это необходимо.

Это может быть достигнуто двумя способами: тривиальным подходом будет установка жесткого диска в режим ожидания вручную с помощью hdparm -y /dev/sdb . Однако недостатком будет то, что во время запуска накопитель раскручивается, пока сценарий снова не переходит в спящий режим. Поэтому я бы хотел, чтобы накопитель включался в режиме ожидания, PUIS, чтобы он не вращался в первый раз.

Некоторые накопители WD поддерживают PUIS, хотя Western Digital называется PM2, Power Management 2 Mode . Эта функция включается с помощью перемычек, как описано в этой статье базы знаний WD . Результат этой конфигурации можно проверить с помощью hdparm:

# hdparm -I /dev/sdb | grep "Power-Up In Standby"
   *    Power-Up In Standby feature set

Тем не менее, диск все еще раскручивается во время загрузки, даже до отображения экрана запуска Grub. Может ли это быть неправильно настроенный загрузчик, который ищет операционные системы на всех подключенных жестких дисках?

2 ответа2

3

Ядро Linux раскручивает диск. Взгляните на эти строки из drivers/ata/libata-core.c (исходный код ядра):

if (!tried_spinup && (id[2] == 0x37c8 || id[2] == 0x738c)) {
    tried_spinup = 1;
    /*
     * Drive powered-up in standby mode, and requires a specific
     * SET_FEATURES spin-up subcommand before it will accept
     * anything other than the original IDENTIFY command.
     */
    err_mask = ata_dev_set_feature(dev, SETFEATURES_SPINUP, 0);
    if (err_mask && id[2] != 0x738c) {
        rc = -EIO;
        reason = "SPINUP failed";
        goto err_out;
    }
    /*
     * If the drive initially returned incomplete IDENTIFY info,
     * we now must reissue the IDENTIFY command.
     */
    if (id[2] == 0x37c8)
        goto retry;
}

Если вы прокомментируете эти строки и перекомпилируете ядро, диски не будут раскручиваться. Затем вам понадобится команда для их раскрутки, например, когда hdparm отключает PUIS, он раскручивает диск. Посмотрите на эту ссылку.

Это все, что я знаю о PUIS.

Редактировать: Я только что заметил, что ваш диск раскручивается перед экраном Grub: это означает, что материнская плата раскручивает диск. Вы можете попробовать отключить соответствующий порт sata в вашей конфигурации BIOS/UEFI, если это позволяет, и попробуйте снова. Если он работает, диск будет оставаться неподвижным до тех пор, пока ядро его не раскрутит, после экрана grub и до приглашения пользователя войти в систему, и вы можете найти его в dmesg.

ataX.00: failed to IDENTIFY (SPINUP failed, err_mask=0x4)
ataX.00: revalidation failed (errno=-5)
ataX: SATA link up 6.0 Gbps (SStatus 133 SControl 300)

На этом этапе, если вы взломаете ядро, диск не будет вращаться вообще, как я описал ранее.

Редактировать 2: я нашел лучшую команду, чтобы раскрутить диск:

sg_sat_set_features --feature=7 /dev/sdX

он является частью пакета sg3_utils, требует прав суперпользователя, но хорошо раскручивает диск. Сообщение обновлено на форуме Arch Linux, это мое окончательное решение на данный момент. Небольшое резюме этого поста:

  • если ваш диск с поддержкой PUIS раскручивается перед экраном загрузчика, попробуйте отключить соответствующий порт sata или попробуйте карту контроллера sata PCI-ex
  • перекомпилировать ядро, чтобы отключить команду, которая раскручивает диски в состоянии PUIS
  • используйте sg_sat_set_feature, чтобы раскрутить диск
  • повторно сканировать порт SATA, чтобы получить доступ к разделам
2

Несколько лет назад я искал точную вещь для Linux Mint и старого HD, который также использовался только для случайного хранения данных.

Решения , которые я нашел (не ссылки под рукой больше) были теми же , что это выглядит , как вы обнаружили: несколько жестких дисков могут иметь установку перемычки , которые должны привести привод остаться спящим / не раскручивать во время загрузки. Но это не сработало, мои результаты были такими же, как и у вас, они все равно раскручивались при загрузке. Я не нашел никаких исправлений для этого, насколько я знаю, это был BIOS / GRUB / linux, отдельно или вместе, или просто сам HD, который не слушал.

Я провел тестирование "горячей замены"/"горячей замены" , подключив питание к жесткому диску (SATA), когда компьютер был включен и работает. Он сгенерировал несколько записей журнала (dmesg & /var/log/syslog) и работал успешно. Затем по окончании работы с диском (синхронизация, размонтирование, режим сна /hdparm -y) снова отключите питание. Работал! Но ему, видимо, нужна совместимая материнская плата и операционная система, поэтому YMMV.

Однако вытащить вилку из розетки для использования привода не очень удобно или просто, поэтому я подключил двухполюсный одноходовой переключатель - DPST, в Википедии есть схема - имеет 4 клеммы для 2 отдельных проводов питания (12 В). & 5V?), Чтобы разделить их и одновременно включить / выключить. Подключив его к источнику питания HD, я могу включать и выключать накопитель при необходимости.

Обновить:

Горячая замена используется для работы на Linux Mint 14/15/16, но по какой - то причине он перестал работать 17 и выше, я предполагаю , что некоторые изменения ядер остановили его. Теперь «горячая» замена жесткого диска только работает, но диск считывается поврежденным, только перезагрузка при включении приводит его в действие. Может быть, есть простой способ заставить его работать снова, или требуется какое-то перекомпилированное ядро с некоторыми специальными переключателями ...?

Обновление 2

Горячая замена, видимо, снова работает для Ubuntu 16.04 (Mint 18 тоже должен работать).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .