<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Some experience in maintenance of an academic cloud</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vasyl P. Oleksiuk</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olesia R. Oleksiuk</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oleg M. Spirin</string-name>
          <email>oleg.spirin@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nadiia R. Balyk</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yaroslav P. Vasylenko</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Information Technologies and Learning Tools of NAES of Ukraine</institution>
          ,
          <addr-line>9 M. Berlynskoho Str., Kyiv, 04060</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Ternopil Regional Municipal Institute of Postgraduate Education</institution>
          ,
          <addr-line>1 V. Hromnytskogo Str., Ternopil, 46027</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Ternopil Volodymyr Hnatiuk National Pedagogical University</institution>
          ,
          <addr-line>2 M. Kryvonosa Str., Ternopil, 46027</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>University of Educational Management</institution>
          ,
          <addr-line>52-A Sichovykh Striltsiv Str., Kyiv, 04053</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>165</fpage>
      <lpage>178</lpage>
      <abstract>
        <p>The article is devoted to the systematization of experience in the deployment, maintenance and servicing of the private academic cloud. The article contains model of the authors' cloud infrastructure. It was developed at Ternopil Volodymyr Hnatiuk National Pedagogical University (Ukraine) on the basis of the Apache CloudStack platform. The authors identify the main tasks for maintaining a private academic cloud. Here they are making changes to the cloud infrastructure; maintenance of virtual machines (VM) to determine the performance and migration of VM instances; work with VMs; backup of all cloud infrastructure. The analysis of productivity and providing students with computing resources is carried out. The main types of VM used in training are given. The number and characteristics of VM that can be served by a private academic cloud are calculated. Approaches and schemes for performing backup are analysed. Some theoretical and practical experience of using cloud services to perform backup has been studied. Several scripts have been developed for archiving the platform database and its repositories. They allow you to upload backups to the Google Drive cloud service. The performance of these scripts for the author's deployment of private cloud infrastructure was evaluated.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;cloud computing</kwd>
        <kwd>private academic cloud</kwd>
        <kwd>Apache CloudStack</kwd>
        <kwd>G Suite</kwd>
        <kwd>Google Drive</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        As the analysis of the literature shows, many university CBLE are usually deployed according
to the hybrid model [
        <xref ref-type="bibr" rid="ref6 ref7 ref8">6, 7, 8</xref>
        ]. One of the most important components in the structure of this
