CentOS 7.x Failed to start Virtualization daemon



가상화 서버를 사용하려고 했더니 아래와 같이 에러가 나면서 안되더군요~


폭풍 검색을 해서 이것저것 다 해봐도 안되더니 yum update 한방에 해결이 되네요~ ㅎ


[root@vps ~]# systemctl start libvirtd

Job for libvirtd.service failed because the control process exited with error code. See "systemctl status libvirtd.service" and "journalctl -xe" for details.


[root@vps ~]# systemctl status libvirtd

● libvirtd.service - Virtualization daemon

   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)

   Active: failed (Result: start-limit) since Thu 2018-12-06 11:12:39 KST; 4s ago

     Docs: man:libvirtd(8)

           https://libvirt.org

  Process: 30787 ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS (code=exited, status=3)

 Main PID: 30787 (code=exited, status=3)

    Tasks: 2 (limit: 32768)

   CGroup: /system.slice/libvirtd.service

           ├─1795 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper

           └─1796 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper


Dec 06 11:12:39 example.com systemd[1]: Failed to start Virtualization daemon.

Dec 06 11:12:39 example.com systemd[1]: Unit libvirtd.service entered failed state.

Dec 06 11:12:39 example.com systemd[1]: libvirtd.service failed.

Dec 06 11:12:39 example.com systemd[1]: libvirtd.service holdoff time over, scheduling restart.

Dec 06 11:12:39 example.com systemd[1]: start request repeated too quickly for libvirtd.service

Dec 06 11:12:39 example.com systemd[1]: Failed to start Virtualization daemon.

Dec 06 11:12:39 example.com systemd[1]: Unit libvirtd.service entered failed state.

Dec 06 11:12:39 example.com systemd[1]: libvirtd.service failed.


# libvirtd -v

...

error : virModuleLoadFile:53 : internal error: Failed to load module '/usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so': /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so: undefined symbol: rbd_diff_iterate2


주기적으로 yum update 를 해야겠습니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

Tag libvirtd

댓글을 달아 주세요

[아파치] 홈페이지 아이피로 접근시 차단



도메인이 아닌 IP 로 접근시 차단하는 방법입니다.


/etc/httpd/conf.d/ 폴더에 아래내용으로 파일을 생성하고 아파치를 재시작하면 됩니다.


<VirtualHost *:80>

    ServerName 192.168.1.1

    <Location />

        <IfModule mod_authz_core.c>

            # Apache 2.4

            <RequireAny>

                Require all denied

                Require ip 127.0.0.1

            </RequireAny>

        </IfModule>

        <IfModule !mod_authz_core.c>

            # Apache 2.2

            Order Deny,Allow

            Deny from All

            Allow from 127.0.0.1

        </IfModule>

    </Location>

</VirtualHost>


192.168.1.1 을 서버의 아이피로 변경하면 됩니다.


Require ip 127.0.0.1 은 허용아이피인데 없어도 됩니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

[리눅스] vnstat eth0 No such file or directory



vnstat 에서 네트워크 카드명이 디폴트 eth0 가 아닌경우 아래와 같은 에러가 나옵니다.


# vnstat -d

Error: Unable to read database "/var/lib/vnstat/eth0": No such file or directory



ifconfig 에서 확인한 네트워크 정보를 보고 아래 파일을 수정하면 됩니다.


# vi /etc/vnstat.conf


# default interface

#Interface "eth0"

Interface "enp3s0"


수정 후에는 systemctl restart vnstat 을 해주세요~


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

  • iVPS 영은파더♥ 2019.03.18 17:02 신고  댓글주소  수정/삭제  댓글쓰기

    enp2s0: Not enough data available yet.
    일정 시간이 지났는데도 위와 같은 메시지가 뜬다면
    vnstat -u -i enp2s0 명령어를 실행해 보시고, /var/lib/vnstat/ 폴더의 파일 소유권이 vnstat:vnstat 이 맞는지 확인해보세요~

[리눅스] 유저 홈페이지 Data 및 MySQL DB 백업



