{"id":867,"date":"2026-09-17T23:15:33","date_gmt":"2026-09-17T20:15:33","guid":{"rendered":"https:\/\/imaxis.ru\/?p=867"},"modified":"2026-09-18T00:05:29","modified_gmt":"2026-09-17T21:05:29","slug":"nastroyka-klastera-ceph-na-ubuntu-osd-cephfs-s3-i-dashboard","status":"publish","type":"post","link":"https:\/\/imaxis.ru\/?p=867","title":{"rendered":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Ceph \u043d\u0430 Ubuntu: OSD, CephFS, S3 \u0438 Dashboard"},"content":{"rendered":"<h1>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Ceph \u043d\u0430 Ubuntu: OSD, CephFS, S3 \u0438 Dashboard<\/h1>\n<p>Ceph \u2014 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435: \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 (S3), \u0431\u043b\u043e\u0447\u043d\u043e\u0435 (RBD) \u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0435 (CephFS). \u0412 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u2014 \u0441\u0431\u043e\u0440\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 <code>cephadm<\/code>, \u0432\u0435\u0431-Dashboard, Erasure Coding, CephFS \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e S3 \u0441 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 NGINX.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430 Ubuntu 24.04; \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442 \u0438 \u0434\u043b\u044f Debian.<\/p>\n<hr \/>\n<h2>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/h2>\n<h3>1. \u0414\u0438\u0441\u043a\u0438<\/h3>\n<pre><code class=\"language-bash\">lsblk\n<\/code><\/pre>\n<p><strong>\u0414\u043b\u044f OSD \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u2014 \u0431\u0435\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/strong><\/p>\n<h3>2. Docker<\/h3>\n<p>\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 <code>cephadm<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 Docker \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d.<\/p>\n<h3>3. \u0420\u043e\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432<\/h3>\n<p>\u0412 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 \u0440\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u043e\u0441\u044f\u0442 \u043f\u043e \u0443\u0437\u043b\u0430\u043c; \u0434\u043b\u044f \u043a\u0432\u043e\u0440\u0443\u043c\u0430 \u043d\u0443\u0436\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c 3 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u2014 3 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0440\u043e\u043b\u044f\u043c\u0438.<\/p>\n<hr \/>\n<h2>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h2>\n<h3>1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 lvm2<\/h3>\n<pre><code class=\"language-bash\">apt update\napt install lvm2\n<\/code><\/pre>\n<h3>2. \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0438\u0441\u043a\u0430<\/h3>\n<pre><code class=\"language-bash\">lsblk\n<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430 \u043f\u043e\u0434 \u043a\u043b\u0430\u0441\u0442\u0435\u0440:<\/p>\n<pre><code class=\"language-bash\">wipefs -a \/dev\/sdX\n<\/code><\/pre>\n<p><strong>\u041c\u0435\u043d\u044f\u0439\u0442\u0435 X \u043d\u0430 \u0431\u0443\u043a\u0432\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0441\u043a\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u0424\u0421, RAID \u0438 \u0442\u0430\u0431\u043b\u0438\u0446 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u2014 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0439\u0442\u0435 \u0434\u0438\u0441\u043a, \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b.<\/strong><\/p>\n<hr \/>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Docker<\/h2>\n<pre><code class=\"language-bash\">apt install docker.io\nmkdir -p \/etc\/docker\nvi \/etc\/docker\/daemon.json\n<\/code><\/pre>\n<pre><code class=\"language-json\">{\n  &quot;storage-driver&quot;: &quot;overlay2&quot;,\n  &quot;log-driver&quot;: &quot;json-file&quot;,\n  &quot;log-opts&quot;: {\n     &quot;max-size&quot;: &quot;10m&quot;,\n     &quot;max-file&quot;: &quot;3&quot;\n  },\n  &quot;default-ulimits&quot;: {\n    &quot;nofile&quot;: {\n      &quot;Name&quot;: &quot;nofile&quot;,\n      &quot;Hard&quot;: 262144,\n      &quot;Soft&quot;: 262144\n    }\n  },\n  &quot;default-address-pools&quot;: [\n    {\n      &quot;base&quot;: &quot;172.17.0.0\/16&quot;,\n      &quot;size&quot;: 24\n    }\n  ]\n}\n<\/code><\/pre>\n<p><strong>\u0417\u0430\u0434\u0430\u0451\u043c \u043b\u0438\u043c\u0438\u0442\u044b <code>nofile<\/code> \u0438 \u043f\u0443\u043b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d <code>172.17.0.0\/16<\/code>, \u043c\u0430\u0441\u043a\u0430 24 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 16 \u2014 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e).<\/strong><\/p>\n<pre><code class=\"language-bash\">systemctl restart docker\n<\/code><\/pre>\n<hr \/>\n<h2>\u0421\u0431\u043e\u0440\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430<\/h2>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440: \u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<ul>\n<li><code>ceph01<\/code> (192.168.1.201) \u2014 mon + osd;<\/li>\n<li><code>ceph02<\/code> (192.168.1.202) \u2014 mon + osd;<\/li>\n<li><code>ceph03<\/code> (192.168.1.203) \u2014 mon + osd.<\/li>\n<\/ul>\n<p><strong>\u0420\u043e\u043b\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0438 \u0434\u0430\u0442\u0430\u0441\u0442\u043e\u0440\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b; \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0440\u0435\u0434\u0430\u0445 \u0440\u043e\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442.<\/strong><\/p>\n<h3>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430<\/h3>\n<p>\u041d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0434\u0435 (192.168.1.201):<\/p>\n<pre><code class=\"language-bash\">apt install cephadm\n<\/code><\/pre>\n<p><strong><code>cephadm<\/code> \u2014 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430; \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0443\u0437\u0435\u043b \u0441\u0435\u0442\u0438, \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u043d\u043e\u0434\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/strong><\/p>\n<pre><code class=\"language-bash\">cephadm bootstrap --mon-ip 192.168.1.201\n<\/code><\/pre>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u043e\u0443\u0437\u043b\u043e\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c <code>mon-ip<\/code>.<\/strong><\/p>\n<pre><code>Ceph Dashboard is now available at:\n             URL: https:\/\/ceph01:8443\/\n             User: admin\n         Password: 99b5bho4uw\n...\nYou can access the Ceph CLI as following ...:\n        sudo \/usr\/sbin\/cephadm shell --fsid 3668ff92-... -c \/etc\/ceph\/ceph.conf -k \/etc\/ceph\/ceph.client.admin.keyring\n<\/code><\/pre>\n<p><strong>\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0439\u0442\u0435 \u043b\u043e\u0433\u0438\u043d\/\u043f\u0430\u0440\u043e\u043b\u044c Dashboard \u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0430\u043b\u0438\u0430\u0441:<\/p>\n<pre><code class=\"language-bash\">echo 'alias cs=&quot;\/usr\/sbin\/cephadm shell --fsid 3668ff92-cb6b-11f0-a214-00155d016513 -c \/etc\/ceph\/ceph.conf -k \/etc\/ceph\/ceph.client.admin.keyring&quot;' &gt;&gt; ~\/.bashrc\nsource ~\/.bashrc\n<\/code><\/pre>\n<p><strong><code>cs<\/code> \u2014 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443.<\/strong><\/p>\n<pre><code class=\"language-bash\">cs\n<\/code><\/pre>\n<pre><code class=\"language-bash\">ceph -s\nceph orch host ls\n<\/code><\/pre>\n<pre><code>HOST          ADDR           LABELS  STATUS\nceph01        192.168.1.201  _admin\n1 hosts in cluster\n<\/code><\/pre>\n<p><strong>\u041e\u0434\u0438\u043d \u0445\u043e\u0441\u0442 <code>ceph01<\/code> \u0441 \u043b\u0435\u0439\u0431\u043b\u043e\u043c <code>_admin<\/code>.<\/strong><\/p>\n<pre><code class=\"language-bash\">ceph orch host label add ceph01 mon\nceph orch host ls\n<\/code><\/pre>\n<p><strong>\u041b\u0435\u0439\u0431\u043b\u044b \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430; \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u043e\u043b\u044c \u043e\u0442 \u043d\u0438\u0445 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442.<\/strong><\/p>\n<pre><code class=\"language-bash\">exit\n<\/code><\/pre>\n<h3>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432<\/h3>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"language-bash\">cs -- ceph cephadm get-pub-key 2&gt;\/dev\/null\n<\/code><\/pre>\n<pre><code>ssh-rsa AAAAB3NzaC...0155d016513\n<\/code><\/pre>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u043d\u043e\u0434\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043b\u044e\u0447 \u0432 <code>\/root\/.ssh\/authorized_keys<\/code>:<\/p>\n<pre><code class=\"language-bash\">vi \/root\/.ssh\/authorized_keys\n<\/code><\/pre>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0443\u0437\u0435\u043b:<\/p>\n<pre><code class=\"language-bash\">cs\nceph orch host add ceph02 192.168.1.202\nceph orch host add ceph03 192.168.1.203\nceph orch host label add ceph01 osd1\nceph orch host label add ceph02 osd2\nceph orch host label add ceph03 osd3\nceph orch host ls\n<\/code><\/pre>\n<h3>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u043e\u0432<\/h3>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>\/dev\/sdb<\/code> \u0438 <code>\/dev\/sdc<\/code> \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0434\u0435.<\/p>\n<pre><code class=\"language-bash\">ceph osd tree\n<\/code><\/pre>\n<p><strong>\u041f\u043e\u043a\u0430 \u043f\u0443\u0441\u0442\u043e \u2014 \u0434\u0438\u0441\u043a\u0438 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b.<\/strong><\/p>\n<pre><code class=\"language-bash\">ceph orch daemon add osd ceph01:\/dev\/sdb\nceph orch daemon add osd ceph01:\/dev\/sdc\nceph orch daemon add osd ceph02:\/dev\/sdb\nceph orch daemon add osd ceph02:\/dev\/sdc\nceph orch daemon add osd ceph03:\/dev\/sdb\nceph orch daemon add osd ceph03:\/dev\/sdc\n<\/code><\/pre>\n<pre><code class=\"language-bash\">ceph osd tree\nceph -s\nceph df\nceph health detail\n<\/code><\/pre>\n<pre><code>HEALTH_OK\n<\/code><\/pre>\n<p><strong>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441\u043e\u0431\u0440\u0430\u043d \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435.<\/strong><\/p>\n<hr \/>\n<h2>Erasure Coding<\/h2>\n<p>Erasure Coding \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0445 \u043f\u043e \u0443\u0437\u043b\u0430\u043c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0443\u043b\u044b Replicated \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0438\u0441\u043a\u043e\u0432: 3 \u0434\u0438\u0441\u043a\u0430 \u043f\u043e 1 \u0422\u0431 \u2192 1 \u0422\u0431 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0421\u0445\u0435\u043c\u0430 <code>2+1<\/code> \u0434\u0430\u0451\u0442 2 \u0422\u0431.<\/p>\n<p><strong>\u041c\u0438\u043d\u0443\u0441:<\/strong> \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 CPU \u0438 RAM.<\/p>\n<pre><code class=\"language-bash\">cs\nceph osd erasure-code-profile set myprofile k=2 m=1 crush-failure-domain=host\n<\/code><\/pre>\n<p>\u0433\u0434\u0435:<\/p>\n<ul>\n<li><code>myprofile<\/code> \u2014 \u0438\u043c\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044f;<\/li>\n<li><code>k=2<\/code> \u2014 2 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445;<\/li>\n<li><code>m=1<\/code> \u2014 1 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442;<\/li>\n<li><code>crush-failure-domain=host<\/code> \u2014 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435.<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">ceph osd pool create ec_data_pool erasure myprofile\n<\/code><\/pre>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d \u043f\u0443\u043b <code>ec_data_pool<\/code>.<\/strong><\/p>\n<p>\u041f\u0443\u043b\u044b Erasure \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (S3\/RGW). \u0414\u043b\u044f RBD \u0438 CephFS \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n<pre><code class=\"language-bash\">ceph osd pool set ec_data_pool allow_ec_overwrites true\nceph df\n<\/code><\/pre>\n<hr \/>\n<h2>Ceph Web Dashboard<\/h2>\n<p>\u041f\u0430\u043d\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 <code>cephadm bootstrap<\/code>; \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0435.<\/p>\n<p>\u0421\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f:<\/p>\n<pre><code class=\"language-bash\">cs\necho &quot;my_strong_password&quot; &gt; \/tmp\/pwd\nceph dashboard ac-user-set-password admin -i \/tmp\/pwd\nrm -f \/tmp\/pwd\n<\/code><\/pre>\n<p>\u0412\u0445\u043e\u0434: <code>https:\/\/&lt;IP-\u0430\u0434\u0440\u0435\u0441&gt;:8443\/<\/code>.<\/p>\n<hr \/>\n<h2>CephFS<\/h2>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a: \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c MDS \u2192 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u043b\u044b \u2192 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u2192 \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435.<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/h3>\n<pre><code class=\"language-bash\">cs\nceph orch ps | grep mds\n<\/code><\/pre>\n<p><strong>\u041f\u0443\u0441\u0442\u043e \u2014 \u0441\u0435\u0440\u0432\u0438\u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043d.<\/strong><\/p>\n<pre><code class=\"language-bash\">ceph orch apply mds my_data --placement=&quot;ceph01 ceph02 ceph03&quot;\n<\/code><\/pre>\n<p>\u0433\u0434\u0435 <code>my_data<\/code> \u2014 \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, <code>ceph01 ceph02 ceph03<\/code> \u2014 \u0443\u0437\u043b\u044b.<\/p>\n<pre><code class=\"language-bash\">ceph orch ps | grep mds\n<\/code><\/pre>\n<pre><code>mds.my_data.ceph01.ajvdrs  ceph01  running (50s)  42s ago  50s  16.5M  -  16.2.15  ...\nmds.my_data.ceph02.xcxqmz  ceph02  running (49s)  43s ago  49s  12.0M  -  16.2.15  ...\nmds.my_data.ceph03.bjkjux  ceph03  running (48s)  43s ago  48s  16.6M  -  16.2.15  ...\n<\/code><\/pre>\n<pre><code class=\"language-bash\">ceph osd pool create cephfs_my_data 64\nceph osd pool create cephfs_my_metadata 64\nceph fs new my_data cephfs_my_metadata cephfs_my_data\nceph fs ls\n<\/code><\/pre>\n<p>\u0433\u0434\u0435 <code>64<\/code> \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0440\u0443\u043f\u043f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f (PG), <code>my_data<\/code> \u2014 \u0438\u043c\u044f CephFS.<\/p>\n<h3>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435<\/h3>\n<pre><code class=\"language-bash\">apt install ceph-common\n<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Ceph \u0447\u0438\u0442\u0430\u0435\u043c:<\/p>\n<pre><code class=\"language-bash\">cat \/etc\/ceph\/ceph.client.admin.keyring\ncat \/etc\/ceph\/ceph.conf\n<\/code><\/pre>\n<p>\u041d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b\u044b \u0441 \u044d\u0442\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code class=\"language-bash\">vi \/etc\/ceph\/ceph.keyring\nvi \/etc\/ceph\/ceph.conf\nvi \/etc\/ceph\/admin.secret\n<\/code><\/pre>\n<p><strong>\u0412 <code>admin.secret<\/code> \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 <code>key =<\/code> \u0438\u0437 <code>ceph.client.admin.keyring<\/code>.<\/strong><\/p>\n<pre><code class=\"language-bash\">mkdir -p \/mnt\/cephfs\nmount -t ceph 192.168.1.201:6789,192.168.1.202:6789,192.168.1.203:6789:\/ \/mnt\/cephfs -o name=admin,secretfile=\/etc\/ceph\/admin.secret,fs=my_data\n<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u0432 <code>\/etc\/fstab<\/code>:<\/p>\n<pre><code>192.168.1.201:6789,192.168.1.202:6789,192.168.1.203:6789:\/ \/mnt\/cephfs ceph name=admin,secretfile=\/etc\/ceph\/admin.secret,fs=my_data,_netdev 0 0\n<\/code><\/pre>\n<hr \/>\n<h2>\u0414\u043e\u0441\u0442\u0443\u043f \u043f\u043e S3 (RADOS Gateway)<\/h2>\n<pre><code class=\"language-bash\">apt install radosgw\n<\/code><\/pre>\n<p>\u041d\u0430 \u0443\u0437\u043b\u0430\u0445-\u0448\u043b\u044e\u0437\u0430\u0445 \u0437\u0430\u0434\u0430\u0451\u043c \u0438\u043c\u044f:<\/p>\n<pre><code class=\"language-bash\">RGWDN=s3.imaxis.ru\n<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 <code>\/etc\/ceph\/ceph.conf<\/code>:<\/p>\n<pre><code class=\"language-bash\">cat &gt;&gt; \/etc\/ceph\/ceph.conf &lt;&lt;EOF\n\n[client.radosgw.gateway]\n    host = `hostname -f`\n    keyring = \/etc\/ceph\/keyring.radosgw.gateway\n    rgw socket path = \/var\/run\/ceph\/ceph.radosgw.gateway.fastcgi.sock\n    log file = \/var\/log\/ceph\/client.radosgw.gateway.log\n    rgw dns name = ${RGWDN}\n    rgw frontends = &quot;fastcgi socket=\/var\/run\/ceph\/ceph.radosgw.gateway.fastcgi.sock port=7480&quot;\nEOF\n<\/code><\/pre>\n<pre><code class=\"language-bash\">cs\nceph auth get-or-create client.radosgw.gateway mon 'allow rw' osd 'allow *' -o \/etc\/ceph\/keyring.radosgw.gateway\nchown root:ceph \/etc\/ceph\/keyring.radosgw.gateway\nchmod 640 \/etc\/ceph\/keyring.radosgw.gateway\nceph orch host ls\n<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c keyring \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0437\u043b\u044b S3:<\/p>\n<pre><code class=\"language-bash\">scp \/etc\/ceph\/keyring.radosgw.gateway 192.168.1.202:\/etc\/ceph\/keyring.radosgw.gateway\nscp \/etc\/ceph\/keyring.radosgw.gateway 192.168.1.203:\/etc\/ceph\/keyring.radosgw.gateway\n<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c RGW:<\/p>\n<pre><code class=\"language-bash\">ceph orch apply rgw gwfors3 --placement=&quot;ceph01 ceph02 ceph03&quot;\nceph orch ps\n<\/code><\/pre>\n<pre><code>rgw.gwfors3.ceph01.uwjhqi  ...  *:80  running (86s) ...\n<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f S3:<\/p>\n<pre><code class=\"language-bash\">radosgw-admin user create --uid=&quot;s3user&quot; --display-name=&quot;User For S3&quot;\n<\/code><\/pre>\n<pre><code>    &quot;keys&quot;: [\n        {\n            &quot;user&quot;: &quot;s3user&quot;,\n            &quot;access_key&quot;: &quot;43T4A41OQCODJZD7IK7M&quot;,\n            &quot;secret_key&quot;: &quot;errOM3viKUXQng8DyvOnAggZIXkgUUSrwruX8NwV&quot;\n        }\n    ],\n<\/code><\/pre>\n<p><strong>\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0439\u0442\u0435 <code>access_key<\/code> \u0438 <code>secret_key<\/code>.<\/strong><\/p>\n<pre><code class=\"language-bash\">radosgw-admin bucket list\n<\/code><\/pre>\n<p>\u0411\u0430\u043a\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 S3-\u043a\u043b\u0438\u0435\u043d\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>s3cmd<\/code> \u0438\u043b\u0438 <code>aws-cli<\/code>) \u2014 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442.<\/p>\n<h3>NGINX-\u043f\u0440\u043e\u043a\u0441\u0438 \u0434\u043b\u044f S3<\/h3>\n<p>\u0414\u043b\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u0432\u0438\u043c NGINX \u043f\u0435\u0440\u0435\u0434 \u0443\u0437\u043b\u0430\u043c\u0438 RGW:<\/p>\n<pre><code class=\"language-nginx\">upstream ceph {\n    server 192.168.1.201:80;\n    server 192.168.1.202:80;\n    server 192.168.1.203:80;\n}\n\nserver {\n    listen 80;\n    server_name s3.imaxis.ru;\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen       443 ssl;\n    server_name  s3.imaxis.ru;\n    ssl_certificate     \/etc\/nginx\/ssl\/cert.pem;\n    ssl_certificate_key \/etc\/nginx\/ssl\/cert.key;\n\n    location \/ {\n        proxy_pass http:\/\/ceph;\n        proxy_set_header Host $http_host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_connect_timeout 600s;\n        proxy_send_timeout 600s;\n        proxy_read_timeout 600s;\n        client_max_body_size 0;\n    }\n}\n<\/code><\/pre>\n<p><strong><code>client_max_body_size 0<\/code> \u2014 \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.<\/strong><\/p>\n<pre><code class=\"language-bash\">nginx -t &amp;&amp; nginx -s reload\n<\/code><\/pre>\n<hr \/>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/h2>\n<pre><code class=\"language-bash\">lsblk\nwipefs -a \/dev\/sdX\napt install docker.io\nmkdir -p \/etc\/docker\nvi \/etc\/docker\/daemon.json\n<\/code><\/pre>\n<p><strong>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>daemon.json<\/code> \u2014 \u043a\u0430\u043a \u0432\u044b\u0448\u0435.<\/strong><\/p>\n<pre><code class=\"language-bash\">systemctl restart docker\n<\/code><\/pre>\n<p>\u041d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435:<\/p>\n<pre><code class=\"language-bash\">cs -- ceph cephadm get-pub-key 2&gt;\/dev\/null\n<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447 \u0432 <code>\/root\/.ssh\/authorized_keys<\/code> \u043d\u0430 \u043d\u043e\u0432\u043e\u0439 \u043d\u043e\u0434\u0435, \u0437\u0430\u0442\u0435\u043c:<\/p>\n<pre><code class=\"language-bash\">cs\nceph orch host add ceph04 192.168.1.204\nceph orch host label add ceph04 osd4\nceph orch daemon add osd ceph04:\/dev\/sdb\nceph orch daemon add osd ceph04:\/dev\/sdc\n<\/code><\/pre>\n<hr \/>\n<h2>\u0422\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438<\/h2>\n<ul>\n<li><strong><code>wipefs -a<\/code> \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0430<\/strong> \u2014 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0431\u0443\u043a\u0432\u0443 \u0434\u0438\u0441\u043a\u0430.<\/li>\n<li><strong>\u041a\u0432\u043e\u0440\u0443\u043c MON<\/strong> \u2014 \u043c\u0438\u043d\u0438\u043c\u0443\u043c 3 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438.<\/li>\n<li><strong>Replicated vs Erasure<\/strong> \u2014 EC \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043c\u0435\u0441\u0442\u043e, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 CPU\/RAM \u0438 <code>allow_ec_overwrites<\/code> \u0434\u043b\u044f RBD\/CephFS.<\/li>\n<li><strong><code>cephadm shell<\/code><\/strong> \u2014 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u0430\u043d\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0430\u043b\u0438\u0430\u0441 <code>cs<\/code>.<\/li>\n<li><strong>Dashboard 8443<\/strong> \u2014 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/li>\n<li><strong>CephFS secret<\/strong> \u2014 \u0432 <code>admin.secret<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 <code>key =<\/code>.<\/li>\n<li><strong>S3 \u0434\u043e\u0441\u0442\u0443\u043f<\/strong> \u2014 <code>access_key<\/code>\/<code>secret_key<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437; \u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0438\u0445.<\/li>\n<li><strong>RGW fastcgi<\/strong> \u2014 \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 Ceph \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>beast<\/code> frontend; \u0441\u0432\u0435\u0440\u044f\u0439\u0442\u0435\u0441\u044c \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439.<\/li>\n<li><strong>NGINX \u0438 S3<\/strong> \u2014 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d \u043f\u0440\u043e\u0431\u0440\u043e\u0441 <code>Host<\/code>, \u0438\u043d\u0430\u0447\u0435 \u0438\u043c\u044f \u0431\u0430\u043a\u0435\u0442\u0430 \u0432 \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0435 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0435\u0442\u0441\u044f.<\/li>\n<\/ul>\n<hr \/>\n<h2>\u0428\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430<\/h2>\n<pre><code class=\"language-bash\">apt install lvm2 docker.io cephadm\nwipefs -a \/dev\/sdb\ncephadm bootstrap --mon-ip 192.168.1.201\n# alias cs -&gt; cephadm shell ...\nceph orch host add ceph02 192.168.1.202\nceph orch daemon add osd ceph01:\/dev\/sdb\nceph osd erasure-code-profile set myprofile k=2 m=1 crush-failure-domain=host\nceph fs new my_data cephfs_my_metadata cephfs_my_data\nceph orch apply rgw gwfors3 --placement=&quot;ceph01 ceph02 ceph03&quot;\nradosgw-admin user create --uid=&quot;s3user&quot; --display-name=&quot;User For S3&quot;\n<\/code><\/pre>\n<p><em>\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e \u043d\u0430: Ubuntu 24.04 + Ceph (cephadm, Reef\/Squid).<\/em><br \/>\n<em>\u0414\u0430\u0442\u0430: \u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2026.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Ceph \u043d\u0430 Ubuntu: OSD, CephFS, S3 \u0438 Dashboard<\/p>\n","protected":false},"author":0,"featured_media":962,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-867","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"aioseo_notices":[],"views":6,"_links":{"self":[{"href":"https:\/\/imaxis.ru\/index.php?rest_route=\/wp\/v2\/posts\/867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imaxis.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imaxis.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/imaxis.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=867"}],"version-history":[{"count":3,"href":"https:\/\/imaxis.ru\/index.php?rest_route=\/wp\/v2\/posts\/867\/revisions"}],"predecessor-version":[{"id":885,"href":"https:\/\/imaxis.ru\/index.php?rest_route=\/wp\/v2\/posts\/867\/revisions\/885"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imaxis.ru\/index.php?rest_route=\/wp\/v2\/media\/962"}],"wp:attachment":[{"href":"https:\/\/imaxis.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imaxis.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imaxis.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}