{"id":4897,"date":"2025-06-08T14:10:26","date_gmt":"2025-06-08T18:10:26","guid":{"rendered":"https:\/\/dft.wiki\/?p=4897"},"modified":"2026-06-08T09:43:47","modified_gmt":"2026-06-08T13:43:47","slug":"ceph-management-cheat-sheet","status":"publish","type":"post","link":"https:\/\/dft.wiki\/?p=4897","title":{"rendered":"CEPH Management Cheat Sheet"},"content":{"rendered":"<p>If you haven&#8217;t read the previous post, <strong>CEPH Deployment and Concepts<\/strong> [<a href=\"https:\/\/dft.wiki\/?p=4838\">Link<\/a>], you might want to check that out first, then come back to this one.<\/p>\n<p>CEPH management is not a trivial task. Although its dashboard is improving significantly with every release, it does not offer all the features and control of the CLI.<\/p>\n<p>This cheat sheet contains commands and equivalent screenshots for a series of useful setup and management tasks.<\/p>\n<ul>\n<li><a href=\"#OSDs\">OSDs<\/a><\/li>\n<li><a href=\"#CephFS\">CephFS<\/a><\/li>\n<li><a href=\"#NFS\">NFS<\/a><\/li>\n<li><a href=\"#RBD\">RBD<\/a><\/li>\n<li><b>RGW<\/b>\n<ul>\n<li><a href=\"#RGWiSCSI\">iSCSI<\/a><\/li>\n<li><a href=\"#RGWSMB\">SMB<\/a><\/li>\n<li><a href=\"#RGWS3\">S3<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Troubleshooting\">Troubleshooting<\/a><\/li>\n<\/ul>\n<p><strong>Single Node Cluster<\/strong><\/p>\n<ul>\n<li>If running a single-node cluster for learning or testing, the following commands may allow it to work (not recommended in production).<\/li>\n<\/ul>\n<pre>ceph config set global osd_pool_default_size 1\r\nceph config set global mon_allow_pool_size_one true\r\nceph orch apply mon --placement=1\r\nceph orch apply mgr --placement=1<\/pre>\n<hr id=\"OSDs\" \/>\n<p><strong>MANAGING OSDs<\/strong><\/p>\n<p><strong>On the Cluster<\/strong><\/p>\n<ul>\n<li>Start by checking the inventory of disks and entering the CephAdm shell.<\/li>\n<\/ul>\n<pre>cephadm ceph-volume inventory\r\ncephadm shell<\/pre>\n<ul>\n<li>Create OSDs for each disk across all nodes in the cluster.<\/li>\n<\/ul>\n<pre>ceph orch device ls\r\nceph orch daemon add osd <strong>ceph-node-1<\/strong>:\/dev\/<strong>vdb<\/strong>\r\nceph orch daemon add osd <strong>ceph-node-2<\/strong>:\/dev\/<strong>vdc<\/strong>\r\nceph orch device ls <strong>--refresh<\/strong><\/pre>\n<p>OR<\/p>\n<pre>ceph orch apply osd <strong>--all-available-devices<\/strong><\/pre>\n<ul>\n<li>Check the status of the OSDs.<\/li>\n<\/ul>\n<pre>ceph osd status\r\nceph osd tree<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4916\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-40-15.png\" alt=\"\" width=\"800\" height=\"97\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-40-15.png 1465w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-40-15-300x36.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-40-15-1024x124.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-40-15-768x93.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4918\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-46-48.png\" alt=\"\" width=\"471\" height=\"196\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-46-48.png 543w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-46-48-300x125.png 300w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/p>\n<hr id=\"CephFS\" \/>\n<p><strong>CEPHFS<\/strong><\/p>\n<p><strong>On the Cluster<\/strong><\/p>\n<ul>\n<li>Create at least one MDS for serving the file system.<\/li>\n<\/ul>\n<pre>ceph orch apply mds cephfs 1\r\nceph mds stat\r\nceph orch ps --daemon-type=mds<\/pre>\n<ul>\n<li>The file system requires two pools: one for data and one for metadata.<\/li>\n<\/ul>\n<pre>ceph osd pool create cephfs_data 128\r\nceph osd pool create cephfs_metadata 32<\/pre>\n<ul>\n<li>If running a single-node cluster for learning or testing, the following commands may allow it to work (not recommended in production).<\/li>\n<\/ul>\n<pre>ceph config set mon mon_allow_pool_size_one true\r\nceph osd pool set cephfs_metadata size 1 --yes-i-really-mean-it\r\nceph osd pool set cephfs_data size 1 --yes-i-really-mean-it<\/pre>\n<ul>\n<li>Check the status of the pools.<\/li>\n<\/ul>\n<pre>ceph osd pool ls detail<\/pre>\n<ul>\n<li>Create the file system.<\/li>\n<\/ul>\n<pre>ceph fs new cephfs cephfs_metadata cephfs_data\r\nceph fs ls<\/pre>\n<ul>\n<li>For testing, grant full permissions to <code>admin<\/code> and retrieve its key. In production, use service accounts with minimal permissions for each client.<\/li>\n<\/ul>\n<pre>ceph auth caps client.admin mon 'allow *' mds 'allow *' osd 'allow *' mgr 'allow *'\r\nceph auth get-key client.admin<\/pre>\n<p><strong>On the Client<\/strong><\/p>\n<ul>\n<li>Install or update the necessary libraries and tools to mount CephFS.<\/li>\n<\/ul>\n<pre>sudo apt update\r\nsudo apt install ceph-common -y<\/pre>\n<ul>\n<li>Then mount it. Replace the placeholder secret and any other parameters as needed.<\/li>\n<\/ul>\n<pre>sudo mkdir \/mnt\/cephfs\r\nsudo mount -t ceph <strong>ceph-node-1<\/strong>:6789:\/ \/mnt\/cephfs -o name=<strong>admin<\/strong>,secret=<strong>AQBvxwhlAAAABBAA7O8ROk2EkJ6WrgG+5ckH4w==<\/strong><\/pre>\n<hr id=\"NFS\" \/>\n<p><strong>NFS WITHOUT RGW<\/strong><\/p>\n<p>Since version 16 (Pacific), Ceph can export native CephFS volumes directly via NFS, without using RGW. This is made possible through tighter integration of NFS Ganesha with the CephFS backend, and is called the Ceph NFS Service Gateway.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4935\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/ceph-diagram-5.drawio.png\" alt=\"\" width=\"279\" height=\"166\" \/><\/p>\n<p><strong>On the Cluster<\/strong><\/p>\n<ul>\n<li>Create the NFS service.<\/li>\n<\/ul>\n<pre>ceph orch apply nfs exports --placement=1\r\nceph nfs cluster ls<\/pre>\n<p>This command is equivalent to navigating through the UI.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4928\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-35-13.png\" alt=\"\" width=\"680\" height=\"323\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-35-13.png 925w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-35-13-300x142.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-35-13-768x364.png 768w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/p>\n<ul>\n<li>Create a volume and subvolume group.<\/li>\n<\/ul>\n<pre>ceph fs volume create cephfs\r\nceph fs subvolumegroup create cephfs nfs --mode 0777<\/pre>\n<p>This command is equivalent to navigating through the UI.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4924\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_23-55-10.png\" alt=\"\" width=\"800\" height=\"284\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_23-55-10.png 960w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_23-55-10-300x107.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_23-55-10-768x273.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4930\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-42-30.png\" alt=\"\" width=\"622\" height=\"479\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-42-30.png 805w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-42-30-300x231.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-42-30-768x592.png 768w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4929\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-41-47.png\" alt=\"\" width=\"800\" height=\"234\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-41-47.png 1464w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-41-47-300x88.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-41-47-1024x300.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-41-47-768x225.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<ul>\n<li>Create the NFS export.<\/li>\n<\/ul>\n<pre>ceph nfs export create cephfs exports \/volumes\/nfs cephfs --path \/volumes\/nfs --pseudo-path \/path\/export1 --squash no_root_squash<\/pre>\n<p><strong>Note:<\/strong> optionally, add source permissions using <code>--clients 192.168.1.0\/24=RW,no_root_squash<\/code>.<\/p>\n<p>This command is equivalent to navigating through the UI.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4931\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-46-16.png\" alt=\"\" width=\"593\" height=\"743\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-46-16.png 737w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-08_12-46-16-240x300.png 240w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/p>\n<p><strong>On the Client<\/strong><\/p>\n<ul>\n<li>Mount the NFS export.<\/li>\n<\/ul>\n<pre>sudo mount -t nfs <strong>ceph-node-1:\/path\/export1<\/strong> \/mnt\/cephfs<\/pre>\n<hr id=\"RBD\" \/>\n<p><strong>RADOS BLOCK DEVICE<\/strong><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>(in progress)<\/strong><\/span><\/p>\n<hr id=\"RGWiSCSI\" \/>\n<p><strong>RGW + iSCSI<\/strong><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>(in progress)<\/strong><\/span><\/p>\n<hr id=\"RGWSMB\" \/>\n<p><strong>RGW + SMB<\/strong><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>(in progress)<\/strong><\/span><\/p>\n<hr id=\"RGWS3\" \/>\n<p><strong>RGW + S3<\/strong><\/p>\n<p><span style=\"text-decoration: underline;\"><strong>(in progress)<\/strong><\/span><\/p>\n<hr id=\"Troubleshooting\" \/>\n<p><strong>TROUBLESHOOTING<\/strong><\/p>\n<ul>\n<li>Handy commands.<\/li>\n<\/ul>\n<pre>ceph health detail\r\nceph -W mon<\/pre>\n<pre>cephadm ls | grep rgw\r\ncephadm logs --name rgw.export1.ceph.auzhhi<\/pre>\n<ul>\n<li>Sometimes Ceph does not identify volumes as ready to use. The screenshots below show how it looks before and after resolving the issue.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4914\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-32-06.png\" alt=\"\" width=\"800\" height=\"309\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-32-06.png 1464w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-32-06-300x116.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-32-06-1024x396.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-32-06-768x297.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4915\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-35-57.png\" alt=\"\" width=\"800\" height=\"254\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-35-57.png 1466w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-35-57-300x95.png 300w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-35-57-1024x325.png 1024w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2025\/06\/Screenshot_2025-06-07_21-35-57-768x244.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<ul>\n<li>The recommended approach is to fully wipe the disk first. This allows Ceph to set up LVM automatically.<\/li>\n<\/ul>\n<pre>wipefs -a \/dev\/vdb<\/pre>\n<pre>ceph orch daemon add osd ceph-node-1:\/dev\/vdb<\/pre>\n<ul>\n<li>Alternatively, create the LVM manually first.<\/li>\n<\/ul>\n<pre>sudo pvcreate \/dev\/vdb\r\nsudo vgcreate ceph-vg \/dev\/vdb<\/pre>\n<pre>ceph orch daemon add osd ceph-node-1:ceph-vg<\/pre>\n<ul>\n<li>The least recommended approach is adding it as a raw volume, as this disables features like expansion and migration.<\/li>\n<\/ul>\n<pre>ceph orch daemon add osd <strong>--method raw<\/strong> ceph-node-1:\/dev\/vdb<\/pre>\n<p><strong>Service Accounts and Permissions<\/strong><\/p>\n<ul>\n<li>The following is suitable for testing or troubleshooting.<\/li>\n<\/ul>\n<pre>ceph auth caps client.admin mon 'allow *' mds 'allow *' osd 'allow *' mgr 'allow *'\r\nceph auth get-key client.admin\r\nceph auth get client.admin -o \/etc\/ceph\/ceph.client.admin.keyring<\/pre>\n<ul>\n<li>Using the principle of least privilege, create service accounts tailored to each service.<\/li>\n<\/ul>\n<pre>ceph auth get-or-create client.cephfsuser mon 'allow r' mds 'allow r, allow rw path=\/mydata' osd 'allow rw tag cephfs data=*' -o \/etc\/ceph\/ceph.client.cephfsuser.keyring<\/pre>\n<ul>\n<li>Inspect a specific NFS export, save it to a file, and re-import it.<\/li>\n<\/ul>\n<pre>ceph nfs export get exports \/path\/export\r\nceph nfs export get exports \/path\/export &gt; export.json\r\nceph nfs export update exports -i export.json<\/pre>\n<ul>\n<li>Force-remove an OSD.<\/li>\n<\/ul>\n<pre>cephadm logs --name <strong>osd.5<\/strong>\r\nceph osd out <strong>5<\/strong>\r\nceph osd purge <strong>5<\/strong> --yes-i-really-mean-it\r\nceph orch daemon rm <strong>osd.5<\/strong> --force<\/pre>\n<ul>\n<li>Wipe and re-add a drive.<\/li>\n<\/ul>\n<pre>ceph orch device zap <strong>ceph5 \/dev\/sdb<\/strong> --force\r\nceph orch daemon add osd <strong>ceph5:\/dev\/sdb<\/strong><\/pre>\n<ul>\n<li>Remove an offline host from the cluster.<\/li>\n<\/ul>\n<pre>ceph orch host rm ceph5 --offline --force<\/pre>\n<ul>\n<li>Always refer to the official documentation [<a href=\"https:\/\/docs.ceph.com\/en\/squid\/\"><strong>Link<\/strong><\/a>].<\/li>\n<\/ul>\n<hr \/>\n<p><strong>BONUS<\/strong><\/p>\n<p>How to use CephFS as persistent storage in Kubernetes?<\/p>\n<p>Start by creating a secret to store the username and password.<\/p>\n<pre>apiVersion: v1\r\nkind: Secret\r\nmetadata:\r\n  name: <strong>cephfs-secret<\/strong>\r\n  namespace: default\r\nstringData:\r\n  adminID: <strong>&lt;username_here&gt;<\/strong>\r\n  adminKey: <strong>&lt;password_here&gt;<\/strong><\/pre>\n<p>Configure how Kubernetes will provision volumes in CephFS.<\/p>\n<pre>apiVersion: storage.k8s.io\/v1\r\nkind: StorageClass\r\nmetadata:\r\n  name: <strong>cephfs-sc<\/strong>\r\nprovisioner: cephfs.csi.ceph.com\r\nparameters:\r\n  # Comma-separated list of MONs\r\n  monitors: <strong>192.168.1.131:6789,192.168.1.132:6789,192.168.1.133:6789,192.168.1.134:6789,192.168.1.135:6789,192.168.1.136:6789,192.168.1.137:6789,192.168.1.138:6789<\/strong>\r\n  # Filesystem name and path\r\n  fsName: <strong>myfs<\/strong>\r\n  rootPath: <strong>\/k8s-volumes<\/strong>\r\n  # Ceph user and secret\r\n  csi.storage.k8s.io\/provisioner-secret-name: <strong>cephfs-secret<\/strong>\r\n  csi.storage.k8s.io\/provisioner-secret-namespace: <strong>default<\/strong>\r\n  csi.storage.k8s.io\/node-stage-secret-name: <strong>cephfs-secret<\/strong>\r\n  csi.storage.k8s.io\/node-stage-secret-namespace: <strong>default<\/strong>\r\nreclaimPolicy: Delete\r\nmountOptions:\r\n  - debug\r\nallowVolumeExpansion: true<\/pre>\n<p>Then use it like any other PVC.<\/p>\n<pre>apiVersion: v1\r\nkind: PersistentVolumeClaim\r\nmetadata:\r\n  name: <strong>cephfs-pvc<\/strong>\r\nspec:\r\n  accessModes:\r\n    - ReadWriteMany\r\n  storageClassName: <strong>cephfs-sc<\/strong>\r\n  resources:\r\n    requests:\r\n      storage: <strong>1Gi<\/strong><\/pre>\n<p>And claim volumes in pod or deployment manifests.<\/p>\n<pre>apiVersion: v1\r\nkind: Pod\r\nmetadata:\r\n name: <strong>cephfs-test<\/strong>\r\nspec:\r\n  containers:\r\n    - name: <strong>app-test<\/strong>\r\n      image: <strong>busybox<\/strong>\r\n      command: <strong>[\"sh\", \"-c\", \"while true; do date &gt;&gt; \/mnt\/data\/log.txt; sleep 5; done\"]<\/strong>\r\n      volumeMounts:\r\n        - name: <strong>cephfs-storage<\/strong>\r\n          mountPath: <strong>\/mnt\/data<\/strong>\r\n  volumes:\r\n    - name: <strong>cephfs-storage<\/strong>\r\n      persistentVolumeClaim:\r\n        claimName: <strong>cephfs-pvc<\/strong><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>If you haven&#8217;t read the previous post, CEPH Deployment and Concepts [Link], you might want [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,1],"tags":[],"class_list":["post-4897","post","type-post","status-publish","format-standard","hentry","category-linux","category-ccna"],"_links":{"self":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/4897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4897"}],"version-history":[{"count":28,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/4897\/revisions"}],"predecessor-version":[{"id":5607,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/4897\/revisions\/5607"}],"wp:attachment":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}