KVM virsh shutdown 명령어 안먹히는 문제



virsh 옵션에서 suspend 와 resume 은 동작을 하는데 shutdown reboot 이 작동을 안한다면


VM 안의 OS 에서 ACPID 가 설치되지 않았기 때문입니다.



먼저 vm의 콘솔로 진입합니다.

# virsh console vm명


빠지는 방법은 Ctrl + ]



그리고 acpid 데몬을 설치합니다.


# yum -y install acpid

# chkconfig acpid on

# service acpid start


CentOS 7.x 버전이라면


# systemctl enable acpid

# systemctl start acpid


재부팅 또는 위처럼 acpid 데몬을 시작해주면 됩니다.



이제 테스트 해보세요~


블로그 이미지

영은파더♥

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

,

CentOS VM 복제후 네트워크가 안되는 경우




virt-clone 으로 VM 을 복제한 후에 아래 처럼 네트워크가 안잡히는 경우에 해결 방법입니다.


# ifup eth0
Device eth0 does not seem to be present, delaying initialization.


먼저 /etc/udev/rules.d/70-persistent-net.rules 파일을 수정합니다.


▶ 수정전


# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="51:54:00:0f:e4:65", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="51:54:00:5b:70:a2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"



▶ 수정후


# PCI device 0x1af4:0x1000 (virtio-pci)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="51:54:00:0f:e4:65", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1af4:0x1000 (virtio-pci)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="51:54:00:5b:70:a2", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


eth0 부분을 막고 eth1 로 되어 있는 부분은 eth0 로 변경하면 됩니다.


이제 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 수정합니다.


HWADDR="51:54:00:5b:70:a2"


HWADDR 부분을 찾아서 저위에 있는 MAC Address 로 변경합니다.


재부팅해서 정상적으로 동작하는지 확인합니다.


블로그 이미지

영은파더♥

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

,

KVM VM 복제 명령어 virt-clone 사용방법



virt-install 로 설치된 vm 을 복제할 수가 있습니다.


먼저 VM이 작동중이라면 멈춘 다음에 복사가 가능합니다.


▶ VM 일시정지


# virsh suspend c7-a

Domain c7-a suspended

재시작 : virsh resume c7-a ( 복사가 끝나면 재시작 해줍니다. )



▶ VM 복제


# virt-clone --original c7-a \

--name c6-a \

--file /var/lib/libvirt/images/c6-a.img

Allocating 'c6-a.img'                                    |  10 GB     01:11

Clone 'c6-a' created successfully.



▶ VM 시작


# virsh start c6-a
Domain c6-a started



virsh 명령어는 https://ivps.tistory.com/403 여기를 참고하세요~


VM 복제후 네트워크 안되는 문제는 https://ivps.tistory.com/405 여기를 참고하세요~


블로그 이미지

영은파더♥

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

,

KVM 가상화 컨트롤 명령어 virsh




▶ VM 목록보기


# virsh list

# virsh list --all

--all : destroy 옵션으로 지워진 항목까지 볼 수 있음


▶ VM 콘솔


# virsh console vmName



▶ VM 끄기


# virsh shutdown vmName



▶ VM 켜기


# virsh start vmName



▶ VM 재부팅


# virsh reboot vmName



▶ VM 일시정지


# virsh suspend vmName



▶ VM 재시작


# virsh resume vmName



▶ VM 수정


# virsh edit vmName



▶ VM 저장


# virsh save vmName 파일명



▶ VM 복원


# virsh restore 파일명



▶ VM 삭제


# virsh destroy c7-a
# virsh undefine c7-a
# rm -rf /var/lib/libvirt/images/c7-a.img


c7-a 는 vmName



virsh shutdown 명령어가 동작하지 않는 문제는 https://ivps.tistory.com/406 여기를 참고하세요~


블로그 이미지

영은파더♥

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

,

리눅스 하드디스크 정보 확인 명령어



리눅스에서 HDD 정보를 확인하는 방법입니다.


먼저 df 나 fdisk 로 디바이스명 부터 알아내어 명령어 뒤에 옵션을 넣어주면 됩니다.


[root@localhost ~]# hdparm -i /dev/sda

/dev/sda:

 Model=Hitachi HDS721010DLE630, FwRev=MS2OA610, SerialNo=MSK533Y32346SB
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
 BuffType=DualPortCache, BuffSize=25956kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode


hdparm 명령어가 먹히지 않는다면 yum install hdparm 으로 설치하면 됩니다.



가상서버 VPS는 아래 처럼 나옵니다.


[root@vps ~]# hdparm -i /dev/sda

