Yandex

Дисковое пространство на сервере

Печать
  • disk, diskspace, space, server, диск, пространство, сервер, сървър
  • 1

Прежде чем вести разговор о доступном для использовании дисковом пространстве, стоит сказать несколько слов об единицах измерения объема информации. Единицей цифровой информации является байт (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
Reserved block count:     48837719

Проверим. 48837719 / 976754385 и умножим на 100. Получаем 5%.

 

Важно

Для дисков с большим объемом и при условии использовании файловой системы ext4, это резервирование может быть избыточным и его можно немного уменьшить.

А в случае использовании файловой системы ext3 этого делать крайне не рекомендуется, лучше всегда сохранять резерв 5%, так как при заполнении диска более чем на 95% происходит фрагментация файлов и как следствие падение производительности. Файловая система ext4 такой проблемы лишена.

 

Резюме

Учитывайте, что по умолчанию у вас на 5% меньше доступного дискового пространства. И не путайте kB и KiB.

Помог ли вам данный ответ?

Назад
spinner