LINUX.ORG.RU

Вопрос про flush


0

1

Допустим, у меня шло обновление системы и тут внезапно закончилось место на /, а обновлятор все продолжает ставить пакеты.
1) Куда деваются те байты, которые не вошли на диск?
2) Если быстро очистить достаточно места на разделе, незаписанные данные флашнутся туда, или они уже безвозвратно улетели в /dev/null?

★★★★★

По-умолчанию, 5% резервируется для рута, если и они будут израсходованы, обновлятор завершится с ошибкой. Пока этого не произошло, всё нормально.

Black_Shadow ★★★★★
()

>сли быстро очистить достаточно места на разделе, незаписанные данные флашнутся туда, или они уже безвозвратно улетели в /dev/null?

В null ничего улететь не может. Успокойся :)

dikiy ★★☆☆☆
()
Ответ на: комментарий от Black_Shadow

> 5%
Где?

если и они будут израсходованы, обновлятор завершится с ошибкой. Пока этого не произошло, всё нормально.


Сам обновлятор ничего не сказал, а вот последовавший за ним апдейтер пакетов из AUR'а уже начал ругаться, что не может создать директорию /tmp.

pevzi ★★★★★
() автор топика
Ответ на: комментарий от pevzi

Где?

На жёстком диске
man tune2fs:

-m reserved-blocks-percentage
Set the percentage of the filesystem which may only be allocated by privileged
processes. Reserving some number of filesystem blocks for use by privileged
processes is done to avoid filesystem fragmentation, and to allow system dae-
mons, such as syslogd(8), to continue to function correctly after non-privi-
leged processes are prevented from writing to the filesystem. Normally, the
default percentage of reserved blocks is 5%.

Black_Shadow ★★★★★
()
Ответ на: комментарий от dikiy

> В null ничего улететь не может. Успокойся

Ладно тогда, какой путь прошли не вошедшие на диск данные? (:
Вот идут данные на диск, смотрят — места нет. Улетают в зарезервированные 5%. А дальше?

pevzi ★★★★★
() автор топика
Ответ на: комментарий от pevzi

>> В null ничего улететь не может. Успокойся

Ладно тогда, какой путь прошли не вошедшие на диск данные? (:

Вот идут данные на диск, смотрят — места нет. Улетают в зарезервированные 5%. А дальше?

программа вызывает fwrite(данные)

получает отлуп ENOSPC (места нет)

передает управление на соответствующую ветку.

dikiy ★★☆☆☆
()
Ответ на: комментарий от pevzi

>Ладно тогда, какой путь прошли не вошедшие на диск данные? (: Вот идут данные на диск, смотрят — места нет. Улетают в зарезервированные 5%. А дальше?

И да, программа вообще ничего не знает о том, что такое 5% или 10%. Этим всем заведует ОС.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Ну то есть, раз программа (в моем случае pacman) ничего не заподозрила и не выдала ошибок, то значит данные все же попадут на место, которое им предназначалось?

pevzi ★★★★★
() автор топика
Ответ на: комментарий от pevzi

>Ну то есть, раз программа (в моем случае pacman) ничего не заподозрила и не выдала ошибок, то значит данные все же попадут на место, которое им предназначалось?

Да.

dikiy ★★☆☆☆
()
Ответ на: комментарий от anon_666

Да, поясню - данные могут находиться физически в рам в буферах, но место на диске ими _уже занято_ при записи.

anon_666
()
Ответ на: комментарий от anon_666

В общем, ничего не понял (: может поделится кто линком, где разъясняется когда и как данные пишутся на диск?

pevzi ★★★★★
() автор топика
Ответ на: комментарий от pevzi

Проще: если прога не заматерилась - всё ок, не парься.

anon_666
()
Ответ на: комментарий от pevzi

Ничего, что между юзерлэндом и диском куча слоев? Запись обычно выполняется асинхронно, т.е. какое-то время данные будут висеть в грязных буферах, если их постоянно не fsync'ать. ФС работает со специальной областью виртуальной памяти. Точнее раньше оно было реально специальной - buffer cache, а сейчас больше делает вид, что специальное. Legacy, короче. Если ФС не в состоянии хапнуть inode или места на диске, оно возвратит ENOSPC. Как верно подметил dikiy.
Рутовый процесс может писать в зарезервированное место. Очень советую посмотреть шестую лецию видеокурса FreeBSD Kernel Internals: Data Structures and Algorithms по поводу зарезервированного места. =)

Globalmirror
()
Ответ на: комментарий от pevzi

>И как долго они могут ждать освобождения места на диске?

нисколько.

dikiy ★★☆☆☆
()
Ответ на: комментарий от Globalmirror

В общем, ясно, спасибо. Кстати, я еще подозреваю, что не хватило как раз инодов, а не места.

pevzi ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.