Недавно на одном из своих рабочих компьютеров под управлением Ubuntu 12.04, я столкнулся с такой проблемой. Очередное системное обновление завершилось ошибкой и в трее появился красный крудочек, сообщающий об этом. Простая команда apt-get install something выдала более информативную информацию:
dpkg: error processing /var/cache/apt/archives/linux-headers-3.2.0-31_3.2.0-31.50_all.deb (—unpack):
unable to create `/usr/src/linux-headers-3.2.0-31/arch/mips/include/asm/mach-pnx833x/irq.h.dpkg-new’ (while processing `./usr/src/linux-headers-3.2.0-31/arch/mips/include/asm/mach-pnx833x/irq.h’): No space left on device
Я действительно подумал, что не хватило места и бросился все проверять.
Но штатная утилита Disk Usage показала, что места у меня на всех партициях, в том числе и на проблемной партиции /usr предостаточно, чтобы посадить туда боинг установить что-нибудь полезное.
df -h показала следующее:
root@sattelite-dev-junior:/usr/local# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.2G 1.8G 7.0G 21% /
udev 494M 4.0K 494M 1% /dev
tmpfs 201M 1.1M 200M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 501M 2.7M 498M 1% /run/shm
/dev/sda6 4.6G 138M 4.3G 4% /tmp
/dev/sda5 938M 170M 722M 20% /boot
/dev/sda9 52G 13G 37G 27% /home
/dev/sda7 4.6G 3.6G 830M 82% /usr
Я в общем-то был удивлен таким поворотом. Все мое отчаяние и поиски с перерывами в течении нескольких дней увенчались таки успехом в замечательной статье от Superrb Studio Ubuntu — No space left on device? Is it a lie or have I run out of inodes?
В принципе все можно было понять уже из названия, но я все же ее прочел, и после вывода команды df -i все таки все понял:
dev@sattelite-dev-junior:~$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 610800 45876 564924 8% /
udev 126360 487 125873 1% /dev
tmpfs 128177 433 127744 1% /run
none 128177 3 128174 1% /run/lock
none 128177 13 128164 1% /run/shm
/dev/sda6 305216 79 305137 1% /tmp
/dev/sda5 61056 262 60794 1% /boot
/dev/sda9 3440640 138523 3302117 5% /home
/dev/sda7 305216 302422 2794 100% /usr
На диске не хватило свободных inodes. Вики:
inodes — это структура данных в традиционных для ОС UNIX файловых системах (ФС), таких как UFS. В этой структуре хранится метаинформация о стандартных файлах, каталогах или других объектах файловой системы, кроме непосредственно данных и имени.
Итак, у меня был полный раздел мелких файлов и закончилось место для записи метаинформации для них. Путей, помимо форматирования диска, я видел только два: или добавить в партицию /usr немного места (признаться не знаю, насколько это возможно), или убрать что-нибудь с партиции /usr.
Я занялся уборкой.
В рысканиях по /usr, я узнавал некоторые программы, без которых был уверен, что система будет работать стабильно после следующей загрузки. Так я нашел к примеру opera, geany, netbeans и другие.
За полчаса я освободил 2% и вновь пустился в поиски. На этот раз я нашел статью с thexnews.com Очистить немного места на жестком диске.
Воспользовавшись советом из статьи, я переместил папку /usr/src в media и создал на нее ссылку, для сохранения зависимостей:
sudo mv /usr/src /media/archive/
sudo ln -s /media/archive/src /usr/
В результате этой 5-ти минутной операции я получил полупустой /usr:
root@sattelite-dev-junior:/usr# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 610800 199403 411397 33% /
udev 126360 487 125873 1% /dev
tmpfs 128177 433 127744 1% /run
none 128177 3 128174 1% /run/lock
none 128177 13 128164 1% /run/shm
/dev/sda6 305216 80 305136 1% /tmp
/dev/sda5 61056 262 60794 1% /boot
/dev/sda9 3440640 138528 3302112 5% /home
/dev/sda7 305216 143444 161772 47% /usr
Удачи, и не попадайтесь ;)

