Существуют случаи, когда замена (include/linux/fs.h) структуры file_operations метод ioctl () к compat_ioctl () в ядре 2.6.36 не работает (например, для некоторых драйверов устройств), и unlocked_ioctl () должен использоваться.
Хорошо, это - странное … недостаточно пространства для удаления файла!
Это оказывается относительно распространенной проблемой с ZFS, хотя он мог потенциально возникнуть в любой файловой системе тот имеет снимки.
Объяснение состоит в том, что файл, который Вы пытаетесь удалить все еще, существует на снимке. Таким образом, при удалении его содержание сохраняет существующим (только в снимке); и система должна дополнительно записать информацию, что снимок имеет файл, но текущее состояние не делает. Нет никакого пространства, уехал в это дополнительное немного информации.
Краткосрочная фиксация должна найти файл, это было создано после последнего снимка и удаляет его. Другая возможность состоит в том, чтобы найти файл, к которому это было добавлено после последнего снимка и усекает его к размеру, который он имел во время последнего снимка. Если Ваш диск стал полным, потому что что-то массово рассылало Ваши журналы, попытайтесь обрезать самые большие файлы журнала.
В более общем плане применимая фиксация должна удалить некоторые снимки. Можно перечислить снимки с zfs list -t snapshot
. Кажется, нет простого способа предсказать, сколько пространства будет возвращено при уничтожении конкретного снимка потому что данные, которые это хранит, могут оказаться необходимыми другим снимкам и так будут жить на том, если Вы уничтожаете тот снимок. Поэтому создайте резервную копию своих данных к другому диску при необходимости, определите один или несколько снимков, в которых Вы больше не нуждаетесь и выполняете zfs destroy name/of/snap@shot
.
Существует расширенное обсуждение этой проблемы в этом потоке форумов OpenSolaris.
4. Z3G (rpool/root столбец USED) сомнителен.
В любом случае, rpool/export/home/admin быть слишком большим (3,85 ГБ) вероятно первопричина. Взгляните на его содержание и удалите ненужные файлы туда. Поскольку администраторская файловая система не имеет никаких снимков, это должно сразу освободить некоторое пространство в пуле.
Это - известная проблема с файловыми системами копии на записи: Для удаления файла файловая система сначала должна выделить блок и зафиксировать новое состояние, прежде чем это сможет выпустить богатство пространства, содержавшего в файле, просто будучи удаленным.
(Это не проблема файловых систем со снимками, поскольку существуют другие способы реализовать их, чем просто копия на записи),
Выходы из сжатия:
Я столкнулся с тем же прерыванием несколько лет назад и не имел никаких снимков, которые я, возможно, выпустил для освобождения меня. Посмотрите, что поток в ZFS Обсуждает, где эта проблема была обсуждена подробно.
У меня это было, и я потратил некоторое время, пытаясь понять, что нужно. Мое решение состояло в том, чтобы обнулить пространство файлов, прежде чем пытаться их удалить.
У нас есть несколько неправильно работающих процессов, которые время от времени сходят с ума и заполняют диск файлами ядра (, оканчивающимися на число ), поэтому я создал сценарий, который содержит что-то подобное, чтобы сохранить одну копию.
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