/dev/sda:

 Model=QEMU HARDDISK, FwRev=1.5.3, SerialNo=QM00001
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=32256, SectSize=512, ECCbytes=4
 BuffType=DualPortCache, BuffSize=256kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=104857600
 IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 *mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: ATA/ATAPI-5 published, ANSI INCITS 340-2000:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode

[root@vps ~]# hdparm -i /dev/sdb

/dev/sdb:

 Model=QEMU HARDDISK, FwRev=1.5.3, SerialNo=031072f8-5e1f-47bb-8
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=32256, SectSize=512, ECCbytes=4
 BuffType=DualPortCache, BuffSize=256kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=419430400
 IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 *mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: ATA/ATAPI-5 published, ANSI INCITS 340-2000:  ATA/ATAPI-4,5,6,7

 * signifies the current active mode


어떤 vps 는 정보가 제대로 나오지 않는 경우도 있습니다.


/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 HDIO_GET_IDENTITY failed: Invalid argument


구글 클라우드 플랫폼은 위 처럼 나오더군요~


블로그 이미지

영은파더♥

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

,

리눅스 한글도메인 네임서버 설정



한글로 된 도메인을 DNS에 적용하려면 먼저 퓨니코드로 변환을 하여야 합니다.


https://whois.kisa.or.kr/idnconv/index.jsp 여기에서 변환이 가능합니다.




변환된 코드로 ZONE 파일을 만듭니다.


# vi /var/named/xn--hq1bm8j61f5shrks.kr.zone

$TTL    86400
@       IN      SOA     ns.xn--hq1bm8j61f5shrks.kr.        root (
                                        2017102510      ; serial
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expire
                                        1D )            ; minimum
        IN      NS              ns.xn--hq1bm8j61f5shrks.kr.
        IN      A               xxx.xxx.xxx.xxx
ns      IN      A               xxx.xxx.xxx.xxx
www     IN      A               xxx.xxx.xxx.xxx


그리고 /etc/named.rfc1912.zones 파일에 아래 내용을 추가합니다.


zone "xn--hq1bm8j61f5shrks.kr" IN {
        type master;
        file "xn--hq1bm8j61f5shrks.kr.zone";
        allow-update { none; };
};


이제 named 데몬을 재시작 하면 됩니다.


# service named restart


블로그 이미지

영은파더♥

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

,

크론탭 초단위 실행 방법


cron 의 최소실행 단위는 분입니다.

하지만 crontab 에 아래 처럼 등록을 하면 10초 단위로 실행을 하게 됩니다.

* * * * * root sleep  0 ; date >> /root/cron.log
* * * * * root sleep 10 ; date >> /root/cron.log
* * * * * root sleep 20 ; date >> /root/cron.log
* * * * * root sleep 30 ; date >> /root/cron.log
* * * * * root sleep 40 ; date >> /root/cron.log
* * * * * root sleep 50 ; date >> /root/cron.log

그리고 부하가 걸리는 작업은 초단위로 실행 안하는게 좋습니다.


위 샘플을 응용해서 작성하면 될 것 같습니다.


블로그 이미지

영은파더♥

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

,

DNSMASQ MAC Address 별 iSCSI 타겟지정


iSCSI 네트워크 부팅시 Client 의 네트워크 카드 맥 어드레스에 따라 IP를 지정하고 iscsi 타겟을 지정하는 방법입니다.

dhcp-host 와 dhcp-option 으로 MAC Address 로 분기할 수 있습니다.


domain=localhost.localdomain
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,1h
dhcp-option=option:router,192.168.1.1
enable-tftp
tftp-root=/var/lib/tftpboot

pxe-service=net:#iPXE,x86PC,"PXE Network booting",undionly.kpxe
dhcp-match=iPXE,175

dhcp-host=00:00:00:00:00:01,net:iPXE-boot1,192.168.1.101,12h
dhcp-option=net:iPXE-boot1,17,"iscsi:192.168.1.3:::1:disk01"

dhcp-host=00:00:00:00:00:02,net:iPXE-boot2,192.168.1.102,12h
dhcp-option=net:iPXE-boot2,17,"iscsi:192.168.1.3:::1:disk02"

dhcp-host=00:00:00:00:00:03,net:iPXE-boot3,192.168.1.103,12h
dhcp-option=net:iPXE-boot3,17,"iscsi:192.168.1.3:::1:disk03"

아이피 대역은 본인의 환경에 맞게 설정하면 됩니다.


블로그 이미지

영은파더♥

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

,

LETSENCRYPT 인증서 만료날짜 알아내는 방법



lentsencrypt 로 발급 받은 인증서는 유효기간이 90일입니다.


그래서 90일 마다 갱신을 해주어야 하는데 만료날짜를 알아내는 방법입니다.


정확하게 알아내는 방법은 아래와 같습니다.


