KVM 가상화를 사용하고 있고 게스트로 Ubuntu18.04 를 사용하고 있다면 콘솔 접속을 위해서는 다음과 같이 해주어야 한다. /etc/default/grub 편집 grub 에서 ttyS0 에 콘솔 접속이 되도록 다음과 같이 편집해 준다. 위와같이 편집을 한 후에 grub 을 다시 작성해준다. 위와같이 설정을 하고 재부팅을 한 후에 KVM 콘솔 접속을 하면 아주 잘 된다.
Bash 파일 존재 유무 체크하기
Bash 쉘 스크립트를 작성할때 자주 사용하는 로직인 바로 파일 존재 유무를 체크하는 것이다. 파일 하나만 체크할 수도 있고 여러파일을 체크할 수도 있다. 여러 파일을 체크할때는 다음과 같이 할 것이다.
|
1 2 |
]$ ls *file.txt ls: cannot access *file.txt: 그런 파일이나 디렉터리가 없습니다 |
이것을 Bash 쉘 스크립트에서는 어떻게 리턴을 받아야 하나하는 고민이 생긴다. 가장 쉬운 방법은 stdout, stderror 를 체크하는 방법이다. Bash 에서 이를 exit code 라고 하고 $? 에 세팅이되어 다음과 같은 로직이 가능해진다.
|
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash ls *file.txt if [ $? -eq 0 ] then echo "file exist!!" else echo "file doesn't exist!!" >&2 fi |
명령어가 성공(stdout)하면 $?에 0, stderr 면 1 이다. 위를 실행하면 다음과 같다.
|
1 2 3 |
]$ ./a.sh ls: cannot access *file.txt: 그런 파일이나 디렉터리가 없습니다 file doesn't exist!! |
위 방법외에도 한줄로 다음과 […]
Database 를 위한 공유 메모리, HugePages 계산하기
Database 시스템은 공유메모리 혹은 HugePages 에 매우 의존적입니다. 서버에서 데이터베이스가 가동되면 Database 가 사용하는 메모리는 Database만을 위해서 사용되어 집니다. 대부분의 큰 Database 시스템은 다른 서버 프로그램 없이 단독으로 설치되어 운영되어지기 때문에 얼마만큼 물리적 메모리를 Database 에 할당할지가 Database 시스템 전체에 큰 영향을 미칩니다. 이 글에서 Database 시스템을 위한 공유메모리, HugePages 등을 할당할때에 고려사항은 무엇이며 얼마나 할당하는 것이 좋은지를 살펴보겠습니다. Oracle 11g or 12c 먼저 Oracle 은 물리적 메모리에 약 80% 를 Oracle 이 사용하도록 할당하도록 합니다. 여기서 대략 80% 라고 […]
Telegraf 설치 및 설정
Telegraf 는 서버내의 각종 지표들을 수집하는 에이전트(Agent) 프로그램 입니다. 서버 자체뿐만 아니라 각종 서버소프트웨어들에 지표도 함께 수집할 수 있으며 InfluxDB, OpenTSDB, Kafka 등과 같은 데이터소스(Datasource)에 저장하도록 할 수 있습니다. 환경 설치 및 설정 환경은 다음과 같습니다. CentOS x86_64 설치 설치는 Telegraf 홈페이지에서 관련 파일을 다운로드 받으면 됩니다. Telegraf 는 배포판별로 패키지를 제공하기 때문에 편하게 설치를 할 수 있습니다.
|
1 2 |
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.1-1.x86_64.rpm yum localinstall telegraf-1.3.1-1.x86_64.rpm |
설정 설정은 /etc/telegraf/telegraf.conf 파일에서 해주시면 되며, 주요 설정은 다음과 같습니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
[agent] ## Specify the log file name. The empty string means to log to stderr. logfile = "/var/log/telegraf/telegraf.log" ## Override default hostname, if empty use os.Hostname() hostname = "systemv" [[outputs.influxdb]] # urls = ["udp://localhost:8089"] # UDP endpoint example urls = ["http://localhost:8086"] # required ## The target database for metrics (telegraf will create it if not exists). database = "systemv" # required username = "systemv" password = "패스워드" [[inputs.cpu]] percpu = true totalcpu = true collect_cpu_time = false [[inputs.disk]] mount_points = ["/"] ignore_fs = ["tmpfs", "devtmpfs"] [[inputs.diskio]] devices = ["sda"] [[inputs.kernel]] [[inputs.mem]] [[inputs.processes]] [[inputs.swap]] [[inputs.system]] [[inputs.net]] interfaces = ["eth0"] [[inputs.netstat]] |
위 설정만으로도 주요한 Linux 시스템의 지표들을 수집할 수 있습니다. […]
InfluxDB 설치 및 설정
InfluxDB 는 Time Series Database 로 각광을 받는 데이터베이스 시스템입니다. SQL 로 데이터 조회가 가능하며 Retention 설정(보유기간을 설정) 할 수 있는 특징이 있습니다. 환경 설치 환경은 다음과 같습니다. CentOS x86_64 설치 다음의 페이지에서 다운로드를 받을 수 있습니다. https://portal.influxdata.com/downloads InfluxDB 는 각 배포판별로 패키지를 제공 합니다. 패키지를 이용하면 손쉽게 설치할 수 있고 init script 등록도 자동으로 되기 때문에 패키지 설치를 권장 합니다.
|
1 2 |
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm yum localinstall influxdb-1.2.4.x86_64.rpm |
설치가 끝나면 다음과 같은 파일들을 확인할 수 있습니다.
|
1 2 |
/etc/influxdb/influxdb.conf # 설정 파일 /etc/rc.d/init.d/influxdb # init Script 파일 |
설정 대부분의 설정은 /etc/influxdb/influxdb.conf 파일에서 이루어 집니다. 주요한 설정은 […]
x86_64 시스템에서 4MB 크기 HugePageSize 변경 불가.
HugePage 는 Linux 의 기본 메모리 페이지 크기인 4K(4096) 가 아닌 더 큰 페이지를 사용하도록함으로서 잦은 메모리 액세스를 줄여 자원 소모를 줄이게 해준다. 최신의 Linux 는 전부 이것을 지원하며 다음과 같이 확인 할 수 있다.
|
1 2 3 4 5 6 7 8 |
[orion@localhost ~]$ grep Huge /proc/meminfo AnonHugePages: 96256 kB ShmemHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB |
기본 메모리 페이지는 Hugepagesize 인 2MB(2048kb) 임을 확인할 수 있다. 그런데, 이 메모리 페이지 크기를 바꿀 수 있지 않을까? 결론부터 말하면 불가능하다. 이 Hugepagesize 는 CPU 지원에 의존한다. 2MB – cpu에 ‘pse’ 가 지원되면 된다. 1G – cpu 가 ‘pdpe1gb’ 가 지원되면 된다. 최신의 […]
Linux PAGE_SIZE 그리고 HugePage
다음의 글이 도움이 될 듯 싶다. Kernel hugepages does not alter the calculation of SHMMAX, which you need to set large enough to fit your largest Oracle SGA. SHMMAX applies to SYS V shared memory, which can be hugepages or use conventional 4K memory pages. SHMMAX is not relevant when you use /dev/shm POSIX shared memory (Oracle AMM). The Oracle database requires shared memory for the SGA. This can be Sys V (IPC) or POSIX /dev/shm. Shared memory and semaphores, […]
XFS 마운트 옵션.
XFS 파일 시스템은 요즘에 들어서 많이 사용되는 파일 시스템입니다. SGI 회사에서 개발한 것으로 대용량 파일 시스템으로 특화되어 있습니다. 최근들어 Big Data 가 대두되면서 스토리지 용량이 대용량화 되면서 XFS 가 떠오르는데, CentOS 7 배포판은 기본 파일시스템으로 XFS 가 되었습니다. XFS 는 옵션들이 많이 있는데, 보통 대용량으로 많이 사용할 경우에 다음과 같은 옵션을 주로 많이 사용합니다.
|
1 |
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,nobarrier,logbufs=8 0 2 |
UBUNTU 14.04 KVM 게스트에 콘솔 접속하기
KVM 가상화를 사용하고 있고 게스트로 Ubuntu14.04 를 사용하고 있다면 콘솔 접속을 위해서는 다음과 같이 해주어야 한다. ttyS0 터미널 설정 KVM 게스트인 Ubuntu14.04 에 콘솔로 접속하기 위해서는 게스트 Ubuntu14.04 에 ttyS0 터미널로 접속을 해야 한다. 그런데 Ubuntu 14.04 에는 ttyS0 터미널 설정이 되어 있지 않아 이를 설정을 해야 한다. /etc/init/ttyS0.conf 파일을 다음과 같이 생성한다.
|
1 2 3 4 5 6 7 8 9 10 |
# ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -L 115200 ttyS0 xterm |
그리고 다음과 같이 /etc/securetty 파일에 ttyS0 를 추가 해준다.
|
1 |
ttyS0 |
/etc/default/grub 편집 이제 grub 에서 ttyS0 이 콘솔 접속이 되도록 다음과 같이 편접해 준다. […]