亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

虛機磁盤支持IO懸掛

2024-10-30 09:19:14
102
0

1、IO懸掛概念

存儲故障(比如存儲斷鏈)場景下,物理磁盤的IO錯誤,通過虛擬化層傳給虛擬機前端,虛擬機內部收到IO錯誤,可能導致虛擬機內部的用戶文件系統變成read-only狀態,需要重啟虛擬機或者用戶手動恢復,這給用戶帶來額外的工作量。這種情況下,虛擬化平臺提供了一種磁盤IO懸掛的能力,即當存儲故障時,虛擬機IO下發到主機側時將IO懸掛住,在懸掛時間內不對虛擬機內部返回IO錯誤,這樣虛擬機內部的文件系統就不會因為IO錯誤而變為只讀狀態,而是呈現為Hang住;同時虛擬機后端按指定的懸掛間隔對IO進行重試。如果存儲故障在懸掛時間內恢復正常,懸掛住的IO即可恢復落盤,虛擬機內部文件系統自動恢復運行,不需要重啟虛擬機;如果存儲故障在懸掛時間內未能恢復正常,則上報錯誤給虛擬機內部,通知給用戶。 

2、注意事項和約束限制

  • 磁盤IO懸掛僅支持virtio-blk或virtio-scsi類型的虛擬磁盤。

  • 磁盤IO懸掛的虛擬磁盤后端一般為可能會發生存儲面鏈路斷鏈的云盤。

  • 磁盤IO懸掛可對讀寫IO錯誤分別使能,同一磁盤的讀寫IO錯誤重試間隔和超時時間使用相同配置。

  • 磁盤IO懸掛重試間隔不包含主機側實際讀寫IO的開銷,即兩次IO重試操作實際間隔會大于配置的IO錯誤重試間隔。

  • 磁盤IO懸掛無法區分IO錯誤的具體類型(如存儲斷鏈、扇區壞道、預留沖突等),只要硬件返回IO錯誤,都會進行懸掛處理。

  • 磁盤IO懸掛時,虛擬機內部IO不會返回,fdisk等訪問磁盤的系統命令會卡住,虛擬機內部依賴該命令返回的業務也會一直卡住。

  • 磁盤IO懸掛時,IO無法正常落盤,可能會導致虛擬機無法優雅關機,需要強制關機。

  • 磁盤IO懸掛時,無法讀取磁盤數據,會造成虛擬機無法正常重啟,需要先將虛擬機強制關機,等待存儲故障恢復后在重新啟動虛擬機。

  • 存儲故障發生后,雖然存在磁盤IO懸掛,依然解決不了以下問題:

    1. 存儲相關高級特性執行失敗

      高級特性包括:虛擬磁盤熱插、虛擬磁盤熱拔、創建虛擬磁盤、虛擬機啟動、虛擬機關機、虛擬機強制關機、虛擬機休眠、虛擬機喚醒、虛擬機存儲熱遷移、虛擬機存儲熱遷移取消、虛擬機創建存儲快照、虛擬機存儲快照合并、查詢虛擬機磁盤容量、磁盤在線擴容。

    2. 虛擬機生命周期執行失敗

  • 配置了磁盤IO懸掛的虛擬機發起熱遷移時,應該在目的端磁盤的XML配置中帶上與源端相同的磁盤IO懸掛配置。

3、磁盤IO懸掛配置

磁盤IO懸掛功能通過在磁盤xml配置中指定error_policy='retry' rerror_policy='retry'進行使能。

主要是配置上retry_intervalretry_timeout的值。

retry_interval:IO錯誤重試的間隔,配置范圍為0-MAX_LONG,單位為毫秒,未配置時使用默認值1000ms,ECX默認值:1000ms。

retry_timeout:IO錯誤重試超時時間,配置范圍為0-MAX_LONG,0值表示不會發生超時,單位為毫秒,未配置時使用默認值0,ECX默認值:60000ms。

virtio-blk磁盤的磁盤IO懸掛xml配置如下:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native' error_policy='retry' rerror_policy='retry' retry_interval='2000' retry_timeout='10000'/>
  <source dev='/path/to/your/storage'/>
  <target dev='vdb' bus='virtio'/>
  <backingStore/>
</disk>

 

virtio-scsi磁盤的磁盤IO懸掛xml配置如下:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native' error_policy='retry' rerror_policy='retry' retry_interval='2000' retry_timeout='10000'/>
  <source dev='/path/to/your/storage'/>
  <target dev='sdb' bus='scsi'/>
  <backingStore/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

4、實驗驗證

實驗后發現libvirt不支持error_policy='retry':

而openeuler在libvirt 6.2 版本加入了retry

 

 

 

