研究生: |
張皓鈞 Chang, Hao-Chun |
---|---|
論文名稱: |
虛擬化容錯系統的軟體重構 Software Refactoring for Virtualization-based Fault Tolerance |
指導教授: |
李哲榮
Lee, Che-Rung |
口試委員: |
周哲維
Chou, Che-Wei 徐正炘 Hsu, Cheng-Hsin |
學位類別: |
碩士 Master |
系所名稱: |
電機資訊學院 - 資訊工程學系 Computer Science |
論文出版年: | 2024 |
畢業學年度: | 112 |
語文別: | 英文 |
論文頁數: | 23 |
中文關鍵詞: | 虛擬化 、容錯系統 、軟體重構 、Cuju |
外文關鍵詞: | Virtualization, Fault Tolerance, Software Refactoring, Cuju |
相關次數: | 點閱:37 下載:0 |
分享至: |
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
近年來,隨著軟體系統的持續演進和複雜化,如何進行高效且有效的重構已
成為重要的研究議題。同時,確保軟體系統的高可用性和強大的穩健性仍然是
我們關注的重點。針對此議題,本論文進行了一項全面的研究,探討如何透過
軟體系統的重構來提升虛擬化基礎的容錯能力。我們特別針對Cuju 進行研究和
應用,Cuju 是一個開源專案,其主要實現了一種針對虛擬化基礎容錯的時代同
步技術。
Cuju 採用了許多性能優化技術,包括非停機/流水線連續遷移、客戶端虛擬
內存/虛擬設備狀態的追蹤紀錄,以及消除QEMU 和KVM 之間的數據傳輸。然
而,通過將基於內核的虛擬機(KVM)從Linux 內核4.15 升級到5.4,我們擴大
了Cuju 的能力,為我們的研究內容提供了更好的穩定性。
本研究的主要目標是深入探討如何充分利用Cuju 的這些能力,並透過有效
的重構方法來提高軟體系統的容錯能力。我們首先識別和劃分出最常見的重構
技術,以及那些對系統容錯性具有重大負面影響的程式碼。接著,我們將這些
重構技術適用到一組開源軟體系統中,並透過與Cuju 的整合來實現更高的系統
容錯能力。
我們的初步研究結果顯示,透過有效的軟體重構,可以降低系統故障的發
生,同時,Cuju 的虛擬化基礎容錯機制也能提供無縫的系統恢復功能。當這兩
者結合在一起時,將有望提升軟體系統的韌性和可靠性。我們相信,這個研究
的結果將有助於開發和維護軟體系統,尤其是在容錯能力方面,提供了新的思
維和方法。
The constant evolution of software systems requires effective and efficient refactoring techniques to increase their robustness and reliability. One critical area is
the improvement of virtualization-based fault tolerance. In this research, we focus
on Cuju, an open source project that implements an epoch-based synchronization
technique that provides virtualization-based fault tolerance.
Cuju employs numerous performance optimization techniques, including nonstop/pipelined continuous migration, dirty tracking for guest virtual memory/virtual
device status, and elimination of data transfer between QEMU and KVM. Moreover, Cuju’s capabilities are enhanced by upgrading the kernel-based virtual machine (KVM) from Linux kernel 4.15 to 5.4, providing a robust platform for our
research.
The goal of this study is to determine how Cuju’s capabilities, enhanced by
the improved KVM, can improve the fault tolerance of software systems through
effective refactoring. We start by identifying and categorizing the most common
refactoring techniques and code smells that negatively impact the fault tolerance
ability. These techniques are then adapted and applied to a set of open source
software systems and integrated with Cuju for fault tolerance.
Our initial findings suggest that effective software refactoring can reduce the
occurrence of bugs, while Cuju’s virtualization-based fault-tolerance mechanism
can provide seamless system recovery. These combined strategies promise to significantly improve the robustness and reliability of software systems
[1] Fabrice Bellard. Quick emulator. Available at https://www.qemu.org/, 2003.
[2] The Linux Kernel community. Kernel-based virtual machine. Available at https://linux-kvm.org/page/Main_Page, 2007.
[3] Brendan Cully, Geoffrey Lefebvre, Dutch Meyer, Mike Feeley, Norm Hutchinson, and Andrew Warfield. Remus: High availability via asynchronous virtual machine replication. In Proceedings of the 5th USENIX Symposium on Networked Systems Design and Implementation, NSDI’08, pages 161–174, USA,2008. USENIX Association.
[4] LLVM Project. Clang static analyzer. Available at https://
clang-analyzer.llvm.org/, 2009. Originally accessed on September 3,
2009, archived on April 30, 2018.
[5] Daniel Marjamäki. Cppcheck: A static analysis tool for c/c++ code. Available
at https://cppcheck.sourceforge.io/, 2007.
[6] William Opdyke Martin Fowler with Kent Beck, John Brant and Don Roberts. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston, MA, USA, 1999.
[7] Peter Mell and Timothy Grance. The nist definition of cloud computing. Special Publication 800-145, National Institute of Standards and Technology, Gaithersburg, MD, USA, 2011.
[8] T. Mens and T. Tourwe. A survey of software refactoring. IEEE Transactions on Software Engineering, 30(2):126–139, 2004.
[9] SonarSource SA. Sonarqube: Continuous code quality and security. Available at https://www.sonarqube.org/, 2006.
[10] Cuju Developer Team. Cuju: An open source project for virtualization-based fault tolerance. Available at https://cuju-ft.github.io/cuju-web/home.
html, 2019.
[11] The Splint Developers. Splint: Secure programming lint. Available at http://www.splint.org/, July 2007. Main development activity on Splint stopped in 2010. Code repositories available at GitHub and SourceForge.
[12] Wen-Hsiu Tsai, Po-Jui Tsao, and Che-Rung Lee. Fvmm: Fast vm migration for virtualization-based fault tolerance using templates. In 2022 IEEE International Conference on Cloud Computing Technology and Science (CloudCom), pages 9–16, 2022.
[13] Po-Jui Tsao, Yi-Feng Sun, Li-Han Chen, and Chuan-Yu Cho. Efficient virtualization-based fault tolerance. In 2016 International Computer Symposium (ICS), pages 114–119, 2016.
[14] VMware, Inc. Vmware workstation 17 player is a platform for running a single virtual machine on a windows or linux pc to deliver managed
corporate desktops. Available at https://www.vmware.com/products/
workstation-player/workstation-player-evaluation.html.html.html,
1999.
[15] Chieh-Yu Yu, Che-Rung Lee, Po-Jui Tsao, Yu-Shiang Lin, and Tzi-Cker Chiueh. Efficient group fault tolerance for multi-tier services in cloud environments. In ICC 2020 - 2020 IEEE International Conference on Communications (ICC), pages 1–7, 2020.