environment is the private academic cloud [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. It is now deployed according to the most
productive IaaS service model. A hybrid cloud is a cost-efective way to solve the problem of
insuficient computing resources. The private academic cloud allows the university to meet the
peak demand of students and faculty through a combination of local infrastructure and one or
more public clouds [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Various commercial and free platforms are used in universities to build private academic
clouds [
        <xref ref-type="bibr" rid="ref11 ref12 ref13 ref14">11, 12, 13, 14</xref>
        ]. A productive method of deploying private academic clouds is to use
solutions from leading cloud vendors such as Google Inc., Microsoft, Amazon and others. Google
Inc. ofers researchers, universities, faculties, faculty and students grants and loans for teaching
and research. In particular, leading European educational institutions can access Google Cloud
within the Internet2 project [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Unfortunately, these opportunities are not currently available
for our country (Ukraine). For example, Microsoft Educator Grant is a program designed
specifically to provide access to Microsoft Azure to college and university professors teaching
advanced courses. As part of this program, faculty teaching Azure in their curricula are awarded
subscriptions to support their course [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. In general, these programs are very useful and
productive. However, they are usually provided on a temporary basis and therefore cannot
completely replace the cloud-based IT infrastructure of universities and colleges.
      </p>
      <p>
        Among the free platforms for cloud infrastructure deployment, CloudStack, Openstack,
Proxmox, and Eucalyptus are the most suitable. Each of them has its advantages and disadvantages.
There are many attempts to compare these platforms. The authors of articles comparing such
platforms state [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ]:
• OpenStack has large community, ofers wide integration with storage, network and
compute technologies, but is too complex to deploy and configure;
• Eucalyptus the longest-standing open source project is banking on its very tight
technical ties to Amazon Web Services (AWS). The platform is configurable, but not very
customizable;
• Proxmox is open source platform. It can provide easy way to deployment cloud
infrastructure. But it is not very suitable as a platform for a private cloud in the CLBE;
• CloudStack has well rounted GUI, can provide an advanced cloud infrastructure, but it is
very GUI centric built on single Java core.
      </p>
      <p>We have deployed private academic cloud based on the Apache CloudStack platform.</p>
      <p>It contains a management server, 4 hosts, 4 primaries and 1 secondary storage. We decided to
use hypervisors instead of containers. This is because the former are more versatile. In addition,
the use of hypervisors is safer than containers. To save computing resources, we have installed
primary storage on the hosts. We used VLANs to distribute trafic across individual networks.
These networks can be allocated to groups or individual students.</p>
      <p>
        In general, our private academic cloud provides [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]:
• Development and Execution of student virtual machines;
• Aggregation of computing resources of several hosts;
• VM migration between repositories;
• VM connections to each other through guest networks;
• Launching VMs within other VMs;
• Integration with Active Directory;
• Distribution of student accounts according to their academic groups.
      </p>
      <p>There are many problems and corresponding tasks in the process private academic cloud
using.</p>
      <p>The purpose of the article is to systematize author’s experience in maintenance the Cloud
Based Learning Environment.</p>
      <p>The following tasks are required to achieve the goal of the research:
1. Analysis of maintenance tasks of academic clouds in foreign and Ukrainian universities.
2. Definition of maintenance tasks of academic cloud which has deployed by authors.
3. Listing and systematization of author’s experience in maintenance of academic cloud of</p>
      <p>Ternopil Volodymyr Hnatiuk National Pedagogical University.</p>
    </sec>
    <sec id="sec-2">
      <title>2. The private clouds maintenance tasks</title>
      <p>
        As the experience of cloud infrastructure maintenance shows, this is an ongoing process. It
requires constant attention from engineers, network system administrators, teachers, and
student involvement. Scientists describe the experience of deploying an academic private cloud,
including determining the performance of hypervisors and storage [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The biggest challenge
for researchers was the transition from a prototype of an academic cloud to a productive one. In
this context, they addressed the problem of load balancing, elastic hypervisors, security threats.
Storage backup tasks are also important for such clouds.
      </p>
      <p>
        The authors of the book “Data Backups and Cloud Computing” ofer the concept of backup
to cloud storage. They say that both the cloud provider and the cloud consumers have to take
comprehensive steps to ensure appropriate configurations, hardening of the CBLE, appropriate
design and development, appropriate interoperability, and adequate testing [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
      </p>
      <p>
        Scientists from the Institute of Physics and Mechanics of the National Academy of Sciences
of Ukraine and Lviv Polytechnic National University have developed an efective method
of deduplication and distribution of data in cloud storage during the creation of backups.
Researchers have developed an intelligent system for such deduplication and tested it [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>
        Junfeng Tian, Zilong Wang and Zhen Li also studied cloud data backup [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. The authors
propose a scheme for data separation and backup and encryption. They state that their own
scheme resolves the conflict between data security and the survivability of the IT infrastructure
with the help of encrypted backup.
      </p>
      <p>
        The Apache CloudStack cloud infrastructure redundancy model developed by Paul Angus is
very useful for our study. It creates a vendor agnostic API and UI in CloudStack for end users.
The author’s Framework abstracts the specifics of solutions, such that through the use of a
plugin, a 3rd party solution can deliver backup and recovery solutions [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
3. Definition of maintenance tasks of authors’ academic cloud
Here are the main tasks for servicing our sample private academic cloud:
1. Work with student accounts;
2. Making changes to the cloud infrastructure;
3. Creating VM templates;
4. VM service (system, student, teacher);
5. Determining the performance of individual hosts and the cloud as a whole;
6. Migration of VM specimens;
7. Stopping and restarting physical hosts;
8. Cloud infrastructure backup.
      </p>
      <p>The first task involves creating student and faculty accounts. We authenticate users of the
academic cloud from a centralized database – LDAP-directory (Microsoft Active Directory). This
approach makes it possible to use single registration data to access all hybrid IT infrastructure
services. We used CloudStack domains to distribute students according to academic groups.
Adding users to them is possible in automatic (using links at the first successful authentication)
and manual mode. Unfortunately, due to the incompatibility of our users’ logins with the
Apache CloudStack platform, we had to choose the manual mode. To reduce the technical
work involved in finding LDAP directory entries, we have created several queries to filter user
account data.</p>
      <p>Maintenance of our developed cloud infrastructure involves the implementation of tasks such
as:
• changing the parameters of the components of the cloud infrastructure – zones, clusters,
hosts, storages;
• creating and routing of virtual networks for individual groups or students;
• creating and modifying templates of compute ofering services that determine the
performance of VM;
• creating and modifying network ofering service templates such as VPN, DHCP, DNS
servers, Firewall, Load Balancer and others;
• creating projects for VM sharing by students.</p>
      <p>When creating the service ofering templates, we compared the characteristics of the hardware
hosts (CPU frequency, RAM) with the minimum guest OS requirements and the number of
students. To do this, we used the inequality:</p>
      <p>=  *  &lt;  ℎ,
where   – the total frequency of VMs processors;  – amount of students;  – the
minimum frequency is recommended for the guest OS;  ℎ – total frequency of hardware
host processors. The last value can be found from the ratio:

 ℎ = ∑︁(),</p>
      <p>=1
where  – the number of cores in the processor of the i-th host,  – CPU frequency of the
i-th host.</p>
      <p>It is well known that the frequency of a modern processor is not constant. It can increase or
decrease depending on the mode of operation of the CPU. That’s why we use Processor Base
Frequency in the tables and formulas above. Processor Base Frequency describes the rate at
which the processor’s transistors are open and close. This processor frequency is measured by
each hypervisor in the Apache CloudStack platform.</p>
      <p>Similarly, to determine the required amount of memory we used the inequality:
  =  *   &lt;  ℎ</p>
      <p>As table 1 shows, the private academic cloud has a total frequency of about 50GHz. And the
total amount of memory is about 90 Gb. Regarding the frequency, two other opposite factors
should be taken into account:
• Table 1 shows the base frequency, and processors can run faster thanks to Turbo-Boost
technology;
• Hosts run other software (OS, databases, management servers, hypervisors). It also
consumes resources.</p>
      <p>Comparing the data in table 2 and table 1, we can conclude that our academic cloud provides
about 50 VM with Linux without a graphical user interface (GUI), more than 40 VM with
Windows Workstation, about 35 VM with Windows Server and OC Linux with GUI.</p>
      <p>
        We use the EVE-NG platform for modelling in the study of computer networks. It launches
its own VMs inside the main Apache CloudStack VM [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Such nested virtualization requires
more resources. Therefore, Table 1 has a row named OSAdvLinux. For this OS, our cloud can
run about 20 instances. We have created in our cloud infrastructure some compute ofering
templates based on the data provided.
      </p>
      <p>
        Regarding VM migration, we used the approach described in [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. Its authors propose to
evaluate the eficiency of the cloud infrastructure as an integrated indicator of the use of
resources of each instance of the VM. The authors indicate that a specific instance needs to
be migrated to another host to resolve the issue. They propose the concept of non-uniformity,
which is determined by the ratio:
      </p>
      <p>⎯⎸  (︂  − ¯ )︂ 2
 = ⎷⎸∑︁</p>
      <p>,
=1
¯
where  is the number of resources,  is the projected use of the -th resource, ¯ is the average
predicted value of the use of all resources of the -th server. Academic cloud administrators
should minimize value .</p>
      <p>To define an overloaded host, the concept of “hot spot” is used. The host will be “hot” if
at least one of its resources exceeds the limit value (“temperature”). To determine the host’s
“temperature” the amount of use of all its resources.</p>
      <p>* = ∑︁ ( − )2 ,</p>
      <p>∈</p>
      <p>If the value of * is greater than zero, then virtual machines should be migrated from the
appropriate host. Apache CloudStack system implements the appropriate functionality. Root or
domain administrator can transfer both disks of virtual machines and run them on another host.</p>
      <p>Another way to solve the problem of lack of computing resources is CPU and RAM
overcommit. In this case, the Apache CloudStack system administrator sets the multiplier. This number
is multiplied by the total CPU frequency or amount of RAM. However, this method should not
be abused. This can lead to unpredictable consequences, such as denial of service to virtual
machines.
4. Designing and realization an academic clouds’ backup model
Experience shows that the task of backup is very important and time consuming. This is
primarily due to the large amounts of student VMs data in the private academic cloud. Large
companies develop a disaster recovery plan in this case. Large companies are developing
a disaster recovery plan in this case. But in educational institutions, IT services work to
perform such tasks. Therefore, they need to develop a model, identify potential risks in the IT
infrastructure, consider and implement an appropriate backup system.</p>
      <p>
        The development of a backup strategy requires the definition of the main goals and objectives
of the backup, tools and regulations. In general, the problem of back-up is relevant for almost all
IT infrastructures. When choosing a backup method, the following criteria are important [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
      </p>
      <p>The development of a backup strategy requires the definition of the main goals and objectives
of the backup, tools and regulations. In general, the problem of backup is relevant for almost all
IT infrastructures. When choosing a backup method, the following criteria are important:
• backup time to the storage;
• recovery time from backup;
• the number of copies that can be stored;
• risks due to inconsistency of backups, imperfection of the backup method, complete or
partial loss of backups;
• overhead costs: the level of load on the servers when performing copying, reducing the
speed of service response, etc;
• the cost of renting all services and storage.</p>
      <p>Currently, there are 3 main backup schemes such as:
• Full. This type of backup creates a complete copy of all data.
• Incremental. In this case, only files that have changed since the previous backup are
copied. The following incremental backup only adds files that have been modified since
the previous backup.
• Diferential . The backup program copies each file that has changed since the last full
backup. Diferential copying speeds up the recovery process.</p>
      <p>
        To save material costs, we use almost no server equipment and powerful and high-speed
network storage in our academic cloud installation. Instead, we decided to use cloud services.
For example, the Google Drive service within the G Suite for education package ofers virtually
unlimited disk space [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. The disadvantage of such a repository is the significant time to upload
or download backups. This speed will be limited by the bandwidth of the university’s Internet
channel. The latter requirement can be considered acceptable, as our implementation of the
academic cloud is used primarily for training rather than for production.
      </p>
      <p>
        To use Google Drive in our own scripts, we need to use the API of this service. This interface
is accessible through Google Developers Console, a software developer service. First you need
to create your own project. Credentials were created to access this project. We have chosen
to access OAuth 2.0 accounts. OAuth is an open authorization standard that allows a user or
application to give and access data without having to enter a login and password. Access tokens
are used for this purpose. Each access token provides access to a specific client to specific
resources and for a specified period of time [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. After adding a new project, we created new
data for authentication, selected the type of application (desktop) and activated the appropriate
API (Google Drive API).
      </p>
      <p>Our research was performed at the Joint Laboratory of the Institute of Information
Technologies and Learning Tools of the National Academy of Educational Sciences of Ukraine, and
Ternopil Volodymyr Hnatiuk National Pedagogical University.</p>
      <p>Our academic cloud deployment contains the following objects:
• One management server;
• Four hosts for running VMs instances;
• Four primary repositories containing disks of these VMs;
• One secondary repository for saving templates and ISO images.</p>
      <p>Because templates and ISO images do not change, but only new ones are added, we chose the
incremental method to back up the secondary storage. Its implementation was based on the
use of a ready-made utility for synchronizing storage files. Unfortunately, there is currently
almost no such high-quality utility like Google back-up and Sync, which is developed for OC
Windows. We analysed several tools such as:
• Gdrive (grive2). Google Drive client with the support for the new Drive REST API and
partial sync. It can’t provide continuously wait for changes in file system or in Google
Drive to occur and upload.
• Gnome-online-accounts. It is system utility located within system’s settings in Gnome</p>
      <p>GUI. But it can only be executed in a graphical interface.
• GoSync is a Google Drive client with GUI support for Linux. It is designed under the GNU
General Public License. The client is not perfect enough, for example, it has automatic
regular synchronization every 10 minutes.
• Google-drive-ocamlfuse is a FUSE (Filesystem in Userspace) filesystem for Google Drive,
written in OCaml. FUSE is a free module for the kernel of Unix-like operating systems. It
allows developers to create new types of file systems available for users to mount without
the root privileges of Google Drive on Linux.</p>
      <p>
        We used the latest utility. Here are its main features [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]:
• full read/write access to ordinary files and folders;
• read-only access to google docs, sheets, and slides;
• multiple account support;
• duplicate file handling;
• access to trash;
• storing Unix permissions and ownership;
• support symbolic links;
• streaming through read-ahead bufers.
      </p>
      <p>Some problem was that the utility requires authorization using a browser in a graphical
interface. Therefore, we used an alternative authorization mode. Since we already had our own
OAuth2 client ID and client secret, we specified them in the command:
google-drive-ocamlfuse -id 12345678.apps.googleusercontent.com -secret abcde12345
As the command tries to start the browser on the server where there is no GUI we formed the
necessary URL as it is written in the documentation on Google Developers Console. After going
to this address, we received a verification code. This code gave access to folder synchronization
to the Google Drive.</p>
      <p>For security reasons, we decided to sync not the secondary storage itself, but a copy of it
from the backup drive (Backup_Secondary task, see figure 1). So, we first synchronized local
folders with the command:</p>
      <p>rsync -azvh /export/secondary /export/sync_secondary/arch_cloud
where /export/secondary – the secondary storage of Apache CloudStack infrastructure;
/export/sync_secondary/arch_cloud – the local copy of this storage.</p>
      <p>To synchronize the /export/sync_secondary/arch_cloud folder, the following command has
been added to the server task scheduler: google-drive-ocamlfuse /export/sync_secondary
It runs every time a server with secondary storage is loaded.</p>
      <p>A backup of all databases is required to restore the Apache CloudStack cloud infrastructure.
These are such databases:
• Cloud. It contains all objects of cloud infrastructure.
• Cloud_usage. A database that contains generalized data on resource consumption by the
end user. It is used to obtain statistics and compile reports.</p>
      <p>Since the backup of these databases is quite small, we decided to store all backups in the
cloud storage (Backup_Database task, see figure 1). The traditional database for the Apache
CloudStack platform is MySQL. The main utility for backing up MySQL databases is mysqldump.
Its syntax involves entering a login name and password. Because the shell script in Linux is
written as a plain-text file, it will contain the name of the user’s password (usually the root)
of the database. This is a potential security risk for the entire server. In order not to leave
open the data for authorization of the database user, we used the “login path” option. A “login
path” is an option group containing options that specify which MySQL server to connect to
and which ac-count to authenticate as. To create or modify a login path file, we have used the
mysql_config_editor utility. In general, the commands for creating and archiving a database
dump are as follows:</p>
      <p>/usr/bin/mysqldump –login-path=DailyBackup -u root -A &gt;
$BACKUP_DIR/"archive_cloud_all_""$date_daily"".sql"
tar -czf $BACKUP_DIR/"archive_cloud_all_""$date_daily"".sql.tgz"
$BACKUP_DIR/"archive_cloud_all_""$date_daily"".sql"</p>
      <p>The variable $date_daily contains the current date of the archive. This allows you to see the
date of archiving directly in the file name.</p>
      <p>
        To upload the files to the server, we used a ready-made script from github [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Here is its
launch:
      </p>
      <p>upload.sh "arch_cloud/DB" "$entry" $upl_file folder_ID "application/x-gzip"
where
• arch_cloud/DB – folder for uploading files;
• $entry – full path to the file;
• $upl_file – file name to download;
• folder_ID – Google Drive folder ID;
• application/x-gzip – file MIME-type.</p>
      <p>A special refresh_token token is required to provide long-term access of the up-load.sh script
to Google Drive. It can be obtained by curl-calling a URL such as:</p>
      <p>curl --silent "https://accounts.google.com/o/oauth2/token" --data "code=&lt;access_token&gt;&amp;
client_id=&lt;client_ID&gt;&amp;client_secret=&lt;client_secret &gt;&amp;redirect_uri=urn:ietf:wg:oauth:2.0:oob&amp;
grant_type=authorization_code"</p>
      <p>In general, the scheme of backuping of cloud infrastructure is shown in figure 1.</p>
      <p>Performing backup of primary repositories (Backup_Primary task (250,251,252,253)) has some
dificulties. An analysis of Internet sources, management server databases, and storages files
showed that the Apache CloudStack platform does not typically use full copies of disk templates
for each VM. This means that full backups should be made to reduce the risk of inconsistencies
in primary repository archives.</p>
      <p>Additionally, it would be good to prepare a cloud platform, stopping all VMs. Of course,
students need to form an understanding of the need to turn of their own VM. However, in
practice this is not always possible. Therefore, it is necessary to stop all VM programmatically,
by means of a script. This can be done using the API features of the Apache CloudStack platform.
Using API functions allows the developer to access data about cloud infrastructure objects. It
is also possible to change the state of these objects. To generate a query that contains API
functions, you must specify:
• URL of the management server;
• Service construct “api?”. It contains the path to a certain API-function, and indicates the
beginning of the parameters that are transmitted using the GET method.
• Command. It is the name of the API-function.
• ApiKey. The key, that can be generated for each user account.
• Additional query options separated like GET queries using the “&amp;” character.
• Response format (JSON or XML).
• Signature of the request.</p>
      <p>
        Regardless of the protocol (HTTP or HTTPS) used to access the Apache Cloud-Stack API
functions, the request must be signed. This allows the platform to confirm that the request
was sent from a trusted accounting request that has the authority to execute the appropriate
command. To sign a request, the developer must have an API key and an account secret key.
They are generated by the platform administrator [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
      </p>
      <p>Here is our bash-script to stop all working users’ VMs.</p>
      <p>mysql --login-path=DailyBackup -D cloud -e "SELECT uuid FROM vm_instance WHERE type =
\"User\" and state = \"running\";" &gt; uuid.txt
sed -i ’1d’ uuid.txt
while read LINE; do php -q cloudstackapi.php "$LINE" ; done &lt; uuid.txt</p>
      <p>In the first line we receive in a file from a database the list of user VM with a running state.
The next command clears the first line because it does not contain a VM. The third line runs
the cloudstackapi.php script. It generates a signature and calls the stopVirtualMachine API.</p>
      <p>
        Another way to back up the current state of the VM is to create their snapshots. The Apache
CloudStack platform provides 2 types of images [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]:
• VM Snapshot – a hypervisor-driven point-in-time image of a virtual machine’s disks. The
exact mechanism of this is dependent on the hypervisor.
• Volume snapshot – a point-in-time image of a specific volume. The process usually
involves taking a VM snapshot and then copying the required volume to secondary
storage and the deleting the VM snapshot.
      </p>
      <p>This approach requires additional space on the secondary storage or data coping on the
user’s local disk. Such images can be taken by students from the web interface of the Apache
CloudStack platform. Performing this action and turning of their own VMs after the end of
their use are important components of ICT competence of the student.</p>
      <p>
        However, experience shows that not all students perform these actions. Therefore, these are
also worth automating with scripts. Among the API functions of the Cloud-Stack platform are
relevant [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
      </p>
      <p>Another task of backing up our academic cloud is to estimate the time required to upload
data to the cloud storage. Currently (October 2020) the sizes of our academic cloud storage is
approximately as follows:
• primary250 – 120 Gb;
• primary251 – 80 Gb;
• primary252 – 140 Gb;
• primary253 – 80 Gb;
• secondary – 100 Gb.</p>
      <p>Since we make a full copy of the primary storage, we need to download about 400 GB to the
cloud storage each time. Let the speed of the Internet channel at night be 80 Mbps (10 Mbytes
per second). Then it will take 11 hours to download 400*1024 MB. That’s a lot. Therefore, we
balanced Internet access through 2 providers. At the time of backup, our router routes hosts
cloud0 and cloud1 through the first provider, and cloud2 and cloud3 through the second. In
this case, a full backup takes about 5 hours and 30 minutes. This time is also significant, but is
acceptable.</p>
      <p>Another disadvantage of our scheme is the significant time required to download backups
from the Google Drive service. However, this time will be significant if the management or
storage servers fail. This means that we must back up the entire OS of the management server
to fast local area network storage.</p>
    </sec>
    <sec id="sec-3">
      <title>5. Conclusions</title>
      <p>The private academic clouds should be used in cloud based learning environment, as they are
necessary for education of future ICT specialists. Virtualization is one of the most up-to-date and
advanced technologies for modelling many ICT objects. Despite the availability of educational
grants from leading cloud vendors, many universities are deploying their own private academic
clouds. During the production phase, administrators have a lot of work to do to maintain and
support these academic clouds. Among these tasks, one of the most important is to ensure the
productivity and elasticity of the cloud. Solving them will allow them to load the maximum
number of VMs in the cloud infrastructure.</p>
      <p>An important task in the maintenance of the academic private cloud is the backup of its
components. To solve it efectively, you need to use diferent backup schemes such as full,
incremental, diferential. To save data, it is advisable to use both cloud and local storage. In
any case, administrators should determine how long it will take to build and restore the entire
cloud infrastructure. It is also advisable to use the API functions of the cloud platform. This
will automate some maintenance tasks.</p>
      <p>We see the prospects for our further research of our installation of a private academic cloud
in the development of more eficient scripts based on a diferential circuit. They should reduce
the time it takes to create and copy all backups. According-ly, the time to recover data from
it will be reduced. Also relevant the study of new versions of cloud platforms regarding the
emergence of ready-made modules for backup. Probably, they will allow to solve many current
problems.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P.</given-names>
            <surname>Merzlykin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Popel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shokaliuk</surname>
          </string-name>
          ,
          <article-title>Services of SageMathCloud environment and their didactic potential in learning of informatics and mathematical disciplines</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2168</volume>
          (
          <year>2017</year>
          )
          <fpage>13</fpage>
          -
          <lpage>19</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>O.</given-names>
            <surname>Glazunova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shyshkina</surname>
          </string-name>
          ,
          <article-title>The concept, principles of design and implementation of the university cloud-based learning and research environment</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2104</volume>
          (
          <year>2018</year>
          )
          <fpage>332</fpage>
          -
          <lpage>347</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>O. V.</given-names>
            <surname>Korotun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. A.</given-names>
            <surname>Vakaliuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. N.</given-names>
            <surname>Soloviev</surname>
          </string-name>
          ,
          <article-title>Model of using cloud-based environment in training databases of future it specialists</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2643</volume>
          (
          <year>2019</year>
          )
          <fpage>281</fpage>
          -
          <lpage>292</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>V.</given-names>
            <surname>Bykov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mikulowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Moravcik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Svetsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shyshkina</surname>
          </string-name>
          ,
          <article-title>The use of the cloudbased open learning and research platform for collaboration in virtual teams</article-title>
          ,
          <source>Information Technologies and Learning Tools</source>
          <volume>76</volume>
          (
          <year>2020</year>
          )
          <fpage>304</fpage>
          -
          <lpage>320</lpage>
          . URL: https://journal.iitta.gov.ua/index. php/itlt/article/view/3706. doi:
          <volume>10</volume>
          .33407/itlt.v76i2.
          <fpage>3706</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S. H.</given-names>
            <surname>Lytvynova</surname>
          </string-name>
          ,
          <article-title>Cloud-oriented learning environment of secondary school</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2168</volume>
          (
          <year>2017</year>
          )
          <fpage>7</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Shyshkina</surname>
          </string-name>
          ,
          <article-title>The hybrid cloud-based service model of learning resources access and its evaluation</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>1614</volume>
          (
          <year>2016</year>
          )
          <fpage>241</fpage>
          -
          <lpage>256</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>O. M.</given-names>
            <surname>Markova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. O.</given-names>
            <surname>Semerikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Striuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. M.</given-names>
            <surname>Shalatska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. P.</given-names>
            <surname>Nechypurenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. V.</given-names>
            <surname>Tron</surname>
          </string-name>
          ,
          <article-title>Implementation of cloud service models in training of future information technology specialists</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2433</volume>
          (
          <year>2018</year>
          )
          <fpage>499</fpage>
          -
          <lpage>515</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Vorozhbyt</surname>
          </string-name>
          ,
          <article-title>Creation of multimedia content of the cloud-based learning environment in technical lyceum</article-title>
          ,
          <source>New Computer Technology</source>
          <volume>17</volume>
          (
          <year>2019</year>
          )
          <fpage>59</fpage>
          -
          <lpage>63</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>O.</given-names>
            <surname>Glazunova</surname>
          </string-name>
          ,
          <article-title>Theoretical and methodological bases for the design and application of an e-learning system for future IT specialists in an agrarian university</article-title>
          , D.Sc. thesis, Institute of Information Technologies and
          <article-title>Learning Tools of the NAES of Ukraine</article-title>
          , Kyiv, Ukraine,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>B.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Song</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Cui</surname>
          </string-name>
          ,
          <string-name>
            <surname>L. Zhang,</surname>
          </string-name>
          <article-title>A survey and taxonomy on workload scheduling and resource provisioning in hybrid clouds</article-title>
          ,
          <source>Cluster Computing</source>
          <volume>23</volume>
          (
          <year>2020</year>
          )
          <fpage>2809</fpage>
          -
          <lpage>2834</lpage>
          . URL: https://doi.org/10.1007/s10586-020-03048-8. doi:
          <volume>10</volume>
          .1007/ s10586-020-03048-8.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Despotović-Zrakić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Simić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Labus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Milić</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Jovanić</surname>
          </string-name>
          ,
          <article-title>Scafolding environment for e-learning through cloud computing</article-title>
          ,
          <source>Journal of Educational Technology &amp; Society</source>
          <volume>16</volume>
          (
          <year>2013</year>
          )
          <fpage>301</fpage>
          -
          <lpage>314</lpage>
          . URL: https://www.researchgate.net/publication/286123164_Scafolding_
          <article-title>environment_for_e-learning_through_cloud_computing.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>M. M. AL-Mukhtar</surname>
            ,
            <given-names>A. A. A.</given-names>
          </string-name>
          <string-name>
            <surname>Mardan</surname>
          </string-name>
          ,
          <article-title>Performance Evaluation of Private Clouds Eucalyptus versus CloudStack</article-title>
          ,
          <source>International Journal of Advanced Computer Science and Applications</source>
          <volume>5</volume>
          (
          <year>2014</year>
          ). URL: http://dx.doi.org/10.14569/IJACSA.
          <year>2014</year>
          .
          <volume>050516</volume>
          . doi:
          <volume>10</volume>
          .14569/IJACSA.
          <year>2014</year>
          .
          <volume>050516</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D. Y.</given-names>
            <surname>Ilin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Volovich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Filatov</surname>
          </string-name>
          ,
          <article-title>Analysis of CloudStack Platform Suitability for Management of Diferent Cloud Infrastructure Configurations</article-title>
          ,
          <source>Cloud of science 3</source>
          (
          <year>2016</year>
          )
          <fpage>433</fpage>
          -
          <lpage>443</lpage>
          . URL: http://web.archive.org/web/20180422194515/https://cloudofscience.ru/sites/default/ ifles/pdf/CoS_3_
          <fpage>433</fpage>
          .pdf.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>T.</given-names>
            <surname>Amiel</surname>
          </string-name>
          , E. ter Haar,
          <string-name>
            <given-names>M. S.</given-names>
            <surname>Vieira</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Soares</surname>
          </string-name>
          ,
          <article-title>Who benefits from the public good? how oer is contributing to the private appropriation of the educational commons</article-title>
          , in: D.
          <string-name>
            <surname>Burgos</surname>
          </string-name>
          (Ed.),
          <source>Radical Solutions and Open Science: An Open</source>
          Approach to Boost Higher Education, Springer Singapore, Singapore,
          <year>2020</year>
          , pp.
          <fpage>69</fpage>
          -
          <lpage>89</lpage>
          . URL: https://doi.org/10.1007/
          <fpage>978</fpage>
          -981-15-4276-
          <issue>3</issue>
          _5. doi:
          <volume>10</volume>
          .1007/
          <fpage>978</fpage>
          -981-15-4276-
          <issue>3</issue>
          _
          <fpage>5</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>GCP</surname>
          </string-name>
          ,
          <source>Google Cloud Services (GCP)</source>
          ,
          <year>2021</year>
          . URL: https://internet2.edu/services/ google-cloud-platform/.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Microsoft</surname>
            <given-names>Azure</given-names>
          </string-name>
          , Student developer resources,
          <year>2021</year>
          . URL: https://azure.microsoft.com/ en-us/developer/students/.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>G.</given-names>
            <surname>Fylaktopoulos</surname>
          </string-name>
          , G. Goumas,
          <string-name>
            <given-names>M.</given-names>
            <surname>Skolarikis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Sotiropoulos</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Maglogiannis,</surname>
          </string-name>
          <article-title>An overview of platforms for cloud based development</article-title>
          ,
          <source>SpringerPlus</source>
          <volume>5</volume>
          (
          <year>2016</year>
          )
          <article-title>38</article-title>
          . URL: https://doi.org/ 10.1186/s40064-016-1688-5. doi:
          <volume>10</volume>
          .1186/s40064-016-1688-5.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>O.</given-names>
            <surname>Spirin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Oleksiuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Oleksiuk</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. Sydorenko,</surname>
          </string-name>
          <article-title>The group methodology of using cloud technologies in the training of future computer science teachers</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2104</volume>
          (
          <year>2018</year>
          )
          <fpage>294</fpage>
          -
          <lpage>304</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2104</volume>
          /paper_154.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Khmelevsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Voytenko</surname>
          </string-name>
          ,
          <article-title>Hybrid cloud computing infrastructure in academia</article-title>
          ,
          <source>in: WCCCE 2015 - the 20th Western Canadian Conference on Computing Education</source>
          , Vancouver Island University, Nanaimo, British Columbia, Canada,
          <year>2015</year>
          . URL: https: //www.researchgate.net/profile/Youry_Khmelevsky/publication/282778407_Hybrid_ Cloud_Computing_Infrastructure_in_Academia/links/56873fe108ae1e63f1f5b884.pdf.
          <source>doi:10.13140/RG.2.1.4082.6647.</source>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>U. H.</given-names>
            <surname>Rao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Nayak</surname>
          </string-name>
          ,
          <article-title>Data backups and cloud computing, in: The InfoSec Handbook: An Introduction to Information Security</article-title>
          , Apress, Berkeley, CA,
          <year>2014</year>
          , pp.
          <fpage>263</fpage>
          -
          <lpage>288</lpage>
          . URL: https://doi.org/10.1007/978-1-
          <fpage>4302</fpage>
          -6383-8_
          <fpage>13</fpage>
          . doi:
          <volume>10</volume>
          .1007/978-1-
          <fpage>4302</fpage>
          -6383-8_
          <fpage>13</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Tian</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <article-title>Low-cost data partitioning and encrypted backup scheme for defending against co-resident attacks</article-title>
          ,
          <source>EURASIP Journal on Information Security</source>
          <year>2020</year>
          (
          <year>2020</year>
          )
          <article-title>7</article-title>
          . URL: https://doi.org/10.1186/s13635-020-00110-1. doi:
          <volume>10</volume>
          .1186/s13635-020-00110-1.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>B.</given-names>
            <surname>Rusyn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Pohreliuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vysotska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Osypov</surname>
          </string-name>
          ,
          <article-title>Method of data dedublication and distribution in cloud warehouses during data backup</article-title>
          ,
          <source>Information systems and networks 6</source>
          (
          <year>2019</year>
          )
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          . doi:
          <volume>10</volume>
          .23939/sisn2019.
          <fpage>02</fpage>
          .001.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>O.</given-names>
            <surname>Spirin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Oleksiuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Balyk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lytvynova</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. Sydorenko,</surname>
          </string-name>
          <article-title>The blended methodology of learning computer networks: Cloud-based approach</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <volume>2393</volume>
          (
          <year>2019</year>
          )
          <fpage>68</fpage>
          -
          <lpage>80</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>P.</given-names>
            <surname>Angus</surname>
          </string-name>
          ,
          <article-title>Cloudstack backup</article-title>
          and recovery framework,
          <year>2020</year>
          . URL: https://www.slideshare. net/ShapeBlue/cloudstack
          <article-title>-backup-and-recovery-framework.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>V.</given-names>
            <surname>Oleksiuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Oleksiuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Berezitskyi</surname>
          </string-name>
          ,
          <article-title>Planning and Implementation of the Project “Cloud Services to Each School”</article-title>
          ,
          <source>CEUR Workshop Proceedings</source>
          <year>1844</year>
          (
          <year>2017</year>
          )
          <fpage>372</fpage>
          -
          <lpage>379</lpage>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2393</volume>
          /paper_231.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>R.</given-names>
            <surname>Hantimirov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mikryukov</surname>
          </string-name>
          ,
          <article-title>Model distribution of resources in the operation of cloud computing environment</article-title>
          ,
          <source>Open education 5</source>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27] Comparison of backup methods,
          <year>2014</year>
          . URL: https://habr.com/ru/company/selectel/blog/ 226831/.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          <source>[28] Using OAuth 2</source>
          .0 to Access Google APIs,
          <year>2020</year>
          . URL: https://developers.google.com/identity/ protocols/oauth2.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Joey</surname>
            <given-names>Sneddon</given-names>
          </string-name>
          ,
          <article-title>Mount Your Google Drive on Linux with google-drive-</article-title>
          <string-name>
            <surname>ocamlfuse</surname>
          </string-name>
          ,
          <year>2017</year>
          . URL: https://www.omgubuntu.co.uk/
          <year>2017</year>
          /04/mount-google
          <article-title>-drive-ocamlfuse-linux.</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>