0條評論
0 / 1000
魏****生
5文章數
0粉絲數
魏****生
5 文章 | 0 粉絲
原創

虛機磁盤支持IO懸掛

2024-10-30 09:19:14
102
0

1、IO懸掛概念

存儲故障(比如存儲斷鏈)場景下,物理磁盤的IO錯誤,通過虛擬化層傳給虛擬機前端,虛擬機內部收到IO錯誤,可能導致虛擬機內部的用戶文件系統變成read-only狀態,需要重啟虛擬機或者用戶手動恢復,這給用戶帶來額外的工作量。這種情況下,虛擬化平臺提供了一種磁盤IO懸掛的能力,即當存儲故障時,虛擬機IO下發到主機側時將IO懸掛住,在懸掛時間內不對虛擬機內部返回IO錯誤,這樣虛擬機內部的文件系統就不會因為IO錯誤而變為只讀狀態,而是呈現為Hang住;同時虛擬機后端按指定的懸掛間隔對IO進行重試。如果存儲故障在懸掛時間內恢復正常,懸掛住的IO即可恢復落盤,虛擬機內部文件系統自動恢復運行,不需要重啟虛擬機;如果存儲故障在懸掛時間內未能恢復正常,則上報錯誤給虛擬機內部,通知給用戶。 

2、注意事項和約束限制

  • 磁盤IO懸掛僅支持virtio-blk或virtio-scsi類型的虛擬磁盤。

  • 磁盤IO懸掛的虛擬磁盤后端一般為可能會發生存儲面鏈路斷鏈的云盤。

  • 磁盤IO懸掛可對讀寫IO錯誤分別使能,同一磁盤的讀寫IO錯誤重試間隔和超時時間使用相同配置。

  • 磁盤IO懸掛重試間隔不包含主機側實際讀寫IO的開銷,即兩次IO重試操作實際間隔會大于配置的IO錯誤重試間隔。

  • 磁盤IO懸掛無法區分IO錯誤的具體類型(如存儲斷鏈、扇區壞道、預留沖突等),只要硬件返回IO錯誤,都會進行懸掛處理。

  • 磁盤IO懸掛時,虛擬機內部IO不會返回,fdisk等訪問磁盤的系統命令會卡住,虛擬機內部依賴該命令返回的業務也會一直卡住。

  • 磁盤IO懸掛時,IO無法正常落盤,可能會導致虛擬機無法優雅關機,需要強制關機。

  • 磁盤IO懸掛時,無法讀取磁盤數據,會造成虛擬機無法正常重啟,需要先將虛擬機強制關機,等待存儲故障恢復后在重新啟動虛擬機。

  • 存儲故障發生后,雖然存在磁盤IO懸掛,依然解決不了以下問題:

    1. 存儲相關高級特性執行失敗

      高級特性包括:虛擬磁盤熱插、虛擬磁盤熱拔、創建虛擬磁盤、虛擬機啟動、虛擬機關機、虛擬機強制關機、虛擬機休眠、虛擬機喚醒、虛擬機存儲熱遷移、虛擬機存儲熱遷移取消、虛擬機創建存儲快照、虛擬機存儲快照合并、查詢虛擬機磁盤容量、磁盤在線擴容。

    2. 虛擬機生命周期執行失敗

  • 配置了磁盤IO懸掛的虛擬機發起熱遷移時,應該在目的端磁盤的XML配置中帶上與源端相同的磁盤IO懸掛配置。

3、磁盤IO懸掛配置

磁盤IO懸掛功能通過在磁盤xml配置中指定error_policy='retry' rerror_policy='retry'進行使能。

主要是配置上retry_intervalretry_timeout的值。

retry_interval:IO錯誤重試的間隔,配置范圍為0-MAX_LONG,單位為毫秒,未配置時使用默認值1000ms,ECX默認值:1000ms。

retry_timeout:IO錯誤重試超時時間,配置范圍為0-MAX_LONG,0值表示不會發生超時,單位為毫秒,未配置時使用默認值0,ECX默認值:60000ms。

virtio-blk磁盤的磁盤IO懸掛xml配置如下:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native' error_policy='retry' rerror_policy='retry' retry_interval='2000' retry_timeout='10000'/>
  <source dev='/path/to/your/storage'/>
  <target dev='vdb' bus='virtio'/>
  <backingStore/>
</disk>

 

virtio-scsi磁盤的磁盤IO懸掛xml配置如下:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native' error_policy='retry' rerror_policy='retry' retry_interval='2000' retry_timeout='10000'/>
  <source dev='/path/to/your/storage'/>
  <target dev='sdb' bus='scsi'/>
  <backingStore/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

4、實驗驗證

實驗后發現libvirt不支持error_policy='retry':

而openeuler在libvirt 6.2 版本加入了retry

 

 

 

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0