Intereting Posts
измените TCP_TIMEWAIT_LEN во время выполнения PHP-пакет не будет установлен правильно Установить системный шрифт в LXDE? Korn Shell: показать прошедшее время в определенном формате Пользователь Clone Linux (копировать пользователя, на основе другого) ls – почему родительский каталог меньше его содержимого? Как узнать размер содержимого каталога? Как напрямую переключиться на панель в Tmux? Права клонирования и разрешения от другого файла? CentOS с AutoSSH, уточнение переадресации портов Включить поддержку мыши в консоли для приложений, которые ее используют в терминалах GUI Как я могу scp использовать «делать до цикла»? Выполнить строку команд с помощью одного sudo Безопасно извлекать USB-устройство (любого типа, не только блочные устройства / запоминающие устройства)? su vs su – (на Debian): почему PATH то же самое? Как сделать мой диск отключенным в ожидании нечитаемых секторов

Дисковое пространство ext4 не восстанавливается после удаления файлов

Недавно я получил предупреждение «устройство полностью» для внешнего накопителя ext4 2 Tb. Я удалил кучу файлов, около 90-100 ГБ старых системных резервных копий, и, поскольку я не хотел очищать все мусорные файлы, я удалил папки с корзиной с диска. Однако дисковое пространство не было освобождено, и я все еще показываю только около 5 ГБ после удаления 90-100 ГБ.

Я сначала попытался перезагрузить, чтобы убедиться, что по какой-то причине файлы не были открыты. Я попытался запустить sudo e2fsck -fp /dev/sde1 и sudo e2fsck -f -D -C0 -E discard /dev/sde1 но ни один из них не sudo e2fsck -f -D -C0 -E discard /dev/sde1 дискового пространства. Я проверил использование inode, и использую что-то вроде 0,3% от общего числа. Когда я запускаю sudo xdiskusage , он говорит, что inodes используют до 93 Гб. человек говорит, что это накладные расходы, используемые файловой системой. 93 gb кажется большим количеством накладных расходов, а тот факт, что удаление примерно того же количества файлов не привело к освобождению дискового пространства, я предполагаю, что я что-то испортил, когда удалил папки trah. Есть ли способ вернуть пространство, которое, как я думал, я получаю от удаления файлов?

Кажется, здесь есть две возможности:

  1. Вас смущает (по общему признанию, запутанное) поведение df и корневого пространства
  2. Вы удалили (несвязали) одну жесткую ссылку на файлы, их больше.

Лично я подозреваю, что вы видите # 1. Подробности ниже, а также некоторые заключительные замечания.

Смущение поведения df

Если вы полностью заполняете файловую систему, как пользователь, не являющийся пользователем root, это выглядит так:

 Filesystem Size Used Avail Use% Mounted on /dev/md10 248M 236M 1.0K 100% /boot 

но для корня зарезервировано пространство, обычно 5%. Если root заполняет его, это выглядит как df (в случае этой крошечной файловой системы это еще 13 МБ):

 Filesystem Size Used Avail Use% Mounted on /dev/md10 248M 248M 0 100% /boot 

Обратите внимание, что он перешел от 100%, используемого для использования на 100%. Несмотря на то, что на самом деле это еще 5%. Поле Used пошло вверх, как ожидалось, но поле avail только изменилось с 1K на 0.

И что происходит, когда вы удаляете первые 13 МБ данных? Ну, вы вернетесь к первому выпуску – вы освободили 5%, но все еще на 100% в использовании, и почти никто не доступен.

Вывод: если вы хотите посмотреть, сколько места вы фактически освобождаете, посмотрите на столбец Used -not Avail , а не Use% .

Не последний жесткий лист

rm фактически не удаляет файлы. Это отлаживает их, т. Е. Удаляет с них жесткие ссылки. Каждая hardlink дает имя файла в основном. Когда файл не имеет ссылок (и не открыт и т. Д.), То только тогда файл фактически удаляется.

Файл на самом деле уникально идентифицирован в файловой системе, независимо от количества имен, которые он имеет, по номеру inode. Если вы знали номера inode для этих файлов, вы можете использовать find -inum для поиска всех find -inum ссылок для них, но вы, вероятно, этого не делаете. Если у вас есть связанные файлы для очистки, вы можете получить номера inode от тех, которые используются stat . Затем вы можете использовать find /path/to/mount -inum NUMBER чтобы найти все find /path/to/mount -inum NUMBER ссылки на этот файл (включая имя, которое вы только что указали). Кроме того, номера дескрипторов могут быть повторно использованы после удаления файла.

Помните: номера inode для каждой файловой системы . Таким образом, два разных файла могут быть inode 42 на двух разных файловых системах. Только в той же файловой системе inode 42 гарантированно всегда будет тот же файл. Кроме того, номера inode не всегда работают правильно с сетевыми файловыми системами или файловыми системами, отличными от Unix. Но вы используете ext4, где определенно делаете.

Помимо этого вам просто нужно будет найти любые другие имена, чтобы удалить обычные способы (например, поиск больших вещей с помощью xdiskusage как вы уже делаете)

Основные пометки

Папки корзин – это просто каталоги. Если они были полны барахла, которые вам не удалось удалить, они будут отображаться в xdiskusage .

Вы должны рассмотреть систему резервного копирования, которая может лучше справляться с удалением старых резервных копий для вас – выполнение этого вручную является подверженным ошибкам. Хуже того, его также можно забыть, что приводит к сбоям при резервном копировании – и восстановление, как правило, связано с недавними данными (например, случайное удаление, поврежденный файл, сбой диска), а не старые данные («о, да, мне нужна эта вещь, которую я удалил в прошлом году … "), поэтому« полное резервное копирование диска »означает, что вы фактически отбрасываете наиболее ценные данные (новую резервную копию) для сохранения наименее ценных данных (эта резервная копия из двух лет назад).