<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在 CentOS7/CentOS8 上使用 cephadm 安裝分布式存儲系統 Ceph【轉 https://www.koenli.com/ef5921b8.html】

      Cephadm 介紹


      官方文檔:https://docs.ceph.com/en/latest/cephadm/

      cephadm 用于部署和管理 Ceph 集群,它通過 SSH 將 manager 守護進程連接到主機來實現這一點。manager 守護進程支持添加、刪除和更新 Ceph 容器。cephadm 不依賴外部配置工具,例如 AnsibleRook 和 Salt

      cephadm 管理 Ceph 集群的整個生命周期。此生命周期從引導過程開始,cephadm 在單個節點上創建一個小型 Ceph 集群。此集群由一個監視器(MON)和一個管理器(MGR)組成。然后,cephadm 使用編排接口擴展集群,添加所有主機并提供所有 Ceph 守護進程和服務。此生命周期的管理可以通過 Ceph 命令行接口或儀表盤(Dashboard)執行。

      說明:cephadm 是 Ceph v15.2.0(Octopus)中的新功能,不支持舊版本的 Ceph。并且由于某些功能還在開發完善中,部署方式也會隨著版本更新會有比較大的變化,建議多參考對應版本的官方文檔

      警告: Ceph Pacific 版本開始默認不提供 EL7 上的 RPM 源,只提供 EL8 上的

      cephadm 正在積極開發中,兼容性與穩定性請關注官方說明

      環境信息


      主機名配置操作系統IP 地址角色磁盤 (除系統盤)
      ceph-mon01 2 核 4G CentOS7.5/CentOS8.3 10.211.55.7 cephadm
      prometheus
      grafana
      MON
      OSD
      MGR
      MDS
      NFS ganesha
      RGW
      iSCSI
      rbd-mirror
      100G * 3
      ceph-mon02 2 核 4G CentOS7.5/CentOS8.3 10.211.55.8 MON
      OSD
      MGR
      MDS
      NFS ganesha
      RGW
      iSCSI
      rbd-mirror
      100G * 3
      ceph-mon03 2 核 4G CentOS7.5/CentOS8.3 10.211.55.9 MON
      OSD
      MGR
      MDS
      NFS ganesha
      RGW
      iSCSI
      rbd-mirror
      100G * 3

      環境要求


      • Python3
      • 容器運行時,例如 Docker、Podman
      • 所有節點之間保持時間同步,使用 chrony 或 NTP 服務
      • 用于調配存儲設備的 LVM2

      初始化配置


      說明:除非特別說明,否則本節操作在所有節點進行。

      配置主機名

      1
      hostnamectl set-hostname <hostname>
       

      關閉 SELINUX

      1
      2
      3
      sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
      setenforce 0
      reboot
       

      關閉防火墻

      1
      2
      systemctl stop firewalld
      systemctl disable firewalld
       

      節點之間時間同步

      server 端

      任選一臺機器作為 server 端;如果環境可以訪問互聯網,可以不需要自己搭建 server 端,參考后面的 client 端部分設置所有節點與公網 ntp 時間服務器 (例如 time1.cloud.tencent.com) 同步時間即可

      CentOS7.x

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      # 設置時區為Asia/Shanghai
      timedatectl set-timezone Asia/Shanghai

      # 安裝chrony并備份配置文件
      yum install chrony ntpdate -y
      cp -a /etc/chrony.conf /etc/chrony.conf.bak

      # 修改server端配置文件如下,標注的地方需要修改
      cat > /etc/chrony.conf << EOF
      stratumweight 0
      driftfile /var/lib/chrony/drift
      rtcsync
      makestep 10 3
      allow 10.211.55.0/24 # 設置為實際環境客戶端所屬IP網段
      smoothtime 400 0.01

      bindcmdaddress 127.0.0.1
      bindcmdaddress ::1

      local stratum 8
      manual
      keyfile /etc/chrony.keys
      #initstepslew 10 client1 client3 client6
      noclientlog
      logchange 0.5
      logdir /var/log/chrony
      EOF

      # 啟動服務,設置開機自啟
      systemctl restart chronyd.service
      systemctl enable chronyd.service
      systemctl status chronyd.service
       

      CentOS8.x

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      # 設置時區為Asia/Shanghai
      timedatectl set-timezone Asia/Shanghai

      # 安裝chrony并備份配置文件
      dnf install chrony -y
      cp -a /etc/chrony.conf /etc/chrony.conf.bak

      # 修改server端配置文件如下,標注的地方需要修改
      cat > /etc/chrony.conf << EOF
      stratumweight 0
      driftfile /var/lib/chrony/drift
      rtcsync
      makestep 10 3
      allow 10.211.55.0/24 # 設置為實際環境客戶端所屬IP網段
      smoothtime 400 0.01

      bindcmdaddress 127.0.0.1
      bindcmdaddress ::1

      local stratum 8
      manual
      keyfile /etc/chrony.keys
      #initstepslew 10 client1 client3 client6
      noclientlog
      logchange 0.5
      logdir /var/log/chrony
      EOF

      # 啟動服務,設置開機自啟
      systemctl restart chronyd.service
      systemctl enable chronyd.service
      systemctl status chronyd.service
       

      client 端

      CentOS7.x

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      # 設置時區為Asia/Shanghai
      timedatectl set-timezone Asia/Shanghai

      # 安裝chrony并備份配置文件
      yum install chrony ntpdate -y
      cp -a /etc/chrony.conf /etc/chrony.conf.bak

      # 修改client端配置文件
      sed -i "s%^server%#server%g" /etc/chrony.conf
      echo "server 10.211.55.7 iburst" >> /etc/chrony.conf # 添加一行,其中的IP地址替換為實際環境server端的IP地址

      ntpdate 10.211.55.7 # 手動同步一次時間,其中的IP地址替換為實際環境server端的IP地址

      # 啟動服務,設置開機自啟
      systemctl restart chronyd.service
      systemctl enable chronyd.service
      systemctl status chronyd.service

      chronyc sources # 查看ntp_servers狀態
      chronyc tracking # 查看ntp詳細信息
       

      CentOS8.x

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      # 設置時區為Asia/Shanghai
      timedatectl set-timezone Asia/Shanghai

      # 安裝chrony并備份配置文件
      dnf install chrony -y
      cp -a /etc/chrony.conf /etc/chrony.conf.bak

      # 修改client端配置文件
      sed -i "s%^pool%#pool%g" /etc/chrony.conf
      echo "pool 10.211.55.7 iburst" >> /etc/chrony.conf # 添加一行,其中的IP地址替換為實際環境server端的IP地址

      # 啟動服務,設置開機自啟
      systemctl restart chronyd.service
      systemctl enable chronyd.service
      systemctl status chronyd.service

      chronyc sources # 查看ntp_servers狀態
      chronyc tracking # 查看ntp詳細信息
       

      配置 Host 解析

      1
      2
      3
      4
      5
      cat >> /etc/hosts << EOF
      10.211.55.7 ceph-mon01
      10.211.55.8 ceph-mon02
      10.211.55.9 ceph-mon03
      EOF
       

      安裝 LVM2

      1
      yum install lvm2 -y
       

      安裝 Python3

      1
      yum install python3 -y
       

      安裝 Docker

      配置 docker-ce repository

      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 安裝所需要的包,yum-utils提供了yum-config-manager工具,device-mapper-persistent-data和lvm2是設備映射存儲驅動所需要的
      yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2

      # 設置穩定版的repo倉庫
      yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
       

      說明:若無法訪問國外網站,可配置國內阿里云的 docker 源

      1
      2
      yum install wget -y
      wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
       

      配置好 Docker 倉庫后,運行如下命令安裝最新版 Docker

      1
      2
      # 安裝最新版本的docker-ce
      yum install docker-ce docker-ce-cli containerd.io -y
       

      說明:若要安裝指定版本的 docker,按照如下步驟

      1
      2
      3
      4
      5
      # 列出repo倉庫中可用的docker版本并降序排列
      yum list docker-ce --showduplicates | sort -r

      # 確認好要安裝的版本,例如為18.09.9,則替換yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io -y中的<VERSION_STRING>進行安裝
      例如:yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y
       

      啟動 Docker 并設置開機自啟

      1
      2
      3
      systemctl start docker
      systemctl enable docker
      systemctl status docker
       

      設置阿里云鏡像加速器(可選)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      mkdir -p /etc/docker
      cat > /etc/docker/daemon.json << EOF
      {
      "registry-mirrors": ["https://lerc8rqe.mirror.aliyuncs.com"]
      }
      EOF

      systemctl daemon-reload
      systemctl restart docker
      docker info
       

      安裝 Cephadm


      說明:本節操作在所有節點進行

      使用 curl 獲取 cephadm 腳本的最新版本。

      1
      2
      cd /root/
      curl --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm
       

      賦予 cephadm 腳本可執行權限

      1
      chmod +x cephadm
       

      盡管 cephadm 腳本足以啟動集群,但在主機上安裝 cephadm 命令還是比較方便的。運行以下命令安裝提供 cephadm 命令的軟件包

      1
      2
      3
      4
      5
      6
      7
      8
      9
      # ./cephadm add-repo --release <ceph_version,such as octopus>
      ./cephadm add-repo --release octopus

      # 修改鏡像源為國內阿里云地址
      sed -i 's/download.ceph.com/mirrors.aliyun.com\/ceph/' /etc/yum.repos.d/ceph.repo
      sed -i 's/release.gpg/release.asc/' /etc/yum.repos.d/ceph.repo

      # 安裝cephadm
      ./cephadm install
       

      確認 cephadm 是否已加入 PATH 環境變量

      1
      which cephadm
       

      返回如下內容表示添加成功

      1
      /usr/sbin/cephadm
       

      引導一個新集群


      說明:本節操作在引導節點執行

      說明:創建新 Ceph 集群的第一步是在 Ceph 集群的第一臺主機上運行 cephadm bootstrap 命令,在 Ceph 集群的第一臺主機上運行 cephadm bootstrap 命令會創建 Ceph 集群的第一個 “監視器(MON)守護進程”,并且該監視器守護進程需要一個 IP 地址,因此需要知道該主機的 IP 地址。如果有多個網絡和接口,請確保選擇一個可供任何訪問 Ceph 集群的主機訪問的網絡和接口。

      說明:關于 cephadm bootstrap 的更多自定義配置可查閱關于 CEPHADM 引導的更多信息

      運行 ceph bootstrap 命令

      1
      2
      # cephadm bootstrap --mon-ip *<mon-ip>*
      cephadm bootstrap --mon-ip 10.211.55.7
       

      該命令執行以下操作:

      • 在本地主機上為新集群創建監視器(MON)和管理器(MGR)守護進程
      • 為 Ceph 集群生成新的 SSH 密鑰,并將其添加到 root 用戶的 /root/.ssh/authorized_keys
      • 將公鑰的副本寫入 /etc/ceph/ceph.pub
      • 將最小配置文件寫入 /etc/ceph/ceph.conf,與新集群通信需要此文件
      • 將 client.admin 管理(特權)的密鑰副本寫入到 /etc/ceph/ceph.client.admin.keyring
      • 給引導主機添加_admin 標簽,默認情況下,具有此標簽的主機也將獲得 /etc/ceph/ceph.conf 和 /etc/ceph/ceph.client.admin.keyring 的副本

      出現如下信息表示引導成功

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      Creating directory /etc/ceph for ceph.conf
      Verifying podman|docker is present...
      Verifying lvm2 is present...
      Verifying time synchronization is in place...
      Unit chronyd.service is enabled and running
      Repeating the final host check...
      podman|docker (/usr/bin/docker) is present
      systemctl is present
      lvcreate is present
      Unit chronyd.service is enabled and running
      Host looks OK
      Cluster fsid: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      Verifying IP 10.211.55.7 port 3300 ...
      Verifying IP 10.211.55.7 port 6789 ...
      Mon IP 10.211.55.7 is in CIDR network 10.211.55.0/24
      Pulling container image docker.io/ceph/ceph:v15...
      Extracting ceph user uid/gid from container image...
      Creating initial keys...
      Creating initial monmap...
      Creating mon...
      Waiting for mon to start...
      Waiting for mon...
      mon is available
      Assimilating anything we can from ceph.conf...
      Generating new minimal ceph.conf...
      Restarting the monitor...
      Setting mon public_network...
      Creating mgr...
      Verifying port 9283 ...
      Wrote keyring to /etc/ceph/ceph.client.admin.keyring
      Wrote config to /etc/ceph/ceph.conf
      Waiting for mgr to start...
      Waiting for mgr...
      mgr not available, waiting (1/10)...
      mgr not available, waiting (2/10)...
      mgr not available, waiting (3/10)...
      mgr not available, waiting (4/10)...
      mgr is available
      Enabling cephadm module...
      Waiting for the mgr to restart...
      Waiting for Mgr epoch 5...
      Mgr epoch 5 is available
      Setting orchestrator backend to cephadm...
      Generating ssh key...
      Wrote public SSH key to to /etc/ceph/ceph.pub
      Adding key to root@localhost's authorized_keys...
      Adding host ceph-mon01...
      Deploying mon service with default placement...
      Deploying mgr service with default placement...
      Deploying crash service with default placement...
      Enabling mgr prometheus module...
      Deploying prometheus service with default placement...
      Deploying grafana service with default placement...
      Deploying node-exporter service with default placement...
      Deploying alertmanager service with default placement...
      Enabling the dashboard module...
      Waiting for the mgr to restart...
      Waiting for Mgr epoch 13...
      Mgr epoch 13 is available
      Generating a dashboard self-signed certificate...
      Creating initial admin user...
      Fetching dashboard port number...
      Ceph Dashboard is now available at:

      URL: https://ceph-mon01:8443/
      User: admin
      Password: t0rpyr1kvh

      You can access the Ceph CLI with:

      sudo /usr/sbin/cephadm shell --fsid 59428ec4-0f82-11ec-b6c6-001c423b10e7 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

      Please consider enabling telemetry to help improve Ceph:

      ceph telemetry on

      For more information see:

      https://docs.ceph.com/docs/master/mgr/telemetry/

      Bootstrap complete.
       

      根據引導完成的提示信息使用瀏覽器訪問 Dashboard (https://ceph-mon01:8443/),修改密碼后登錄到 Ceph Dashboard

      說明:引導提示默認通過主機名訪問,需在訪問的機器上配置 HOST 解析或者改為 IP 地址訪問

      還有一個實時顯示 Ceph 集群狀態的 Grafana 展示頁面(https://ceph-mon01:3000/

      查看當前配置文件

      1
      2
      3
      4
      5
      [root@ceph-mon01 ~]# ll /etc/ceph/
      total 12
      -rw------- 1 root root 63 Sep 7 10:24 ceph.client.admin.keyring
      -rw-r--r-- 1 root root 173 Sep 7 10:24 ceph.conf
      -rw-r--r-- 1 root root 595 Sep 7 10:24 ceph.pub
       

      查看當前拉取的鏡像及容器運行狀態

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      [root@ceph-mon01 ~]# docker image ls
      REPOSITORY TAG IMAGE ID CREATED SIZE
      ceph/ceph-grafana 6.7.4 557c83e11646 4 weeks ago 486MB
      ceph/ceph v15 2cf504fded39 3 months ago 1.03GB
      prom/prometheus v2.18.1 de242295e225 16 months ago 140MB
      prom/alertmanager v0.20.0 0881eb8f169f 21 months ago 52.1MB
      prom/node-exporter v0.18.1 e5a616e4b9cf 2 years ago 22.9MB

      [root@ceph-mon01 ~]# docker ps -a
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      710c6f279ae1 prom/alertmanager:v0.20.0 "/bin/alertmanager -…" 25 minutes ago Up 25 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-alertmanager.ceph-mon01
      d002498c898b ceph/ceph-grafana:6.7.4 "/bin/sh -c 'grafana…" 25 minutes ago Up 25 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-grafana.ceph-mon01
      a6656d34fc7e prom/prometheus:v2.18.1 "/bin/prometheus --c…" 25 minutes ago Up 25 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-prometheus.ceph-mon01
      a0707fb1c1ad prom/node-exporter:v0.18.1 "/bin/node_exporter …" 25 minutes ago Up 25 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-node-exporter.ceph-mon01
      952af5aec621 ceph/ceph:v15 "/usr/bin/ceph-crash…" 28 minutes ago Up 28 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-crash.ceph-mon01
      03b6e8181a1e ceph/ceph:v15 "/usr/bin/ceph-mgr -…" 29 minutes ago Up 29 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-mgr.ceph-mon01.tjkdnx
      dd688c5ca51a ceph/ceph:v15 "/usr/bin/ceph-mon -…" 29 minutes ago Up 29 minutes ceph-59428ec4-0f82-11ec-b6c6-001c423b10e7-mon.ceph-mon01
       

      通過以上信息可知此時在引導節點上已經運行了以下組件:

      • mgr:Ceph 管理器(MGR)程序
      • mon:Ceph 監視器
      • crash:崩潰數據采集模塊
      • prometheus:prometheus 監控組件
      • alertmanager:prometheus 告警組件
      • node-exporter:prometheus 節點監控數據采集組件
      • grafana:監控數據展示儀表盤 grafana

      啟用 Ceph 命令


      說明:本節操作在所有節點進行

      默認情況下 cephadm 不會在主機上安裝任何 Ceph 軟件包,需運行 cephadm shell 命令在安裝了所有 Ceph 軟件包的容器中啟動 Bash Shell (運行 exit 可退出 Shell),在此特定的 Shell 中運行 Ceph 相關命令

      說明:默認情況下,如果在主機上的 /etc/ceph 中找到 ceph.conf 配置文件和 ceph.client.admin.keyring 文件,則會將它們傳遞到容器環境中,以便 Shell 能夠完全正常工作。但若在 MON 主機上執行時,cephadm shell 將從 MON 容器查找配置,而不是使用默認配置。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      [root@ceph-mon01 ~]# cephadm shell
      Inferring fsid 59428ec4-0f82-11ec-b6c6-001c423b10e7
      Inferring config /var/lib/ceph/59428ec4-0f82-11ec-b6c6-001c423b10e7/mon.ceph-mon01/config
      Using recent ceph image ceph/ceph@sha256:056637972a107df4096f10951e4216b21fcd8ae0b9fb4552e628d35df3f61139
      [ceph: root@ceph-mon01 /]# ceph -s
      cluster:
      id: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      health: HEALTH_WARN
      OSD count 0 < osd_pool_default_size 3

      services:
      mon: 1 daemons, quorum ceph-mon01 (age 65m)
      mgr: ceph-mon01.tjkdnx(active, since 64m)
      osd: 0 osds: 0 up, 0 in

      data:
      pools: 0 pools, 0 pgs
      objects: 0 objects, 0 B
      usage: 0 B used, 0 B / 0 B avail
      pgs:
       

      為了方便訪問,我們可以在主機上安裝 ceph-common 軟件包,該軟件包包含所有 Ceph 命令,包括 cephrbdmount.ceph 等

      1
      cephadm install ceph-common
       

      驗證可通過本機的 Ceph 命令連接到集群

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      [root@ceph-mon01 ~]# ceph -v
      ceph version 15.2.14 (cd3bb7e87a2f62c1b862ff3fd8b1eec13391a5be) octopus (stable)
      [root@ceph-mon01 ~]# ceph -s
      cluster:
      id: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      health: HEALTH_WARN
      OSD count 0 < osd_pool_default_size 3

      services:
      mon: 1 daemons, quorum ceph-mon01 (age 72m)
      mgr: ceph-mon01.tjkdnx(active, since 72m)
      osd: 0 osds: 0 up, 0 in

      data:
      pools: 0 pools, 0 pgs
      objects: 0 objects, 0 B
      usage: 0 B used, 0 B / 0 B avail
      pgs:
       

      添加主機


      說明:本節操作在引導節點執行

      要列出當前與集群關聯的主機,可運行如下命令:

      1
      ceph orch host ls
       

      安裝集群公鑰

      通過 ssh-copy-id 命令配置集群的公共 SSH 公鑰至其它所有 Ceph 節點

      1
      2
      3
      # ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
      ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-mon02
      ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-mon03
       

      添加指定新節點

      通過 ceph orch host add 命令添加新節點到 Ceph 集群中

      1
      2
      3
      # ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]
      ceph orch host add ceph-mon02
      ceph orch host add ceph-mon03
       

      說明:可明確提供主機 IP 地址。如果未提供 IP,則將立即通過 DNS 解析主機名,并使用該 IP。還可以包括一個或多個標簽,以立即標記新主機。

      1
      2
      3
      # ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]
      ceph orch host add ceph-mon02 10.211.55.8 --labels _admin
      ceph orch host add ceph-mon03 10.211.55.9 --labels _admin
       

      驗證

      查看 Ceph 納管的所有節點

      1
      2
      3
      4
      5
      [root@ceph-mon01 ~]# ceph orch host ls
      HOST ADDR LABELS STATUS
      ceph-mon01 ceph-mon01
      ceph-mon02 ceph-mon02
      ceph-mon03 ceph-mon03
       

      說明:添加完成后 Ceph 會自動擴展 MON 和 MGR 到另外節點 (此過程時間可能會稍久,耐心等待),另外可用命令 (ceph -s) 或 Ceph 的 Dashboard 頁面查看添加情況

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      [root@ceph-mon01 ~]# ceph -s
      cluster:
      id: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      health: HEALTH_WARN
      OSD count 0 < osd_pool_default_size 3

      services:
      mon: 3 daemons, quorum ceph-mon01,ceph-mon02,ceph-mon03 (age 3m)
      mgr: ceph-mon01.tjkdnx(active, since 3h), standbys: ceph-mon02.xsbwfv
      osd: 0 osds: 0 up, 0 in

      data:
      pools: 0 pools, 0 pgs
      objects: 0 objects, 0 B
      usage: 0 B used, 0 B / 0 B avail
      pgs:
       

      部署其他 MON(可選)


      說明:本節操作在引導節點執行

      默認情況下,隨著集群的增長,Ceph 會自動部署 MON 守護程序,而隨著集群的縮小,Ceph 也會自動減少 MON 守護程序。此過程是自動的,就像在上節完成主機添加后,Ceph 立即自動擴展 MON 到另外的兩臺節點(最多自動添加到 5 個 MON)。如果要調整 5 個 MON 的默認值,可運行如下命令:

      1
      2
      # ceph orch apply mon *<number-of-monitors>*
      ceph orch apply mon 3
       

      說明:典型的 Ceph 群集有三個或五個分布在不同主機上的 MON 守護進程。如果集群中有五個或更多節點,建議部署五個 MON。

      如果要禁用 MON 的自動部署,可運行如下命令:

      1
      ceph orch apply mon --unmanaged
       

      關于更多 MON 部署配置(例如指定子網部署)可參考官方文檔 MON Service 章節

      部署 MGR(可選)


      說明:本節操作在引導節點執行

      添加節點后,Ceph 會自動擴展 MGR 節點,可通過 ceph orch ls mgr 命令查看當前 MGR 數量

      1
      2
      3
      [root@ceph-mon01 ~]# ceph orch ls mgr
      NAME RUNNING REFRESHED AGE PLACEMENT IMAGE NAME IMAGE ID
      mgr 2/2 13m ago 4h count:2 docker.io/ceph/ceph:v15 2cf504fded39
       

      可以看到,默認會啟動 2 個 MGR,若要查看具體運行 MGR 的節點可通過如下 ceph orch ps --daemon_type mgr 命令

      1
      2
      3
      4
      [root@ceph-mon01 ~]# ceph orch ps --daemon_type mgr
      NAME HOST STATUS REFRESHED AGE VERSION IMAGE NAME IMAGE ID CONTAINER ID
      mgr.ceph-mon01.tjkdnx ceph-mon01 running (5h) 2m ago 5h 15.2.13 docker.io/ceph/ceph:v15 2cf504fded39 03b6e8181a1e
      mgr.ceph-mon02.xsbwfv ceph-mon02 running (70m) 2m ago 70m 15.2.13 docker.io/ceph/ceph:v15 2cf504fded39 42a4c31b56ad
       

      可以看到,MGR 運行在 ceph-mon01 和 ceph-mon02 上,若想繼續擴展 MGR 節點,可運行如下命令:

      警告:指定的主機列表一定要包括原來的主機,有關指定守護進程位置的詳細信息請見官網 Placement Specification

      1
      2
      # ceph orch apply mgr *<host1,host2,host3,...>*
      ceph orch apply mgr ceph-mon01,ceph-mon02,ceph-mon03
       

      部署 OSD


      說明:本節操作在引導節點執行

      列出設備

      ceph-volume 會不時掃描集群中的每個主機,以確定存在哪些設備以及這些設備是否可用做 OSD。要查看 cephadm 發現的設備列表,可運行以下命令:

      1
      2
      # ceph orch device ls [--hostname=...] [--wide] [--refresh]
      ceph orch device ls
       

      輸出類似如下:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      [root@ceph-mon01 ~]# ceph orch device ls
      Hostname Path Type Serial Size Health Ident Fault Available
      ceph-mon01 /dev/sdb ssd 8Z4936Q8PZF4D1JASRYQ 107G Unknown N/A N/A Yes
      ceph-mon01 /dev/sdc ssd AM0DX7J0P1GMB0EQXPFX 107G Unknown N/A N/A Yes
      ceph-mon01 /dev/sdd ssd PGWTZ524HYN491KQVCQT 107G Unknown N/A N/A Yes
      ceph-mon02 /dev/sdb ssd AQZ2M4ZSSRX4DFE5RY5F 107G Unknown N/A N/A Yes
      ceph-mon02 /dev/sdc ssd BM5SC0FQRRG41E99GTHC 107G Unknown N/A N/A Yes
      ceph-mon02 /dev/sdd ssd AV9N08EQ9454QCTM96CE 107G Unknown N/A N/A Yes
      ceph-mon03 /dev/sdb ssd 3GM1QMR6F6P4DBQ549FS 107G Unknown N/A N/A Yes
      ceph-mon03 /dev/sdc ssd NHR9XHJBAD3M78YYAARC 107G Unknown N/A N/A Yes
      ceph-mon03 /dev/sdd ssd D859EG5FWB1MNCF2KFZV 107G Unknown N/A N/A Yes
       

      說明:使用 --wide 選項提供與設備相關的所有詳細信息,包括設備可能不適合用作 OSD 的任何原因

      如果滿足以下所有條件,則認為存儲設備可用:

      • 設備必須沒有分區
      • 設備不得具有任何 LVM 狀態
      • 設備必須沒有被掛載
      • 設備必須沒有包含任何文件系統
      • 設備不得包含 Ceph BlueStore OSD
      • 設備必須大于 5GB

      創建 OSD

      有幾種方式可以創建新的 OSD:

      方式一(不推薦)

      自動使用任何可用且未使用的存儲設備

      1
      ceph orch apply osd --all-available-devices
       

      運行上述命令后:

      • 如果向集群中添加新硬盤,將自動用于創建新的 OSD
      • 如果刪除 OSD 并清理 LVM 物理卷,將自動創建新的 OSD

      如果要禁用在可用設備上自動創建 OSD,可使用非托管參數

      1
      ceph orch apply osd --all-available-devices --unmanaged=true
       

      方式二(推薦)

      從指定的主機的指定設備創建 OSD

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # ceph orch daemon add osd *<host>*:*<device-path>*
      ceph orch daemon add osd ceph-mon01:/dev/sdb
      ceph orch daemon add osd ceph-mon01:/dev/sdc
      ceph orch daemon add osd ceph-mon01:/dev/sdd

      ceph orch daemon add osd ceph-mon02:/dev/sdb
      ceph orch daemon add osd ceph-mon02:/dev/sdc
      ceph orch daemon add osd ceph-mon02:/dev/sdd

      ceph orch daemon add osd ceph-mon03:/dev/sdb
      ceph orch daemon add osd ceph-mon03:/dev/sdc
      ceph orch daemon add osd ceph-mon03:/dev/sdd
       

      方式三(推薦)

      可以使用高級 OSD 服務規范根據設備的屬性對設備進行分類。這有助于更清楚地了解哪些設備可供消費。屬性包括設備類型(SSD 或 HDD)、設備型號名稱、大小以及設備所在的主機等

      1
      ceph orch apply -i spec.yml
       

      檢查 OSD 和集群狀態

      通過 ceph -s 確定 OSD 狀態是否均處于 up 并 in 狀態,集群狀態是否為 HEALTH_OK

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      [root@ceph-mon01 ~]# ceph -s
      cluster:
      id: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      health: HEALTH_OK

      services:
      mon: 3 daemons, quorum ceph-mon01,ceph-mon02,ceph-mon03 (age 5m)
      mgr: ceph-mon03.yrxrfd(active, since 5m), standbys: ceph-mon02.hjepna, ceph-mon01.tqxtfo
      osd: 9 osds: 9 up (since 2m), 9 in (since 2m)

      data:
      pools: 1 pools, 1 pgs
      objects: 0 objects, 0 B
      usage: 9.0 GiB used, 891 GiB / 900 GiB avail
      pgs: 1 active+clean
       

      也可通過 Dashboard 查看 OSD 和集群狀態

      使用 Ceph 集群提供塊存儲服務


      說明:本節操作在引導節點執行

      確認默認 pg_num 和副本數

      • pg_num:根據 Total PGs = (#OSDs * 100) / pool size 公式來決定 pg_num(pgp_num 應該設成和 pg_num 一樣),所以 9*100/3=300,官方建議取最接近的 2 的指數倍數,比如 256。這是針對集群中所有 pool 的,每個 pool 的默認 pg_num 建議設置更小,比如 32
      • 副本數:默認副本數建議為 3,最小副本數建議為 2

      配置默認 pg_num 和副本數

      動態更新配置

      1
      2
      3
      4
      ceph tell mon.\* injectargs '--osd_pool_default_size=3'
      ceph tell mon.\* injectargs '--osd_pool_default_min_size=2'
      ceph tell mon.\* injectargs '--osd_pool_default_pg_num=32'
      ceph tell mon.\* injectargs '--osd_pool_default_pgp_num=32'
       

      創建塊存儲池

      創建一個塊存儲池 koenli

      1
      2
      3
      4
      5
      6
      # ceph osd pool create <poolname> <pg_num> <pgp_num>
      ceph osd pool create koenli 32 32

      # ceph osd pool application enable <poolname> <appname>
      # <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications
      ceph osd pool application enable koenli rbd
       

      創建完 pool 后再次查看集群狀態,確認 pgs 均為 active+clean 狀態,并且集群狀態為 HEALTH_OK

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      [root@ceph-mon01 ~]# ceph -s
      cluster:
      id: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      health: HEALTH_OK

      services:
      mon: 3 daemons, quorum ceph-mon01,ceph-mon02,ceph-mon03 (age 61m)
      mgr: ceph-mon03.yrxrfd(active, since 61m), standbys: ceph-mon01.tqxtfo, ceph-mon02.hjepna
      osd: 9 osds: 9 up (since 61m), 9 in (since 16h)

      data:
      pools: 2 pools, 33 pgs
      objects: 12 objects, 0 B
      usage: 9.0 GiB used, 891 GiB / 900 GiB avail
      pgs: 33 active+clean
       

      創建塊并映射到本地

      創建一個 10G 的塊

      1
      2
      # rbd create --size <size> <rbdname> --pool <poolname>
      rbd create --size 10G disk01 --pool koenli
       

      查看 rbd

      1
      2
      3
      4
      5
      # rbs ls <poolname> -l
      rbd ls koenli -l

      # rbd info <poolname>/<rbdname>
      rbd info koenli/disk01
       

      將 rbd 塊映射到本地

      1
      2
      # rbd map <poolname>/<rbdname>
      rbd map koenli/disk01
       

      查看映射,可見 koenli/disk0 已經映射到本地,相當于本地的一塊硬盤 /dev/rbd0,可對其進行分區、格式化、掛載等相關操作,此處不再贅述。

      1
      2
      3
      # rbd showmapped 
      id pool namespace image snap device
      0 koenli disk01 - /dev/rbd0
       

      取消映射并刪除塊

      1
      2
      3
      4
      5
      # rbd unmap <poolname>/<rbdname>
      rbd unmap koenli/disk01

      # rbd remove <poolname>/<rbdname>
      rbd remove koenli/disk01
       

      使用 Ceph 集群提供對象存儲服務


      說明:本節操作在引導節點執行

      部署 RGW

      Cephadm 將 radosgw 部署為守護進程的集合,這些守護進程管理單個集群或多站點(multisite)中的特定 realm 和 zone(有關 realm 和 zone 的更多信息可參見 Multi-Site

      說明:對于 cephadm,radosgw 守護進程是通過監視器配置數據庫配置的,而不是通過 ceph.conf 或命令行配置的。如果該配置尚未就緒(通常在 client.rgw.<something> 部分),那么 radosgw 守護進程將以默認設置啟動(例如綁定到端口 80)。

      要部署一組 radosgw 守護進程,請運行以下命令:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      # 創建realm
      # radosgw-admin realm create --rgw-realm=<realm-name> --default
      radosgw-admin realm create --rgw-realm=default-realm --default

      # 創建zonegroup
      # radosgw-admin zonegroup create --rgw-zonegroup=<zonegroup-name> --master --default
      radosgw-admin zonegroup create --rgw-zonegroup=default-zonegroup --master --default

      # 創建zone
      # radosgw-admin zone create --rgw-zonegroup=<zonegroup-name> --rgw-zone=<zone-name> --master --default
      radosgw-admin zone create --rgw-zonegroup=default-zonegroup --rgw-zone=default-zone --master --default

      # 更新period
      # radosgw-admin period update --rgw-realm=<realm-name> --commit
      radosgw-admin period update --rgw-realm=default-realm --commit

      # 為特定realm和zone部署一組radosgw守護進程
      # ceph orch apply rgw <realm_name> <zone_name> [<subcluster>] [<port:int>] [--ssl] [<placement>] [--dry-run] [plain|json|json-pretty|yaml] [--unmanaged]
      ceph orch apply rgw default-realm default-zone --placement="3 ceph-mon01 ceph-mon02 ceph-mon03"
       

      說明:Pacific 版本版本創建 radosgw 守護進程的命令略有不同,需要指定一個 svc_id,可參考如下。Pacific 版本之后是否還有變化請參考官方文檔

      1
      2
      # ceph orch apply rgw <svc_id> [<realm_name>] [<zone_name>] [<port:int>] [--ssl] [<placement>] [--dry-run] [--format {plain|json|json-pretty|yaml}] [--unmanaged] [--no-overwrite]
      ceph orch apply rgw koenli-rgw default-realm default-zone --placement="3 ceph-mon01 ceph-mon02 ceph-mon03"
       

      通過 ceph -s 確定 RGW 是否 active,集群狀態是否為 HEALTH_OK

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      [root@ceph-mon01 ~]# ceph -s
      cluster:
      id: 59428ec4-0f82-11ec-b6c6-001c423b10e7
      health: HEALTH_OK

      services:
      mon: 3 daemons, quorum ceph-mon01,ceph-mon02,ceph-mon03 (age 2h)
      mgr: ceph-mon03.yrxrfd(active, since 2h), standbys: ceph-mon01.tqxtfo, ceph-mon02.hjepna
      osd: 9 osds: 9 up (since 2h), 9 in (since 18h)
      rgw: 3 daemons active (default-realm.default-zone.ceph-mon01.xomkme, default-realm.default-zone.ceph-mon02.khixej, default-realm.default-zone.ceph-mon03.mqctsc)

      task status:

      data:
      pools: 6 pools, 153 pgs
      objects: 243 objects, 5.5 KiB
      usage: 9.0 GiB used, 891 GiB / 900 GiB avail
      pgs: 153 active+clean

      progress:
      PG autoscaler decreasing pool 6 PGs from 32 to 8 (0s)
      [............................]
       

      說明:如上輸出所示,集群健康狀態為 HEALTH_OK,不過下方的 progress 顯示正在進行 PG 數量的調整,原因是 Ceph 在 Nautilus 版本中引入了 PG 的自動調整功能,待自動調整完成后即可。

      配置 Dashboard(可選)

      說明:Octopus 版本才需配置。

      https://docs.ceph.com/en/octopus/mgr/dashboard/#enabling-the-object-gateway-management-frontend

      由于 RGW 擁有自己的一套賬號體系,所以為了能夠使用 Dashboard 的對象存儲網關管理功能,需要在 RGW 中創建一個 Dashboard 用的賬號

      1
      2
      # radosgw-admin user create --uid=<user_id> --display-name=<display_name> --system
      radosgw-admin user create --uid=dashboard --display-name=dashboard --system
       

      通過如下命令導出

      1
      2
      3
      4
      # radosgw-admin user info --uid=<user_id> | grep access_key | awk -F '"' '{print $4}' > /root/rgw-dashboard-access-key
      radosgw-admin user info --uid=dashboard | grep access_key | awk -F '"' '{print $4}' > /root/rgw-dashboard-access-key
      # radosgw-admin user info --uid=<user_id> | grep secret_key | awk -F '"' '{print $4}' > /root/rgw-dashboard-secret-key
      radosgw-admin user info --uid=dashboard | grep secret_key | awk -F '"' '{print $4}' > /root/rgw-dashboard-secret-key
       

      最后將相關憑證配置到 Dashboard

      1
      2
      3
      4
      # ceph dashboard set-rgw-api-access-key -i <file-containing-access-key>
      ceph dashboard set-rgw-api-access-key -i /root/rgw-dashboard-access-key
      # ceph dashboard set-rgw-api-secret-key -i <file-containing-secret-key>
      ceph dashboard set-rgw-api-secret-key -i /root/rgw-dashboard-secret-key
       

      配置完成后即可在 Dashboard 上使用對象存儲網關的管理功能

      RGW 高可用

      說明:在 Ceph Pacific(16.x)版本 cephadm 新增了一個實現 RGW 服務高可用的功能

      ingress 服務支持使用最少的一組配置為 RGW 服務創建高可用性端點(endpoint),orchestrator 將部署和管理 HAProxy 和 Keepalive 的組合,以在虛擬 IP 上為 RGW 提供負載平衡服務。

      說明:如果要使用 SSL,則必須在 ingress 服務配置 SSL 而不是 RGW 本身

      由上圖可看到,有 N 臺主機部署了 ingress 服務。每個主機都有一個 HAProxy 守護程序和一個 Keepalived 守護程序。一次只能在其中一臺主機上自動配置虛擬 IP。

      每個 Keepalived 守護程序每隔幾秒鐘檢查一次同一主機上的 HAProxy 守護程序是否有響應。Keepalived 還將檢查處于 MASTER 狀態的 Keepalived 守護程序是否正常運行。如果處于 MASTER 狀態的 Keepalived 守護程序或 HAProxy 沒有響應,則在 BACKUP 模式下運行的其余 Keepalived 守護程序中的一個將被選舉為 MASTER,虛擬 IP 也將移動到該節點。

      HAProxy 就像負載平衡器一樣,在所有可用的 RGW 守護進程之間分發所有 RGW 請求。

      具體的部署請參考官方文檔相關內容

      使用 Ceph 集群提供文件存儲服務


      說明:除非特別說明,否則本節操作在引導節點執行

      使用 CEPFS 文件系統需要一個或多個 MDS 守護進程。

      創建文件存儲池

      創建兩個存儲池,cephfs_metadata 用于存文件系統元數據,cephfs_data 用于存文件系統數據

      1
      2
      3
      4
      5
      6
      7
      8
      # ceph osd pool create <poolname> <pg_num> <pgp_num>
      ceph osd pool create cephfs_metadata 32 32
      ceph osd pool create cephfs_data 32 32

      # ceph osd pool application enable <poolname> <appname>
      # <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications
      ceph osd pool application enable cephfs_metadata cephfs
      ceph osd pool application enable cephfs_data cephfs
       

      創建文件系統

      1
      2
      # fs new <fsname> <metadata_pool> <data_pool>
      ceph fs new koenlifs cephfs_metadata cephfs_data
       

      部署 MDS

      1
      2
      # ceph orch apply mds <fs_name> [<placement>] [--dry-run] [--unmanaged] [plain|json|
      ceph orch apply mds koenlifs --placement="3 ceph-mon01 ceph-mon02 ceph-mon03"
       

      查看文件系統和 MDS 狀態

      1
      2
      3
      4
      5
      # ceph fs ls
      name: koenlifs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

      # ceph mds stat
      koenlifs:1 {0=ceph-mon01=up:active} 2 up:standby
       

      驗證掛載

      在要掛載的節點上安裝 EPEL 軟件源并配置對應版本的 Ceph 軟件源

      說明:如果掛載的節點為 Ceph 集群節點則跳過此步

      CentOS7.x

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      # 安裝EPEL軟件源
      yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y

      # 配置對應版本的Ceph軟件源
      # 將CEPH_STABLE_RELEASE的值替換成要安裝的Ceph的版本號,例如octopus
      CEPH_STABLE_RELEASE=octopus
      cat > /etc/yum.repos.d/ceph.repo << EOF
      [Ceph]
      name=Ceph packages for \$basearch
      baseurl=https://mirrors.aliyun.com/ceph/rpm-${CEPH_STABLE_RELEASE}/el7/\$basearch
      enabled=1
      gpgcheck=1
      type=rpm-md
      gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

      [ceph-noarch]
      name=Ceph noarch packages
      baseurl=https://mirrors.aliyun.com/ceph/rpm-${CEPH_STABLE_RELEASE}/el7/noarch
      enabled=1
      gpgcheck=1
      type=rpm-md
      gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

      [ceph-source]
      name=Ceph source packages
      baseurl=https://mirrors.aliyun.com/ceph/rpm-${CEPH_STABLE_RELEASE}/el7/SRPMS/
      enabled=1
      gpgcheck=1
      type=rpm-md
      gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
      EOF
       

      CentOS8.x

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      # 安裝EPEL軟件源
      yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

      # 配置對應版本的Ceph軟件源
      # 將CEPH_STABLE_RELEASE的值替換成要安裝的Ceph的版本號,例如octopus
      CEPH_STABLE_RELEASE=pacific
      cat > /etc/yum.repos.d/ceph.repo << EOF
      [Ceph]
      name=Ceph \$basearch
      baseurl=https://mirrors.aliyun.com/ceph/rpm-${CEPH_STABLE_RELEASE}/el8/\$basearch
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

      [Ceph-noarch]
      name=Ceph noarch
      baseurl=https://mirrors.aliyun.com/ceph/rpm-${CEPH_STABLE_RELEASE}/el8/noarch
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

      [Ceph-source]
      name=Ceph SRPMS
      baseurl=https://mirrors.aliyun.com/ceph/rpm-${CEPH_STABLE_RELEASE}/el8/SRPMS
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
      EOF
       

      在要掛載的節點上安裝 ceph-fuse

      1
      yum install ceph-fuse -y
       

      將引導節點 /etc/ceph 目錄下的文件和 /var/lib/ceph/{fsid}/mon.{hostname}/config 文件拷貝到要掛載的節點上

      說明:如果要掛載的節點為引導節點則忽略此步

      1
      2
      scp -r /etc/ceph/* <client_ip>:/etc/ceph/
      scp -r /var/lib/ceph/{fsid}/mon.{hostname}/config <client_ip>:/etc/ceph/ceph.conf
       

      使用 ceph-fuse 命令掛載

      說明:更多關于 ceph-fuse 的使用說明可以參考官方文檔

      1
      2
      # ceph-fuse -n client.<username> -m <mon-ip1>:<mon-port>,<mon-ip2>:<mon-port>,<mon-ip3>:<mon-port> <mountpoint>
      ceph-fuse -n client.admin -m 10.211.55.7:6789,10.211.55.8:6789,10.211.55.9:6789 /mnt/
       

      說明:若要開機自動掛載,需要在 /etc/fstab 中添加如下相關條目

      1
      2
      # none    <mountpoint>  fuse.ceph ceph.id=<username>,ceph.conf=<path/to/ceph.conf>,_netdev,defaults  0 0
      none /mnt/ fuse.ceph ceph.id=admin,ceph.conf=/etc/ceph/ceph.conf,_netdev,defaults 0 0
       

      卸載

      1
      2
      # umount <mountpoint>
      umount /mnt/
       

      說明:若配置過開機自動掛載,還需刪除 /etc/fstab 中的對應掛載條目

      部署 NFS ganesha 服務


      說明:除非特別說明,否則本節操作在引導節點執行

      說明:用戶可以用 Ceph 提供的 ceph-fuse 掛載 CephFS 進行訪問,也可以通過 Ceph 的內核模塊進行掛載訪問。但有時候,由于各種原因,一些系統無法通過這兩種方法訪問 CephFS,我們可以使用 NFS-ganesha 將 CephFS 通過 NFS 協議發布出去,用戶可以通過 NFS 客戶端掛載發布出去的 CephFS。

      說明:Pacific 版本開始只支持 NFSv4

      首先創建 nfs-ganesha 存儲池

      1
      2
      3
      4
      5
      6
      # ceph osd pool create <poolname> <pg_num> <pgp_num>
      ceph osd pool create nfs-ganesha 32 32

      # ceph osd pool application enable <poolname> <appname>
      # <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications
      ceph osd pool application enable nfs-ganesha nfs
       

      然后通過 cephadm 部署 NFS Ganesha 守護進程(或一組守護進程)。NFS 的配置存儲在 nfs-ganesha 存儲池中并且通過 ceph nfs export ... 命令或通過 Dashboard 儀表板管理服務暴露

      說明:不同 Ceph 版本部署 NFS Ganesha 守護進程的命令可能有所差異,可查看對應版本的命令幫助說明

      Octopus 版本

      1
      2
      # ceph orch apply nfs *<svc_id>* *<pool>* *<namespace>* --placement="*<num-daemons>* [*<host1>* ...]"
      ceph orch apply nfs nfs nfs-ganesha nfs-ns --placement="3 ceph-mon01 ceph-mon02 ceph-mon03"
       

      Pacific 版本

      1
      2
      # ceph orch apply nfs <svc_id> [<placement>] [<pool>] [<namespace>] [<port:int>] [--dry-run] [--unmanaged] [--no-overwrite] 
      ceph orch apply nfs nfs --placement="3 ceph-mon01 ceph-mon02 ceph-mon03" nfs-ganesha nfs
       

      檢查 NFS Ganesha 守護進程狀態

      1
      2
      3
      [root@ceph-mon01 ~]# ceph orch ls nfs
      NAME RUNNING REFRESHED AGE PLACEMENT IMAGE NAME IMAGE ID
      nfs.nfs 3/3 20s ago 23s ceph-mon01;ceph-mon02;ceph-mon03;count:3 docker.io/ceph/ceph:v15 mix
       

      說明:Octopus 版本為了在 Dashboard 中啟用對 NFS Ganesha 的管理,需要進行下面設置

      1
      2
      # ceph dashboard set-ganesha-clusters-rados-pool-namespace <pool>[/<namespace>]
      ceph dashboard set-ganesha-clusters-rados-pool-namespace nfs-ganesha/nfs-ns
       

      訪問 Dashboard,選擇 “NFS”,點擊 “Create”

      參考下圖填寫相關配置信息,最后點擊 “Create NFS export”

      說明:在 Pacific 版上可能會創建失敗,提示沒有權限創建 /nfs 目錄,則需先參考上面使用 ceph-fuse 命令掛載的步驟,在 cephfs 中創建 nfs 目錄(目錄名稱與 CephFS Path 對應)后再次點擊 “Create NFS export” 即可

      在客戶端節點驗證 NFS 掛載

      說明:<daemon_ip> 與創建 NFS export 時選擇的 Daemons 主機 IP 匹配;<path> 與創建 NFS export 時指定的 CephFS Path 對應

      1
      2
      3
      4
      5
      6
      # 驗證掛載
      yum install nfs-utils -y
      mount -t nfs <daemon_ip>:<path> /mnt/

      # 驗證完卸載
      umount /mnt
       

      部署 iSCSI 服務


      說明:本節操作在引導節點執行

      創建 iSCSI 所需要的存儲池

      1
      2
      3
      4
      5
      6
      # ceph osd pool create <poolname> <pg_num> <pgp_num>
      ceph osd pool create iscsi_pool 32 32

      # ceph osd pool application enable <poolname> <appname>
      # <app-name> is 'cephfs', 'rbd', 'rgw', or freeform for custom applications
      ceph osd pool application enable iscsi_pool iscsi
       

      創建 iSCSI 的 yaml 文件

      說明:更多配置請參考官方文檔

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      cat > /root/iscsi.yaml << EOF
      service_type: iscsi
      service_id: iscsi
      placement:
      hosts:
      - ceph-mon01
      - ceph-mon02
      - ceph-mon03
      spec:
      pool: iscsi_pool
      trusted_ip_list: "10.211.55.7,10.211.55.8,10.211.55.9"
      api_user: admin
      api_password: admin
      api_secure: false
      EOF
       

      部署 iSCSI

      1
      ceph orch apply -i /root/iscsi.yaml
       

      查看 iSCSI service 和 daemon 狀態

      1
      2
      3
      4
      5
      6
      7
      8
      9
      [root@ceph-mon01 ~]# ceph orch ls iscsi
      NAME RUNNING REFRESHED AGE PLACEMENT IMAGE NAME IMAGE ID
      iscsi.iscsi 3/3 82s ago 11m ceph-mon01;ceph-mon02;ceph-mon03 docker.io/ceph/ceph:v15 2cf504fded39

      [root@ceph-mon01 ~]# ceph orch ps --daemon-type iscsi
      NAME HOST STATUS REFRESHED AGE VERSION IMAGE NAME IMAGE ID CONTAINER ID
      iscsi.iscsi.ceph-mon01.nrzxxd ceph-mon01 running (12m) 117s ago 12m 3.4 docker.io/ceph/ceph:v15 2cf504fded39 c08463f22484
      iscsi.iscsi.ceph-mon02.wildwn ceph-mon02 running (11m) 114s ago 12m 3.4 docker.io/ceph/ceph:v15 2cf504fded39 fc66428f36c8
      iscsi.iscsi.ceph-mon03.pafnwf ceph-mon03 running (12m) 117s ago 12m 3.4 docker.io/ceph/ceph:v15 2cf504fded39 f44058c79b34
       

      查看 Ceph Dashboard 狀態

      如何剔除 OSD


      從集群中剔除 OSD 包括兩個步驟:

      • 從集群中撤出此 OSD 上所有的 PG
      • 從集群中卸載無 PG 的 OSD

      以下命令執行這兩個步驟:

      1
      2
      # ceph orch osd rm <osd_id(s)> [--replace] [--force]
      ceph orch osd rm 0
       

      可以使用 ceph orch osd rm status 命令查詢 OSD 操作的狀態

      Troubleshooting


      無法 rbd 映射到本地

      問題現象

      將 rbd 映射到本地時出現如下錯誤信息:

      1
      2
      3
      4
      rbd: sysfs write failed
      RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable koenli/disk01 object-map fast-diff deep-flatten".
      In some cases useful info is found in syslog - try "dmesg | tail".
      rbd: map failed: (6) No such device or address
       

      解決方法

      因為 CentOS7 默認內核版本不支持 Ceph 的一些特性,需要手動禁用掉才能 map 成功

      1
      rbd feature disable koenli/disk01 object-map fast-diff deep-flatten
       
      posted @ 2023-10-08 17:29  純撿垃圾吃的  閱讀(926)  評論(0)    收藏  舉報
      返回頂部
      主站蜘蛛池模板: 欧美日韩一线| 屏山县| 国产精品久久一区二区三区| 亚洲av专区一区| 欧美成本人视频免费播放| 少妇性l交大片| 日本伊人色综合网| av永久免费网站在线观看 | 少妇高潮水多太爽了动态图| 国产xxxx做受视频| 国产免费午夜福利在线播放| 精品国产一区二区三区卡| 老太脱裤子让老头玩xxxxx| 中文人妻熟妇乱又伦精品| 欧美精品久久天天躁| 在线亚洲妇色中文色综合| 国产精品天干天干综合网| 国产精品中文字幕综合| 日韩有码中文字幕第一页 | 无码人妻精品一区二| 日韩加勒比一本无码精品| 久久这里都是精品一区| 欧美大胆老熟妇乱子伦视频| 日韩av一区二区精品不卡| 亚洲av色一区二区三区| 久久精品国产一区二区三| 国内自拍av在线免费| 欧美精品国产综合久久| 99精品国产一区二区三区| 中文无码日韩欧免费视频| 秋霞电影网| 美女爽到高潮嗷嗷嗷叫免费网站| 丝袜美腿一区二区三区| 制服丝袜美腿一区二区| 日本一级午夜福利免费区| 午夜福利精品国产二区| 秀山| 人人爽人人爽人人片a免费| 成在人线AV无码免观看| 亚洲欧美人成网站在线观看看| 激情五月日韩中文字幕|