Мартин Петерсен (Martin K. Petersen) усовершенствовал в Linux ядре механизм ввода/вывода информации на SCSI устройства, который теперь позволяет добавлять к данным проверочную информацию (контрольные суммы и не только) на блочном уровне или уровне файловой системы и сохранять ее на физическом носителе.
В своем сообщении Martin объясняет: «Мета-информация может сохраняться в непосредственной близости от данных. Контроллеры дисков, RAID массивы и физические диски могут следить за целостностью записываемой или считываемой информации и прерывать операцию в случае ее нарушения.» В настоящее время такая поддержка реализована только для SCSI дисков, но идет работа над добавлением к списку SATA дисков и SCSI лент. С незначительными доработками, из-за ограничения протокола, формат SATA идентичен SCSI.
Работает это следующим образом: «SCSI диски обычно могут быть отформатированы с размером сектора 520 байт, что добавляет 8 дополнительных байт к каждому сектору. Традиционно эти байты использовались SCSI-контроллерами для хранения внутренней информации. DIF (поле целостности данных) — это расширение управляющих команд SCSI, стандартизирующее формат дополнительных 8 байт, и устанавливающее правила доступа к их содержимому на уровне протокола... При записи данных HBA считывает сектор, размером 512 байт, напрямую из памяти, рассчитывает контрольный блок метаданных и формирует 520-байтовый пакет. Диск осуществляет проверку целостности данных непосредственно перед их записью на магнитный носитель. При чтении диск отправляет 520-байтовый сектор контроллеру, который после осуществления проверки переписывает данные в память.»
|