From b3d8f2c950d8531da4c98d0ca179ed696abc911f Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 18 Feb 2025 10:51:32 +0000 Subject: [PATCH] [CT414]: WK06 Lecture 1 notes --- year4/semester2/CT414/notes/CT414.pdf | Bin 814314 -> 818851 bytes year4/semester2/CT414/notes/CT414.tex | 43 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/year4/semester2/CT414/notes/CT414.pdf b/year4/semester2/CT414/notes/CT414.pdf index 235a79dd3e13e0513ef6e50e09eb4bfe0082916b..fd5b873c2894034ffc1dd25a9b08b7db912a648e 100644 GIT binary patch delta 32829 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 E0FO8VmH+?% diff --git a/year4/semester2/CT414/notes/CT414.tex b/year4/semester2/CT414/notes/CT414.tex index be5884d4..7beb7cab 100644 --- a/year4/semester2/CT414/notes/CT414.tex +++ b/year4/semester2/CT414/notes/CT414.tex @@ -538,6 +538,49 @@ Scripts waiting on I/O waste no space because they get popped off the stack when \caption{ MEAN stack } \end{figure} +\section{Virtualisation} +KVM stuff +\\\\ +\textbf{QEMU (Quick Emulator)} is an open-source hosted hypervisor that performs hardware virtualisation. +It emulates CPUs through dynamic binary translation and provides a set of device models, enabling it to run a variety of unmodified guest operating systems. +It uses KVM Hosting mode in Proxmox where QEMU deals with the setting-up and migration of KVM images. +It is still involved in the emulation of hardware, but the execution of the guest is done by the KVM as requested by QEMU. +It uses the KVM to run virtual machines at near-native speed (requiring hardware virtualisation extensions on x86 machines). +When the target architecture is the same as the host architecture, QEMU can make use of KVM particular features, such as acceleration. +\\\\ +\textbf{LXC (Linux Containers)} is an operating-system-level virtualisation method for running multiple isolated Linux systems (containers) on a control host using a single Linux kernel. +The Linux kernel provides the cgroups (control groups) functionality that allows limitation \& prioritisation of resources (CPU, memory, block I/O, network, etc.) without the need for starting any virtual machines. +It provides namespace isolation functionality that allows complete isolation of an application's view of the operating environment, including process tress, networking, user IDs, and mounted file systems. +LXC combines the kernel's cgroups and support for isolated namespaces to provide an isolated environment for applications. +Docker can also use LXC as one of its execution drivers, enabling image management and providing deployment services. +\\\\ +\textbf{Ceph} is a storage platform that implements object storage on a single distributed computer cluster, and provides interfaces for object-level, block-level, \& file-level storage. +Ceph aims for completely distributed operation without a single point of failure, scalable to the exabyte level. +Ceph's software libraries provide client applications with direct access to the Reliable Autonomic Distributed Object Store (RADOS) object-based storage system. +Ceph replicates data and makes it fault-tolerant, using commodity hardware and requiring no specific hardware support. +As a result of its design, the system is both self-healing and self-managing, aiming to minimise administration time and other costs. +When an application writes data to Ceph using a block device, Ceph automatically striped and replicates the data across the cluster. +It works well with the KVM. + + + + + + + + + + + + + + + + + + + +