Почти везде я получаю сбои в журналах с жалобами на No space left on device
Журналы Gitlab:
==> /var/log/gitlab/nginx/current <==
2016-11-29_20:26:51.61394 2016/11/29 20:26:51 [emerg] 4871#0: open() "/var/opt/gitlab/nginx/nginx.pid" failed (28: No space left on device)
Журналы электронной почты Dovecot:
Nov 29 20:28:32 aws-management dovecot: imap(email@www.sitename.com): Error: open(/home/vmail/emailuser/Maildir/dovecot-uidlist.lock) failed: No space left on device
Выход из df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 7.8G 3.9G 3.8G 51% /
devtmpfs devtmpfs 1.9G 28K 1.9G 1% /dev
tmpfs tmpfs 1.9G 12K 1.9G 1% /dev/shm
/dev/xvdh btrfs 20G 13G 7.9G 61% /mnt/durable
/dev/xvdh btrfs 20G 13G 7.9G 61% /home
/dev/xvdh btrfs 20G 13G 7.9G 61% /opt/gitlab
/dev/xvdh btrfs 20G 13G 7.9G 61% /var/opt/gitlab
/dev/xvdh btrfs 20G 13G 7.9G 61% /var/cache/salt
Похоже, там также много места для инода. Выход изdf -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 105031 419257 21% /
devtmpfs 475308 439 474869 1% /dev
tmpfs 480258 4 480254 1% /dev/shm
/dev/xvdh 0 0 0 - /mnt/durable
/dev/xvdh 0 0 0 - /home
/dev/xvdh 0 0 0 - /opt/gitlab
/dev/xvdh 0 0 0 - /var/opt/gitlab
/dev/xvdh 0 0 0 - /var/cache/salt
Выход из btrfs fi show
Label: none uuid: 6546c241-e57e-4a3f-bf43-fa933a3b29f9
Total devices 4 FS bytes used 11.86GiB
devid 1 size 10.00GiB used 10.00GiB path /dev/xvdh
devid 2 size 10.00GiB used 9.98GiB path /dev/xvdi
devid 3 size 10.00GiB used 9.98GiB path /dev/xvdj
devid 4 size 10.00GiB used 9.98GiB path /dev/xvdk
Выход из btrfs fi df /mnt/durable
Data, RAID10: total=17.95GiB, used=10.12GiB
Data, single: total=8.00MiB, used=0.00
System, RAID10: total=16.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, RAID10: total=2.00GiB, used=1.74GiB
Metadata, single: total=8.00MiB, used=0.00
unknown, single: total=272.00MiB, used=8.39MiB
Что может быть причиной этого? Я использую базовый linux AMI ec2 kernal версия 4.4.5-15.26.amzn1.x86_64
Обновить
Выполнение команды, предложенной ниже btrfs fi balance start -dusage=5 /mnt/durable
, вернуло мне ошибку следующего:
ERROR: error during balancing '/mnt/durable' - No space left on device
There may be more info in syslog - try dmesg | tail
После того, как я вручную удалил кучу более крупных файлов общим объемом ~ 1 ГБ, я перезагрузил компьютер и повторил попытку, убедившись, что использую sudo, и команда выполнена. Затем я перезагрузил свою машину еще раз для хорошей меры, и это, похоже, решило проблему
Ответы:
Добро пожаловать в мир BTRFS. У этого есть некоторые дразнящие особенности, но также и некоторые приводящие в бешенство проблемы.
Прежде всего, некоторая информация о вашей настройке, похоже, у вас есть четыре диска в томе «raid 10» BTRFS (поэтому все данные хранятся дважды на разных дисках). Этот том BTRFS затем разделяется на подобъемы в разных точках монтирования. Подобъемы разделяют пул дискового пространства, но имеют отдельные номера инодов и могут быть смонтированы в разных местах.
BTRFS выделяет пространство в «чанках», чанк выделяется для определенного класса данных или метаданных. Что может произойти (и похоже, что это произошло в вашем случае), так это то, что все свободное пространство выделяется для блоков данных, не оставляя места для метаданных
Также кажется, что (по причинам, которые я не до конца понимаю), что BTRF "исчерпывают" пространство метаданных до того, как показатель доли используемого пространства метаданных достигнет 100%.
Похоже, это то, что произошло в вашем случае, есть много свободного места для данных, но нет свободного места, которое не было выделено для чанков, и недостаточно свободного места в существующих чанках метаданных.
Исправление заключается в том, чтобы запустить «ребаланс». Это переместит данные так, что некоторые чанки могут быть возвращены в «глобальный» свободный пул, где они могут быть перераспределены как чанки метаданных.
Число после
-dusage
устанавливает, насколько агрессивным является перебалансирование, то есть, насколько близко должны быть опустошены блоки, чтобы их можно было переписать. Если баланс говорит, что переписал 0 блоков, попробуйте еще раз с более высоким значением-dusage
.Если баланс не удается, я бы попытался перезагрузить компьютер и / или освободить место, удалив файлы.
источник
ERROR: error during balancing '/mnt/durable' - No space left on device
даже после удаления почти 1 ГБ с дискаdmesg | tail
в мой пост после получения новой ошибки после перезагрузки.Поскольку вы запускаете btrfs с настройкой RAID, попробуйте выполнить операцию балансировки.
Если это приводит к ошибке о нехватке места, попробуйте еще раз с этим синтаксисом:
Повторите эту операцию для каждой файловой системы btrfs, в которой вы видите ошибки, связанные с пространством. Если ваша проблема с пространством связана с тем, что метаданные не распределяются по зеркальным дискам, это может освободить вам место.
источник
Refusing to explicitly operate on system chunks. Pass --force if you really want to do that.
это нормально делать?-susage=0
варианта.В моей системе я добавил следующую работу в cron.monthly.
clear_cache
Перемонтировании связаны с некоторыми проблемами коррупции Btrfs была , имеющей с бесплатными картами. (Я думаю, что они наконец нашли проблему, но проблема настолько раздражает, я готов заплатить, чтобы восстановить карты один раз в месяц.)Я
usage
постепенно расширяю возможности, чтобы освободить место для большего и большего баланса.Если вы попадаете в точку, в которой вы не можете перебалансировать, потому что у вас недостаточно места, рекомендуется временно добавить другое блочное устройство (или устройство с шлейфом на другом диске) какого-либо рода в ваш том на время перебалансировки, а затем убери это.
источник
Это не столько проблема с btrfs, сколько то, что было сделано с этой системой. Это выглядит как результат неполного перебалансирования из «единой» политики распределения в политику «рейда 10», о чем свидетельствует большое количество отдельных выделенных блоков. Вероятно, он начинался как одиночный, а затем преобразование было прервано. У пула с таким непоследовательным распределением неизбежно будут проблемы с распределением.
Учтите, что у вас есть 61% вашего пула. Ваша политика распределения - RAID10, поэтому до достижения полного заполнения должно быть использовано до 50% потребления пула, поскольку все реплицируется 2. Именно поэтому ваше преобразование из одного в RAID 10 завершилось неудачно (и продолжает это). Я могу только догадываться, но это, вероятно, было выделено в середине перебалансировки. На вашем устройстве не осталось места, чтобы перенастроить RAID 10 на диски, которые у вас есть. Единственная причина, по которой вы получили 61%, заключается в том, что ваши диски распределены несогласованно, некоторые линейно с одним распределением, а большинство - в RAID 10.
Вы можете перебалансировать единую политику распределения, если хотите получить свободное место, ничего не меняя. Вы также можете добавить больше дисков или увеличить размер дисков. ИЛИ вы можете, как вы это сделали в этом случае, просто удалить кучу файлов, чтобы ваш пул мог фактически сбалансироваться с RAID 10 (так как в целом он потреблял бы менее 50%). Убедитесь, что вы восстановили баланс после удаления файлов, или у вас все еще будет эта политика размещения.
В частности, применять RAID 10 при балансировке после удаления этих файлов, чтобы убедиться, что вы избавляетесь от этих выделенных блоков, например:
btrfs fi balance start -dconvert=raid10 -mconvert=raid10 /home
источник