qemu-img: Could not open ‘disk’: Failed to get shared “write” lock

| 2018년 12월 31일 | 0 Comments

“Qemu는 오픈소스 기반에 애뮬레이터(Emulator)로  프로세서 뿐만아니라 CPU, 네트워크, Memory등 거의 모든 하드웨어들을 가상화형태로 애뮬레이션합니다.”
Emulator  : https://terms.naver.com/entry.nhn?docId=797248&cid=42347&categoryId=42347

QEMU는 qemu-img 라는 하드디스크 생성을 위한 명령어를 제공하는데….
이게 언젠가부터 아래처럼 변경되었다. 

현재는 2가지 버전을 가지고 운영 테스트중에 있으며 두버전에서 아래와 같은 차이가 있었다.

# qemu-img –version
qemu-img version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.30), Copyright (c) 2004-2008 Fabrice Bellard

# qemu-img info disk

 :: 2.5.0에서는 프로세서 실행중인 여부와 상관없이 디스크 정보를 확인가능했으나 2.10 이상부터는 아래와 같이 바뀌었다. 

 

# qemu-img –version
qemu-img version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.8)

# qemu-img info disk
qemu-img: Could not open ‘disk’: Failed to get shared “write” lock
Is another process using the image?

해당 디스크 파일이 실행중이라면 열지 못한다는 메세지가 출력된다.
기본적으로  프로세서가 실행중이라면 이미지에 잠금설정을 해두어 외부에서 쓸수 없도록 해두는 형식으로 바뀌었다. 
-U , –foce-share 옵션을 활용해서 강제로 정보를 확인가능하며 프로세서가 실행중이지 않다면 옵션없이도 정보를 확인할수 있다. 

# qemu-img info -U disk
image: disk
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 19G
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/d37b207d84a9a42df3fd7ea760f771300a9a730e
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

# qemu-img info –force-share disk
image: disk
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 19G
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/d37b207d84a9a42df3fd7ea760f771300a9a730e
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false

 

자세한건 아래 링크를 참고하시기 바랍니다.

https://wiki.qemu.org/ChangeLog/2.10
Block devices and tools
Image locking is added and enabled by default. Multiple QEMU processes cannot write to the same image as long as the host supports OFD or posix locking, unless options are specified otherwise.

https://bugzilla.redhat.com/show_bug.cgi?id=1519242
For sake of completion (and for self-documentation, to make sure I do not forget about it), discussing it Peter (thanks!) resulted in the following version/feature constraints for libguestfs’ case:
– qemu rejects unknown properties in the JSON, so unconditionally passing locking:off is not an option
– qemu >= 2.8 (not totally sure though, but surely not very old versions) supports the pseudo json: URLs
– qemu >= 2.10 supports the locking for file; luckly in libguestfs we already do a (too simplistic though) QMP-based detection of locking (see lib/qemu.c, guestfs_int_qemu_mandatory_locking)
– libvirt >= 2.1.0 supports the pseudo json: URLs for backing chains; older version cannot parse than, causing libvirt to error out
– creating the overlay this way will be fine with both our qemu, and libvirt backends; libvirt (2.1.0+, as per points above) will do the right thing

 

Tags: , , , ,

Category: LINUX, 가상화/클라우드

이 경현

About the Author ()

http://www.cloudv.kr (주)스마일서브 제2연구소