{"id":861,"date":"2026-02-09T01:13:09","date_gmt":"2026-02-08T16:13:09","guid":{"rendered":"http:\/\/www.igoni.kr\/?p=861"},"modified":"2026-02-09T01:13:09","modified_gmt":"2026-02-08T16:13:09","slug":"ceph-%ec%8a%a4%ed%86%a0%eb%a6%ac%ec%a7%80-%ea%b5%ac%ec%b6%95","status":"publish","type":"post","link":"http:\/\/www.igoni.kr\/?p=861","title":{"rendered":"Ceph \uc2a4\ud1a0\ub9ac\uc9c0 \uad6c\ucd95"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\ubaa9 \ucc28<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\ubaa9\ucc28 \ud1a0\uae00\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/www.igoni.kr\/?p=861\/#ceph_%EC%86%8C%EA%B0%9C\" >ceph \uc18c\uac1c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/www.igoni.kr\/?p=861\/#%EA%B5%AC%EC%84%B1%EC%A0%95%EB%B3%B4\" >\uad6c\uc131\uc815\ubcf4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/www.igoni.kr\/?p=861\/#%EC%8B%9C%EC%8A%A4%ED%85%9C_%EC%9D%B4%ED%95%B4\" >\uc2dc\uc2a4\ud15c \uc774\ud574<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/www.igoni.kr\/?p=861\/#Ceph_%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0_ansible_%EA%B8%B0%EB%B0%98%EC%9D%98_ceph%EB%B0%B0%ED%8F%AC\" >Ceph \uc124\uce58\ud558\uae30 (ansible \uae30\ubc18\uc758 \u00a0ceph\ubc30\ud3ec)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/www.igoni.kr\/?p=861\/#%EC%9A%B4%EC%98%81%EB%B0%A9%EB%B2%95\" >\uc6b4\uc601\ubc29\ubc95<\/a><\/li><\/ul><\/nav><\/div>\n<h3 id=\"bkmrk-ceph-%EC%86%8C%EA%B0%9C\" class=\"wikigeneratedid\"><span class=\"ez-toc-section\" id=\"ceph_%EC%86%8C%EA%B0%9C\"><\/span>ceph \uc18c\uac1c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol id=\"bkmrk-%EB%B6%84%EC%82%B0-%EA%B0%9D%EC%B2%B4-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94-oss\">\n<li>\ubd84\uc0b0 \uac1d\uccb4 \uc2a4\ud1a0\ub9ac\uc9c0\ub97c \uad6c\uc131\ud558\ub294 OSS<\/li>\n<li>\uc11c\ubc84 \uad6c\uc131\uc740 OSD, Monitor, Manager, MDS \uc11c\ubc84\uac00 \ud544\uc694<\/li>\n<li>\ub17c\ub9ac\uc801\uc73c\ub85c \uad6c\uc131\ud55c Storage pool\uc548\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uac1c\uccb4\ub85c \uc800\uc7a5. Crush\uc54c\uace0\ub9ac\uc998\uc744 \uc0ac\uc6a9\ud574\uc11c \ubc30\uce58\uadf8\ub8f9\uc744 \uacc4\uc0b0\ud558\uace0 \uc800\uc7a5<\/li>\n<\/ol>\n<h3 id=\"bkmrk-%EA%B5%AC%EC%84%B1%EC%A0%95%EB%B3%B4\" class=\"wikigeneratedid\"><span class=\"ez-toc-section\" id=\"%EA%B5%AC%EC%84%B1%EC%A0%95%EB%B3%B4\"><\/span>\uad6c\uc131\uc815\ubcf4<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol id=\"bkmrk-component-%EC%A2%85%EB%A5%98-ceph-mo\">\n<li>Component \uc885\ub958\n<ol>\n<li>ceph-mon(\ubaa8\ub2c8\ud130\ub178\ub4dc) : \ud074\ub7ec\uc2a4\ud130 \uc0c1\ud0dc\ub97c \uccb4\ud06c\ud558\uace0, \ub370\ubaac\uacfc \ud074\ub77c\uc774\uc5b8\ud2b8\uac04 \uc778\uc99d\uad00\ub9ac \ub2f4\ub2f9 \/ HA\uad6c\uc131\uc2dc 3\ub300 \ud544\uc694<\/li>\n<li>ceph-mgr(\uad00\ub9ac\ub178\ub4dc) : \uc2a4\ud1a0\ub9ac\uc9c0 \ud65c\uc6a9\ub3c4 \u00a0\/ \ud604\uc7ac\uc0c1\ud0dc \ubc0f \uba54\ud2b8\ub9ad \ucd94\uc801 (dashboard \ubc0f RestAPI \uc81c\uacf5) \/ HA\uad6c\uc131\uc2dc 2\ub300 \ud544\uc694(Active \/ Standby)<\/li>\n<li>ceph-osd(\uac1d\uccb4\uc2a4\ud1a0\ub9ac\uc9c0 \ub370\ubaac) : \u00a0\ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uace0 \ubcf5\uc81c \/ \ubd80\ud558\ubd84\uc0b0 \uc5ed\ud65c\uc744 \uc218\ud589 (OSD\ub514\uc2a4\ud06c 1TB\ub2f9 \uba54\ubaa8\ub9ac 1G\uc774\uc0c1\uc73c\ub85c \uad6c\uc131\uc744 \uad8c\uace0), HA\uad6c\uc131\uc2dc \ucd5c\uc18c 3\ub300 \ud544\uc694<\/li>\n<li>ceph-mds : CEPH FS\ub97c \ub300\uc2e0\ud574\uc11c \uba54\ud0c0 \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud558\ub294 \uc11c\ubc84. = Block Devices \/ Object Storage\uc5d0\uc11c\ub294 MDS\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c<\/li>\n<\/ol>\n<\/li>\n<li>Component Hardware Spec\n<div>\n<div>\n<table style=\"border-collapse: collapse; border-style: ridge; height: 401px; width: 100%;\" border=\"1\">\n<thead>\n<tr>\n<td class=\"align-center\" style=\"width: 22.8188%;\"><strong>Component<\/strong><\/td>\n<td class=\"align-center\" style=\"width: 19.0937%;\"><strong>Hardward\u00a0\u00a0<\/strong><\/td>\n<td class=\"align-center\" style=\"width: 58.0875%;\"><strong>Spec\u00a0<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"width: 22.8188%;\">osd<\/td>\n<td style=\"width: 19.0937%;\">CPU<\/td>\n<td style=\"width: 58.0875%;\">\u00a0OSD\ub2f9 2 Core<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">osd<\/td>\n<td style=\"width: 19.0937%;\">MEM<\/td>\n<td style=\"width: 58.0875%;\">\u00a0\ub370\ubaac\ub2f9 4GB\uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">osd<\/td>\n<td style=\"width: 19.0937%;\">DISK<\/td>\n<td style=\"width: 58.0875%;\">\u00a0\ucd5c\uc18c 1TB\uc774\uc0c1,(SSD \uad8c\uc7a5)<br \/>\n\ub2e8\uc77c \ub514\uc2a4\ud06c\uc5d0\uc11c \uc5ec\ub7ec OSD \uc2e4\ud589\uc740 \ube44\uad8c\uc7a5<br \/>\n\ub2e8\uc77c \ub514\uc2a4\ud06c\uc5d0\uc11c osd+mon+mds \uc2e4\ud589\ubc29\uc2dd \ube44\uad8c\uc7a5<br \/>\nOSD\uc6a9 \ub514\uc2a4\ud06c\ub294 OS\uc640 \ubd84\ub9ac\ud574\uc11c \uc0ac\uc6a9(\uc131\ub2a5\uc800\ud558 \uc774\uc288)<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">osd<\/td>\n<td style=\"width: 19.0937%;\">NIC<\/td>\n<td style=\"width: 58.0875%;\">\u00a010G\uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mon<\/td>\n<td style=\"width: 19.0937%;\">CPU<\/td>\n<td style=\"width: 58.0875%;\">\u00a02\ucf54\uc5b4 \uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mon<\/td>\n<td style=\"width: 19.0937%;\">MEM<\/td>\n<td style=\"width: 58.0875%;\">\u00a0\ub370\ubaac\ub2f9 24GB\uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mon<\/td>\n<td style=\"width: 19.0937%;\">DISK<\/td>\n<td style=\"width: 58.0875%;\">\u00a0\ub370\ubaac\ub2f9 60GB<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mds<\/td>\n<td style=\"width: 19.0937%;\">CPU<\/td>\n<td style=\"width: 58.0875%;\">2\ucf54\uc5b4 \uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mds<\/td>\n<td style=\"width: 19.0937%;\">MEM<\/td>\n<td style=\"width: 58.0875%;\">\ub370\ubaac\ub2f9 2GB\uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mds<\/td>\n<td style=\"width: 19.0937%;\">DISK<\/td>\n<td style=\"width: 58.0875%;\">\ub370\ubaac\ub2f9 1MB \uc774\uc0c1<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.8188%;\">mds<\/td>\n<td style=\"width: 19.0937%;\">NIC<\/td>\n<td style=\"width: 58.0875%;\">1Gb \uc774\uc0c1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>* OSD\uc5d0 RAID\uad6c\uc131\uc2dc \uc131\ub2a5\uc800\ud558\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c BMT\ub97c \ud1b5\ud574 \uc131\ub2a5 \ube44\uad50 \uad8c\uace0<\/li>\n<\/ol>\n<h3 id=\"bkmrk-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%9D%B4%ED%95%B4\" class=\"wikigeneratedid\"><span class=\"ez-toc-section\" id=\"%EC%8B%9C%EC%8A%A4%ED%85%9C_%EC%9D%B4%ED%95%B4\"><\/span>\uc2dc\uc2a4\ud15c \uc774\ud574<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol id=\"bkmrk-osd-backend-bluestor\">\n<li>OSD Backend\n<ol>\n<li>Bluestore\n<ul>\n<li>Ceph 12.2\uc774\ud6c4 \ubd80\ud130 default storage<\/li>\n<li>\uc800\uc7a5\uc7a5\uce58\ub97c \uc9c1\uc811 \uc5d1\uc138\uc2a4 \ud574\uc11c \ub370\uc774\ud130\ub97c \uad00\ub9ac &#8211; XFS\uac19\uc740 \ud30c\uc77c\uc2dc\uc2a4\ud15c\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c<\/li>\n<li>RocksDB\ub97c \ud1b5\ud55c \uba54\ud0c0\ub370\uc774\ud130 \uad00\ub9ac<\/li>\n<li>\uc804\uccb4 \ub370\uc774\ud130 \ubc0f \uba54\ud0c0\ub370\uc774\ud130 checksum \uc218\ud589 &#8211; \ubb34\uacb0\uc131 \uc720\uc9c0<\/li>\n<li>inline\uc555\ucd95 &#8211; \ub514\uc2a4\ud06c\uc5d0 \uc800\uc7a5\ud558\uae30 \uc804\uc5d0 \uc120\ud0dd\uc801\uc73c\ub85c \uc555\ucd95\uc218\ud589<\/li>\n<li>\ub370\uc774\ud130 \uad00\ub9ac \uacc4\uce35\ud654 &#8211; journal\uc744 \ubcc4\ub3c4 \uc7a5\uce58\uc5d0 \uae30\ub85d\ud560 \uc218 \uc788\uc5b4 \uc131\ub2a5\ud5a5\uc0c1 \uac00\ub2a5.<\/li>\n<li>CoW\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uae30\uc874\ubcf4\ub2e4 \ud5a5\uc0c1\ub41c IO<\/li>\n<\/ul>\n<\/li>\n<li>Filestore\n<ul>\n<li>Ceph\uc5d0 \uac1c\uccb4\ub97c \uc800\uc7a5\ud558\ub294 \ubc29\uc2dd.<\/li>\n<li>\uc77c\ubd80 \uba54\ud0c0\ub370\uc774\ud130\uc5d0 \ub300\ud574 LevelDB\ub97c \uc0ac\uc6a9\ud574 key\/value\ub85c \uc800\uc7a5<\/li>\n<li>\ud30c\uc77c\uc2dc\uc2a4\ud15c\uc744 btrfs \/ ext4\uc5d0\uc11c \uc0ac\uc6a9\uc2dc \uc54c\ub824\uc9c4 \uacb0\ud568\uc774 \uc788\uc5b4 \ub370\uc774\ud130\uac00 \uc190\uc2e4\ub420 \uc218 \uc788\uc74c (XFS\ub294 \uc601\ud5a5\uc5c6\uc74c)<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<li>Pool\n<ol>\n<li>\uac1c\uccb4\ub97c \uc800\uc7a5\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ud558\ub294 \ub17c\ub9ac \ud30c\ud2f0\uc158\n<ul>\n<li>Recovery : \ub370\uc774\ud130 \uc190\uc2e4\uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc124\uc815\ud558\ub294 OSD<\/li>\n<li>PG : Pool\uc5d0 \ub300\ud55c \ubc30\uce58 \uadf8\ub8f9 \uc218 (\uc77c\ubc18\uc801\uc73c\ub85c OSD\ub2f9 100\uac1c\uc758\uc758 PG\uc744 \uc0ac\uc6a9)<\/li>\n<li>Cursh Rule : \ub370\uc774\ud130\ub97c Pool\uc5d0 \uc800\uc7a5\ud560\ub54c Crush Rule\uc5d0 \uc758\ud574 \uacb0\uc815<\/li>\n<li>Snapshot : \ud2b9\uc815 Pool\uc758 \uc2a4\ub0c5\uc0f7 \uc0dd\uc131<\/li>\n<\/ul>\n<\/li>\n<li>Pool\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uacfc \uc5f0\uacb0\ub418\uc5b4 \uc788\uc5b4\uc57c \ud558\uba70, RBD\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uacbd\uc6b0 RBD\ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud574\uc11c \ucd08\uae30\ud654\uac00 \ud544\uc694 (cephfs \/ rbd \/ rgw \uc911 \ud0dd1)<\/li>\n<\/ol>\n<\/li>\n<li>CephFS\n<ol>\n<li>\ubd84\uc0b0 \uac1c\uccb4 \uc800\uc7a5\uc18c\uc778 RADOS\ub97c \uae30\ubc18\uc73c\ub85c \uad6c\ucd95\ub41c \ud30c\uc77c\uc2dc\uc2a4\ud15c<\/li>\n<li>\uacf5\uc720 \ub514\ub809\ud1a0\ub9ac \ubc0f \u00a0HA\ub97c \uc81c\uacf5<\/li>\n<li>CephFS\ub294 \ub370\uc774\ud130\uc6a9\uc640 \uba54\ub2e4\ub370\uc774\ud130\uc6a9\uc73c\ub85c \uac01\uac01 2\uac1c\uc774\uc0c1\uc758 RAODS Pool\uc774 \ud544\uc694\n<ul>\n<li>\uba54\ud0c0\ub370\uc774\ud130 \u00a0pool\uc5d0\uc11c \ub370\uc774\ud130\uac00 \uc190\uc2e4\ub418\uba74 \uc804\uccb4\ud30c\uc77c \uc2dc\uc2a4\ud15c \uc561\uc138\uc2a4\uac00 \ubd88\uac00\ub2a5<\/li>\n<li>\uba54\ud0c0 \ub370\uc774\ud130 pool\uc5d0 SSD \uc0ac\uc6a9<\/li>\n<li>\ub370\uc774\ud130 \ud480\uc740 \ud30c\uc77c\uc2dc\uc2a4\ud15c\uc744 \uc0dd\uc131\ud558\uace0, \uae30\ubcf8\uc801\uc73c\ub85c \ubaa8\ub4e0 inode \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 \uc704\uce58<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<li>NFSExport\n<ol>\n<li>NFS-Ganesha NFS\ub97c \uc774\uc6a9\ud574 CephFS \ub124\uc784\uc2a4\ud398\uc774\uc2a4 export \uac00\ub2a5<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3 id=\"bkmrk-ceph-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-%28ansible-%EA%B8%B0\" class=\"wikigeneratedid\"><span class=\"ez-toc-section\" id=\"Ceph_%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0_ansible_%EA%B8%B0%EB%B0%98%EC%9D%98_ceph%EB%B0%B0%ED%8F%AC\"><\/span>Ceph \uc124\uce58\ud558\uae30 (ansible \uae30\ubc18\uc758 \u00a0ceph\ubc30\ud3ec)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol id=\"bkmrk-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95%EC%97%90%EB%8A%94-cephadm-%2F-ro\">\n<li>\uc124\uce58 \ubc29\ubc95\uc5d0\ub294 cephadm \/ Rook \/ ansible\uc744 \uc774\uc6a9\ud55c \uc124\uce58\ubc29\ubc95\uc774 \uc874\uc7ac,\n<ol>\n<li>cephadm &#8211; \uc790\uccb4\uc801\uc73c\ub85c \uc124\uce58\ud558\ub294 binary \u00a0container \ud639\uc740 python3\uc774 \ud544\uc694<\/li>\n<li>Rook &#8211; kuernetes\uc5d0\uc11c ceph\ub97c \uc124\uce58\ud558\uac70\ub098 \uae30\uc874 ceph\ub97c k8s\ub85c join\ud560\ub54c Rook\uc744 \uc774\uc6a9<\/li>\n<li>ceph-deploy\uc740 \ucd5c\uc2e0\ubc84\uc804\uc5d0\uc11c \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc74c<\/li>\n<\/ol>\n<\/li>\n<li>ceph-ansible\uc744 \uc124\uce58\ud558\uae30 \uc704\ud55c python \ud328\ud0a4\uc9c0 \uc124\uce58\n<pre><code class=\"language-shell\">$ yum install -y python3 python3-pip sshpass\r\n$ pip3 install --upgrade setuptools pip --ignore-installed<\/code><\/pre>\n<\/li>\n<li>ceph-ansible \ub0b4\ub824\ubc1b\uae30\n<pre><code class=\"language-shell\">$ git clone https:\/\/github.com\/ceph\/ceph-ansible.git -b \"v6.0.13\"\r\n$ cd ceph-ansible<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<ul>\n<li>ceph-ansible \ubc84\uc804\ubcc4 \ub300\uc751 \ubc84\uc804\n<div>\n<table>\n<tbody>\n<tr>\n<th scope=\"col\"><strong>ceph-ansible<\/strong><\/th>\n<th scope=\"col\"><strong>ceph<\/strong><\/th>\n<th scope=\"col\"><strong>ansible<\/strong><\/th>\n<\/tr>\n<tr>\n<td>3.0<\/td>\n<td>jewel \/ luminous<\/td>\n<td>2.4<\/td>\n<\/tr>\n<tr>\n<td>3.1<\/td>\n<td>luminous \/ mimic<\/td>\n<td>2.4<\/td>\n<\/tr>\n<tr>\n<td>3.2<\/td>\n<td>luminous \/ mimic<\/td>\n<td>2.6<\/td>\n<\/tr>\n<tr>\n<td>4.0<\/td>\n<td>nautilus<\/td>\n<td>2.9<\/td>\n<\/tr>\n<tr>\n<td>5.0<\/td>\n<td>octopus<\/td>\n<td>2.9<\/td>\n<\/tr>\n<tr>\n<td>6.0<\/td>\n<td>pacific<\/td>\n<td>2.9<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<li>dependency \ud328\ud0a4\uc9c0 \uc124\uce58\n<pre><code class=\"language-shell\">$ pip3 install -r requirements.txt<\/code><\/pre>\n<\/li>\n<li>\ubc30\ud3ec\ub97c \uc704\ud55c \ud638\uc2a4\ud2b8\ud30c\uc77c \uc791\uc131\n<pre><code class=\"language-shell\">$ vi hosts\r\n\r\n[mons]\r\n192.168.100.41\r\n\r\n[osds]\r\n192.168.100.41\r\n192.168.100.42\r\n\r\n[mdss]\r\n\r\n[rgws]\r\n\r\n[nfss]\r\n192.168.100.41\r\n\r\n[rbdmirrors]\r\n\r\n[clients]\r\n192.168.100.41\r\n\r\n[mgrs]\r\n192.168.100.41\r\n\r\n[iscsigws]\r\n\r\n[iscsi-gws]\r\n\r\n[grafana-server]\r\n\r\n[rgwloadbalancers]\r\n\r\n[monitoring]\r\n192.168.100.41\r\n\r\n[all:vars]\r\nansible_become=true\r\nansible_user=root\r\nansible_ssh_pass=root<\/code><\/pre>\n<\/li>\n<li>\ud658\uacbd\ubcc0\uc218 \ubcf5\uc0ac (systemd \uae30\ubc18\uc73c\ub85c \uad6c\ub3d9\uc2dc)\n<pre><code class=\"language-shell\">$ cp site.yml.sample site.yml\r\n$ cp group_vars\/all.yml.sample \u00a0group_vars\/all.yml\r\n$ cp group_vars\/osds.yml.sample \u00a0group_vars\/osds.yml<\/code><\/pre>\n<\/li>\n<li>\ud658\uacbd\ubcc0\uc218 \ubcf5\uc0ac (container \uae30\ubc18\uc73c\ub85c \uad6c\ub3d9\uc2dc)\n<pre><code class=\"language-shell\">$ cp site-container.yml.sample \u00a0site.yml\r\n$ cp group_vars\/all.yml.sample \u00a0group_vars\/all.yml\r\n$ cp group_vars\/osds.yml.sample \u00a0group_vars\/osds.yml<\/code><\/pre>\n<\/li>\n<li>config \uc124\uc815 (systemd \uae30\ubc18\uc73c\ub85c \uad6c\ub3d9\uc2dc)\n<pre><code class=\"language-shell\">$ vi group_vars\/all.yml\r\n...\r\nosd_objectstore: bluestore\r\nmonitor_interface: ens3f0\r\npublic_network: 192.168.100.0\/24\r\nntp_service_enabled: true\r\nntp_daemon_type: chronyd\r\n...\r\n#############\r\n# DASHBOARD #\r\n#############\r\ndashboard_enabled: false\r\ndashboard_protocol: http\r\ndashboard_port: 8081\r\ndashboard_admin_user: admin\r\ndashboard_admin_password: adminpassword\r\ncontainerized_deployment: false\r\n...\r\nconfigure_firewall: false\r\n...\r\nceph_origin: repository\r\n...\r\nceph_repository: community\r\n...\r\nceph_stable_release: octopus<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ vi group_vars\/osds.yml\r\n...\r\ndevices:\r\n\u00a0\u00a0- \/dev\/sdb\r\n...\r\n<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ vi roles\/ceph-validate\/tasks\/main.yml\r\n...\r\n\u00a0\u00a0\u00a0#\ud574\ub2f9 name \uc804\uccb4 \uc0ad\uc81c\r\n\u00a0\u00a0\u00a0- name: validate ceph_repository_community \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fail:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0msg: \"ceph_stable_release must be 'pacific'\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0when:\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0- ceph_origin == 'repository'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0- ceph_repository == 'community'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0- ceph_stable_release not in ['pacific']\r\n...<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\">\nCentos7\uc5d0\uc11c systemd \uae30\ubc18\uc73c\ub85c \uad6c\ub3d9\uc2dc dashboard\uac00 \ud638\ud658\ub418\uc9c0 \uc54a\uc544 false\ub85c \ucc98\ub9ac\ud574\uc57c \ud568<br \/>\nceph \ub9b4\ub9ac\uc988 \ubc84\uc804 \uc911 pacific \ubc84\uc804\uc740 Centos7\uc5d0\uc11c nfs export\uac00 \ub418\uc9c0 \uc54a\uc544 octopus\ub85c \ub2e4\uc6b4\uadf8\ub808\uc774\ub4dc\uac00 \ud544\uc694<br \/>\nconfig \uc124\uc815 (ceph\ub97c container\ub85c \uad6c\ub3d9\uc2dc)<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ vi group_vars\/all.yml\r\n...\r\nosd_objectstore: bluestore\r\nmonitor_interface: ens3f0\r\npublic_network: 192.168.100.0\/24\r\nntp_service_enabled: true\r\nntp_daemon_type: chronyd\r\n...\r\n#############\r\n# DASHBOARD #\r\n#############\r\ndashboard_enabled: false\r\ncontainerized_deployment: true\r\n...<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\">\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ vi group_vars\/osds.yml\r\n...\r\ndevices:\r\n\u00a0\u00a0- \/dev\/sdb\r\n...<\/code><\/pre>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<\/li>\n<li>\ubc30\ud3ec\n<pre><code class=\"language-shell\">$ ansible-playbook \u00a0-i hosts \u00a0site.yml -b -v<\/code><\/pre>\n<\/li>\n<li>cluster health check\uc2dc warn \ubc1c\uc0dd\uc2dc\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\">#Cluster \uad6c\uc131\uc0c1\ud0dc \ubaa8\ub450 \uc815\uc0c1\uc778\ub370, health check warn\uc73c\ub85c \ud45c\uc2dc\ub420 \uacbd\uc6b0 \uc870\uce58\ubc29\ubc95 (ceph\uc790\uccb4 \ubc84\uadf8\ub85c \uc758\uc2ec)<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ ceph config set mon auth_allow_insecure_global_id_reclaim false<\/code><\/pre>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<h3 id=\"bkmrk-%EC%9A%B4%EC%98%81%EB%B0%A9%EB%B2%95\" class=\"wikigeneratedid\"><span class=\"ez-toc-section\" id=\"%EC%9A%B4%EC%98%81%EB%B0%A9%EB%B2%95\"><\/span>\uc6b4\uc601\ubc29\ubc95<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol id=\"bkmrk-ceph-cluster%EC%83%81%ED%83%9C-%ED%99%95%EC%9D%B8-%24-\">\n<li>ceph cluster\uc0c1\ud0dc \ud655\uc778\n<pre><code class=\"language-shell\">$ \u00a0ceph status\r\n\u00a0\u00a0cluster:\r\n\u00a0\u00a0\u00a0\u00a0id: \u00a0\u00a0\u00a0\u00a0ca96d48d-1c9d-4168-9f21-ffda54a5cd9c\r\n\u00a0\u00a0\u00a0\u00a0health: HEALTH_OK\r\n\r\n\u00a0\u00a0services:\r\n\u00a0\u00a0\u00a0\u00a0mon: 2 daemons, quorum openstack-dev1,openstack-dev2 (age 87m)\r\n\u00a0\u00a0\u00a0\u00a0mgr: openstack-dev1(active, since 78m), standbys: openstack-dev2\r\n\u00a0\u00a0\u00a0\u00a0osd: 3 osds: 3 up (since 83m), 3 in (since 2h)\r\n\r\n\u00a0\u00a0data:\r\n\u00a0\u00a0\u00a0\u00a0pools: \u00a0\u00a05 pools, 105 pgs\r\n\u00a0\u00a0\u00a0\u00a0objects: 49 objects, 5.3 KiB\r\n\u00a0\u00a0\u00a0\u00a0usage: \u00a0\u00a041 MiB used, 300 GiB \/ 300 GiB avail\r\n\u00a0\u00a0\u00a0\u00a0pgs: \u00a0\u00a0\u00a0\u00a0105 active+clean<\/code><\/pre>\n<\/li>\n<li>ceph osd \uc0c1\ud0dc \ud655\uc778\n<pre><code class=\"language-shell\">$ ceph osd tree\r\nID \u00a0CLASS \u00a0WEIGHT \u00a0\u00a0TYPE NAME \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0STATUS \u00a0REWEIGHT \u00a0PRI-AFF\r\n-1 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00.29306 \u00a0root default\r\n-5 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00.09769 \u00a0\u00a0\u00a0\u00a0\u00a0host dev1\r\n2 \u00a0\u00a0\u00a0hdd \u00a00.09769 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0osd.2 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0up \u00a0\u00a01.00000 \u00a01.00000\r\n-3 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00.09769 \u00a0\u00a0\u00a0\u00a0\u00a0host dev2\r\n0 \u00a0\u00a0\u00a0hdd \u00a00.09769 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0osd.0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0up \u00a0\u00a01.00000 \u00a01.00000\r\n-7 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00.09769 \u00a0\u00a0\u00a0\u00a0\u00a0host dev3\r\n1 \u00a0\u00a0\u00a0hdd \u00a00.09769 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0osd.1 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0up \u00a0\u00a01.00000 \u00a01.00000<\/code><\/pre>\n<\/li>\n<li>ceph\ud604\uc7ac latency \ud655\uc778\ubc29\ubc95\n<pre><code class=\"language-shell\">$ ceph osd perf\r\nosd \u00a0commit_latency(ms) \u00a0apply_latency(ms)\r\n\u00a02 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\r\n\u00a00 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00\r\n\u00a01 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a00<\/code><\/pre>\n<div>\n<div class=\"box\">\n<div class=\"code\">\n<p># commit\uc740 \uc2dc\uc2a4\ud15c call\uc774 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc77c\ubc18\uc801\uc73c\ub85c 100 ~ 600ms\uae4c\uc9c0\ub294 \uc218\uc6a9\uac00\ub2a5\ud55c \uc218\uc900\uc73c\ub85c \ud310\ub2e8<br \/>\n# \uba54\ubaa8\ub9ac\ub0b4 \uc801\uc6a9\ub41c \ud30c\uc77c\uc744 \ud30c\uc77c\uc2dc\uc2a4\ud15c\uc5d0 \uc801\uc6a9\ud558\ub294 \uc2dc\uac04 (ms\ub2e8\uc704, \uc2e4\uc81c \uc131\ub2a5\uc5d0 \ud310\ub2e8\ub418\ub294 \uc2dc\uac04)<\/p><\/div>\n<\/div>\n<\/div>\n<\/li>\n<li>nfs \uc624\ub958\uc2dc \ub85c\uadf8 \ud655\uc778\n<pre><code class=\"language-shell\">$ cephadm logs --fsid &lt;fsid&gt; --name nfs.{{ clusteid }}.hostname<\/code><\/pre>\n<\/li>\n<li>\ud30c\uc77c\uc2dc\uc2a4\ud15c1. CephFS &#8211; Pool \uad00\ub9ac\n<pre><code class=\"language-shell\">$ ceph osd lspools<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<ol>\n<li>Pool \uc0dd\uc131\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\">#Pool \uc0dd\uc131<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ ceph osd pool create {{ DATA_POOL_NAME }}\r\n$ ceph osd pool create {{ METADATA_POOL_NAME }}<\/code><\/pre>\n<div>\n<div class=\"box\">\n<div class=\"code\">\n<p>#CephFS\ub294 \ub370\uc774\ud130\uc6a9\uacfc \uba54\ud0c0\ub370\uc774\ud130\uc6a9 \uac01\uac01 2\uac1c\uc774\uc0c1\uc758 RADOS\ud480 \ud544\uc694<\/p><\/div>\n<\/div>\n<\/div>\n<\/li>\n<li>\uc0dd\uc131\ub41c Pool\uc744 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc5f0\uacb0 (cephfs\ub85c \uc5f0\uacb0)\n<pre><code class=\"language-shell\">$ ceph osd pool application enable {{ DATA_POOL_NAME }} cephfs<\/code><\/pre>\n<\/li>\n<li>\ud30c\uc77c\uc2dc\uc2a4\ud15c \uc0dd\uc131\n<pre><code class=\"language-shell\">$ ceph fs new {{ FS_NAME }} {{ METADATA_POOL_NAME \u00a0}} {{DATANAME }}<\/code><\/pre>\n<\/li>\n<li>NFS export\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\"># 1. nfs module\uc124\uc815<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ ceph mgr module enable nfs\r\n<\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\">\n<p># 2. nfs ganesha \ud074\ub7ec\uc2a4\ud130 \uc0dd\uc131<\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\"> $ ceph nfs cluster create {{ clusterid }}\r\n <\/code><\/pre>\n<div>\n<div>\n<div class=\"box\">\n<div class=\"code\">\n# 3. nfs export<\/div>\n<\/div>\n<\/div>\n<\/div>\n<pre><code class=\"language-shell\">$ ceph nfs export create cephfs {{ NAME }} {{ clusterid }<\/code><\/pre>\n<div>\n<div class=\"box\">\n<div class=\"code\"><\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<\/div>\n<\/li>\n<\/ol>\n<p id=\"bkmrk-reference\"><em>reference<\/em><\/p>\n<ul id=\"bkmrk-https%3A%2F%2Fdocs.ceph.co\">\n<li><span class=\"wikiexternallink\"><a class=\"wikimodel-freestanding\" href=\"https:\/\/docs.ceph.com\/en\/latest\/architecture\/\"><span class=\"wikigeneratedlinkcontent\">https:\/\/docs.ceph.com\/en\/latest\/architecture\/<\/span><\/a><\/span><\/li>\n<li><em><span class=\"wikiexternallink\"><a href=\"https:\/\/www.slideshare.net\/jenshadlich\/ceph-object-storage-at-spreadshirt-july-2015-ceph-berlin-meetup\">https:\/\/www.slideshare.net\/jenshadlich\/ceph-object-storage-at-spreadshirt-july-2015-ceph-berlin-meetup<\/a><\/span><\/em><\/li>\n<\/ul>\n<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\">\n<colgroup>\n<col style=\"width: 99.881%;\" \/><\/colgroup>\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-863\" src=\"http:\/\/www.igoni.kr\/wp-content\/uploads\/2026\/02\/8e001c04-d623-4219-89ba-f0bec49d01dc.png\" alt=\"\" width=\"1024\" height=\"1024\" srcset=\"http:\/\/www.igoni.kr\/wp-content\/uploads\/2026\/02\/8e001c04-d623-4219-89ba-f0bec49d01dc.png 1024w, http:\/\/www.igoni.kr\/wp-content\/uploads\/2026\/02\/8e001c04-d623-4219-89ba-f0bec49d01dc-300x300.png 300w, http:\/\/www.igoni.kr\/wp-content\/uploads\/2026\/02\/8e001c04-d623-4219-89ba-f0bec49d01dc-150x150.png 150w, http:\/\/www.igoni.kr\/wp-content\/uploads\/2026\/02\/8e001c04-d623-4219-89ba-f0bec49d01dc-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/td>\n<\/tr>\n<tr>\n<td class=\"align-right\">perplexity\uc5d0\uc11c \uc0dd\uc131\ud55c AI\uc774\ubbf8\uc9c0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>ceph \uc18c\uac1c \ubd84\uc0b0 \uac1d\uccb4 \uc2a4\ud1a0\ub9ac\uc9c0\ub97c \uad6c\uc131\ud558\ub294 OSS \uc11c\ubc84 \uad6c\uc131\uc740 OSD, Monitor, Manager, MDS \uc11c\ubc84\uac00 \ud544\uc694 \ub17c\ub9ac\uc801\uc73c\ub85c&hellip;<\/p>\n","protected":false},"author":1,"featured_media":863,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[233,245],"tags":[],"class_list":["post-861","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2-open-infra","category-245"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/posts\/861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=861"}],"version-history":[{"count":1,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/posts\/861\/revisions"}],"predecessor-version":[{"id":865,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/posts\/861\/revisions\/865"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=\/wp\/v2\/media\/863"}],"wp:attachment":[{"href":"http:\/\/www.igoni.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=861"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.igoni.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}