Блок и сектор — это одно и то же, или разные вещи?
В логах заметил повторяющуюся строчку:
May 25 09:28:31 host kernel: end_request: I/O error, dev sda, sector 598589956
May 25 13:58:15 host kernel: end_request: I/O error, dev sda, sector 598589956
После перестроения raid-а (которое, кстати, прошло без ошибок) запустил fsck, он починил что-то (визуально это было как файл, в котором ls выдавал вопросики в поле типа, да и не читался он — после fsck файл исчез).
При этом на диске всего 478142528 блока (так говорит /proc/mdstat).
Вот я и думаю: номер сектора (598 589 956) больше, чем всего блоков на диске (478 142 528). Что бы это значило? Может быть, просто файл какой-то битый образовался на разделе, который ссылался «вовне» диска, из-за этого и ошибка возникла? (Проблемы начались после того, как мигнул свет.)
Минимальная адресуемая область — сектор, минимум 512 байт, сейчас чаще 4096 байт. Это физическая единица.В блоке может быть несколько секторов, которые передаются как одна логическая единица. В первом случае адрес задается номером головки, дорожки и сектора, а во втором адрес логический, обработкой и занимается контроллер HDD, скорость передачи при этом вроде будет выше.
Пишу по памяти, раньше было как-то так.
Хорошая тема для статьи, кстати. Думаю, многим было бы интересно почитать, учитывая нюансы разных методов записи на винты, рассмотреть флешки, разные ФС…
Дополнение: это следует из того, что сектор — он сектор и есть, физическое понятие разметки винта. Блок — это уже просто логическое понятие, в разном контексте имеющее разное значение. Любая сущность, определяющая размер данных на винте, понятно что будет кратна минимально адресуемому блоку — сектору. ФС то какая?
Видите, блок в mdstat (и в df, кстати, тоже) — это 4 блока в tune2fs.
Что касается секторов, то как их посчитать, непонятно. Вот что выдает fdisk:
# fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500106780160 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Если перемножить, получим 255*63*60801 = 976768065 — это и есть число секторов? Если это так, то получается 976768065/478142528 = 2 сектора на 1 блок mdstat-а.