mirror of https://github.com/ceph/ceph
189 lines
6.2 KiB
ReStructuredText
189 lines
6.2 KiB
ReStructuredText
==========================
|
|
Beginner's Guide
|
|
==========================
|
|
|
|
The purpose of A Beginner's Guide to Ceph is to make Ceph comprehensible.
|
|
|
|
Ceph is a clustered and distributed storage manager. If that's too cryptic,
|
|
then just think of Ceph as a computer program that stores data and uses a
|
|
network to make sure that there is a backup copy of the data.
|
|
|
|
Components of Ceph
|
|
==================
|
|
|
|
Storage Interfaces
|
|
------------------
|
|
|
|
Ceph offers several "storage interfaces", which is another
|
|
way of saying "ways of storing data". These storage interfaces include:
|
|
- CephFS (a file system)
|
|
- RBD (block devices)
|
|
- RADOS (an object store).
|
|
|
|
Deep down, though, all three of these are really RADOS object stores. CephFS
|
|
and RBD are just presenting themselves as file systems and block devices.
|
|
|
|
Storage Manager: What is It?
|
|
----------------------------
|
|
|
|
Ceph is a clustered and distributed storage manager that offers data
|
|
redundancy. This sentence might be too cryptic for first-time readers of the
|
|
Ceph Beginner's Guide, so let's explain all of the terms in it:
|
|
|
|
- **Storage Manager.** Ceph is a storage manager. This means that Ceph is
|
|
software that helps storage resources store data. Storage resources come in
|
|
several forms: hard disk drives (HDD), solid-state drives (SSD), magnetic
|
|
tape, floppy disks, punched tape, Hollerith-style punch cards, and magnetic
|
|
drum memory are all forms of storage resources. In this beginner's guide,
|
|
we'll focus on hard disk drives (HDD) and solid-state drives (SSD).
|
|
- **Clustered storage manager.** Ceph is a clustered storage manager. That
|
|
means that the storage manager installed not just on a single machine but on
|
|
several machines that work together as a system.
|
|
- **Distributed storage manager.** Ceph is a clustered and distributed storage
|
|
manager. That means that the data that is stored and the infrastructure that
|
|
supports it is spread across multiple machines and is not centralized in a
|
|
single machine. To better understand what distributed means in this context,
|
|
it might be helpful to describe what it is not: it is not a system ISCSI,
|
|
which is a system that exposes a single logical disk over the network in a
|
|
1:1 (one-to-one) mapping.
|
|
- **Data Redundancy.** Having a second copy of your data somewhere.
|
|
|
|
Ceph Monitor
|
|
------------
|
|
|
|
The Ceph Monitor is one of the daemons essential to the functioning of a Ceph
|
|
cluster. Monitors know the location of all the data in the Ceph cluster.
|
|
Monitors maintain maps of the cluster state, and those maps make it possible
|
|
for Ceph daemons to work together. These maps include the monitor map, the OSD
|
|
map, the MDS map, and the CRUSH map. Three monitors are required to reach
|
|
quorum. Quorum is a state that is necessary for a Ceph cluster to work
|
|
properly. Quorum means that a majority of the monitors are in the "up" state.
|
|
|
|
MANAGER
|
|
-------
|
|
The manager balances the data in the Ceph cluster, distributing load evenly so
|
|
that no part of the cluster gets overloaded. The manager is one of the daemons
|
|
essential to the functioning of the Ceph cluster. Managers keep track of
|
|
runtime metrics, system utilization, CPU performance, disk load, and they host
|
|
the Ceph dashboard web GUI.
|
|
|
|
OSD
|
|
---
|
|
|
|
Object Storage Daemons (OSDs) store objects.
|
|
|
|
An OSD is a process that runs on a storage server. The OSD is responsible for
|
|
managing a single unit of storage, which is usually a single disk.
|
|
|
|
POOLS
|
|
-----
|
|
|
|
A pool is an abstraction that can be designated as either "replicated" or
|
|
"erasure coded". In Ceph, the method of data protection is set at the pool
|
|
level. Ceph offers and supports two types of data protection: replication and
|
|
erasure coding. Objects are stored in pools. "A storage pool is a collection of
|
|
storage volumes. A storage volume is the basic unit of storage, such as
|
|
allocated space on a disk or a single tape cartridge. The server uses the
|
|
storage volumes to store backed-up, archived, or space-managed files." (IBM
|
|
Tivoli Storage Manager, Version 7.1, "Storage Pools")
|
|
|
|
PLACEMENT GROUPS
|
|
----------------
|
|
|
|
Placement groups are a part of pools.
|
|
|
|
MDS
|
|
---
|
|
A metadata server (MDS) is necessary for the proper functioning of CephFS.
|
|
See :ref:`orchestrator-cli-cephfs` and :ref:`arch-cephfs`.
|
|
|
|
Vstart Cluster Installation and Configuration Procedure
|
|
=======================================================
|
|
|
|
#. Clone the ``ceph/ceph`` repository:
|
|
|
|
.. prompt:: bash #
|
|
|
|
git clone git@github.com:ceph/ceph
|
|
|
|
#. Update the submodules in the ``ceph/ceph`` repository:
|
|
|
|
.. prompt:: bash #
|
|
|
|
git submodule update --init --recursive --progress
|
|
|
|
#. Run ``install-deps.sh`` from within the directory into which you cloned the
|
|
``ceph/ceph`` repository:
|
|
|
|
.. prompt:: bash #
|
|
|
|
./install-deps.sh
|
|
|
|
#. Install the ``python3-routes`` package:
|
|
|
|
.. prompt:: bash #
|
|
|
|
apt install python3-routes
|
|
|
|
#. Move into the ``ceph`` directory. You will know that you are in the correct
|
|
directory if it contains the file ``do_cmake.sh``:
|
|
|
|
.. prompt:: bash #
|
|
|
|
cd ceph
|
|
|
|
#. Run the ``do_cmake.sh`` script:
|
|
|
|
.. prompt:: bash #
|
|
|
|
./do_cmake.sh
|
|
|
|
#. The ``do_cmake.sh`` script creates a ``build/`` directory. Move into the
|
|
``build/`` directory:
|
|
|
|
.. prompt:: bash #
|
|
|
|
cd build
|
|
|
|
#. Use ``ninja`` to build the development environment:
|
|
|
|
.. prompt:: bash #
|
|
|
|
ninja -j3
|
|
|
|
.. note:: This step takes a long time to run. The ``ninja -j3`` command
|
|
kicks off a process consisting of 2289 steps. This step took over three
|
|
hours when I ran it on an Intel NUC with an i7 in September of 2024.
|
|
|
|
#. Install the Ceph development environment:
|
|
|
|
.. prompt:: bash #
|
|
|
|
ninja install
|
|
|
|
This step does not take as long as the previous step.
|
|
|
|
#. Build the vstart cluster:
|
|
|
|
.. prompt:: bash #
|
|
|
|
ninja vstart
|
|
|
|
#. Start the vstart cluster:
|
|
|
|
.. prompt:: bash #
|
|
|
|
../src/vstart.sh --debug --new -x --localhost --bluestore
|
|
|
|
.. note:: Run this command from within the ``ceph/build`` directory.
|
|
|
|
|
|
|
|
|
|
LINKS
|
|
-----
|
|
|
|
#. `Ceph Wiki (requires Ceph Redmine Tracker account) <https://tracker.ceph.com/projects/ceph/wiki>`_
|
|
#. `Sage Weil's 27 June 2019 "Intro To Ceph" tech talk (1h27m) <https://www.youtube.com/watch?v=PmLPbrf-x9g>`_
|
|
#. `Sage Weil's 2018 talk "Ceph, the Future of Storage" (27m) <https://www.youtube.com/watch?v=szE4Hg1eXoA>`_
|