Никакое пространство на устройстве при удалении файла под OpenSolaris

Существуют случаи, когда замена (include/linux/fs.h) структуры file_operations метод ioctl () к compat_ioctl () в ядре 2.6.36 не работает (например, для некоторых драйверов устройств), и unlocked_ioctl () должен использоваться.

10
09.07.2011, 02:35
4 ответа

Хорошо, это - странное … недостаточно пространства для удаления файла!

Это оказывается относительно распространенной проблемой с ZFS, хотя он мог потенциально возникнуть в любой файловой системе тот имеет снимки.

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

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

В более общем плане применимая фиксация должна удалить некоторые снимки. Можно перечислить снимки с zfs list -t snapshot. Кажется, нет простого способа предсказать, сколько пространства будет возвращено при уничтожении конкретного снимка потому что данные, которые это хранит, могут оказаться необходимыми другим снимкам и так будут жить на том, если Вы уничтожаете тот снимок. Поэтому создайте резервную копию своих данных к другому диску при необходимости, определите один или несколько снимков, в которых Вы больше не нуждаетесь и выполняете zfs destroy name/of/snap@shot.

Существует расширенное обсуждение этой проблемы в этом потоке форумов OpenSolaris.

13
27.01.2020, 20:00
  • 1
    Возможность снимка не является причиной проблемы - см. мой ответ ниже. Но способность выпустить снимок может творить чудеса в разрешении его, поскольку Вы правильно описали :) –  Tatjana Heuser 06.02.2012, 20:58

4. Z3G (rpool/root столбец USED) сомнителен.

В любом случае, rpool/export/home/admin быть слишком большим (3,85 ГБ) вероятно первопричина. Взгляните на его содержание и удалите ненужные файлы туда. Поскольку администраторская файловая система не имеет никаких снимков, это должно сразу освободить некоторое пространство в пуле.

1
27.01.2020, 20:00
  • 1
    ya, который должен был быть '2' не z (OCR'd img). То, что является странным, - когда я CD к/rpool там являюсь ничем там? Я не думаю, что "Режим техобслуживания" делает надлежащие ссылки! Ничто в / не экспортирует также. администратор –  Nick Faraday 09.07.2011, 02:36
  • 2
    должен быть смонтирован на/export/home/admin, не на/rpool. Вы могли бы просто смонтировать его вручную, если это не находится в режиме техобслуживания. –  jlliagre 09.07.2011, 03:09

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

(Это не проблема файловых систем со снимками, поскольку существуют другие способы реализовать их, чем просто копия на записи),

Выходы из сжатия:

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

Я столкнулся с тем же прерыванием несколько лет назад и не имел никаких снимков, которые я, возможно, выпустил для освобождения меня. Посмотрите, что поток в ZFS Обсуждает, где эта проблема была обсуждена подробно.

8
27.01.2020, 20:00

У меня это было, и я потратил некоторое время, пытаясь понять, что нужно. Мое решение состояло в том, чтобы обнулить пространство файлов, прежде чем пытаться их удалить.

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

for file in core*[0-9]
do
    coreFile=${file%.[0-9]*}

    mv $file $coreFile
    if [[ $? == 0 ]]
    then
        chmod 644 $coreFile
    else
        truncate -s 0 $file # we can't just delete if disk is full so zero out first
        rm $file
    fi
done

Когда я запустил свой скрипт, он выдал одну ошибку:

mv: cannot rename core.200000 to core: No space left on device

и выполнялась очистка файлов.

Чтобы проверить это, я заполнил диск:

for ((ii=0; ii<100000; ii++))
do
    mkfile 1m core.$ii
done
0
27.01.2020, 20:00

Теги

Похожие вопросы