User 홈페이지 및 데이터베이스를 백업하는 쉘스크립트입니다.


7일이 경과한 백업파일을 자동으로 지워줍니다.


크론에 등록하고 사용하면 됩니다.


#!/bin/sh


DB_ROOT_ID="root"

DB_ROOT_PW="DB비밀번호"

TODAY=`date +%Y%m%d`

DELETE_DATE=`date +%Y%m%d --date='7 days ago'`

DAY_OF_WEEK=`date +%u`

HOME_DIR="/home"

BACKUP_DIR="/백업경로"

ZIP_PW="압축비밀번호"


echo "

Start : "`date` >> /root/log/backup-users.log



for USER_NAME in $(ls $HOME_DIR | grep -v "centos") ; do

if [ -d "$HOME_DIR/$USER_NAME" ] ; then

    USER_BACKUP_DIR="${BACKUP_DIR}/${USER_NAME}"


    if [ ! -d "$USER_BACKUP_DIR" ] ; then

        mkdir -m 700 $USER_BACKUP_DIR

    fi


    if [ ! -d "$USER_BACKUP_DIR/$TODAY" ] ; then

        mkdir -m 700 $USER_BACKUP_DIR/$TODAY

    fi

    USER_BACKUP_DIR="${BACKUP_DIR}/${USER_NAME}/${TODAY}"


    DB_BACKUP_NAME="${USER_BACKUP_DIR}/${USER_NAME}.sql.gz"

    mysqldump -u${DB_ROOT_ID} -p${DB_ROOT_PW} ${USER_NAME} --opt --lock-tables=false | gzip > ${DB_BACKUP_NAME}

    sleep 3

    zip -0P$ZIP_PW $DB_BACKUP_NAME.zip $DB_BACKUP_NAME

    sleep 3

    rm $DB_BACKUP_NAME


    sleep 5

    USER_DIR="${HOME_DIR}/${USER_NAME}"

    DATA_BACKUP_NAME="${USER_BACKUP_DIR}/${USER_NAME}_data.tar.gz"

    cd ${USER_DIR}

    tar czfp $DATA_BACKUP_NAME ./www

    sleep 3

    zip -0P$ZIP_PW $DATA_BACKUP_NAME.zip $DATA_BACKUP_NAME

    sleep 3

    rm $DATA_BACKUP_NAME

    cd


    USER_BACKUP_DEL_DIR="${BACKUP_DIR}/${USER_NAME}/${DELETE_DATE}"

    if [ -d "$USER_BACKUP_DEL_DIR" -a "$USER_BACKUP_DEL_DIR" != "" ] ; then

        rm -rf ${USER_BACKUP_DEL_DIR}

    fi

    sleep 5

fi

done


echo "End User Backup : "`date` >> /root/log/backup-users.log


홈페이지 경로는 /home/유저계정/www 기준으로 되어있으니 자신의 환경에 맞게 수정하세요~


파일 첨부합니다.


backup-users.sh.txt


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

CentOS 웹서비스 start stop 쉘스크립트



굳이 아파치랑 NGINX 를 시작 및 종료를 해주는 스크립트가 필요할까 싶지만, Let's encrypt 인증서 갱신시 웹서비스 포트가 사용중이면 갱신이 안되는 문제점이 있습니다.


pstree 로 웹서비스가 완전히 종료 되었는지 확인하고 종료되는 쉘스크립트입니다.


무한루프에 빠질수도 있기때문에 20초로 제한걸었습니다.


#!/bin/sh



CMD="$1"

LOGFILE="/root/web-service.log"


if [ -e "/usr/bin/systemctl" ] ; then

    WEBCMD1="/usr/bin/systemctl $CMD nginx"

    WEBCMD2="/usr/bin/systemctl $CMD httpd"

else

    WEBCMD1="/sbin/service nginx $CMD"

    WEBCMD2="/sbin/service httpd $CMD"

fi


