initdisk.sh
#!/bin/bash LANG=en_US disk=`fdisk -l | grep ^Disk | grep sectors | grep sd | grep -v sda | awk -F[:\ ] '{print $2}' | sort` yum install -y hdparm for partition in $disk do dd if=/dev/zero of=$partition bs=1M count=100 parted -s $partition mklabel gpt parted $partition mkpart primary xfs 1 100% hdparm -z "$partition"1 mkfs.xfs -f -i size=512 "$partition"1 donecreateosd.sh
#!/bin/bash LANG=en_US num=70 <- 注意 osd 开始 number for ip in $ips do diskpart=`ssh $ip "fdisk -l | grep Linux | grep -v sda" | awk '{print $1}' | sort` for partition in $diskpart do ssh $ip "ceph osd create" ssh $ip "mkdir /var/lib/ceph/osd/ceph-$num" ssh $ip "echo $partition /var/lib/ceph/osd/ceph-$num xfs defaults 0 0 >> /etc/fstab" let num++ done ssh $ip "mount -a" doneinitosd.sh
#!/bin/bash LANG=en_US num=70 <--- 注意这里, 是新 osd 的开始 NUM for ip in $ips do diskpart=`ssh $ip "fdisk -l | grep GPT | grep -v sda" | awk '{print $1}' | sort` for partition in $diskpart do ssh $ip "ceph-osd -i $num --mkfs --mkkey --osd-uuid dc4f91c1-8792-4948-b68f-2fcea75f53b9" <-- 主机 ceph fsid let num++ done doneauthosd.sh
#!/bin/bash LANG=en_US num=70 <- 注意 osd 开始数字 for ip in $ips do diskpart=`ssh $ip "fdisk -l | grep GPT | grep -v sda" | awk '{print $1}' | sort` for partition in $diskpart do ssh $ip "ceph auth add osd.$num osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-$num/keyring" let num++ done donecrushmap 获得及重新导入方法
获得默认 crushmap (加密) [ ceph osd getcrushmap -o crushmap.dump ] 备份当前 crushmap [ cp crushmap.dump crushmap.dump_20151218 <- 备份这个当前 crush map ] 转换crushmap 格式(加密格式 -> 明文) [ crushtool -d crushmap.dump -o crushmap.txt ] 转换 crushmap 格式(明文 -> 加密格式) [ crushtool -c crushmap.txt -o crushmap.done ] 重新使用新 crushmap [ ceph osd setcrushmap -i crushmap.done ]startosd.sh
#!/bin/bash start=1 while [ $start -le 3 ] do for ip in $newceph do ssh_port=`nmap -p22 $ip | grep '22/tcp' | awk '{print $2}'` ssh_status=${ssh_port:-faile} if [ "$ssh_status" == "faile" ] then start=1 break else start=10 fi done done for ip in $newceph do ssh $ip 'find /var/lib/ceph/osd/ -maxdepth 1 -name "ceph-*" -exec touch {}/sysvinit \;' done for ip in $newceph do ssh $ip "/etc/init.d/ceph -a start osd" done