The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск набора базовых системных утилит GNU Coreutils 9.0, opennews (??), 24-Сен-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


79. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +2 +/
Сообщение от InuYasha (??), 25-Сен-21, 10:09 
Звучит как хардлинки. Но не должно быть хардлинками. I am confus
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

100. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +1 +/
Сообщение от n00by (ok), 25-Сен-21, 15:30 
Хардлинк позволяет изменить оригинал. При copy-on-write попытка изменить копию как раз и приведёт в её созданию физически. Но это мало какие ФС поддерживают.
Ответить | Правка | Наверх | Cообщить модератору

125. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +1 +/
Сообщение от RomanCh (ok), 27-Сен-21, 11:25 
> При copy-on-write попытка изменить копию как раз и приведёт в её созданию физически.

И вот тут мне становится интересно. А что если у меня на диске например, 55 Гб свободного места и я скопировал в качестве временного бэкапа (чтобы только проверить новый конфиг приложения) файл, ну например в 50 Гб размером. В системе ведь останется 55 Гб свободного места по прежнему? Дальше, пока я переписывал конфиг, допустим, какое-то другое приложение создало на том же разделе файл размером в 6 Гб. И тут я такой, наконец, запускаю своё приложение которое работает с оригинальным 50Гб файлом, в частности пишет в него в различные участки.

Вопрос знатокам - что будет в этом случае? CoW начнёт аллоцировать место только под модифицируемые блоки и где-то будет хранить таблицу распределения данных файла (с 0 по смещение 100500 читай тут, со с 100501 читай там, с 100502 по 100600 читай опять тут)? Или попытается целиком скопировать 50 Гб файл?

Ответить | Правка | Наверх | Cообщить модератору

133. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +/
Сообщение от n00by (ok), 27-Сен-21, 16:11 
По определению только под модифицированные блоки потребуется место. Но вопрос хороший. Если файл модифицируется посредством write(), в какой-то момент вызов завершится с ошибкой "не хватает места". А вот что будет, если файл отображён в память и меняется память, куда интереснее. :)
Ответить | Правка | Наверх | Cообщить модератору

134. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +1 +/
Сообщение от RomanCh (ok), 27-Сен-21, 16:26 
> По определению только под модифицированные блоки потребуется место.

Ну определение определяет что должны быть скопированные некие области даже если в них модифицировано несколько байт (не побайтно же копируется наверное). А каков их размер в данном случае я лично не знаю. Блок? Несколько блоков? Несколько Мб? Гб? Конфигурируется или нет?

Но если допустим только тот блок в котором изменены данные. Ну т.е. потребуется где-то рядом ещё вести таблицу размещения блоков.
Выглядит, не интуитивненько вот прямо ни разу, особо с точки зрения восстановления после сбоев.

> Если файл модифицируется посредством write(), в какой-то момент вызов завершится с ошибкой "не хватает места".

Именно! Пользователь т.е. пытается перезаписать с его точки зрения уже существующий файл, тем же объёмом данных что в нём и так был. Т.е. он не ожидает что дополнительные блоки должны быть выделены. А они внезапно должны! И что он получит, no left space on device? Да это же прямо-таки have a lot of fun в отладке приключится. Или там ошибка какая-то специальная уже заложена чтобы совсем с ума не сойти?

> А вот что будет, если файл отображён в память и меняется память, куда интереснее. :)

Об этом мне даже думать страшно. Хорошо что в проде нигде нет таких дивных ФС.

Ответить | Правка | Наверх | Cообщить модератору

139. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +/
Сообщение от Аноним (5), 27-Сен-21, 22:19 
> А вот что будет, если файл отображён в память и меняется память, куда интереснее. :)

Получишь SIGBUS, как обычно.

Ответить | Правка | К родителю #133 | Наверх | Cообщить модератору

149. "Выпуск набора базовых системных утилит GNU Coreutils 9.0"  +/
Сообщение от n00by (ok), 28-Сен-21, 13:29 
В сценарии ведь не было "файл внезапно укоротился".
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру