使用在第 4 天建立的 3 台虛擬機器進行部署。
每台虛擬機器均部署 mon、mgr、mds daemon。
因每台虛擬機器均有 3 顆 hdd,使用其中 2 顆 hdd 執行 2 個 osd daemon。
配合 VirtualBox 的 DHCP 設定,將 Ceph 部署於 10.13.13.0/24 網路中。
為了簡化部署 Ceph 的難度,將使用 https://hub.docker.com/r/ceph/daemon/ 進行 Ceph 節點的部署。
部署版本為:v3.2.1-stable-3.2-luminous-debian-9-x86_64。
假設要部署的虛擬機器 IP 為 10.13.13.101:
DOCKERIMAGE=ceph/daemon:v3.2.1-stable-3.2-luminous-debian-9-x86_64
NETWORK=10.13.13.0/24
HOSTIP=10.13.13.101
docker run -d --net=host \
        --restart=always \
        -v /etc/ceph:/etc/ceph \
        -v /var/log/ceph/:/var/log/ceph/ \
        -v /var/lib/ceph/mon:/var/lib/ceph/mon \
        -v /var/lib/ceph/bootstrap-mds:/var/lib/ceph/bootstrap-mds \
        -v /var/lib/ceph/bootstrap-osd:/var/lib/ceph/bootstrap-osd \
        -v /var/lib/ceph/bootstrap-rbd:/var/lib/ceph/bootstrap-rbd \
        -v /var/lib/ceph/bootstrap-rgw:/var/lib/ceph/bootstrap-rgw \
        -e MON_IP=$HOSTIP \
        -e CEPH_PUBLIC_NETWORK=$NETWORK \
        --name mon \
        ${DOCKERIMAGE} mon 
在所有虛擬機器上執行以下指令。
DOCKERIMAGE=ceph/daemon:v3.2.1-stable-3.2-luminous-debian-9-x86_64
docker run -d --net=host \
        --restart=always \
        -v /etc/ceph:/etc/ceph \
        -v /var/log/ceph/:/var/log/ceph/ \
        -v /var/lib/ceph/mgr:/var/lib/ceph/mgr \
        -v /var/lib/ceph/bootstrap-mds:/var/lib/ceph/bootstrap-mds \
        -v /var/lib/ceph/bootstrap-osd:/var/lib/ceph/bootstrap-osd \
        -v /var/lib/ceph/bootstrap-rbd:/var/lib/ceph/bootstrap-rbd \
        -v /var/lib/ceph/bootstrap-rgw:/var/lib/ceph/bootstrap-rgw \
        --name mgr \
        ${DOCKERIMAGE} mgr
在所有虛擬主機上執行以下指令:
DOCKERIMAGE=ceph/daemon:v3.2.1-stable-3.2-luminous-debian-9-x86_64
for DEV in /dev/sdb /dev/sdc
do
    OSDNAME=osd${DEV//\//-}
    docker run -d --net=host \
            --pid=host \
            --restart=always \
            --privileged=true \
            -v /etc/ceph:/etc/ceph \
            -v /var/log/ceph/:/var/log/ceph/ \
            -v /var/lib/ceph/bootstrap-mds:/var/lib/ceph/bootstrap-mds \
            -v /var/lib/ceph/bootstrap-osd:/var/lib/ceph/bootstrap-osd \
            -v /var/lib/ceph/bootstrap-rbd:/var/lib/ceph/bootstrap-rbd \
            -v /var/lib/ceph/bootstrap-rgw:/var/lib/ceph/bootstrap-rgw \
            -v /dev/:/dev/ \
            -e OSD_DEVICE=$DEV \
            --name $OSDNAME \
            ${DOCKERIMAGE} osd
done
準備完 osd 節點後,即可部署 mds daemon,以提供 CephFS 服務。
請注意在部署 mds 時,需決定 pg num。請參考 https://ceph.io/pgcalc/ 計算所需的 pg 數。
在所有虛擬機器上執行以下指令:
DOCKERIMAGE=ceph/daemon:v3.2.1-stable-3.2-luminous-debian-9-x86_64
PGNUM=64
docker run -d --net=host \
        --restart=always \
        -v /etc/ceph:/etc/ceph \
        -v /var/log/ceph/:/var/log/ceph/ \
        -v /var/lib/ceph/mds:/var/lib/ceph/mds \
        -v /var/lib/ceph/bootstrap-mds:/var/lib/ceph/bootstrap-mds \
        -v /var/lib/ceph/bootstrap-osd:/var/lib/ceph/bootstrap-osd \
        -v /var/lib/ceph/bootstrap-rbd:/var/lib/ceph/bootstrap-rbd \
        -v /var/lib/ceph/bootstrap-rgw:/var/lib/ceph/bootstrap-rgw \
        -e CEPHFS_CREATE=1 \
        -e CEPHFS_DATA_POOL_PG=$PGNUM \
        -e CEPHFS_METADATA_POOL_PG=$PGNUM \
        --name mds \
        ${DOCKERIMAGE} mds