[devel] архивирование репозиториев

Leonid Krivoshein klark.devel на gmail.com
Пт Авг 28 03:58:01 MSK 2020



27.08.2020 15:20, Dmitry V. Levin пишет:
> On Thu, Aug 27, 2020 at 03:14:27PM +0300, Anton Farygin wrote:
>> On 27.08.2020 15:09, Dmitry V. Levin wrote:
>>> On Thu, Aug 27, 2020 at 02:59:22PM +0300, Anton Farygin wrote:
>>>> On 27.08.2020 14:54, Andrey Savchenko wrote:
>>>>> On Thu, 27 Aug 2020 10:27:11 +0300 Anton Farygin wrote:
>>>>> [...]
>>>>>> Т.е. - для экономии места старые пакеты хардлинкаются в новое место и в
>>>>>> него уже добавляются изменения из сборочного задания. Очень простая и
>>>>>> очень надёжная схема, при которой риск потери данных минимален и всегда
>>>>>> можно взять консистентное состояние репозитория за любой момент времени.
>>>>>>
>>>>>> Живёт это всё сейчас, вроде как, на ext4 (я могу ошибаться).
>>>>>> Максимальное количество inodes у ext4 2^32 - 4,294,967,295
>>>>>>
>>>>>> Каждый новый таск в репозиторий приводит к тому, что на файловой системе
>>>>>> появляется около 160 тысяч (а может быть и больше, я давно не смотрел
>>>>>> цифры) новых записей.
>>>>>>
>>>>>> Т.е. - условно мы можем записать около 26 тысяч сборочных заданий в
>>>>>> архив, а после этого из него придётся удалять что-то старое для того,
>>>>>> что бы записать что-то новое.
>>>>> Это полная чушь, поскольку все жесткие ссылки на файл используют
>>>>> один и тот же inode:
>>>>>
>>>>> https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Directory_Entries
>>>>>
>>>>> In an ext4 filesystem, a directory is more or less a flat file that
>>>>> maps an arbitrary byte string (usually ASCII) to an inode number on
>>>>> the filesystem. There can be many directory entries across the
>>>>> filesystem that reference the same inode number--these are known as
>>>>> hard links, and that is why hard links cannot reference files on
>>>>> other filesystems. As such, directory entries are found by reading
>>>>> the data block(s) associated with a directory file for the
>>>>> particular directory entry that is desired.
>>>>>
>>>> Точно. Не хардлинки, а симлинки. Спасибо за замечание.
>>> В архиваторе репозиториев используется захардлинкивание симлинков
>>> для уменьшения количества используемых inode'ов.
>> Ух ты, это же здорово. А где посмотреть исходники ?
>>
>> в girar я сходу это не увидел.
> git grep GA_SYMLINK_DIR.
>
> В ext4 есть ограничение на количество хардлинков, которе может быть
> у симлинка, я постарался это учесть.

rm -rf ... всё же очень дорогая операция на изначально не 64-бит ФС.
В этом плане jfs рвёт её на части. Может, есть смысл бега для этих фс?


-- 
Best regards,
Leonid Krivoshein.



Подробная информация о списке рассылки Devel