Intereting Posts
Потеряна загрузка Win7 после установки UBUNTU Vivid Как перейти в другой домен при вызове sudo? Могу ли я определить количество подкаталогов в каталоге с помощью `ls -l`? Hurd vs Plan9 против Linux против eCos против FreeRTOS, каковы основные отличия, особенно с Хердом? Какова цель абстракций, сеанса, лидера сеанса и групп процессов? Беспользованный SSH-доступ, не работающий с отклоненным сообщением ошибки времени выполнения, откуда они взялись? Подвалы не работают правильно Невозможно завершить процесс с PID 1 в контейнере Docker encfs с ожиданием доступа отказано Как остановить открытие файла в LibreOffice из изменения даты Дата изменения В чем опасность использования «-assume-yes» с apt-get? Надежный способ изолировать дочерние процессы с помощью `nsenter:` проблема чашек с встроенным buildroot Расширение параметра systemd мешает синтаксису командной строки моей службы

Unreferenced inodes для экземпляра EC2 linux

У меня есть экземпляр Amazon EC2, который я использую в качестве файлового сервера NFS. Он использует массив RAID0 объемом 5x1TB. Система очень интенсивно работает в режиме ввода-вывода, и файлы записываются / копируются / удаляются через общий ресурс NFS. Довольно часто я замечаю, что между дисковым пространством и доступным свободным пространством существует БОЛЬШОЕ расхождение. (Я проверяю, пока система не работает, и файлы не записываются в общий файл / систему). Мое единственное «исправление» для этого – закрыть экземпляр и перезапустить его (перезагрузка не работает и просто зависает с машиной). Когда он перезапускается, он запускает fsck и я вижу в системном журнале (многие) «unreferenced» Inodes, которые очищаются (это не весь журнал):

  25.110924] EXT4-fs (dm-1): ext4_orphan_cleanup: deleting unreferenced inode 122291727 [ 25.114687] EXT4-fs (dm-1): ext4_orphan_cleanup: deleting unreferenced inode 122291723 [ 25.118610] EXT4-fs (dm-1): ext4_orphan_cleanup: deleting unreferenced inode 122291703 [ 25.135184] EXT4-fs (dm-1): ext4_orphan_cleanup: deleting unreferenced inode 122291722 [ 25.140005] EXT4-fs (dm-1): ext4_orphan_cleanup: deleting unreferenced inode 122291725 [ 25.144013] EXT4-fs (dm-1): ext4_orphan_cleanup: deleting unreferenced inode 122291705 [ 25.148008] EXT4-fs (dm-1): 735 orphan inodes deleted [ 25.150286] EXT4-fs (dm-1): recovery complete [ 26.126887] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null) [ OK ] 

Я не могу найти решение для этого в любом месте в Интернете. Кто-нибудь знает, что вызывает это или как его предотвратить? Или, может быть, исправить это без размонтирования диска?

Дополнительная информация:

Информация о версии:

 Linux version 3.10.42-52.145.amzn1.x86_64 (mockbuild@gobi-build-64003) (gcc version 4.8.2 20131212 (Red Hat 4.8.2-7) (GCC) ) #1 SMP Tue Jun 10 23:46:43 UTC 2014 

RAID0 массив монтируется на /etc/fstab следующим образом:

 /dev/vg0/data /data ext4 defaults,auto,noatime,noexec 0 0 

/etc/mdadm.conf:

 DEVICE /dev/xvdk /dev/xvdj /dev/xvdi /dev/xvdh /dev/xvdg ARRAY /dev/md0 metadata=1.2 name=ip-172-31-10-215:0 UUID=4c4fb472:e0540788:69a83d01:a75a8a3e 

/ и т.д. / экспорта:

 /data *(rw,sync) 

Клиенты монтируют общий ресурс NFS следующим образом:

 xxxx:/data /mnt/fileserver nfs defaults 0 0 

Описанное поведение может быть вызвано тем, что приложения, содержащие файлы, открываются даже после их удаления. Если приложение имеет открытый файл (например, tail ), а другое приложение приходит и удаляет файл (например, rm ), первое приложение будет продолжать хранить ссылку на файл до тех пор, пока первое приложение не закроет файл. В этот момент файловая система распознает, что файл удален и закрыт и очистке ссылок.

Вот чрезмерно упрощенное объяснение того, как связаны файлы и иноды. Файл по существу является записью в файловой системе, которая присваивает имя (или имена) конкретному индексу. Открытые файлы на самом деле ссылаются на inode. Когда вы удаляете файл, вы фактически удаляете связь между именем и индексом, но открытый файл также поддерживает связь между открытым файловым дескриптором и индексом. Закрытие файла удаляет связь между дескриптором открытого файла и inode. Индекс не будет восстановлен файловой системой, пока все ссылки не будут удалены.

Когда вы смотрите на свободное пространство, сообщаемое файловой системой, оно сообщает вам пространство, связанное со всеми индексными именами, которые в настоящее время отмечены как используемые. Когда вы просматриваете все каталоги и суммируете файловое пространство, используемое каждым файлом / каталогом, это может быть меньше, если файлы были удалены, но все еще открыты. Сканирование вашего каталога не увидит пространство, используемое файлами, у которых были удалены ссылки на имена.

Когда вы жестко завершаете работу системы, вы не даете возможность приложениям закрыть свои файлы. Без этой возможности файловая система не получит возможности восстановить inodes, используемые дескрипторами открытых файлов удаленных файлов. Когда система загружается, файловая система видит эти иноды, ничего не указывая на них. Они называются «осиротевшими инодами», и файловая система позволяет вам знать, что она удаляет ссылку на файл.

Одним из инструментов, который вы можете использовать для поиска процессов с открытыми файловыми дескрипторами, является lsof . Если вы запустите это в процессе, он покажет все открытые дескрипторы файла этого процесса. Удаленные файлы обычно отображаются как (deleted) , в зависимости от версии.