# openssl x509 -in /etc/letsencrypt/live/www.example.com/cert.pem -text -noout | grep After
            Not After : Dec 21 04:33:00 2017 GMT


좀 더 디테일하게 파싱까지 하면


# openssl x509 -in /etc/letsencrypt/live/www.example.com/cert.pem -text -noout | grep After | awk -F ' : ' '{print $2}'

Dec 21 04:33:00 2017 GMT


# AFTERDAY=`openssl x509 -in /etc/letsencrypt/live/www.example.com/cert.pem -text -noout | grep After | awk -F ' : ' '{print $2}'`

# date +%Y%m%d --date="$AFTERDAY"

20171221

쉘스크립트로 만들어서 활용하면 됩니다.


간단하게는


stat /etc/letsencrypt/live/www.example.com/cert.pem | grep Modify


위 명령어로 생성일자 +90 만료일자를 계산하는 방법도 있습니다.



블로그 이미지

영은파더♥

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

,

CentOS 7.x 노하드 시스템 iSCSI & PXE 환경구축


하드디스크 없이 네트워크로 윈도우를 부팅하려면 먼저 iSCSI 스토리지 서버와 PXE 서버 구축이 되어 있어야 합니다.

그리고 미리 윈도우 이미지를 만들어 두어야 합니다.


1. 패키지 설치

yum install epel-release wget scsi-target-utils iscsi-initiator-utils dnsmasq


2. 방화벽 설정

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --permanent --zone=public --add-service=dhcp
firewall-cmd --permanent --zone=public --add-service=iscsi-target
firewall-cmd --permanent --zone=public --add-port=69/udp
firewall-cmd --permanent --zone=public --add-port=4011/udp
firewall-cmd --reload


3. iSCSI 스토리지 설정

vi /etc/tgt/targets.conf

<target disk01>
    backing-store /iscsi/disk01.img
    initiator-address ALL
    #incominguser iscsi pass1234
</target>

systemctl enable tgtd
systemctl start tgtd

OS 이미지인 disk01.img 는 미리 작업해서 올려두어야 합니다.

tgt-admin -s 명령어로 정상적으로 설정되었는지 확인합니다.

iscsi 초기자로 테스트하는 방법

# iSCSI 설정

iscsiadm -m discovery -t st -p 192.168.1.3
iscsiadm -m node --targetname disk01 --portal 192.168.1.3:3260 --login

( 안되면 tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL 명령어 실행 후 다시 재시도)


# iSCSI 해제

iscsiadm -m node --targetname disk01 --portal 192.168.1.3:3260 --logout
iscsiadm -m discovery --portal 192.168.1.3:3260 --op=delete


4. PXE 부팅 환경 작업

mkdir /var/lib/tftpboot

wget -O /var/lib/tftpboot/undionly.kpxe http://boot.ipxe.org/undionly.kpxe


5. dnsmasq 환경 설정

vi /etc/dnsmasq.d/dhcp.conf

domain=localhost.localdomain
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,1h
dhcp-option=option:router,192.168.1.1
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-match=iPXE,175
dhcp-option=net:iPXE,17,"iscsi:192.168.1.3:::1:disk01"
pxe-service=net:#iPXE,x86PC,"PXE Network booting",undionly.kpxe

systemctl enable dnsmasq
systemctl start dnsmasq

아이피 환경은 맞게 수정하셔야 합니다.

그리고 iPXE 는 다른 이름으로 해도 상관없습니다.

접속주소는 iscsi:아이피주소:프로토콜:포트번호:룬번호:타겟명 이런 형태입니다.

예) iscsi:192.168.1.3:tcp:3260:1:disk01

MAC Address 별로 iscsi 타겟을 따로 지정하려면 https://ivps.tistory.com/371 여기를 참고하세요.


이제 설정이 완료되었습니다.

다른 클라이언트에서 테스트 해보고 안되면 서버를 재부팅 한 다음에 다시 시도해보세요~


PXE 네트워크 부팅 동영상 보기

https://youtu.be/jZdWfViNcIU ( Win10 )

https://youtu.be/tCZcA25oKqg ( Win7 )



윈도우7 은 iSCSI 관련 핫픽스 패치를 한 이후에 이미지를 만들면 부팅이 되던데,

윈도우10 은 블루스크린이 뜨면서 부팅실패를 하는군요~


윈도우7용은 패치 파일 첨부합니다.

Windows6.1-KB2550978-x64[1].msu

Windows6.1-KB976042-v2-x64[1].msu


윈도우10은 성공했다는 글은 봤는데 좀 복잡해서 나중에 패치가 나오길 기다려봅니다~ ㅎ


블로그 이미지

영은파더♥

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

,