自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LXD 2.0 系列(九):實時遷移

系統(tǒng) Linux 系統(tǒng)運維
這是 LXD 2.0 系列介紹文章的第九篇。LXD 2.0 中的有一個盡管是實驗性質(zhì)的但非常令人興奮的功能,那就是支持容器檢查點和恢復。簡單地說,檢查點/恢復意味著正在運行的容器狀態(tài)可以被序列化到磁盤,要么可以作為同一主機上的有狀態(tài)快照,要么放到另一主機上相當于實時遷移。

[[184859]]

這是 LXD 2.0 系列介紹文章的第九篇。

  1. LXD 入門
  2. 安裝與配置
  3. 你的第一個 LXD 容器
  4. 資源控制
  5. 鏡像管理
  6. 遠程主機及容器遷移
  7. LXD 中的 Docker
  8. LXD 中的 LXD

介紹

LXD 2.0 中的有一個盡管是實驗性質(zhì)的但非常令人興奮的功能,那就是支持容器檢查點和恢復。

簡單地說,檢查點/恢復意味著正在運行的容器狀態(tài)可以被序列化到磁盤,要么可以作為同一主機上的有狀態(tài)快照,要么放到另一主機上相當于實時遷移。

要求

要使用容器實時遷移和有狀態(tài)快照,你需要以下條件:

  • 一個非常新的 Linux 內(nèi)核,4.4 或更高版本。
  • CRIU 2.0,可能需要一些 cherry-pick 的提交,具體取決于你確切的內(nèi)核配置。
  • 直接在主機上運行 LXD。 不能在容器嵌套下使用這些功能。
  • 對于遷移,目標主機必須至少實現(xiàn)源主機的指令集,目標主機內(nèi)核必須至少提供與源主機相同的系統(tǒng)調(diào)用,并且在源主機上掛載的任何內(nèi)核文件系統(tǒng)也必須可掛載到目標主機上。

Ubuntu 16.04 LTS 已經(jīng)提供了所有需要的依賴,在這種情況下,您只需要安裝 CRIU 本身:

 

  1. apt install criu 

使用 CRIU

有狀態(tài)快照

一個普通的快照看上去像這樣:

  1. stgraber@dakara:~$ lxc snapshot c1 first 
  2. stgraber@dakara:~$ lxc info c1 | grep first 
  3.  first (taken at 2016/04/25 19:35 UTC) (stateless) 

一個有狀態(tài)快照看上去像這樣:

  1. stgraber@dakara:~$ lxc snapshot c1 second --stateful 
  2. stgraber@dakara:~$ lxc info c1 | grep second 
  3.  second (taken at 2016/04/25 19:36 UTC) (stateful) 

這意味著所有容器運行時狀態(tài)都被序列化到磁盤并且作為了快照的一部分??梢韵衲氵€原無狀態(tài)快照那樣還原一個有狀態(tài)快照:

  1. stgraber@dakara:~$ lxc restore c1 second 
  2. stgraber@dakara:~$ 

有狀態(tài)快照的停止/啟動

比方說你由于升級內(nèi)核或者其他類似的維護而需要重啟機器。與其等待重啟后啟動所有的容器,你可以:

  1. stgraber@dakara:~$ lxc stop c1 --stateful 

容器狀態(tài)將會寫入到磁盤,會在下次啟動時讀取。

