qemu img check命令詳解

2022-06-26 08:48:11 字數 3927 閱讀 9440

生產環境上,對計算節點檔案系統修復,導致某些虛機的映象檔案資料丟失,出現異常,最終造成虛機無法啟動,檢視對應計算節點的nova日誌,報如下錯誤

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2560, in power_on

nova-compute: self._hard_reboot(context, instance, network_info, block_device_info)

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2449, in _hard_reboot

nova-compute: vifs_already_plugged=true)

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5191, in _create_domain_and_network

nova-compute: destroy_disks_on_failure)

nova-compute: file "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__

nova-compute: self.force_reraise()

nova-compute: file "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise

nova-compute: six.reraise(self.type_, self.value, self.tb)

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5163, in _create_domain_and_network

nova-compute: post_xml_callback=post_xml_callback)

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5081, in _create_domain

nova-compute: guest.launch(pause=pause)

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 145, in launch

nova-compute: self._encoded_xml, errors='ignore')

nova-compute: file "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__

nova-compute: self.force_reraise()

nova-compute: file "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise

nova-compute: six.reraise(self.type_, self.value, self.tb)

nova-compute: file "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 140, in launch

nova-compute: return self._domain.createwithflags(flags)

nova-compute: file "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit

nova-compute: result = proxy_call(self._autowrap, f, *args, **kwargs)

nova-compute: file "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call

nova-compute: rv = execute(f, *args, **kwargs)

nova-compute: file "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute

nova-compute: six.reraise(c, e, tb)

nova-compute: file "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker

nova-compute: rv = meth(*args, **kwargs)

nova-compute: file "/usr/lib64/python2.7/site-packages/libvirt.py", line 1065, in createwithflags

nova-compute: if ret == -1: raise libvirterror ('virdomaincreatewithflags() failed', dom=self)

nova-compute: libvirterror: internal error: process exited while connecting to monitor: 2020-03-16t01:44:43.128499z

qemu-kvm: -drive file=/os_instance/3dc75704-f729-4c33-865b-313f0e8a8df8/disk,format=qcow2,if=none,id=drive-virtio-disk0,cache=none:

qcow2: image is corrupt; cannot be opened read/write

進入到虛機disk的目錄下,執行qemu-img check disk,檢查映象資料的一致性,發現很多error,執行qemu-img check -r all disk命令,對磁碟映象進行修復,最後重啟虛機即可

qemu-img check [-f fmt]  [--output=ofmt]  [-r [leaks | all]]  filename

對磁碟映象檔案進行一致性檢查,查詢映象檔案中的錯誤,目前僅支援對「qcow2」、「qed」、「vdi」格式檔案的檢查。其中,qcow2是qemu 0.8.3版本引入的映象檔案格式,也是目前使用最廣泛的格式。qed(qemu enhanced disk)是從qemu 0.14版開始加入的增強磁碟檔案格式,為了避免qcow2格式的一些缺點,也為了提高效能,不過目前還不夠成熟。而vdi(virtual disk image)是oracle的virtualbox虛擬機器中的儲存格式。

引數-f fmt是指定檔案的格式,如果不指定格式qemu-img會自動檢測,filename是磁碟映象檔案的名稱(包括路徑)。

如果指定了「-r」,qemu-img將嘗試修復在檢查時發現的任何非一致性。在使用qemu-img check -r 命令執行,最好對磁碟檔案進行備份,-r leaks 僅修復集群損壞。

-r all修復各種型別的錯誤,該命令執行後,會有乙個退出碼,不同的數字,表示不同的檢測結果

0 檢查完成,映象(現在)是一致的

1 檢查由於內部錯誤而未完成

2 檢查完成,映象已損壞

3 檢查完成,映象已洩漏集群,但沒有損壞

63 映象格式不支援檢查

MySQL MariaDB grant命令詳解

mysql mariadb中可以給你乙個使用者授予如select,insert,update,delete等其中的乙個或者多個許可權,主要使用grant命令,用法格式為 grant 許可權 on 資料庫物件 to 使用者 一 grant 普通資料使用者,查詢 插入 更新 刪除 資料庫中所有表資料的權...

Linux Unix vmstat命令實戰詳解

vmstat命令是最常見的linux unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的cpu使用率,記憶體使用,虛擬記憶體交換情況,io讀寫情況。這個命令是我檢視linux unix最喜愛的命令,乙個是linux unix都支援,二是相比top,我可以看到整個機器的cpu,記憶體...

Entity Framework 遷移命令 詳解

enable migrations啟用遷移 add migration為掛起的model變化新增遷移指令碼 update database將掛起的遷移更新到資料庫 get migrations獲取已經應用的遷移 執行update database來公升級資料庫到最新版本.我們可以通過指定 verbo...