Too many links 65000 вместо 32000, ext3

Kubuntu, Xubuntu и другие

Модератор: Модераторы разделов

Kilam
Сообщения: 3
ОС: macOS High Sierra

Too many links 65000 вместо 32000, ext3

Сообщение Kilam » 27.01.2019 04:59

Отформатировал раздел как ФС ext3, смонтировал как ext3. Запустил скрипт, который создает поддиректории в смонтированной директории ext3/somedir. По идее максимальное количество поддиректорий должно быть 32000, однако у меня получается 65000.

Вот диски и информация о том как и куда они смонтированы

Код: Выделить всё

kilam@kilam-VirtualBox:~/test$ mount | grep /dev/sdb
/dev/sdb1 on /home/kilam/test/ext3 type ext3 (rw,relatime,data=ordered)
/dev/sdb2 on /home/kilam/test/ext4 type ext4 (rw,relatime,data=ordered)
kilam@kilam-VirtualBox:~/test$ lsblk -f /dev/sdb
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb                                                      
├─sdb1 ext3         6a1a6eb9-ffee-49f1-9476-6e580988e370 /home/kilam/test/ext3
└─sdb2 ext4         ff95719b-b409-4425-bc62-66f384d1a103 /home/kilam/test/ext4
kilam@kilam-VirtualBox:~/test$ 
Вот количество ссылок на директорию

Код: Выделить всё

kilam@kilam-VirtualBox:~/test$ ll ext3
total 2900
drwxr-xr-x     3 root  root   1479680 янв 27 04:44 ./
drwxr-xr-x     4 kilam family    4096 янв 27 02:39 ../
drwxr-xr-x 65000 root  root   1471488 янв 27 04:46 somedir/
kilam@kilam-VirtualBox:~/test$ 
Не понимаю, почему он позволил создать столько директорий, если ФС ext3 ограничивает кол-во ссылок числом 32000.
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4897
ОС: Gentoo

Re: Too many links 65000 вместо 32000, ext3

Сообщение /dev/random » 27.01.2019 05:46

Kilam писал:
27.01.2019 04:59
По идее максимальное количество поддиректорий должно быть 32000, однако у меня получается 65000.
man ext3 говорит 65000. Где вы нашли 32000?
Спасибо сказали:

Kilam
Сообщения: 3
ОС: macOS High Sierra

Re: Too many links 65000 вместо 32000, ext3

Сообщение Kilam » 27.01.2019 12:45

https://opensource.com/article/18/4/ext4-filesystem
Заголовок Unlimited Subdirectories
Ext3 was limited to a total of 32,000 subdirectories; ext4 allows an unlimited number.
В man ext3 я нашел только информацию о том, что ext4 имеет ограничение на количество жестких ссылок в 65000.

FEATURES dir_nlink
Normally, ext4 allows an inode to have no more than 65,000 hard links. This applies to regular files as well as
directories, which means that there can be no more than 64,998 subdirectories in a directory (because each of the
'.' and '..' entries, as well as the directory entry for the directory in its parent directory counts as a hard
link). This feature lifts this limit by causing ext4 to use a link count of 1 to indicate that the number of hard
links to a directory is not known when the link count might exceed the maximum count limit.
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4897
ОС: Gentoo

Re: Too many links 65000 вместо 32000, ext3

Сообщение /dev/random » 27.01.2019 13:01

Kilam писал:
27.01.2019 12:45
В man ext3 я нашел только информацию о том, что ext4 имеет ограничение на количество жестких ссылок в 65000.
ext* не являются отдельными файловыми системами. Это одна плавно развиваемая ФС. По мере развития в неё добавляют необязательные возможности, описанные в разделе FEATURES ман-страницы. ext2/ext3/ext4 - это, во-первых, три разных поколения драйвера, а во-вторых, наборы рекомендаций для совместимости файловой системы с этими драйверами, описывающие, какие возможности включены по умолчанию (но могут быть выключены по желанию пользователя), какие выключены (но могут быть включены), а какие запрещено включать. Старые драйвера (ext2/ext3) в наши дни очень редко включают в ядро, т.к. если файловая система совместима со старым драйвером, то она совместима и с новым.
Спасибо сказали:

Kilam
Сообщения: 3
ОС: macOS High Sierra

Re: Too many links 65000 вместо 32000, ext3

Сообщение Kilam » 27.01.2019 13:15

Значит, когда я форматирую раздел как ext3 и монтируют его, я говорю ОС, что с этим разделом нужно работать как с ext3, то есть инкрементировать количество жестких ссылок на директорию, если я создаю поддиректории. И заниматься работой с этой ФС как со старой (то есть ext3) будет драйвер, который может быть новым (то есть ext4). Получается, что инкрементация кол-ва жестких ссылок - это особенность версии ФС, а ограничение на их кол-во определяется драйвером. Я правильно понял?
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4897
ОС: Gentoo

Re: Too many links 65000 вместо 32000, ext3

Сообщение /dev/random » 27.01.2019 13:40

Kilam писал:
27.01.2019 13:15
Значит, когда я форматирую раздел как ext3 и монтируют его, я говорю ОС, что с этим разделом нужно работать как с ext3,
В основном, да, но если точнее, то вы говорите, что нужно включить те опциональные возможности, которые было принято включать во времена драйвера ext3. При желании их можно произвольно включать-выключать с помощью tune2fs, но если вы включите что-то, несовместимое со старым драйвером, то подмонтировать ФС старым драйвером будет невозможно.
Kilam писал:
27.01.2019 13:15
то есть инкрементировать количество жестких ссылок на директорию, если я создаю поддиректории.
В основном, да. С включённой возможностью dir_nlink (поддерживаемой только драйвером ext4) он тоже обычно инкрементирует количество жёстких ссылок, но имеет право вместо этого сбросить до 1, если сочтёт нужным. С выключенной - всегда инкрементирует.
Kilam писал:
27.01.2019 13:15
И заниматься работой с этой ФС как со старой (то есть ext3) будет драйвер, который может быть новым (то есть ext4).
Если вы монтируете ФС как ext3, то вы говорите ядру, что её нужно подмонтировать драйвером ext3, если он есть, или драйвером ext4 в противном случае.
Kilam писал:
27.01.2019 13:15
Получается, что инкрементация кол-ва жестких ссылок - это особенность версии ФС, а ограничение на их кол-во определяется драйвером. Я правильно понял?
Я сейчас посмотрел в историю коммитов ядра, и похоже, что конкретное ограничение зависит не от драйвера, а от версии ядра. В старых версиях было 32000, в новых - 65000.
А инкрементация - это особенность включённых/выключенных возможностей. В каком-то смысле можно сказать, что да, это особенность версии ФС, но вообще-то возможности можно включать-выключать и поодиночке.
Спасибо сказали: