Пример минимальной детализации блоков
Давайте немного поиграем, чтобы посмотреть, что происходит.
mount
говорит мне, что я нахожусь в разделе ext4, смонтированном в /
.
Я нахожу размер блока с помощью:
stat -fc %s.
, что дает:
4096
Теперь давайте создадим несколько файлов с размерами1 4095 4096 4097
:
#!/usr/bin/env bash
for size in 1 4095 4096 4097; do
dd if=/dev/zero of=f bs=1 count="${size}" status=none
echo "size ${size}"
echo "real $(du --block-size=1 f)"
echo "apparent $(du --block-size=1 --apparent-size f)"
echo
done
и результаты:
size 1
real 4096 f
apparent 1 f
size 4095
real 4096 f
apparent 4095 f
size 4096
real 4096 f
apparent 4096 f
size 4097
real 8192 f
apparent 4097 f
Итак, мы видим, что все, что ниже или равно 4096
, фактически занимает 4096
байт.
Затем, как только мы пересекаем 4097
, она поднимается до 8192
, что равно 2 * 4096
.
Тогда ясно, что диск всегда хранит данные на границе блока 4096
байт.
Что происходит с разреженными файлами?
Я не исследовал точное представление, но ясно, что --apparent
принимает его во внимание.
Это может привести к тому, что видимые размеры превысят фактическое использование диска.
Например:
dd seek=1G if=/dev/zero of=f bs=1 count=1 status=none
du --block-size=1 f
du --block-size=1 --apparent f
дает:
8192 f
1073741825 f
Связанные:https://stackoverflow.com/questions/38718864/how-to-test-if-sparse-file-is-supported
Что делать, если я хочу хранить кучу мелких файлов?
Некоторые возможности::
Библиография:
Протестировано в Ubuntu 16.04.
Перепроверьте, что разрешения (chown и chmod )/var/log/syslog применяются к /var/log/sftp.log.
Также проверьте SyslogFacility AUTHPRIV в файле конфигурации sshd _. вы почти рядом, чтобы увидеть журналы. взгляните на 60 -sftp -server.conf
который должен содержать запись типа Auth, Authpriv.*