제5편: Ceph 클러스터 운영
25822 단어 ceph분산 개체 스토리지 프레임워크:Ceph
상용 조작
이 부분에서는 Ceph 집단의 일반적인 조작을 소개했는데 프로세스의 시작, 집단의 모니터링, 사용자 관리, MDS/MON/OSD의 증가와 삭제, 저장 탱크(pool)의 조작, 집단의 설정 수정, Crushmap의 관리, Monitor의 IP 수정 등 조작을 포함한다.
1 MDS 삭제
1.1 메타데이터 서버 추가(metadata server)
/var/lib/ceph/mds/ceph-{$id}
, id
메타데이터 서버의 이름을 표시하고 수요에 따라 스스로 정의할 수 있습니다.예: sudo mkdir /var/lib/ceph/mds/ceph-`hostname`
sudo chown ceph:ceph -R /var/lib/ceph/mds/ceph-`hostname`
[mds.{$id}]
host = {hostname}
예: [mds.ceph-1]
host = ceph-1
sudo ceph auth get-or-create mds.{$id} mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-{$id}/keyring
sudo cp /usr/lib/systemd/system/[email protected] /usr/lib/systemd/system/ceph-mds@`hostname`.service
sudo systemctl start ceph-mds@`hostname`
sudo systemctl enable ceph-mds@`hostname`
ceph mds stat
cephfs-1/1/1 up {0=ceph-1=up:active}, 2 up:standby
1.2 메타데이터 서버 삭제(metadata server)
: 메타데이터 서버를 삭제하기 전에 반드시 나머지 예비 메타데이터 서버가ceph 클라이언트에게 서비스를 제공해야 합니다.없으면 메타데이터 서버를 추가한 다음 삭제해야 합니다.cephfs 서비스가 정상적으로 사용될 수 있도록 확보됨대체 메타데이터 서버가 있는 경우 다음 삭제 작업을 수행할 수 있습니다.
ceph mds fail <mds name>
예: ceph mds fail ceph-1
sudo rm -rf /var/lib/ceph/mds/ceph-{$id}
예: sudo rm -rf /var/lib/ceph/mds/ceph-ceph-1
2 OSD 삭제
2.1 새로 추가된 osd(신규 기계 추가되지 않음)
2.1.1 osd 프로세스와 관련된 디스크 만들기
fdisk
도구를 사용하여 디스크를 포맷하고 osd 프로세스의 디스크와journal 디스크를 생성합니다sudo umount /disk3 # /dev/sde disk3 umount
sudo fdisk /dev/sde
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p( )
Command (m for help): d( )
Command (m for help): g( gpt)
Command (m for help): n( , , journal(10G), data)
Command (m for help): w( )
2.1.2 osd 만들기(step by step)
2.1 새 osd를 추가합니다.
id
생략할 수 있습니다. ceph는 최소 사용 가능한 정수를 자동으로 사용합니다. 첫 번째 osd는 0부터ceph osdcreate {id}ceph osd create
3
2.2 osd 디렉터리 초기화
osd를 만듭니다.3 디렉터리, 디렉터리 이름 형식
{cluster-name}-{id}
mkdir/var/lib/ceph/osd/{cluster-name} - {id}sudo mkdir /var/lib/ceph/osd/ceph-3
2.3 osd를 마운트합니다.0의 데이터 디스크/dev/sde2
sudo mkfs.xfs /dev/sdb2
sudo mount /dev/sdc2 /var/lib/ceph/osd/ceph-3
2.4 osd 데이터 디렉터리 초기화
sudo ceph-osd -i 3 --mkfs --mkkey
--mkkey osd
이것은 osd를 생성합니다.0의 keyring/var/lib/ceph/osd/ceph-0/keyring
초기화 후 기본 파일/var/lib/ceph/osd/ceph-3/journal을 osd로 사용합니다.3의journal 구역, 일반 파일은journal 구역으로서 성능이 높지 않습니다. 테스트 환경일 경우,journal 구역을 변경하는 절차를 건너뛸 수 있습니다.
2.5journal 만들기
journal 구역을 생성합니다. 일반적으로 ssd디스크를journal 구역으로 선택하고, 여기는 ssd의/dev/sde1 구역을journal로 사용합니다.
fdisk 를 사용하여 디스크/dev/sde1을 분할합니다.
sudo mkfs.xfs /dev/sde1
sudo rm -f /var/lib/ceph/osd/ceph-3/journal
partuuid, /dev/sdb1 partuuid
sudo blkid
sudo ln -s /dev/disk/by-partuuid/b3897364-8807-48eb-9905-e2c8400d0cd4 /var/lib/ceph/osd/ceph-3/journal
sudo chown ceph:ceph -R /var/lib/ceph/osd/ceph-3
sudo chown ceph:ceph /var/lib/ceph/osd/ceph-3/journal
sudo ceph-osd --mkjournal -i 3
sudo chown ceph:ceph /var/lib/ceph/osd/ceph-3/journal
2.6 등록 osd.{id}, id는 osd 번호입니다. 기본적으로 0부터 sudoceph authadd osd를 시작합니다.{id} osd ‘allow *’ mon ‘allow profile osd’ -i/var/lib/ceph/osd/ceph-{id}/keyring
sudo ceph auth add osd.3 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-3/keyring
2.7 crush map ceph osd crush add-bucket {hostname} host 추가
sudo ceph osd crush add-bucket `hostname` host
2.8 그리고 osd 노드를 기본 루트
default
아래로 이동합니다.sudo ceph osd crush move `hostname` root=default
2.9 osd 추가.3 CRUSH 맵의 m1 노드 아래에 가입한 후 osd.3 데이터를 수신할 수 있습니다ceph osd crush add osd.{id} 0.4 root=sata rack=sata-rack01 host=sata-node5
sudo ceph osd crush add osd.3 1.7 root=default host=`hostname`
0.4 이 osd가 CRUSH 맵에서 차지하는 가중치는 데이터가 이 osd에 떨어지는 비중을 나타내는 상대적인 값이다. 일반적으로 1T 디스크 비중값은 1로 계산하는데 이곳의 osd 데이터 디스크는 1.7이기 때문에 값은 1.7이다.
지금 osd.0 상태는
down
및 in
, in
이 osd는 CRUSH 맵에 위치하고 있으며, 데이터를 받아들일 준비가 되어 있으며, down
osd 프로세스가 이상하게 실행되고 있음을 나타냅니다. 왜냐하면 우리는 아직 osd를 시작하지 않았기 때문입니다.0 프로세스2.10 ceph-osd 프로세스 시작
시스템ctl에 osd를 전달해야 하는
id
지정한 osd 프로세스를 시작합니다. 아래와 같이 osd를 시작합니다.3 프로세스 시스템 ctl startceph-osd@{id}id는 osd 번호를 표시하고 숫자 0부터 시작합니다.sudo cp /usr/lib/systemd/system/[email protected] /usr/lib/systemd/system/[email protected]
sudo systemctl start ceph-osd@3
sudo systemctl enable ceph-osd@3
위에 osd를 추가합니다.3단계, 집단 상태ceph-s를 볼 수 있습니다.
2.2 신규 osd(신규 기기 추가)
2.2.1 구성 환경
2.1 yum 소스 수정
여기서 yum 원본을 aliyun의 원본으로 수정합니다. 명령은 다음과 같습니다.
curl http://mirrors.aliyun.com/repo/Centos-7.repo >/etc/yum.repos.d/CentOS-Base.repo
curl http://mirrors.aliyun.com/repo/epel-7.repo >/etc/yum.repos.d/epel.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo
2.2 ceph 소스 추가
sudo vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
gpgcheck=0
2.3 소프트웨어 설치
sudo yum install ceph ntp ntpdate ntp-doc openssh-server
ceph가 올바르게 설치되었는지 확인
ceph -v
ceph version 12.2.10 (177915764b752804194937482a39e95e0ca3de94) luminous (stable)
2.4 방화벽 닫기
sudo sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo setenforce 0
sudo systemctl stop firewalld
sudo systemctl disable firewalld
2.2.2 새 osd(동기화 갑자기 2.1)
2.3 osd 삭제
클러스터 크기를 줄이거나 하드웨어를 교체하려면 실행할 때 OSD를 제거합니다.Ceph에서 OSD는 보통 호스트의 수호 프로세스로 하드디스크 위에서 실행된다.만약 호스트에 여러 개의 데이터 디스크가 있다면, 너는 하나하나 대응하는 것을 삭제해야 한다
ceph-osd
.일반적으로 작업 전에 그룹 용량이 상한선에 도달했는지 확인하고 OSD를 삭제한 후에 그룹 ceph-osd
비율이 되지 않도록 해야 한다.경고: OSD를 삭제할 때 클러스터를
near full
값으로 만들지 마십시오. OSD를 삭제하면 클러스터가 full ratio
값을 초과하거나 초과할 수 있습니다.1. 제거해야 할 OSD 프로세스를 중지하고 다른 OSD가 이 OSD가 서비스를 제공하지 않는다는 것을 알게 합니다.OSD를 중지하면 상태는
full ratio
가 됩니다.ssh {osd-host}
sudo stop ceph-osd id={osd-num}
2. OSD를
down
상태로 표시한다. 이 단계는 몬에게 이 OSD는 이미 서비스를 할 수 없고 다른 OSD에서 데이터의 균형과 복구가 필요하다는 것을 알려주는 것이다.sudo ceph osd out {osd-num}
이 단계를 실행하면 데이터의 복구 과정을 촉발합니다.데이터 복구가 끝나고 집단이
out
상태로 회복될 때까지 기다렸다가 다음 작업을 해야 합니다.3. CRUSH Map에서 해당 OSD 항목을 삭제하면 더 이상 데이터를 받지 않습니다.CRUSH Map을 역컴파일하거나, 장치 목록 항목을 삭제하거나, 대응하는 호스트 통 항목을 삭제하거나, 호스트 통을 삭제할 수도 있습니다. (만약 CRUSH Map에 있고 호스트를 삭제하고 싶다면) CRUSH Map을 다시 컴파일해서 적용할 수도 있습니다.
sudo ceph osd crush remove osd.{osd-num}
이 단계는 데이터의 재분포를 촉발할 것이다.데이터 재분포가 끝나면 전체 집단이
HEALTH_OK
상태로 회복됩니다.4, OSD 인증 키 삭제:
ceph auth del osd.{osd-num}
5, OSD를 삭제합니다.ceph osd rm {osd-num}
ceph osd rm 1
6. OSD의 마운트 지점을 마운트 해제합니다.
sudo umount /var/lib/ceph/osd/$cluster-{osd-num}
7, 기본 복제본이 저장된 호스트에 로그인합니다.
ssh {admin-host}
cd /etc/ceph
vim ceph.conf
8.
HEALTH_OK
프로필에서 해당 항목을 삭제합니다.[osd.1]
host = {hostname}
9. 주 복사본
ceph.conf
을 저장한 호스트에서 업데이트된 ceph.conf
을 다른 호스트의 ceph.conf
디렉터리로 복사합니다.ceph.conf
에서 각 OSD 포털을 정의하지 않으면 7~9단계를 수행할 필요가 없습니다.모든 osd 노드가 오프라인 삭제된 후:ceph osd crush remove {hostname} 호스트 항목을 crush 맵에서ceph -s 대기 그룹을 active +clean 상태로 삭제합니다
3 mon 삭제
3.1 Mon 노드 증가
재ceph.conf 파일에mon 노드 정보 추가
mon initial members = hostname1,hostname2,new_mon_hostname
mon host = IP1,IP2,new_mon_ip
mon 프로세스 만들기
host_name=`hostname`
sudo ceph mon getmap -o /tmp/monmap
sudo rm -rf /var/lib/ceph/mon/ceph-$host_name
sudo ceph-mon -i $host_name --mkfs --monmap /tmp/monmap
sudo chown -R ceph:ceph /var/lib/ceph/mon/ceph-$host_name/
mon 프로세스 시작
sudo cp /usr/lib/systemd/system/[email protected] /usr/lib/systemd/system/ceph-mon@$host_name.service
sudo systemctl start ceph-mon@$host_name
sudo systemctl enable ceph-mon@$host_name
4 클라이언트 마운트
4.1 kernel client 마운트
/etc/ceph
sudo yum install ceph-common
mount -t ceph <monitor1-host-name>:6789,<monitor2-host-name>:6789,<monitor3-host-name>:6789:/ <mount-point>
Example:
sudo mkdir -p /gruntdata/lipeibao_ceph
sudo mount -t ceph 11.188.199.210:6789:/ /mnt/mycephfs
4.2ceph-fuse 마운트
ceph.conf
, ceph-common
sudo yum install ceph-common ceph-fuse
sudo vim /etc/ceph/ceph.conf
[global]
fsid = $genuuid
mon initial members = hostname1
mon host = IP1,IP2,IP3
rbd default features = 1
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
public network = 11.165.0.0/16
cluster network = 11.165.0.0/16
osd journal size = 1024
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 1000
osd pool default pgp num = 1000
osd crush chooseleaf type = 1
mon_max_pg_per_osd = 200
[mon]
mon allow pool delete = true
[mds.hostname1]
host = hostname1
ceph auth get-or-create client.<client-name/id> mon 'allow r' mds 'allow r, allow rw path=' osd 'allow rw pool=' -o <file_name>
$ ceph auth get-or-create client.1 mon 'allow r' mds 'allow r, allow rw path=/' osd 'allow rw pool=data' -o ceph.client.1.keyring
[client.1]
key = AQACNoZXhrzqIRAABPKHTach4x03JeNadeQ9Uw==
5 클라이언트 제거
주 mds 서버에 로그인하여 연결된 모든 클라이언트 정보를 보려면 다음과 같이 하십시오.
sudo ceph daemon mds.`hostname` session ls
제거할 클라이언트 id를 찾아 다음 명령을 실행합니다.
sudo ceph tell mds.`hostname` client evict id= id
이것은 클라이언트 주소가blcaklist에 존재합니다. 다시 마운트하려면 blacklist에서 삭제해야 합니다.
sudo ceph osd blcaklist ls
해당하는address 삭제
sudo ceph osd blacklist rm address
6ceph 집단 매개 변수 조정
6.1pool 매개 변수 보기
ceph osd pool get {pool_name} pg_num
ceph osd pool set {pool_name} pg_num 1024
7 osd 집단 데이터 밸런스 처리
7.1 balancer 플러그인
ceph 집단을 사용하는 과정에서 osd 저장 분포가 불균형한 상황을 자주 만날 수 있다. 예를 들어 다음 그림은 우리 온라인ceph 집단의 osd 분포 상황이다. 참고할 수 있다.https://docs.ceph.com/docs/mimic/mgr/balancer/구체적인 조작은 다음과 같다. checklist: **1.all buckets should use straw2:**
ceph osd getcrushmap -o crush.map; crushtool -d crush.map | grep straw; rm -f crush.map
253
tunable straw_calc_version 1
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
alg straw2
비straw2가 존재하면 업데이트
ceph osd crush set-all-straw-buckets-to-straw2
2. minimum client version is jewel or higher:
ceph osd dump|grep require_min_compat_client;
require_min_compat_client jewel
Ceph distribution balancer: Activate balancing:
ceph mgr module ls
ceph mgr module enable balancer
ceph balancer on
ceph balancer mode crush-compat
ceph config-key set "mgr/balancer/max_misplaced": "0.01"
Show configuration and state:
ceph config-key dump
ceph balancer status
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cephmdsdmaged는cephfs붕괴의 재난성 회복을 초래한다데이터가 분실되었고cephfs가 서비스를 제공할 수 없습니다. 방법1: 이 방법은 일반적인 상황에서 사용하기 좋으며 osdstuck 상태가 있을 때도 효력을 잃는다.이 때 osd를 다시 시작해야 합니다. stuck을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.