Почему каталог с большим количеством записей не уменьшается по размеру после удаления записей?

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

Вам нужно создать раздел на обоих дисках для имеющегося свободного пространства. Вы можете использовать fdisk или parted. Лично я использую fdisk.

# fdisk -cu /dev/sda
  1. Вы захотите создать новый раздел, нажав n, и позвольте ему выбрать все настройки по умолчанию.
  2. Нажмите t, выберите раздел 4 и установите его в 8e, который является LVM.
  3. Нажмите w для сохранения.

Вам нужно будет сделать то же самое для другого диска, скорее всего это /dev/sdb. Создайте новый раздел, пусть он будет по умолчанию, чтобы он занимал весь диск.

Вам нужно будет перезагрузиться после внесения изменений в основной диск!

После этого вам нужно создать "физический том".

# pvcreate /dev/sda4

Сделайте это для двух созданных разделов. Теперь создайте группу томов. Замените имена и номера устройств в соответствии с тем, что у вас есть в настройках.

# vgcreate VolGroup01 /dev/sda4 /dev/sdb4

Это создаст группу томов, которая будет охватывать эти два раздела на этих двух дисках. Теперь можно создать логический том.

# lvcreate VolGroup01 -n LogVolOpt -L200G
(I decided to format mine with ext4)
# mkfs.ext4 /dev/VolGroup01/LogVolOpt
8
18.01.2019, 00:56
1 ответ

Цитата разработчика(в потоке ядра linux Каталоги ext3/ext4 не сжимаются после удаления большого количества файлов):

On Thu, May 14, 2009 at 08:45:38PM -0400, Timo Sirainen wrote:
>
> I was rather thinking something that I could run while the system was  
> fully operational. Otherwise just moving the files to a temp directory +
> rmdir() + rename() would have been fine too.
>
> I just tested that xfs, jfs and reiserfs all shrink the directories  
> immediately. Is it more difficult to implement for ext* or has no one  
> else found this to be a problem?

It's probably fairest to say no one has thought it worth the effort.
It would require some fancy games to swap out block locations in the
extent trees (life would be easier with non-extent-using inodes), and
in the case of htree, we would have to keep track of the index block
so we could remove it from the htree index.  So it's all doable, if a
bit tricky in terms of the technical details; it's just that the
people who could do it have been busy enough with other things.

It's hasn't been considered high priority because most of the time
directories don't go from holding thousands of files down to a small
handful.  

                                                - Ted
16
27.01.2020, 20:11

Теги

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