Купил винт на полтора терабайта для домашней файлопомойки, если вдруг имеет значение — ST31500341AS. Несколько раз, как я это обычно делаю, прогнал на запись и на чтение весь винт, через dd if=/dev/zero of=/dev/sda и наоборот. Ошибок ввод-вывода нет, SMART чистый (ну точнее ошибки были, но на первом винте, а этот уже после замены).
Делаю через cfdisk один раздел на весь винт, форматирую под xfs, копирую туда содержимое одного из старых винтов, ошибок всё ещё нет. Сравниваю через diff -qr старый винт с новым (я параноик, но это оправдалось) и вижу, что часть файлов на новом винте не читается, в логе attempt to access beyond end of device. Ну думаю может с xfs что-то не то, делаю ext3 — то же самое.
Лезу к гугль, там в основном про то, что разбивка под msdos для больших винтов не подходит, лучше делать разбивку GPT. Ставлю parted (cfdisk это не умеет) и не вижу, как там сделать один раздел на весь диск, не занимаясь вычислениями, где этот раздел должен начинаться, и где заканчиваться. Бред какой-то, cfdisk это умеет, а более новый parted не умеет. Поскольку из того возраста, когда считают сектора на калькуляторе, я уже вышел, решаю вообще забить на разбивку диска.
Форматирую /dev/sda полностью как есть под ext3 (нехорошо, но в общем допустимо), опять копирую туда содержимое старого маленького винта, опять пытаюсь прочитать скопированное и ловлю ту же самую ошибку:
Jan 24 18:47:13 [kernel] attempt to access beyond end of device
Jan 24 18:47:13 [kernel] sda: rw=0, want=2934505480, limit=2930277168
Я абсолютно не представляю, где я мог ошибиться, делая эту ФС. Там всего одна команда: mke2fs на /dev/sda. С самим винтом, насколько я понимаю, тоже всё в порядке.
Кто виноват, что делать?