создать raid1 из существующего локального тома lvm

resize2fs и другие инструменты из набора e2fsprogs предполагают, что системный вызов read либо возвращает весь запрошенный размер, либо встречает ошибку. В общем случае это не так: read может возвращать меньше, вы должны вызывать его в цикле. Я думаю, что ядро Linux гарантирует, что read возвращает все данные с блочных устройств в некоторых обстоятельствах, но я был укушен этим в прошлом, когда e2fsprogs делал неверные предположения о ядре.

Тот факт, что e2fsprogs не зацикливается на read, на самом деле является ошибкой. В лучшем случае это ограничение: возможно способ написания кода корректен для некоторых версий ядра Linux при обращении к блочному устройству. Но это ограничение нигде не задокументировано. Код определенно глючит при обращении к файлу образа.

Проверьте журналы ядра на наличие ошибок. Если ядро сообщает об ошибке, значит проблема не в ошибке resize2fs (или, по крайней мере, не более чем плохое сообщение об ошибке).

Если ядро не сообщает об ошибках диска, запустите

strace -o resize2fs.strace sudo resize2fs /dev/sda2 115G

и проверьте системные вызовы read.

read(3, "…", REQUESTED)                = READ

Если REQUESTEDREAD, происходит короткое чтение. Если вы это заметили и можете воспроизвести, стоит сделать сообщение об ошибке. Объясните, как именно это произошло: точная версия ядра, как было скомпилировано ядро, точная версия resize2fs, какой аппаратный драйвер управляет /dev/sda, на какой виртуальной машине он запущен. Я рекомендую сообщить об ошибке в Ubuntu, а не в upstream, так как upstream часто не умеет общаться с неспециалистами.

3
01.02.2016, 00:34
0 ответов

Теги

Похожие вопросы