Существует ли файловая система, поддерживающая настраиваемый предельный размер файла?

Это приглашение библиотеки readline при вводе числового аргумента. Набрав AltShift@ на клавиатуре, вы, по-видимому, вводите Alt2 , что соответствует M-2, которое работает digit-argumentв readline по умолчанию и начинает вводить числовой аргумент. Если вы затем нажмете Alt3 (, что AltShift#отображается в вашем случае ), вы увидите, что подсказка изменится на (arg: 23); вы можете продолжить с любой комбинацией цифр Alt -.

Эти аргументы используются для некоторых функций readline, например yank-nth-arg. Чтобы увидеть это в действии, запустите

echo Hello my friend

, затем нажмите Alt2 , затем CtrlAltY ; вы увидите приглашение (arg: 2), которое появится, затем исчезнет, ​​а второй аргумент предыдущей команды («мой» )будет добавлен к вашей текущей командной строке.

Подробности см. в связанной документации выше.Bash использует readline для обработки ввода; другие оболочки не будут демонстрировать такое же поведение.

Некоторые эмуляторы терминала используют некоторые из этих комбинаций клавиш в своих целях; например, в терминале GNOME цифра Alt-переключает на вкладку n th. Вам нужно будет отключить эти комбинации, чтобы использовать функции чтения.

В вашем случае веб-эмулятор терминала Codecademy -, похоже, не очень хорошо обрабатывает комбинации AltShift . Если вам не нужны ярлыки числовых аргументов, вы можете переназначить их, запустив

bind Meta-3:insert-comment

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

Meta-3: insert-comment

в файл ~/.inputrc, но я не смог заставить это работать на Codecademy.

0
11.02.2021, 16:39
1 ответ

В Lustre 2.12 и более поздних версиях можно указать максимальный размер файла для каждого файла -, каталога -или файловой системы -, указав макет PFL с фиксированным -] конец компонента размера и отсутствие компонента "до максимального размера файла", например:

   $ lfs setstripe -E 1G -c 1 /path/to/<file|directory>

Файлы, созданные в directory, будут ограничены размером 1 ГБ (, например. в каталоге журнала ), и если directoryявляется корневым каталогом, он применяется ко всем новым файлам в файловой системе, если не указано иное. Тем не менее, вы вероятно не захотите настраивать Luster для собственного использования, если только вашему серверу Samba не требуется много масштабирования емкости/производительности.

Также было бы несложно добавить такое ограничение в ext4. Ему уже приходится иметь дело с разными значениями maxbytesв зависимости от того, является ли файл блочным (старым стилем, ограничением 4 ТБ )или экстентным отображением (нового стиля, ограничением 16 ТБ ). Установка значений s_maxbytesи s_bitmap_maxbytesс помощью параметра /sys/fs/ext4/<dev>/maxbytesбыла бы довольно простой и, вероятно, будет принята восходящим потоком (тем временем вы можете исправить ядро ​​вашего сервера ).

Единственная сложность заключается в том, что значение sysfs следует использовать как более низкий предел по сравнению с существующими ограничениями. Не должно быть возможности установить максимальное количество байтов выше существующих пределов.В обработчике sysfs потребуется некоторый код для сброса s_maxbytesи/или s_bitmap_maxbytesдо старых пределов, если параметр maxbytesустановлен выше. Кодировать было бы проще, если бы s_sysfs_maxbytesхранился как отдельный параметр в суперблоке, но тогда его нужно было бы проверять при каждом использовании, что немного медленнее, и очень маловероятно, что эти значения изменятся во время выполнения. Также потребуется заменить все обращения к s_*_maxbytesв коде помощником, например:

loff_t ext4_inode_get_maxbytes(struct inode *inode)
{
        loff_t maxbytes;

        if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))
                maxbytes = inode->i_sb->s_maxbytes;
        else
                maxbytes = EXT4_SB(inode->i_sb)->s_bitmap_maxbytes;

        if (maxbytes > EXT4_SB(inode->i_sb)->s_sysfs_maxbytes)
                maxbytes = EXT4_SB(inode->i_sb)->s_sysfs_maxbytes;

        return maxbytes;
}

Даже с относительно базовыми навыками кодирования это может сделать новичок в ядре, в основном с поиском -, вырезанием -и -заменой.

1
18.03.2021, 22:30

Теги

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