Revision 44cc2a6a
b/docs/admin-guide.rst | ||
---|---|---|
494 | 494 |
:ref:`authenticate-api-label` API call from a private network or through HTTPS. |
495 | 495 |
|
496 | 496 |
|
497 |
|
|
498 | 497 |
Compute/Network/Image Service (Cyclades) |
499 | 498 |
======================================== |
500 | 499 |
|
... | ... | |
858 | 857 |
requests to the Cyclades API, will retrieve the updated state from the DB. |
859 | 858 |
|
860 | 859 |
|
861 |
|
|
862 |
Block Storage Service (Archipelago) |
|
863 |
=================================== |
|
864 |
|
|
865 |
Overview |
|
866 |
-------- |
|
867 |
Archipelago offers Copy-On-Write snapshotable volumes. Pithos images can be used |
|
868 |
to provision a volume with Copy-On-Write semantics (i.e. a clone). Snapshots |
|
869 |
offer a unique deduplicated image of a volume, that reflects the volume state |
|
870 |
during snapshot creation and are indistinguishable from a Pithos image. |
|
871 |
|
|
872 |
Archipelago is used by Cyclades and Ganeti for fast provisioning of VMs based on |
|
873 |
CoW volumes. Moreover, it enables live migration of thinly-provisioned VMs with |
|
874 |
no physically shared storage. |
|
875 |
|
|
876 |
Archipelago Architecture |
|
877 |
------------------------ |
|
878 |
|
|
879 |
.. image:: images/archipelago-architecture.png |
|
880 |
:width: 50% |
|
881 |
:target: _images/archipelago-architecture.png |
|
882 |
|
|
883 |
.. _syn+archip+rados: |
|
884 |
|
|
885 |
Overview of Synnefo + Archipelago + RADOS |
|
886 |
----------------------------------------- |
|
887 |
|
|
888 |
.. image:: images/synnefo-arch3.png |
|
889 |
:width: 100% |
|
890 |
:target: _images/synnefo-arch3.png |
|
891 |
|
|
892 |
Prereqs |
|
893 |
------- |
|
894 |
|
|
895 |
The administrator must initialize the storage backend where archipelago volume |
|
896 |
blocks will reside. |
|
897 |
|
|
898 |
In case of a files backend, the administrator must create two directories. One |
|
899 |
for the archipelago data blocks and one for the archipelago map blocks. These |
|
900 |
should probably be over shared storage to enable sharing archipelago volumes |
|
901 |
between multiple nodes. He or she, must also be able to supply a directory where |
|
902 |
the pithos data and map blocks reside. |
|
903 |
|
|
904 |
In case of a RADOS backend, the administrator must create two rados pools, one |
|
905 |
for data blocks, and one for the map blocks. These pools, must be the same pools |
|
906 |
used in pithos, in order to enable volume creation based on pithos images. |
|
907 |
|
|
908 |
Installation |
|
909 |
------------ |
|
910 |
|
|
911 |
Archipelago consists of |
|
912 |
|
|
913 |
* ``libxseg0``: libxseg used to communicate over shared memory segments |
|
914 |
* ``python-xseg``: python bindings for libxseg |
|
915 |
* ``archipelago-kernel-dkms``: contains archipelago kernel modules to provide |
|
916 |
block devices to be used as vm disks |
|
917 |
* ``python-archipelago``: archipelago python module. Includes archipelago and |
|
918 |
vlmc functionality. |
|
919 |
* ``archipelago``: user space tools and peers for the archipelago management and |
|
920 |
volume composition |
|
921 |
* ``archipelago-ganeti``: ganeti ext storage scripts, that enable ganeti to |
|
922 |
provision VMs over archipelago |
|
923 |
|
|
924 |
Performing |
|
925 |
|
|
926 |
.. code-block:: console |
|
927 |
|
|
928 |
$ apt-get install archipelago-ganeti |
|
929 |
|
|
930 |
should fetch all the required packages and get you up 'n going with archipelago |
|
931 |
|
|
932 |
Bare in mind, that custom librados is required, which is provided in the apt |
|
933 |
repo of GRNet. |
|
934 |
|
|
935 |
|
|
936 |
For now, librados is a dependency of archipelago, even if you do not intend to |
|
937 |
use archipelago over RADOS. |
|
938 |
|
|
939 |
Configuration |
|
940 |
------------- |
|
941 |
Archipelago should work out of the box with a RADOS backend, but basic |
|
942 |
configuration can be done in ``/etc/default/archipelago`` . |
|
943 |
|
|
944 |
If you wish to change the storage backend to files, set |
|
945 |
|
|
946 |
.. code-block:: console |
|
947 |
|
|
948 |
STORAGE="files" |
|
949 |
|
|
950 |
and provide the appropriate settings for files storage backend in the conf file. |
|
951 |
|
|
952 |
These are: |
|
953 |
|
|
954 |
* ``FILED_IMAGES``: directory for archipelago data blocks. |
|
955 |
* ``FILED_MAPS``: directory for archipelago map blocks. |
|
956 |
* ``PITHOS``: directory of pithos data blocks. |
|
957 |
* ``PITHOSMAPS``: directory of pithos map blocks. |
|
958 |
|
|
959 |
The settings for RADOS storage backend are: |
|
960 |
|
|
961 |
* ``RADOS_POOL_MAPS``: The pool where archipelago and pithos map blocks reside. |
|
962 |
* ``RADOS_POOL_BLOCKS``: The pool where archipelago and pithos data blocks |
|
963 |
reside. |
|
964 |
|
|
965 |
Examples can be found in the conf file. |
|
966 |
|
|
967 |
Be aware that archipelago infrastructure doesn't provide default values for this |
|
968 |
settings. If they are not set in the conf file, archipelago will not be able to |
|
969 |
function. |
|
970 |
|
|
971 |
Archipelago also provides ``VERBOSITY`` config options to control the output |
|
972 |
generated by the userspace peers. |
|
973 |
|
|
974 |
The available options are: |
|
975 |
|
|
976 |
* ``VERBOSITY_BLOCKERB`` |
|
977 |
* ``VERBOSITY_BLOCKERM`` |
|
978 |
* ``VERBOSITY_MAPPER`` |
|
979 |
* ``VERBOSITY_VLMC`` |
|
980 |
|
|
981 |
and the available values are: |
|
982 |
|
|
983 |
* 0 : Error only logging. |
|
984 |
* 1 : Warning logging. |
|
985 |
* 2 : Info logging. |
|
986 |
* 3 : Debug logging. WARNING: This options produces tons of output, but the |
|
987 |
logrotate daemon should take care of it. |
|
988 |
|
|
989 |
Working with Archipelago |
|
990 |
------------------------ |
|
991 |
|
|
992 |
``archipelago`` provides basic functionality for archipelago. |
|
993 |
|
|
994 |
Usage: |
|
995 |
|
|
996 |
.. code-block:: console |
|
997 |
|
|
998 |
$ archipelago [-u] command |
|
999 |
|
|
1000 |
|
|
1001 |
Currently it supports the following commands: |
|
1002 |
|
|
1003 |
* ``start [peer]`` |
|
1004 |
Starts archipelago or the specified peer. |
|
1005 |
* ``stop [peer]`` |
|
1006 |
Stops archipelago or the specified peer. |
|
1007 |
* ``restart [peer]`` |
|
1008 |
Restarts archipelago or the specified peer. |
|
1009 |
* ``status`` |
|
1010 |
Show the status of archipelago. |
|
1011 |
|
|
1012 |
Available peers: ``blockerm``, ``blockerb``, ``mapperd``, ``vlmcd``. |
|
1013 |
|
|
1014 |
|
|
1015 |
``start``, ``stop``, ``restart`` can be combined with the ``-u / --user`` option |
|
1016 |
to affect only the userspace peers supporting archipelago. |
|
1017 |
|
|
1018 |
|
|
1019 |
|
|
1020 |
Archipelago advanced operations |
|
1021 |
------------------------------- |
|
1022 |
The ``vlmc`` tool provides a way to interact with archipelago volumes |
|
1023 |
|
|
1024 |
* ``vlmc map <volumename>``: maps the volume to a xsegbd device. |
|
1025 |
|
|
1026 |
* ``vlmc unmap </dev/xsegbd[1-..]>``: unmaps the specified device from the |
|
1027 |
system. |
|
1028 |
|
|
1029 |
* ``vlmc create <volumename> --snap <snapname> --size <size>``: creates a new |
|
1030 |
volume named <volumename> from snapshot name <snapname> with size <size>. |
|
1031 |
The ``--snap`` and ``--size`` are optional, but at least one of them is |
|
1032 |
mandatory. e.g: |
|
1033 |
|
|
1034 |
``vlmc create <volumename> --snap <snapname>`` creates a volume named |
|
1035 |
volumename from snapshot snapname. The size of the volume is the same as |
|
1036 |
the size of the snapshot. |
|
1037 |
|
|
1038 |
``vlmc create <volumename> --size <size>`` creates an empty volume of size |
|
1039 |
<size> named <volumename>. |
|
1040 |
|
|
1041 |
* ``vlmc remove <volumename>``: removes the volume and all the related |
|
1042 |
archipelago blocks from storage. |
|
1043 |
|
|
1044 |
* ``vlmc list``: provides a list of archipelago volumes. Currently only works |
|
1045 |
with RADOS storage backend. |
|
1046 |
|
|
1047 |
* ``vlmc info <volumename>``: shows volume information. Currently returns only |
|
1048 |
volume size. |
|
1049 |
|
|
1050 |
* ``vlmc open <volumename>``: opens an archipelago volume. That is, taking all |
|
1051 |
the necessary locks and also make the rest of the infrastructure aware of the |
|
1052 |
operation. |
|
1053 |
|
|
1054 |
This operation succeeds if the volume is alread opened. |
|
1055 |
|
|
1056 |
* ``vlmc close <volumename>``: closes an archipelago volume. That is, performing |
|
1057 |
all the necessary functions in the insfrastrure to successfully release the |
|
1058 |
volume. Also releases all the acquired locks. |
|
1059 |
|
|
1060 |
``vlmc close`` should be performed after a ``vlmc open`` operation. |
|
1061 |
|
|
1062 |
* ``vlmc lock <volumename>``: locks a volume. This step allow the administrator |
|
1063 |
to lock an archipelago volume, independently from the rest of the |
|
1064 |
infrastrure. |
|
1065 |
|
|
1066 |
* ``vlmc unlock [-f] <volumename>``: unlocks a volume. This allow the |
|
1067 |
administrator to unlock a volume, independently from the rest of the |
|
1068 |
infrastructure. |
|
1069 |
The unlock option can be performed only by the blocker that acquired the lock |
|
1070 |
in the first place. To unlock a volume from another blocker, ``-f`` option |
|
1071 |
must be used to break the lock. |
|
1072 |
|
|
1073 |
|
|
1074 | 860 |
Synnefo management commands ("snf-manage") |
1075 | 861 |
========================================== |
1076 | 862 |
|
... | ... | |
1223 | 1009 |
reconcile-resources-cyclades Reconcile resource usage of Astakos with Cyclades DB. |
1224 | 1010 |
============================== =========================== |
1225 | 1011 |
|
1012 |
|
|
1226 | 1013 |
Astakos helper scripts |
1227 | 1014 |
====================== |
1228 | 1015 |
|
... | ... | |
1243 | 1030 |
which simulates the export of service and resource definitions of the |
1244 | 1031 |
standard Synnefo components. |
1245 | 1032 |
|
1033 |
|
|
1246 | 1034 |
Pithos managing accounts |
1247 | 1035 |
======================== |
1248 | 1036 |
|
Also available in: Unified diff