你甚至可以看到像下面那樣的狀態(tài):

  1. root@dakara:~# tree /var/lib/lxd/containers/c1/rootfs/state/ 
  2. /var/lib/lxd/containers/c1/rootfs/state/ 
  3. ├── cgroup.img 
  4. ├── core-101.img 
  5. ├── core-102.img 
  6. ├── core-107.img 
  7. ├── core-108.img 
  8. ├── core-109.img 
  9. ├── core-113.img 
  10. ├── core-114.img 
  11. ├── core-122.img 
  12. ├── core-125.img 
  13. ├── core-126.img 
  14. ├── core-127.img 
  15. ├── core-183.img 
  16. ├── core-1.img 
  17. ├── core-245.img 
  18. ├── core-246.img 
  19. ├── core-50.img 
  20. ├── core-52.img 
  21. ├── core-95.img 
  22. ├── core-96.img 
  23. ├── core-97.img 
  24. ├── core-98.img 
  25. ├── dump.log 
  26. ├── eventfd.img 
  27. ├── eventpoll.img 
  28. ├── fdinfo-10.img 
  29. ├── fdinfo-11.img 
  30. ├── fdinfo-12.img 
  31. ├── fdinfo-13.img 
  32. ├── fdinfo-14.img 
  33. ├── fdinfo-2.img 
  34. ├── fdinfo-3.img 
  35. ├── fdinfo-4.img 
  36. ├── fdinfo-5.img 
  37. ├── fdinfo-6.img 
  38. ├── fdinfo-7.img 
  39. ├── fdinfo-8.img 
  40. ├── fdinfo-9.img 
  41. ├── fifo-data.img 
  42. ├── fifo.img 
  43. ├── filelocks.img 
  44. ├── fs-101.img 
  45. ├── fs-113.img 
  46. ├── fs-122.img 
  47. ├── fs-183.img 
  48. ├── fs-1.img 
  49. ├── fs-245.img 
  50. ├── fs-246.img 
  51. ├── fs-50.img 
  52. ├── fs-52.img 
  53. ├── fs-95.img 
  54. ├── fs-96.img 
  55. ├── fs-97.img 
  56. ├── fs-98.img 
  57. ├── ids-101.img 
  58. ├── ids-113.img 
  59. ├── ids-122.img 
  60. ├── ids-183.img 
  61. ├── ids-1.img 
  62. ├── ids-245.img 
  63. ├── ids-246.img 
  64. ├── ids-50.img 
  65. ├── ids-52.img 
  66. ├── ids-95.img 
  67. ├── ids-96.img 
  68. ├── ids-97.img 
  69. ├── ids-98.img 
  70. ├── ifaddr-9.img 
  71. ├── inetsk.img 
  72. ├── inotify.img 
  73. ├── inventory.img 
  74. ├── ip6tables-9.img 
  75. ├── ipcns-var-10.img 
  76. ├── iptables-9.img 
  77. ├── mm-101.img 
  78. ├── mm-113.img 
  79. ├── mm-122.img 
  80. ├── mm-183.img 
  81. ├── mm-1.img 
  82. ├── mm-245.img 
  83. ├── mm-246.img 
  84. ├── mm-50.img 
  85. ├── mm-52.img 
  86. ├── mm-95.img 
  87. ├── mm-96.img 
  88. ├── mm-97.img 
  89. ├── mm-98.img 
  90. ├── mountpoints-12.img 
  91. ├── netdev-9.img 
  92. ├── netlinksk.img 
  93. ├── netns-9.img 
  94. ├── netns-ct-9.img 
  95. ├── netns-exp-9.img 
  96. ├── packetsk.img 
  97. ├── pagemap-101.img 
  98. ├── pagemap-113.img 
  99. ├── pagemap-122.img 
  100. ├── pagemap-183.img 
  101. ├── pagemap-1.img 
  102. ├── pagemap-245.img 
  103. ├── pagemap-246.img 
  104. ├── pagemap-50.img 
  105. ├── pagemap-52.img 
  106. ├── pagemap-95.img 
  107. ├── pagemap-96.img 
  108. ├── pagemap-97.img 
  109. ├── pagemap-98.img 
  110. ├── pages-10.img 
  111. ├── pages-11.img 
  112. ├── pages-12.img 
  113. ├── pages-13.img 
  114. ├── pages-1.img 
  115. ├── pages-2.img 
  116. ├── pages-3.img 
  117. ├── pages-4.img 
  118. ├── pages-5.img 
  119. ├── pages-6.img 
  120. ├── pages-7.img 
  121. ├── pages-8.img 
  122. ├── pages-9.img 
  123. ├── pipes-data.img 
  124. ├── pipes.img 
  125. ├── pstree.img 
  126. ├── reg-files.img 
  127. ├── remap-fpath.img 
  128. ├── route6-9.img 
  129. ├── route-9.img 
  130. ├── rule-9.img 
  131. ├── seccomp.img 
  132. ├── sigacts-101.img 
  133. ├── sigacts-113.img 
  134. ├── sigacts-122.img 
  135. ├── sigacts-183.img 
  136. ├── sigacts-1.img 
  137. ├── sigacts-245.img 
  138. ├── sigacts-246.img 
  139. ├── sigacts-50.img 
  140. ├── sigacts-52.img 
  141. ├── sigacts-95.img 
  142. ├── sigacts-96.img 
  143. ├── sigacts-97.img 
  144. ├── sigacts-98.img 
  145. ├── signalfd.img 
  146. ├── stats-dump 
  147. ├── timerfd.img 
  148. ├── tmpfs-dev-104.tar.gz.img 
  149. ├── tmpfs-dev-109.tar.gz.img 
  150. ├── tmpfs-dev-110.tar.gz.img 
  151. ├── tmpfs-dev-112.tar.gz.img 
  152. ├── tmpfs-dev-114.tar.gz.img 
  153. ├── tty.info 
  154. ├── unixsk.img 
  155. ├── userns-13.img 
  156. └── utsns-11.img 
  157. 0 directories, 154 files 

還原容器也很簡單:

  1. stgraber@dakara:~$ lxc start c1 

實時遷移