if [ "$CMD" == "start" ] ; then

    $WEBCMD1 >> $LOGFILE

    $WEBCMD2 >> $LOGFILE

    for i in {1..20}; do

        PSD=`pstree | grep httpd | wc -l`

        if [ $PSD -eq 1 ] ; then

            echo "start" >> $LOGFILE

            break;

        else

            echo "not run" >> $LOGFILE

            sleep 1

        fi

    done

elif [ "$CMD" == "stop" ] ; then

    $WEBCMD1 >> $LOGFILE

    $WEBCMD2 >> $LOGFILE

    for i in {1..20}; do

        PSD=`pstree | grep httpd | wc -l`

        if [ $PSD -eq 0 ] ; then

            echo "stop" >> $LOGFILE

            break;

        else

            echo "running" >> $LOGFILE

            sleep 1

        fi

    done

else

    exit

fi


20초 동안에 안되는 경우는 거의 없겠지만 사용자가 있다거나 그러면 정상동작하지 않을 수도 있습니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

LETSENCRYPT SSL 인증서 자동갱신 쉘스크립트



Let's encrypt 무료 SSL 인증서는 유효기간이 90일입니다.


거의 3달 만에 한번씩 갱신을 해주어야 하는 불편함이 있지요~


아래 처럼 스크립트로 만들어서 크론으로 자동갱신하면 편리합니다.



#!/bin/sh


TODAY=`date +%Y%m%d%H`

LOG_FILE="/root/letsencrypt.txt"

KEY_PATH="/etc/letsencrypt/live"

KEY_FILE="cert.pem"

EMAIL="email@example.com"

DOMAINS="

    www.example.com

    "


if [ -e "/usr/bin/letsencrypt" ] ; then

    LETSENCRYPT="/usr/bin/letsencrypt"

else

    LETSENCRYPT="/root/letsencrypt/letsencrypt-auto"

fi


for DOMAIN in $DOMAINS ; do

    CERT_PATH="$KEY_PATH/$DOMAIN/$KEY_FILE"

    if [ -e "$CERT_PATH" ] ; then

        C_DATE=`openssl x509 -in $CERT_PATH -text -noout | grep After | awk -F ' : ' '{print $2}'`

        R_DATE=`date +%Y%m%d%H --date="$C_DATE -1 days"`

        if [ "$TODAY" -ge "$R_DATE" ] ; then

            echo "# $DOMAIN renew date : "`date` >> $LOG_FILE

            /root/bin/web-service.sh stop

            $LETSENCRYPT renew >> $LOG_FILE

            /root/bin/web-service.sh start

        fi

    else

        echo "# $DOMAIN create date : "`date` >> $LOG_FILE

        /root/bin/web-service.sh stop

        $LETSENCRYPT certonly --standalone --agree-tos -m $EMAIL -d $DOMAIN

        /root/bin/web-service.sh start

    fi

done


web-service.sh 스크립트는 자신의 환경에 맞게 직접 만드셔야 합니다.


아파치랑 nginx 를 같이 사용한다면 둘다 서비스를 종료했다가 다시 재시작 해주는 스크립트를 만들면 됩니다.


https://ivps.tistory.com/630 여기를 참고하면 됩니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

저사양 VPS 스왑메모리 생성 스크립트



메모리 용량이 적은 사양의 VPS 를 개설했더니 스왑메모리가 0으로 잡혀있네요~


스왑메모리가 0으로 되어 있으면 yum update 또는 install 등 서버 운영 중간에 에러가 잘 발생합니다.


mkdir -p /var/spool/swap

dd if=/dev/zero of=/var/spool/swap/swapfile bs=1M count=1024

chmod 600 /var/spool/swap/swapfile

mkswap /var/spool/swap/swapfile

swapon /var/spool/swap/swapfile

swapon -s

echo "/var/spool/swap/swapfile none swap defaults 0 0" >> /etc/fstab


용량을 1기가로 하려면 위 명령어를 그대로 붙여넣으면 됩니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

[CentOS] 초기 설치 상태로 초기화 방법



설치 초기 상태로 돌리는 방법은 처음에 디스크 통째로 백업 받지 않았다면 완전하게 돌리는 방법은 없습니다.


