У меня проблемы с нехваткой дискового пространства на одном из моих клиентских серверов.
Вывод команд ls -lah
в /var/lib/mysql
показывает:
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
Но когда я проверяю размер файла в том же каталоге с помощью команды du -sh *
, вывод показывает:
22G database_xyz
Почему вывод этих команд показывает два совершенно разных результата?
У меня на диске осталось всего 2.2Гб.
root@jon-cust-lifeincity:/var/lib/mysql# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg-root 49G 44G 2.2G 96% /
tmpfs 1007M 0 1007M 0% /lib/init/rw
udev 1002M 108K 1002M 1% /dev
tmpfs 1007M 0 1007M 0% /dev/shm
/dev/sda1 228M 16M 200M 8% /boot
РЕДАКТИРОВАТЬ:
Оказывается, что database_xyz
на самом деле каталог, а не файл. Итак, замешательство было создано моим мозгом.
Похоже, вы неправильно понимаете то, что вам говорят. В ls -lah
команда выводит список содержимого текущего каталога. В данном конкретном случае это /var/lib/mysql
. Среди прочего вам сказали это
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
Вы неправильно понимаете, что это вам говорит.
Вы можете рассматривать каталог как плоский файл, содержащий список записей каталога. (просто) Запись в каталоге - это имя файла и указатель на то, где этот файл находится на диске. Эта информация занимает место на диске.
какой
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
сообщает вам, что в /var/lib/mysql
называется database.xyz
. Эта запись предназначена для типа файла d
что указывает на то, что это каталог, и среди прочего размер файла каталога составляет 16 КБ.
Чтобы узнать размер database_xyz файл только введите
du -sh database_xyz
вы найдете точный результат
ls
не подходит для определения размера каталога. Это работает только для файлов, а не для каталогов.
Я вижу, что вы перечисляете детали каталога (первый d
символ)
drwx------ 2 mysql mysql 16K Dec 30 2015 database_xyz
Использовать du
вместо. Это похожий пост при stackoverflow.