From 1236933ccf203138022e7cd934825794bf758c81 Mon Sep 17 00:00:00 2001 From: sageweil Date: Mon, 16 Oct 2006 17:57:29 +0000 Subject: [PATCH] git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@935 29311d96-e01e-0410-9327-a35deaab8ce9 --- web/images/ceph-architecture.png | Bin 0 -> 31408 bytes web/index.body | 2 +- web/overview.body | 51 +++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 web/images/ceph-architecture.png diff --git a/web/images/ceph-architecture.png b/web/images/ceph-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..68d79c1cbcf7ed912a158d96e0e10a8582b61a8b GIT binary patch literal 31408 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 z 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

Welcome

- Ceph is a distributed file system designed to provide excellent performance, reliability, and scalability. Unlike conventional network file systems (exemplified by NFS), Ceph maximizes the separation of metadata management from data storage by utilizing intelligent storage nodes called Object Storage Devices (OSDs). Each OSD combines a CPU, memory, and network interface (essentially, a small, lightweight server) with a hard disk or RAID. This basic architecture allows low-level block allocation, data replication, failure detection, and failure recovery to be distributed among potentially thousands of OSDs. This approach allows clients (hosts or applications accessing the file system) to communicate directly with OSDs storing the data they need, while avoiding the bottleneck inherent in NFS-like systems with a single point of access. + Ceph is a distributed (network) file system designed to provide excellent performance, reliability, and scalability. Unlike conventional network file systems (exemplified by NFS), Ceph maximizes the separation of metadata management from data storage by utilizing intelligent storage nodes called Object Storage Devices (OSDs). Each OSD combines a CPU, memory, and network interface (essentially, a small, lightweight server) with a hard disk or RAID. This basic architecture allows low-level block allocation, data replication, failure detection, and failure recovery to be distributed among potentially thousands of OSDs. This approach allows clients (hosts or applications accessing the file system) to communicate directly with OSDs storing the data they need, while avoiding the bottleneck inherent in NFS-like systems with a single point of access.

File system metadata (directory namespace) is managed by a separate, small cluster of metadata servers (MDSs), which is responsible for coordinating access to the file system. The Ceph MDS uses a load balancing architecture that dynamically distributes responsibility for management the file system hierarchy across dozens (or even hundreds) of MDS servers, allowing Ceph to scale significantly better than other distributed file systems. diff --git a/web/overview.body b/web/overview.body index cc7a26c8bacfc..38c0106b39ce0 100644 --- a/web/overview.body +++ b/web/overview.body @@ -1,7 +1,58 @@

+

Ceph Overview -- What is it?

+
+ Ceph is a scalable distributed network file system that provides both excellent performance and reliability. Like other network file systems like NFS and CIFS, clients require only a network connection to mount and use the file system. Unlike NFS and CIFS, however, Ceph clients can communicate directly with storage nodes (which we call OSDs) instead of a single "server" (something that limits the scalability of NFS and CIFS installations). In that sense, Ceph resembles "cluster" file systems based on SANs (storage area networks) and FC (fibre-channel) or iSCSI. The main difference is that FC and iSCSI is a block-level protocols to communicate with dumb, passive disks; Ceph OSDs are intelligent storage nodes, and unlike FC, all communication is over TCP. +

+ Ceph's intelligent storage nodes (basically, storage servers running software to serve "objects" instead of files) facilitate improved scalability and parallelism. NFS servers (i.e. NAS devices) and cluster file systems funnel all I/O through a single (or limited set of) servers, limiting scalability. Ceph clients interact with one of a limited set of (perhaps dozens or hundreds of) metadata servers (MDSs) for high-level operations like open(), but communicate directly with storage (termed OSDs) for I/O, of which there may be thousands. +

