Дисковое пространство на сервере
Прежде чем вести разговор о доступном для использовании дисковом пространстве, стоит сказать несколько слов об единицах измерения объема информации. Единицей цифровой информации является байт (byte), который состоит из 8 бит.Имеется две системы измерения: десятичная и двоичная. Международная система единиц (SI) использует десятичную систему, в которой увеличительные приставки кратны 1000 = 103. А в двоичных системах, таких как IEC и ISO, кратны 1024 = 210.
Многобайтовые единицы десятичной системы единиц
Название | Обозначение | Значение | Соответствие |
килобайт / kilobyte | kB | 103 = 1000 | 1 000 B |
мегабайт / megabyte | MB | 106 = 10002 | 1 000 KB = 1 000 000 B |
гегабайт / gigabyte | GB | 109 = 10003 | 1 000 MB = 1 000 000 KB |
терабайт / terabyte | TB | 1012 = 10004 | 1 000 GB = 1 000 000 MB |
петабайт / petabyte | PB | 1015 = 10005 | 1 000 TB = 1 000 000 GB |
Многобайтовые единицы двоичной системы единиц
Название | Обозначение | Значение | Соответствие |
кибибайт / kibibyte | KiB | 210 = 1024 | 1 024 B |
мебибайт / mebibyte | MiB | 220 = 10242 | 1 024 KB = 1 048 576 B |
гибибайт / gibibyte | GiB | 230 = 10243 | 1 024 MB = 1 048 576 KB |
тебибайт / tebibyte | TiB | 240 = 10244 | 1 024 GB = 1 048 576 MB |
пебибайт / pebibyte | PiB | 250 = 10245 | 1 024 TB = 1 048 576 GB |
Рассмотрим теперь это на практике
Для примера возьмем диск Samsung SSD 860 EVO 4TB, емкостью 4 000 787 030 016 bytes [4.00 TB]. В двоичной системе объем диска составляет примерно 3.64 TiB.В линукс для вывода объема диска принято использовать утилиту df, её и будем далее использовать.
По умолчанию используется двоичная система. Для удобства можно использовать команду
df -h /dev/sdb1
где вместо /dev/sdb1 нужно прописать либо диск, либо точку монтирования:Filesystem Size Used Avail Use% Mounted onПосмотреть объем диска в десятичной системе можно командой
/dev/sdb1 3.7T 903G 2.6T 26% /backup
df -H /dev/sdb1
илиdf -si /dev/sdb1
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 4.0T 970G 2.9T 26% /backup
И с первого взгляда все выглядит точно. Но давайте посмотрим, что будет если вывести объем в килобайтах / кибибайтах. В десятичной системе:
df --block-size=kB /dev/sdb1
Filesystem 1kB-blocks Used Available Use% Mounted onИ в двоичной:
/dev/sdb1 3999089472kB 969324938kB 2829708461kB 26% /backup2
df --block-size=K /dev/sdb1
или df --block-size=KiB /dev/sdb1
или даже простоdf /dev/sdb1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb1 3905360812K 946606384K 2763387168K 26% /backup2
Обратим внимание на использование и доступное дисковое пространство, и сравним с общим.
946 606 384 KiB + 2 763 387 168 KiB = 3 709 993 552 KiB, что совсем не соответствует 3 905 360 812 KiB.
На самом деле все просто - дело в файловой системе в Linux. В данном случае это EXT4. По умолчанию линукс 5% от объема каждого дискового раздела помечается как пространство, зарезервированное для пользователя root.
Проверить это можно командой:
tune2fs -l /dev/sdb1 |grep -i 'Block count'
Block count: 976754385Проверим. 48837719 / 976754385 и умножим на 100. Получаем 5%.
Reserved block count: 48837719
Важно
Для дисков с большим объемом и при условии использовании файловой системы ext4, это резервирование может быть избыточным и его можно немного уменьшить.А в случае использовании файловой системы ext3 этого делать крайне не рекомендуется, лучше всегда сохранять резерв 5%, так как при заполнении диска более чем на 95% происходит фрагментация файлов и как следствие падение производительности. Файловая система ext4 такой проблемы лишена.
Резюме
Учитывайте, что по умолчанию у вас на 5% меньше доступного дискового пространства. И не путайте kB и KiB.28 Apr 2024, 13:41:41