Неоднозначность с использованием & ldquo; ls -l & rdquo; и & ldquo; файл & rdquo; команды в файле qcow

У меня есть файл qcow2 в моей файловой системе, и я пытаюсь найти размер этого файла.

Для этого, когда я делаю ls -l в месте, где хранится файл, я получаю 13041664, что означает, что размер файла составляет около 13 МБ, а когда я делаю file <filename>, я получаю:

disk: QEMU QCOW Image (v2), has backing file (path 
/var/lib/nova/instances/_base/035db99541e92b5cca93bf18a997d626f), 21474836480 bytes

, который, я полагаю, говорит, что размер файла составляет около 21 ГБ.

Это мое неверное истолкование выходных данных команды или что-то еще происходит внутри файловой системы (что-то вроде тонкой подготовки)? Я получаю ls: cannot access /var/lib/nova/instances/_base/035db99541e92b5cca93bf18a997d626f: No such file or directory и правильно, что у меня нет файла там

ОБНОВЛЕНИЕ 2: Вывод qemu-img info <filename> выглядит следующим образом:

image: disk
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 12M
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/035db99541e92b5cca93bf18a997d626f512b73d (actual path: /var/lib/nova/instances/_base/035db99541e92b5cca93bf18a997d626f512b73d)
7
задан 24 July 2013 в 01:33

1 ответ

Из Qcow в Википедии:

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

Таким образом, размер файла действительно составляет 13 МБ, но при записи данных в него он может возрасти до 20 ГБ. Пример:

$ qemu-img create -f qcow2 test.img 2G
Formatting 'test.img', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off 
$ ls -l test.img 
-rw-r--r-- 1 carvalho carvalho 197120 Jul 18 09:30 test.img
$ file test.img 
test.img: QEMU QCOW Image (v2), 2147483648 bytes

Был создан пустой файл qcow2. Он может содержать файловую систему 2 ГБ, но на данный момент он занимает только 197 КБ на диске.


Из http://en.wikibooks.org/wiki/QEMU/Images :

Часть «корова» в qcow2 является аббревиатурой для копирования при написании, аккуратный маленький трюк, который позволяет вам настроить изображение один раз и использовать его много раз, не меняя его. Это идеально для разработки и тестирования программного обеспечения, для которого обычно требуется известная стабильная среда. Вы можете создать свою известную стабильную среду в одном изображении, а затем создать несколько одноразовых изображений для копирования при записи.

Чтобы запустить новую одноразовую среду на основе известного хорошего изображения, вызовите команду qemu-img с параметром -o backing_file и сообщите ему, на каком изображении будет основываться его копия. Когда вы запускаете QEMU с использованием одноразовой среды, все записи на виртуальный диск будут идти в этот одноразовый образ, а не в базовую копию.

со страницы руководства qemu-img:

Если указан параметр backing_file, то изображение будет записывать только отличия от backing_file. В этом случае не нужно указывать размер. backing_file никогда не будет изменен, если вы не используете команду монитора commit (или qemu-img commit).

Пример:

$ qemu-img create -f qcow2 -o backing_file=test.img test01.img
Formatting 'test01.img', fmt=qcow2 size=2147483648 backing_file='test.img' encryption=off cluster_size=65536 lazy_refcounts=off 
$ file test01.img 
test01.img: QEMU QCOW Image (v2), has backing file (path test.img), 2147483648 bytes

В вашем случае файл резервной копии / var / lib / nova / instances / _base / 035db99541e92b5cca93bf18a997d626f512b73d. Я не знаю, каково будет ожидаемое поведение, если вы попытаетесь использовать файл qcow без файла поддержки.


О /var/lib/nova/instances в документации OpenStack :

Этот каталог содержит образы дисков libvirt KVM на основе файлов для экземпляров, размещенных на этом вычислительном узле , Если вы не используете свое облако в среде общего хранилища, этот каталог будет уникальным для всех вычислительных узлов.

/ var / lib / nova / instances содержит два типа каталогов.

Первый - это каталог _base. Он содержит все кэшированные базовые изображения с первого взгляда для каждого уникального изображения, которое было запущено на этом вычислительном узле. Файлы, оканчивающиеся на _20 (или другое число), являются эфемерными базовыми изображениями.

Другие каталоги называются instance-xxxxxxxx. Эти каталоги соответствуют экземплярам, ​​запущенным на этом вычислительном узле. Файлы внутри относятся к одному из файлов в каталоге _base. По сути, это файлы на основе различий, содержащие только изменения, сделанные в исходном каталоге _base.

0
ответ дан 24 July 2013 в 01:33

Другие вопросы по тегам:

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