#サーバー側
インストール
wget -P /etc/yum.repos.dhttp://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo
sed -i 's/^enabled=1/enabled=0/g' /etc/yum.repos.d/glusterfs-epel.repo
yum install --enablerepo=glusterfs-epel glusterfs{-fuse,-server}
chkconfig glusterd on
service glusterd start
データー領域(ブリック)の作成
Red Hat Storageの場合、ストレージブリックのファイルシステムはLVM + XFSじゃないとサポートされない。
LVM作成
pvcreate {DEVICE-PATH}
vgcreate {VG-NAME} {DEVICE-PATH}
lvcreate -L 100G -n {LV-NAME} {VG-NAME}
ファイルシステムのフォーマット
xfsかext4どちらか選択
#####xfsフォーマット
yum install xfsprogs
mkfs.xfs -i size=512 {DEVICE-PATH}
mkdir -p {PATH}
vi /etc/fstab
/dev/{VG-NAME}/{LV-NAME} {PATH} xfs defaults 1 2
mount -a
#####ext4フォーマット
mkfs.ext4 -I 512 {DEVICE-PATH}
mkdir -p {PATH}
vi /etc/fstab
/dev/mapper/{VG-NAME}-{LV-NAME} {PATH} ext4 defaults 1 2
mount -a
peer
gluster peer probe {GLUSTERIP|HOST}
gluster peer status
volume
Distributed Volume
- ファイル分散方式でGlusterFSデフォルトの構成
- ファイルはいずれかのサーバーに格納
- サーバーに障害が発生した場合は、そのサーバー内に保存されているファイルだけが参照できない
gluster volume create {VOLNAME} \
{GLUSTERIP|HOST}:{PATH} \
{GLUSTERIP|HOST}:{PATH}
Striped Volume
- RAID 0 方式
- ひとつのファイルをサーバー間で分割(ストライプサイズ:デフォルト128KB)格納
- サーバーに障害が発生した場合は、全てのファイルにアクセスできなくなる
gluster volume create {VOLNAME} \
stripe {COUNT} \
{GLUSTERIP|HOST}:{PATH} \
{GLUSTERIP|HOST}:{PATH}
Replicated Volume
- RAID 1 方式
- ひとつのファイルをサーバー間でミラーリングする
- サーバーに障害が発生した場合は、片方のサーバーからファイルにアクセスできる
gluster volume create {VOLNAME} \
replica {REPLICA_COUNT} \
{GLUSTERIP|HOST}:{PATH} \
{GLUSTERIP|HOST}:{PATH}
起動
gluster volume start {VOLNAME}
確認
gluster volume info
gluster volume status
nfsインストール(nfsマウントする場合のみ)
yum install nfs-utils rpcbind
chkconfig rpcbind on
service rpcbind start
service nfs stop
#クライアント側
インストール
wget -P /etc/yum.repos.dhttp://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo
sed -i 's/^enabled=1/enabled=0/g' /etc/yum.repos.d/glusterfs-epel.repo
yum install --enablerepo=glusterfs-epel glusterfs-fuse
マウント
mkdir -p {MOUNT_PATH}
glusterfs/nfsどちらか選択
glusterfsによるマウント
mount -t glusterfs {GLUSTERIP|HOST}:/{VOLNAME} {MOUNT_PATH}
nfsによるマウント
OS 標準の nfs でなはくgluster専用の nfs を使うため、nfsは起動してはいけない。
mount -t nfs -o mountproto=tcp,vers=3 {GLUSTERIP|HOST}:/{VOLNAME} /{MOUNT_PATH}
GlusterFS用チューニング
kernel_tuner.sh
#!/bin/sh
#--- memo --
# 参考:https://sites.google.com/site/glusterfstech/install
#--- vm.swappiness [デフォルト:60]
# 0にすると物理メモリを使いきるまでswapしなくなる。
#--- vm.dirty_background_ratio [デフォルト:10]
#メモリに対してdirtyデータが指定の%になるとバックグラウンドでpdflushが動作
#値を小さくすればこまめに掃除をし、メモリが空く可能性がある。
#--- kernel.sched_wakeup_granularity_ns [デフォルト:2000000]
#--- /sys/block/sda/queue/scheduler [デフォルト:cfq]
#------ noop
#------ anticipatory
#------ cfq
# 全てのプロセスに均等にI/Oを割り当てる。
# 多数のプロセスが細かいI/Oを大量に発生させる場合はこれが良い。
#------ deadline
# I/O待ち時間の限界点(deadline)を設けて、
# それが近付いたものを優先的に処理していく。
# 少数のプロセスが大量のI/Oを発生させる環境に適している。
#--- /sys/block/sda/queue/nr_requests [デフォルト:128]
# 数値を増やすことによりより多くのI/O要求を受け付けられるようになるが、
# I/Oデバイスの種類によってはQueueが長過ぎる状態となり、
# 逆にパフォーマンスが悪化する場合もある
function set_sysctl(){
local SYSCTL_NAME=$1
local SYSCTL_NEW=$2
SYSCTL_OLD=$(sysctl -n "${SYSCTL_NAME}")
sysctl -w ${SYSCTL_NAME}=${SYSCTL_NEW}
local MESSAGE="${SYSCTL_NAME} ${SYSCTL_OLD} >> ${SYSCTL_NEW}"
logging "${MESSAGE}"
}
function logging(){
local MESSAGGE=$1
echo "${MESSAGE}"
logger -ip local0.info ${MESSAGE}
}
function set_sys(){
local SCHEDULER_NEW="deadline"
local NR_REQUESTS_NEW=256
for IOSCHED_PATH in $(ls -d /sys/block/*/queue/iosched 2>/dev/null); do
if [ -z ${IOSCHED_PATH} ]
then
continue
else
QUEUE_DIR=$(dirname ${IOSCHED_PATH})
SCHEDULER_PATH="${QUEUE_DIR}/scheduler"
NR_REQUESTS_PATH="${QUEUE_DIR}/nr_requests"
if [ -f ${SCHEDULER_PATH} ]
then
SCHEDULER_OLD=$(cat "${SCHEDULER_PATH}")
echo "${SCHEDULER_NEW}" > ${SCHEDULER_PATH}
MESSAGE="${SCHEDULER_PATH} ${SCHEDULER_OLD} >> ${SCHEDULER_NEW}"
logging "${MESSAGE}"
fi
if [ -f ${NR_REQUESTS_PATH} ]
then
NR_REQUESTS_OLD=$(cat ${NR_REQUESTS_PATH})
echo "${NR_REQUESTS_NEW}" > ${NR_REQUESTS_PATH}
MESSAGE="${NR_REQUESTS_PATH} ${NR_REQUESTS_OLD} >> ${NR_REQUESTS_NEW}"
logging "${MESSAGE}"
fi
fi
done
}
set_sysctl "vm.swappiness" "10"
set_sysctl "vm.dirty_background_ratio" "1"
set_sysctl "kernel.sched_wakeup_granularity_ns" "15"
set_sys