+ There are a handful of new file systems and enterprise storage products adopting a similar object- or brick-based architecture, including Lustre (also open-source, but with restricted access to development) and the Panasas file system (a commercial storage product). Ceph is different: +

    +
  • Open source, open development. We're hosted on SourceForge, and are actively looking for interested users and developers. +
  • Scalability. Ceph sheds legacy file system design principles like explicit allocation tables that are still found in almost all other file systems (including Lustre and the Panasas file system) that ultimately limit scalability. +
  • Commodity hardware. Ceph is designed to run on commodity hardware running Linux (or any other POSIX-ish Unix variant). (Lustre relies on a SAN or other shared storage failover to make storage nodes reliable, while Panasas is based on custom hardware using integrated UPSs.) +
+ In additional to promising greater scalability than existing solutions, Ceph also promises to fill the huge gap between open-source filesystems and commercial enterprise systems. If you want network-attached storage without shelling out the big bucks, your are usually stuck with NFS and a direct-attached RAID. Technologies like ATA-over-ethernet and iSCSI help scale raw volume sizes, but the lack of "cluster-aware" open-source file systems still limit one to a single NFS "server" that limits scalability. +

+Ceph fills this gap by providing a scalable, reliable file system that can seamlessly grom from gigabytes to petabytes. Moreover, Ceph will provide efficient snapshots, which almost no freely available file system (besides ZFS on Solaris) provides, despite snapshots having become almost ubiquitous in enterprise systems. +

+ +

Ceph Architecture

+
+
+

+ A Ceph installation consists of three main elements: clients, metadata servers (MDSs), and object storage devices (OSDs). Ceph clients can either be individual processes linking directly to a user-space client library, or a host mounting the Ceph file system natively (ala NFS). OSDs are servers with attached disks and are responsible for storing data. +

+ The Ceph architecture is based on three key design principles that set it apart from traditional file systems. + +

    +
  1. Separation of metadata and data management.
    + A small set of metadata servers (MDSs) manage the file system hierarchy (namespace). Clients communicate with an MDS to open/close files, get directory listings, remove files, or any other operations that involve file names. Once a file is opened, clients communicate directly with OSDs (object-storage devices) to read and write data. A large Ceph system may involve anywhere from one to many dozens (or possibly hundreds) of MDSs, and anywhere from four to hundreds or thousands of OSDs. +

    + Both file data and file system metadata are striped over multiple objects, each of which is replicated on multiple OSDs for reliability. A special-purpose mapping function called CRUSH is used to determine which OSDs store which objects. CRUSH resembles a hash function in that this mapping is pseudo-random (it appears random, but is actually deterministic). This provides load balancing across all devices that is relatively invulnerable to "hot spots," while Ceph's policy of redistributing data ensures that workload remains balanced and all devices are equally utilized even when the storage cluster is expanded or OSDs are removed. + +

    + +

  2. Intelligent storage devices
    + Each Ceph OSD stores variably-sized, named objects. (In contract, conventional file systems are built directly on top of raw hard disks that store small fixed-sized numbered blocks.) In contract, Ceph OSDs can be built with conventional server hardware with attached storage (either raw disks or a small RAID). Each Ceph OSD runs a special-purpose "object file system" called EBOFS designed to efficiently and reliable store variably sized objects. +

    + More importantly, Ceph OSDs are intelligent. Collectively, the OSD cluster manages data replication, data migration (when the cluster composition changes due to expansion, failures, etc.), failure detection (OSDs actively monitor their peers), and failure recovery. We call the collective cluster RADOS--Reliable Autonomic Distributed Object Store--because it provides the illusion of a single logical object store while hiding the details of data distribution, replication, and failure recovery. +

    + +

  3. Dynamic distributed metadata
    + Ceph dynamically distributes responsibility for managing the file system directory hierarchy over tens or even hundreds of MDSs. Because Ceph embeds most inodes directly within the directory that contains them, the hierarchical partitional allows each MDS to operation independently and efficiently. This distribution is entirely adaptive, based on the current workload, allowing the cluster to redistribute the hierarchy to balance load as client access patterns change over time. Ceph also copes with metadata hot spots: popular metadata is replicated across multiple MDS nodes, and extremely large directories can be distributed across the entire cluster when necessary. + +
+ + +
+

Overview

+ + + + Write me.

-- 2.39.5