Во время обычного «чистого» выключения системы хост сообщает устройству хранения данных о том, что происходит отключение и вскоре отключается питание. После получения этого сигнала отключения ожидается, что запоминающее устройство сбросит все данные из энергозависимого хранилища в не энергонезависимое хранилище и затем отправит хосту сигнал подтверждения о том, что накопитель готов к отключению питания. Ожидается, что хост будет ожидать этого подтверждения, прежде чем продолжить процесс завершения работы. Этот процесс обеспечивает отключение питания только после безопасного сохранения данных в энергонезависимой памяти устройства.
Риск неожиданной потери питания
В системах Sangoma Freepbx/pbxact, устройствах NSG и SBC для хранения данных используется стандартный промышленный твердотельный накопитель. Цель этого документа – информировать клиентов о рисках, связанных с неожиданной потерей питания и в целостности данных твердотельных накопителей. Эти риски могут варьироваться от серьезного, в случае потери всего накопителя, до умеренных, в случае нескольких килобайт потерянных данных, до нулевого, в случае накопителя со схемой защиты из-за потери питания. В этом обзоре обсуждается общая иерархия памяти SSD, а также типичный путь данных для операции записи с выделением областей риска. Обсуждаются современные отраслевые решения, которые в настоящее время используются для устранения последствий неожиданной потери питания.
Иерархия памяти
SSD для постоянного хранения данных в качестве памяти использует интегральные схемы. Иерархия памяти системы SSD состоит из энергозависимых носителей данных. Энергозависимое хранилище – это тип памяти компьютера, которому требуется питание для сохранения хранимых данных. Если компьютер выключен, всё, что хранится в энергозависимой памяти удаляется. Энергозависимые носители, такие как DRAM, предлагают очень быстрое время доступа, но требуют постоянного источника питания для хранения данных. Энергонезависимые носители, такие как NAND, не требуют постоянного источника питания для хранения данных, но имеют гораздо более медленное время доступа. Твёрдотельные накопители хранят большую часть своих данных в энергонезависимом хранилище для обеспечения целостности данных и хранят небольшой объем данных, который наиболее часто или совсем недавно использовался в энергозависимом хранилище. Этот метод предлагает компромисс между временем доступа и хранением данных.
Операция записи
На диаграмме ниже показана типичная операция записи с хоста на SSD. Данные запускаются на хосте и отправляются в энергозависимый кэш SSD. Контроллер хранения SSD контролирует эту операцию и отвечает за управление потоком данных, а также за выполнение различных других задач. Как только данные переданы, прежде чем продолжить, хост ожидает, пока SSD предоставит подтверждение о том, что данные были получены. В большинстве конфигураций SSD подтверждает получение данных, как только данные попадают в энергозависимый кэш SSD. Это повышает производительность и помогает снизить количество операций записи, которые необходимо отправить в энергонезависимое хранилище, но также подвергает данные опасности, если питание неожиданно отключается. После того, как данные находятся в энергозависимом кеше, и хост получает сигнал подтверждения, хост продолжает обработку, и прошивка привода позднее решает, когда данные должны быть скопированы в энергонезависимое хранилище диска.
Неожиданная потеря питания
«Плохое отключение» происходит всякий раз, когда питание отключается от накопителя без процесса чистого отключения, описанного выше. Некоторые распространённые примеры этого события: неожиданные отключения питания, случайное отключение питания от компьютера, пользователи, отключающие устройство хранения от хост-системы во время питания и батарея теряет заряд. При отключении питания от диска, защищенного от потери питания, без процесса чистого отключения данные, хранящиеся в энергозависимом кеше диска, будут потеряны. Поскольку данные, находящиеся в энергозависимом кеше, являются данными, которые использовались совсем недавно, или данные, которые используются чаще всего, данные, которые хранятся в энергозависимом кеше, могут быть очень важными пользовательскими данными используемыми операционной системой хоста, или даже данными, которые используются SSD для нормальной работы. Эффект от этой потери питания не вызовет серьезных проблем во время простоя или операции чтения, но если происходит операция записи, существует вероятность некоторой потери данных или ещё хуже. Потеря питания во время записи также называется «Прерывание записи», поскольку операция записи прерывается до её завершения.
Потеря метаданных
В дополнение к потере данных, записанных на диск с хоста, диск также может потерять важные метаданные, относящиеся к тому, как данные отображаются на диске. Каждый раз, когда данные получают доступ или изменяются на SSD, метаданные изменяются в зависимости от состояния данных. Эта информация позволяет контроллеру хранилища выбирать, какие данные должны быть в энергозависимом кеше диска в любой момент времени, а также возможность реализовывать методы, повышающие производительность и выносливость. Потеря или повреждение метаданных может привести к, по-видимому, потере данных. Более драматично, что потеря метаданных может привести к SSD, который больше не сможет функционировать для операции чтения или записи.
Выравнивание износа
Одним из наиболее распространённых методов улучшения хранения является выравнивание износа. Этот метод позволяет накопителю равномерно стареть, отображая новые записи в физические ячейки NAND, у которых было наименьшее количество полных записей. Это необходимо из-за конечной жизни ячеек NAND которая определяется количеством записей, происходящих на них. Этот метод прозрачен для хоста, который использует логический адрес блока (LBA) при выполнении операций чтения/записи на диск. Затем накопитель преобразует LBA в физический адрес блока (PBA) с помощью таблицы флэш-трансляции (FTL). FTL хранится в кеше, и контроллер обязан сбрасывать эту таблицу в энергонезависимую память в те моменты, когда это будет сочтено целесообразным, или во время чистого отключения. Метаданные, связанные с каждой записанной страницей данных, также содержат информацию, которую можно использовать что бы восстановить FTL, если он потерян, но при следующем включении для восстановления потребуется время. Если и FTL, и метаданные будут повреждены из-за внезапного сбоя питания, данные, хранящиеся на SSD, могут быть потеряны или даже хуже, SSD, в целом, может стать недоступным. Поставщики твердотельных накопителей делают всё возможное, чтобы попытаться предотвратить недоступность даже в случае внезапной потери питания.
Фоновые процессы (сбор мусора)
Другая проблемная область – неожиданное отключение питания во время выполнения фоновых процессов, таких как сбор мусора. Из-за технических ограничений для перезаписи существующих данных в памяти NAND требуется удаление старых данных. Кроме того, память NAND может быть стёрта только в больших наборах битов, называемых блоками, и записана в меньшие наборы битов, называемые страницами, см. диаграмму ниже. Когда посылается команда для перезаписи существующих данных в NAND, вместо перезаписи данных на диске, что потребует цикла копирования, стирания и записи, диск может вместо этого записать новые данные на неиспользуемые страницы и переназначить LBA на новые PBA. Старые данные затем помечаются как недействительные. Позже, когда накопитель не занят обслуживанием хоста, действительные страницы, расположенные в блоке, который содержит недопустимые страницы, могут быть скопированы на свободные страницы, так что блок можно стереть и использовать повторно. Для этого данные переносятся из LBA в PBA и обновляются. По этой причине, если питание неожиданно отключается во время сбора мусора, в возможностях преобразования диска могут возникать сбои.
Предотвращение неожиданной потери мощности
Обычно ИБП используется для защиты аппаратного обеспечения, такого как компьютер, телекоммуникационное оборудование, центры обработки данных или другого электрического оборудования, где неожиданное отключение питания может привести к травмам, гибели людей, серьезным сбоям в работе или потере данных. Внешний источник питания от батареи может использоваться для питания хост-системы, которая, в свою очередь, питает SSD. Этот метод защищает диск от непредвиденных событий потери питания, происходящих из-за перебоев в питании, но не от внутренних потерь мощности хост-системы, таких как неожиданное удаление или сбои системы. Системы UPS, как правило, очень дорогие, но могут предложить защиту от наиболее распространенных форм неожиданной потери питания.
Плюсы: обеспечивает защиту всей системы от непредвиденных потерь питания (до тех пор, пока система полностью не отключится, прежде чем разрядится аккумулятор).
Минусы: Дорогие. Не защищают диск от сбоев питания хост-системы или неожиданного удаления.