實時遷移基本上與上面的有狀態(tài)快照的停止/啟動相同,除了容器目錄和配置被移動到另一臺機器上。

  1. stgraber@dakara:~$ lxc list c1 
  2. +------+---------+-----------------------+----------------------------------------------+------------+-----------+ 
  3. NAME |  STATE  |          IPV4         |                     IPV6                     |    TYPE    | SNAPSHOTS | 
  4. +------+---------+-----------------------+----------------------------------------------+------------+-----------+ 
  5. | c1   | RUNNING | 10.178.150.197 (eth0) | 2001:470:b368:4242:216:3eff:fe19:27b0 (eth0) | PERSISTENT | 2         | 
  6. +------+---------+-----------------------+----------------------------------------------+------------+-----------+ 
  7. stgraber@dakara:~$ lxc list s-tollana: 
  8. +------+-------+------+------+------+-----------+ 
  9. NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | 
  10. +------+-------+------+------+------+-----------+ 
  11. stgraber@dakara:~$ lxc move c1 s-tollana: 
  12. stgraber@dakara:~$ lxc list c1 
  13. +------+-------+------+------+------+-----------+ 
  14. NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | 
  15. +------+-------+------+------+------+-----------+ 
  16. stgraber@dakara:~$ lxc list s-tollana: 
  17. +------+---------+-----------------------+----------------------------------------------+------------+-----------+ 
  18. NAME |  STATE  |          IPV4         |                     IPV6                     |    TYPE    | SNAPSHOTS | 
  19. +------+---------+-----------------------+----------------------------------------------+------------+-----------+ 
  20. | c1   | RUNNING | 10.178.150.197 (eth0) | 2001:470:b368:4242:216:3eff:fe19:27b0 (eth0) | PERSISTENT | 2         | 
  21. +------+---------+-----------------------+----------------------------------------------+------------+-----------+ 

限制

正如我之前說的,容器的檢查點/恢復還是非常新的功能,我們還在努力地開發(fā)這個功能、修復已知的問題。我們確實需要更多的人來嘗試這個功能,并給我們反饋,但我不建議在生產(chǎn)中使用這個功能。

我們跟蹤的問題列表在 Launchpad上。

我們估計在帶有 CRIU 的 Ubuntu 16.04 上帶有幾個服務的基本的 Ubuntu 容器能夠正常工作。然而在更復雜的容器、使用了設(shè)備直通、復雜的網(wǎng)絡服務或特殊的存儲配置下可能會失敗。

要是有問題,CRIU 會盡可能地在轉(zhuǎn)儲時失敗,而不是在恢復時。在這種情況下,源容器將繼續(xù)運行,快照或遷移將會失敗,并生成一個日志文件用于調(diào)試。

在極少數(shù)情況下,CRIU 無法恢復容器,在這種情況下,源容器仍然存在但將被停止,并且必須手動重新啟動。

發(fā)送 bug 報告

我們正在跟蹤 Launchpad 上關(guān)于 CRIU Ubuntu 軟件包的檢查點/恢復相關(guān)的錯誤。大多數(shù)修復 bug 工作是在上游的 CRIU 或 Linux 內(nèi)核上進行,但是這種方式我們更容易跟蹤。

要提交新的 bug 報告,請看這里。

請務必包括:

  • 你運行的命令和顯示給你的錯誤消息
  • lxc info 的輸出(*)
  • lxc info <container name>的輸出
  • lxc config show -expanded <container name> 的輸出
  • dmesg(*)的輸出
  • /proc/self/mountinfo 的輸出(*)
  • lxc exec <container name> - cat /proc/self/mountinfo 的輸出
  • uname -a(*)的輸出
  • /var/log/lxd.log(*)的內(nèi)容
  • /etc/default/lxd-bridge(*)的內(nèi)容
  • /var/log/lxd/<container name>/ 的 tarball(*)

如果報告遷移錯誤,而不是狀態(tài)快照或有狀態(tài)停止的錯誤,請將上面所有含有(*)標記的源與目標主機的信息發(fā)來。

額外信息

CRIU 的網(wǎng)站在: https://criu.org

LXD 的主站在: https://linuxcontainers.org/lxd

LXD 的 GitHub 倉庫: https://github.com/lxc/lxd

LXD 的郵件列表: https://lists.linuxcontainers.org

LXD 的 IRC 頻道: #lxcontainers on irc.freenode.net

作者簡介:

我是 Stéphane Graber。我是 LXC 和 LXD 項目的領(lǐng)導者,目前在加拿大魁北克蒙特利爾的家所在的Canonical 有限公司擔任 LXD 的技術(shù)主管。

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2016-07-29 14:12:21

2017-03-06 14:00:22

LXD 2.0LXDLinux

2017-02-05 14:52:42

2017-03-08 18:00:10

LXD 2.0LinuxOpenStack

2017-03-08 10:40:14

LXD 2.0JujuLinux

2017-02-27 19:27:52

LXDDockerLinux

2017-01-12 15:37:34

LinuxLXD 2.0鏡像管理

2016-12-29 11:01:03

LinuxLXD 2.0資源控制

2017-03-09 16:32:03

LXD 2.0Linux調(diào)試

2016-08-22 21:41:37

LXDLinux容器管理器

2016-08-24 15:12:41

LXDLinux容器

2023-08-07 14:28:42

技術(shù)遷移

2010-06-30 09:05:02

Hyper-V遷移

2013-11-25 09:37:03

虛擬機實時遷移

2023-08-18 12:17:03

Linode實時遷移云計算

2018-03-26 20:12:42

深度學習

2015-08-24 14:37:01

ALEIYE 2.0實時大數(shù)據(jù)RET功能

2017-11-08 15:23:57

Java GC優(yōu)化jvm

2024-10-25 10:00:00

云服務計算

2021-08-26 10:30:29

WebpackTree-Shakin前端
點贊
收藏

51CTO技術(shù)棧公眾號