그러나 설치한 패키지를 되돌리는 방법은 있습니다. ( /var/log 라던가 환경설치 파일은 남게 됩니다. )


yum history list all


yum history info 목록번호


yum history undo 목록번호


yum 으로 설치한 내역을 보고 undo 로 이전 상태로 되돌릴 수 있습니다.


yum 이 아닌 컴파일 설치라던가 이런건 직접 지워야 합니다.


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요

[MySQL] DB hotcopy 백업 쉘스크립트



리플리케이션으로 데이터베이스를 동기화 하기전에 기존 데이터를 미리 백업 받아야 합니다.


mysqldump 명령어로 덤프를 하여도 되지만 innodb 가 아닌 myisam 이라면 핫카피가 됩니다.


myisam 테이블이란 가정하에 DB를 백업하는 쉘스크립트입니다.


#!/bin/sh


SERVER_HOST="root@example.com"

SERVER_PORT="22222"

SYNC_DIR_M="/var/lib/mysql/데이터베이스명/"

SYNC_DIR_S="/var/lib/mysql/데이터베이스명/"

# 1920KB/s = 15Mb/s

SYNC_SPD=1920


rsync -av --bwlimit=$SYNC_SPD -e "ssh -p$SERVER_PORT" $SERVER_HOST:$SYNC_DIR_M $SYNC_DIR_S


슬래이브 서버에서 실행하면 됩니다.


단점이 DB 운영중 rsync 시에는 실제 마스터서버의 데이터와 핫카피 한 슬래이브 서버의 데이터는 완전히 일치하지 않는다는 점입니다.



블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

Tag HotCopy, MySQL

댓글을 달아 주세요

[MySQL] Replication 마스터 동기화 쉘스크립트



리플리케이션 하다가 도중에 슬래이브 서버를 재시작 해야 하는 경우 마스터의 로그 파일의 포지션을 맞추는게 은근 짜증이 납니다.


DB를 멈춰 놓고 작업하면 느긋하게 해도 되지만 마스터 DB는 동작을 멈추면 안되는 경우엔 사용자가 없는 새벽시간을 이용해 작업하기도 그렇죠~


그래서 쉘스크립트로 마스터의 정보를 읽어와서 바로 CHANGE MSATER TO SQL을 실행하도록 해보았습니다.


#!/bin/sh


M_DB_HOST="MASTER서버"

M_DB_USER="리플리케이션유저아이디"

M_DB_PASS="리플리케이션유저비밀번호"

S_DB_USER="SLAVE루트아이디"

S_DB_PASS="SLAVE비밀번호"


MASTER_STATUS=(`mysql -h$M_DB_HOST -u$M_DB_USER -p$M_DB_PASS -e "SHOW MASTER STATUS" | grep -v "File"`)


SQL1="STOP SLAVE;"

SQL2="SET GLOBAL replicate_do_db = '동기화데이터베이스1,동기화데이터베이스2';"

SQL3="\

CHANGE MASTER TO \

MASTER_HOST='$M_DB_HOST', \

MASTER_USER='$M_DB_USER', \

MASTER_PASSWORD='$M_DB_PASS', \

MASTER_PORT=3306, \

MASTER_LOG_FILE='${MASTER_STATUS[0]}', \

MASTER_LOG_POS=${MASTER_STATUS[1]}; \

"

SQL4="START SLAVE;"


mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL1"

mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL2"

mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL3"

mysql -u$S_DB_USER -p$S_DB_PASS -e "$SQL4"


색깔이 있는 부분은 자신의 환경에 맞게 고쳐야 합니다.


응용하시면 됩니다.



mysql-replication.sh.txt


스크립트파일도 첨부하였습니다.


기존 데이터 백업은 https://ivps.tistory.com/607 여기를 참고하세요~




REPLICATION 유저로 SHOW MASTER STATUS 시 권한을 따로 주어야 합니다.


GRANT REPLICATION CLIENT ON *.* TO '유저아이디'@'%' IDENTIFIED BY '비밀번호';


블로그 이미지

iVPS 영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

댓글을 달아 주세요