Увеличить изображение файловой системы

Я делал dpkg --configure -a в моем Debian wheezy. И получил эту ошибку:

 dpkg --configure -a dpkg: failed to write status record about `libcairo2' to `/var/lib/dpkg/status': No space left on device 

Я chrooted в .img файл. Что я могу сделать?

    2 Solutions collect form web for “Увеличить изображение файловой системы”

    Чтобы сделать это правильно, вам необходимо:

    1. Сначала разверните файл .img .
    2. Затем разверните файловую систему внутри.

    Лучший способ сделать первое: dd . По какой-то причине некоторые люди приписывают какую-то тайну тому, как работает dd , но на самом деле их нет. Например, чтобы добавить отверстие в конец вашего .img файла:

     dd bs=1kx1k seek=100 of=.img </dev/null 

    В любой системе POSIX, которая усекает файл до 100MiB. В системе GNU бит 1kx1k может быть сокращен до M dd ищет 100MiBs в файл, встречает EOF при первом чтении и закрывает файл. Это одно действие и не требует чтения (за пределами первого пустого) или пишет – оно почти атомальное.

    Если раньше файл составлял 50 Мбайт, ему теперь будет выделено 50 Мбайт. Если файл был 150MiBs раньше, это отрубит последние 50MiBs с хвоста. В файловой системе, которая понимает разреженные файлы, приложенное отверстие в файле не будет использовать дисковое пространство, действительно, и будет использовать только то, что необходимо, когда вы его заполняете.

    Другие способы сделать то же самое на некоторых системах:

     fallocate -l100M .img truncate -s100M .img 

    … обе эти команды будут делать то же самое, что и dd . Я рекомендую dd потому что ни один из этих инструментов не является переносимым, когда поведение dd является POSIX-spec'd , и как только вы узнаете, как правильно использовать демпфер -разрушитель , ни один диск никогда не осмелится встать на вашем пути.

    Если вы просто добавляете в свой .img вы можете сделать что-то в этом роде, независимо от того, монтируется ли он (хотя, если вы возьмете часть смонтированного .img , она может работать не так, как ожидалось) , но вам, скорее всего, понадобится Сначала umount .img чтобы изменить размер его составной файловой системы, и так может быть. Тем не менее, вам не нужно -d устраивать устройство loop.

    Как вы справляетесь со вторым, зависит от того, разделен ли .img или нет. Если это не так, как я полагаю, это основано на ваших комментариях в другом месте, тогда вам нужно будет только обратиться к fs по типу. Для файла ext[234] .img вы должны использовать resize2fs и выполнить с ним. Для других вы захотите взглянуть на соответствующие инструменты пользовательского пространства и их страницы руководства.

    Если .img разделено, это может быть более сложным. В таких случаях, как вы справляетесь с ситуацией, будет зависеть от того, какая таблица разделов используется (например, GPT против MBR против гибридного MBR) , будь то последний раздел в таблице разделов файла и многое другое. Я стесняюсь рисковать любой спецификой здесь без дополнительной информации: если вам нужен совет о том, как обращаться с секционированным .img пожалуйста, дайте мне знать с более подробной информацией, и я предложу все, что могу.

    Если файловая система chroot заполнена, вы можете увеличить файл изображения.

    Например, используя dd conv=notrunc oflag=append bs=1M count=X of=file.img . Будьте очень, очень осторожны :). То есть, если вы можете отключить chroot и создать резервную копию файла .img, потому что это будет очень рекомендуется.

    Затем измените размер файловой системы, чтобы он мог использовать дополнительное пространство. Для файловой системы ext4 команда будет resize2fs . В manpage предлагается выполнить эту последнюю команду на устройстве цикла, а не в файле:

     # losetup -f file.img # losetup -l NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE /dev/loop0 0 0 0 0 /home/alan/file.img # resize2fs /dev/loop0 ... # losetup -d /dev/loop0 

    Команда будет отличаться для разных файловых систем, например, btrfs filesystem resize /dev/loop0 max или xfs_growfs /test.img/is/mounted/here .

    Interesting Posts

    Загрузите копию файла, который обновляется при изменении

    Как отключить буферизацию RTP для SIP-вызовов в программном обеспечении FreeSWITCH pbx?

    Не удается правильно использовать мышь при запуске vim в tmux

    grep инвертированное соответствие по строке, удовлетворяющей шаблону

    Проблемы с компиляцией Python 3.6.0+ в Qubes OS Debian

    Почему GnuPG 2 и gpg-connect-agent не работают с «ERR 67108983 No SmartCard daemon»?

    Remount squashfs root filessytem read-write

    В случае успешного входа через IMAP сервер электронной почты отвечает без «ОК» и тега

    Настройка протокола PTP (Precision Time Protocol) в виртуальной среде RHEL 6 / Centos 6

    Логротат работает не так, как ожидалось

    Проверить скрипт / программу / приложение, чтобы проверить, жив ли мой сайт

    Как заставить backticks принимать переменные как переменные?

    Команда Shell для удаления первой строки, заключенной с косой чертой

    Найдите любые линии, превышающие определенную длину

    Почему мой Cygwin Bash всегда читается с терминала, когда я пытаюсь выполнить внешнюю команду?

    Linux и Unix - лучшая ОС в мире.