728x90
반응형

Zabbix 설치 이후 한글 설정하는 방법에 대해 설명 합니다. 

Zabbix Web 한글 설정 

  • 매뉴바에서 User settings 버튼을 클릭합니다. 

 

  • 한글을 선택 합니다. 

 

Zabbix 폰트 다운로드 

  • 그래프의 지표 의 한글 항목이 깨져서 출력이 됩니다. 
  • 폰트를 다운로드 받아 한글 깨짐 현상을 해결하는 방법에 대한 설명 입니다. 
  • Zabbix 설치 시 웹 소스는 /usr/share/fonts/dejavu/ 에 위치 하게 됩니다. 
    • Roky Linux 9 버전은 /usr/share/fonts/dejavu-sans-fonts/ 입니다. 
  • 네이버에서 한글 폰트를 다운로드 받아 심볼릭 링크를 걸어 주면 한글 깨짐 현상이 해결 됩니다. 
cd /usr/share/fonts/dejavu/
wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip

unzip NanumFont_TTF_ALL.zip

cd /etc/alternatives/
#기존 폰트 백업
mv zabbix-web-font  zabbix-web-font_bak
#심볼릭 링크 수행
ln -s /usr/share/fonts/dejavu/NanumGothic.ttf /etc/alternatives/zabbix-web-font

#Rocky Linux release 9.4 (Blue Onyx)
ln -s /usr/share/fonts/dejavu-sans-fonts/NanumGothic.ttf /etc/alternatives/zabbix-web-font

 

[root@mysvr ~]# cd /usr/share/fonts/dejavu/
[root@mysvr dejavu]# wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
--2024-04-16 12:47:38--  http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
Resolving cdn.naver.com (cdn.naver.com)... 125.209.207.10, 183.111.124.155, 211.47.29.199
Connecting to cdn.naver.com (cdn.naver.com)|125.209.207.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14946146 (14M) [application/zip]
Saving to: ‘NanumFont_TTF_ALL.zip’

100%[==================================================================================================================================>] 14,946,146  54.5MB/s   in 0.3s   

2024-04-16 12:47:39 (54.5 MB/s) - ‘NanumFont_TTF_ALL.zip’ saved [14946146/14946146]

[root@mysvr dejavu]# unzip NanumFont_TTF_ALL.zip
Archive:  NanumFont_TTF_ALL.zip
  inflating: NanumBrush.ttf          
  inflating: NanumGothic.ttf         
  inflating: NanumGothicBold.ttf     
  inflating: NanumGothicExtraBold.ttf  
  inflating: NanumMyeongjo.ttf       
  inflating: NanumMyeongjoBold.ttf   
  inflating: NanumMyeongjoExtraBold.ttf  
  inflating: NanumPen.ttf
[root@mysvr dejavu]# cd /etc/alternatives/
  • 웹페이지 에서 확인하면 한글이 정상적으로 출력이 됩니다. 

728x90
반응형
728x90
반응형

리눅스 SELinux 변경 이후  리눅스 재부팅시 에러 해결 방법 

  • 부팅시 Failed to load SELinux policy, freezing. 에러 발생 

 

/etc/selinux/config   파일을 수정이후 부팅이 실패 할 경우 

[root@centos7:/root]$ cat  /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
[root@centos7:/root]$

 

  • 부팅 화면에서 키보드 e 를 누르고 

  • selinux=0 추가 후 재부팅
  • Ctrl + x  를 누르면 다시 부팅이 된다. 

 

 

SELinux 란? 

SELinux(보안 강화 리눅스)는 리눅스 운영 체제의 보안 기능 중 하나로, 프로세스, 파일 및 네트워크에 대한 접근을 제어하는 매커니즘입니다. SELinux는 NSA(미국 국가 안보국)와 레드햇이 공동으로 개발한 프로젝트로, 리눅스 커널에 포함되어 있습니다.

 

  • /etc/selinux/config 파라미터 설명 
    • enforcing 모드: 모든 SELinux 정책이 적용되고 보안 위반이 감지되면 해당 작업이 차단됩니다.
    • permissive 모드: SELinux는 로그를 기록하지만 작업을 차단하지는 않습니다.
    • disabled 모드: SELinux가 완전히 비활성화됩니다.
728x90
반응형
728x90
반응형
  • CentOS 7.9 환경에서 Zabbix 5.0 설치 방법에 대해 설명 합니다. 

환경구성

  • Zabbix Server 설치 (Vmware) 
  • ZAbbix Agent 리눅스(Centos 7.9)  데스크탑

Zabbix 5.0 Server 설치

PostgreSQL 설치 

rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum -y install postgresql12-server postgresql12-contrib
/usr/pgsql-12/bin/postgresql-12-setup initdb

 

  • PostgreSQL 환경 설정 
    • vi /var/lib/pgsql/12/data/postgresql.conf 
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*'
  • vi /var/lib/pgsql/12/data/pg_hba.conf 
vi /var/lib/pgsql/12/data/pg_hba.conf    
#추가 
host    all             postgres        0.0.0.0/0               trust

 

  • PostgreSQL 기동
systemctl restart postgresql-12
systemctl enable postgresql-12

 

  • PostgreSQL Zabbix Metadata Create 
sudo -u postgres createuser --pwprompt zabbix

sudo -u postgres createdb -O zabbix zabbix

zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix

Zabbix 5.0 sever 설치 

https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&components=server_frontend_agent&db=pgsql&ws=apache

 

Download and install Zabbix

 

www.zabbix.com

  •  Install Zabbix repository & Install Zabbix server, frontend, agent
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

yum clean all
yum install zabbix-server-pgsql zabbix-agent
yum install centos-release-scl

 

  •  /etc/yum.repos.d/zabbix.repo 수정
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

 

  • Zabbix frontend packages 설치
yum install zabbix-web-pgsql-scl zabbix-apache-conf-scl
  • /etc/zabbix/zabbix_server.conf DBPassword 수정
vi /etc/zabbix/zabbix_server.conf

  • PHP for Zabbix frontend 설정 파일 수정 
vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Seoul

 

  •  Zabbix server and agent 시작 
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

# zabbix 중지 
#systemctl stop zabbix-server zabbix-agent httpd rh-php72-php-fpm
  • SELinux httpd 활성화
setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db on

setsebool -P zabbix_can_network on
service httpd restart

 

  • zabbix 로그 확인
tail -f /var/log/zabbix/zabbix_server.log

Zabbix Web 연결 설정

정상적으로 설치가 완료 되면 zabbix 웹 에 접속 하여 추가 환경 설정을 셋팅 한다.

접속  Url 은 http://[서버ip]/zabbix/ 이다 

  • Zabbix 접속 화면 

  •  zabbix install 정보 확인 

  • PostgreSQL 접속 정보 셋팅 

  • Zabbix 서버 접속 정보 설정

  • Zabbix 셋팅 정보 요약

Zabbix 설치 완료

  • /etc/zabbix/web/zabbix.conf.php

 

  • 설치가 완료되면 Zabbix 웹 페이지에 접속 해서 모니터링 셋팅을 진행 한다. 
  • 최초 접속 비밀 번호는 Admin/zabbix 이다 .

  • 로그인 후 DashBord 화면 

 

Zabbix 5.0 모니터링 설정 

  • 정상적으로 설치 및 셋팅이 완료 되었다면 Zabbix 가 설치된 리눅스 서버의 리소스를 모니터링 할수 있다 
  • Monitoring -> Hosts -> Zabbix server -> Graphs 

  • 조회기간 변경 검색 조회

 

 

Zabbix 5.0 Agent 설치

  • 원격 서버의 시스템 자원을 모니터링하기 위해 agent 를 설치하는 방법에 대한 설명한다.

Zabbix repository  및 Agent 설치 

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all

yum install zabbix-agent

 

Zabbix Agent Config 수정

vi /etc/zabbix/zabbix_agentd.conf

 

  • Zabbix Server IP  수정 
  • Zabbix  Agent Port 설정 
### Option: Server
#       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
#       and '::/0' will allow any IPv4 or IPv6 address.
#       '0.0.0.0/0' can be used to allow any IPv4 address.
#       Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=192.168.116.200

### Option: ListenPort
#       Agent will listen on this port for connections from the server.
#
# Mandatory: no
# Range: 1024-32767
# Default:
ListenPort=10050

 

Zabbix Agent 재시작 

systemctl restart zabbix-agent 
systemctl enable zabbix-agent
systemctl status zabbix-agent

 

Zabbix  Web Host 추가 

  • 모니터링할 서버에 Zabbix Agent 를 성공적으로 설치 완료 하였다면 Zabbix Webpage 에 접속하여 
  • 호스트를 작성하여 설치한 리모트 서버의 Zabbix Agent 를 등록해 줍니다. 

 

  • Host name : 모티너링 대상 서버 별칭 
  • Agent : Zabbix Agent 를 설치한 서버 IP 
  • Port : Zabbix Agent Port (default : 10050)

  • 템플릿-> Template OS Linux by Zabbix agent 선택

 

  • 정상적으로  호스트 등록이 완료 되면 ZBX 박스가 녹색으로 표시된다.

 

 

Zabbix  Web DashBord 설정

  • Zabbix 기능중에는 Dash Bord 작성기능이 있습니다. 
  • 원하는 지표를 사용자 정의에 따라 구성하여 모니터링을 할수 있습니다. 
  • 신규로 DashBoard 를 생성 하고 원하는 위젯을 추가 하여 원하는 지표를 생성 합니다. 
  • 매뉴-> 대시보드 ->대시보드 작성 클릭 

 

 

  • DashBoard 구성이 완료 되면 변경사항 저장합니다. 

 

Zabbix  Agent Disk 사용량 항목 추가 

  • Zabbix Agent를 설치시 Disk 모니터링 지표는 기본적으로 설치 되지 않습니다. 
  • Template Import 기능을 사용해서 Disk 부가 정보를 모니터링 하기위한 지표를 추가 합니다. 

Disk 지표 추가 관련 설정 

mkdir -p /etc/zabbix/zabbix_agentd.d/
wget https://raw.githubusercontent.com/grundic/zabbix-disk-performance/master/userparameter_diskstats.conf -O /etc/zabbix/zabbix_agentd.d/userparameter_diskstats.conf

# Scripts download 
wget https://raw.githubusercontent.com/grundic/zabbix-disk-performance/master/lld-disks.py -O /usr/local/bin/lld-disks.py
chmod +x /usr/local/bin/lld-disks.py

 

Disk 지표 템플릿 파일 다운로드

Template Disk Performance.xml
0.05MB

 

  • 매뉴 -> 설정 -> 템플릿 ->가져오기 클릭후 다운로드 받은 템플릿을 Import 시켜 줍니다. 

  • 앞서 등록한 호스트 정보 클릭 후 추가한 Templage Disk Performance 를 추가 합니다. 

 

  • Disk 관련 정보가 보이지 않는다면 Host 그룹에 Zabbix Sservers 도 추가 합니다.

 

  • Disk 지표가 추가 작업이 정상적으로 완료 되었다면 원형 그래프로 디스크 사용량을 확인할수 있습니다. 

728x90
반응형
728x90
반응형

NFS 란? 

NFS(Network File System)는 여러 컴퓨터 간에 파일을 공유하기 위한 분산 파일 시스템 프로토콜입니다. NFS는 클라이언트-서버 모델을 기반으로 하며, 클라이언트는 네트워크를 통해 NFS 서버의 파일 시스템에 액세스할 수 있습니다. 이를 통해 여러 사용자가 동일한 파일이나 디렉터리를 공유하고, 파일 시스템 자원을 효율적으로 활용할 수 있습니다.

 

NFS 동작 원리

  1. 서버 설정: 먼저 파일을 공유할 서버에서 NFS를 설정해야 합니다. 서버의 파일 시스템 중 NFS로 공유하고자 하는 디렉터리를 선택하고, 이 디렉터리를 /etc/exports와 같은 설정 파일에 등록합니다. 이 설정 파일은 클라이언트에게 공유 디렉터리의 경로와 액세스 권한을 제공합니다.
  2. 클라이언트 마운트: NFS 클라이언트에서는 NFS 서버의 공유 디렉터리를 마운트하여 사용할 수 있습니다. 클라이언트에서는 NFS 마운트 포인트를 생성하고, 이를 통해 서버의 공유된 디렉터리에 액세스할 수 있습니다.

 

NFS 동작 원리

  1. 파일 공유: NFS는 여러 사용자가 동일한 파일이나 디렉터리를 공유할 수 있도록 합니다. 이를 통해 여러 사용자가 동일한 파일에 접근하여 작업할 수 있습니다.
  2. 중앙 관리: NFS를 사용하면 파일이 중앙 서버에 저장되므로 관리 및 유지 보수가 간단해집니다. 파일의 한 복사본을 유지하므로 데이터 일관성도 쉽게 유지할 수 있습니다.
  3. 데이터 백업: NFS를 사용하여 클라이언트에서 중앙 서버로 데이터를 백업할 수 있습니다. 이를 통해 중앙화된 백업 시스템을 유지하고, 데이터를 보호할 수 있습니다.
  4. 클라우드 스토리지: 클라우드 환경에서도 NFS는 파일 공유 및 저장에 널리 사용됩니다. 클라우드에서 NFS를 사용하면 여러 가상 머신 간에 데이터를 공유하고, 파일 시스템을 유연하게 확장할 수 있습니다.

 

NFS  서버 설치 

centos 7.9 환경에서 NFS 설치 하는 방법에 대해 알아보겠습습니다. 

 

nfs 패키지 설치 

#설치 유무 확인
rpm -qa | grep nfs-utils

#nfs 팩키지 설치 
yum install nfs-utils

 

서비스 시작 

systemctl enable nfs-server
systemctl start nfs-server

 

서비스 상태 확인 

[root@mysvr:/root]$ systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
   Active: active (exited) since 화 2024-03-12 16:20:39 KST; 23s ago
  Process: 2523 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 2506 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 2504 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 2506 (code=exited, status=0/SUCCESS)
    Tasks: 0
   CGroup: /system.slice/nfs-server.service

 3월 12 16:20:39 mysvr systemd[1]: Starting NFS server and services...
 3월 12 16:20:39 mysvr systemd[1]: Started NFS server and services.

 

마운트 디렉토리 생성 

mkdir share_disk

chmod 777 /share_disk

 

마운트 설정

  • /etc/exports 파일 수정 및 적용 
  • 수정된 파일 내용 적용: exportfs -r 
/share_disk 192.168.116.*(rw,no_root_squash,sync)

 

  • /share_disk: 공유할 디렉터리의 경로입니다.
  • *: 모든 클라이언트에게 액세스를 허용함을 나타냅니다.
  • rw: 읽기 및 쓰기 액세스를 허용하는 옵션입니다.
  • sync: 변경 사항을 디스크에 즉시 동기화하는 옵션입니다.
  • no_root_squash: 클라이언트의 root 사용자가 파일에 액세스할 때 해당 사용자를 시스템의 root로 매핑하지 않음을 나타내는 옵션입니다.
  • async: 변경 사항을 비동기적으로 디스크에 동기화합니다.
  • no_root_squash: 클라이언트의 root 사용자를 서버의 root 사용자로 매핑하지 않습니다.
  • root_squash: 클라이언트의 root 사용자를 서버의 nfsnobody 사용자로 매핑합니다.
  • all_squash: 모든 사용자를 서버의 nfsnobody 사용자로 매핑합니다.

적용된 마운트 설정 확인

showmount -e
exportfs -v

NFS 클라이언트 설정

 

마운트 디렉토리 생성 

 mkdir nfs_share_disk
 chmod 777 nfs_share_disk

 

NFS 설치 

#설치 유무 확인
rpm -qa | grep nfs-utils

#nfs 팩키지 설치 
yum install nfs-utils

#서비스 시작 
systemctl enable nfs-server
systemctl start nfs-server

 

마운트

mount -t nfs 192.168.116.10:/share_disk /nfs_share_disk

 

[root@mysvr:/root]$ df -Th
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                      tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                      tmpfs     1.9G   13M  1.9G   1% /run
tmpfs                      tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root    xfs        26G  6.3G   20G  25% /
/dev/sda1                  xfs      1014M  185M  830M  19% /boot
/dev/mapper/centos-home    ext2       25G   15G  9.3G  61% /home
tmpfs                      tmpfs     378M   12K  378M   1% /run/user/42
tmpfs                      tmpfs     378M     0  378M   0% /run/user/0
192.168.116.10:/share_disk nfs4       26G  6.5G   20G  25% /nfs_share_disk

 

마운트 영구 적용 (/etc/fstab)

192.168.116.10:/share_disk /nfs_share_disk nfs rw,noatime,sync 0 0

 

  • 마운트 사용 정의는 아래와 같습니다. 
<device> <mount_point> <filesystem_type> <mount_options> <dump> <pass>

 

  • <device>: 마운트할 디바이스의 경로 또는 UUID입니다. 이것은 보통 디스크 파티션 또는 네트워크 파일 시스템의 주소입니다.
  • <mount_point>: 디바이스가 마운트될 디렉터리의 경로입니다.
  • <filesystem_type>: 파일 시스템의 종류를 나타냅니다. 예를 들어, ext4, nfs, ntfs 등이 있습니다.
  • <mount_options>: 마운트 옵션을 나타냅니다. 읽기 전용으로 마운트할지 읽기/쓰기로 마운트할지 등을 정의할 수 있습니다. 
      1. rw / ro:
        • rw: 읽기/쓰기 모드로 파일 시스템을 마운트합니다.
        • ro: 읽기 전용 모드로 파일 시스템을 마운트합니다.
      2. auto / noauto:
        • auto: 부팅 시 자동으로 마운트됩니다.
        • noauto: 수동으로 마운트해야 합니다. 부팅 시 자동으로 마운트되지 않습니다.
      3. exec / noexec:
        • exec: 이 파일 시스템에서 바이너리 실행 파일을 실행할 수 있습니다.
        • noexec: 이 파일 시스템에서 바이너리 실행 파일을 실행할 수 없습니다.
      4. user / nouser:
        • user: 일반 사용자도 마운트 및 언마운트를 할 수 있습니다.
        • nouser: 일반 사용자는 마운트 및 언마운트를 할 수 없습니다. 관리자 권한이 필요합니다.
      5. sync / async:
        • sync: 변경 사항을 디스크에 즉시 동기화합니다. 안정성을 높이지만 성능이 저하될 수 있습니다.
        • async: 변경 사항을 비동기적으로 디스크에 동기화합니다. 성능을 높이지만 안정성이 낮아질 수 있습니다.
      6. defaults: 기본 마운트 옵션을 사용합니다. 일반적으로 rw, suid, dev, exec, auto, nouser, async와 같은 옵션을 포함합니다.
      7. uid, gid: 특정 사용자 ID 또는 그룹 ID에 속하는 사용자 또는 그룹에 대해 마운트된 파일 시스템을 마운트합니다.
      8. umask, dmask, fmask: 마운트된 디렉터리 또는 파일에 대한 권한 마스크를 설정합니다.
      9. noatime, relatime, strictatime: 파일 시스템에 대한 액세스 시간을 변경하는 옵션입니다. 성능을 높이기 위해 noatime을 사용할 수 있습니다.
      10. noacl, acl: Access Control Lists (ACL)를 사용할지 여부를 지정합니다.
  • <dump>: 백업 프로그램이 시스템을 백업할 때 이 파일 시스템을 백업해야 하는지 여부를 나타냅니다. 일반적으로 0으로 설정되어 있습니다.
  • <pass>: 시스템 부팅 시 파일 시스템을 체크해야 하는 순서를 나타냅니다. 일반적으로 1로 설정되어 있습니다.

 

NFS 연동 테스트 

  • 각 nfs 설치된 서버에서 파일을 생성하면 어떤 노드에서도 생성하더라도 파일을 공유할수 있게된다.

728x90
반응형
728x90
반응형

한글 설정 방법

Ctrl + Shitp + P 버튼을 누른다음 Configure Display Language 를 검색 합니다. 

 

 

한국어를 선택하고 재실행 합니다. 

 

728x90
반응형
728x90
반응형

 

  • cannot create temp file for here-document: 장치에 남은 공간이 없음 에러가 발생할 경우 
  • 리눅스 용량 부족시 디스크 추가하는 방법에 대해 정리합니다. 

 => cannot create temp file for here-document: 장치에 남은 공간이 없음

현재 디스크 사용량 확인 

  • df -Th 명령을 통해 현재 사용중인 디스크 사용량을 확인합니다. 
[root@mysvr:/root]$ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G   1% /run
tmpfs                   tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       6.0G  6.0G  3.5M 100% /
/dev/sda1               xfs      1014M  185M  830M  19% /boot
/dev/mapper/centos-home ext2       25G  8.9G   15G  38% /home
tmpfs                   tmpfs     378M  8.0K  378M   1% /run/user/42
tmpfs                   tmpfs     378M     0  378M   0% /run/user/0

 

  • lvdisplay 확인 
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                cwMNqw-gJSs-7nDO-GrRU-bgxE-FLB5-7acfhK
  LV Write Access        read/write
  LV Creation host, time localhost, 2023-03-09 07:40:48 +0900
  LV Status              available
  # open                 2
  LV Size                8.00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                kRPPw7-Ffr2-Bf20-CsE9-UDkt-aCdO-Y4DvFo
  LV Write Access        read/write
  LV Creation host, time localhost, 2023-03-09 07:40:48 +0900
  LV Status              available
  # open                 1
  LV Size                <6.00 GiB
  Current LE             1535
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

 

디스크 추가 

  • fdisk -l 을 통해 추가한 disk 정보를 확인 합니다. 
  • 용량 증설을 위해 hdd 를 20G 추가 했습니다. 

 

  • 추가한 디스크에 대해 파티션을 생성 합니다. 
  • fdisk /dev/sdb
[root@mysvr:/root]$ fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8135267e.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): =>엔터
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): =>엔터
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

  • 파티셔닝한 디스크 /dev/sdb1 를 Physical Volume 생성 한다.
  • pvscan 이나 pvdisplay 명령을 통해 pysical volume 정보를 확인 한다. 
pvcreate  /dev/sdb1
pvscan
pvdisplay

 

  • vgextend 명령을 통해 centos 볼륨 그룹에 새로 추가한 pysical volume 를 확장 한다.
vgextend centos /dev/sdb1

 

  • lvextend 명령을 통해 부족했던 lvm 을 확장 합니다. 
lvextend /dev/mapper/centos-root -l +100%FREE

 

  • pvscan 명령을 통해 centos 으로 pv 가 추가 되었는지 확인 한다.

 

  • xfs_growfs 명령을 통해 논리 볼륨을 resizing 한다. 
    • ext4  포멧일 경울 resize2fs /dev/mapper/centos-root 수행 합니다. 
    • xfs type 에 대해  resize2fs 명령을 수행 하면 아래 처럼 에러가 발생함.

[root@mysvr:/root]$ resize2fs /dev/mapper/centos-root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root
Couldn't find valid filesystem superblock.
[root@mysvr:/root]$ blkid /dev/mapper/centos-root
/dev/mapper/centos-root: UUID="f4704f6c-5120-4c0f-b46b-7a0c31f390e5" TYPE="xfs" 

 

  • xfs_growfs 를 수행 하지 않으면 용량 증설이 되지 않는다.
xfs_growfs /dev/mapper/centos-root

 

  • df -Th 명령을 통해 용량이 증설 되었는지 확인 
  • 6G 에서 20G 로 용량이 증설 된것을 확인 할수 있다.

 

 

728x90
반응형
728x90
반응형

리눅스에서 커널버전을  업그레이드 하는 방법에 대해 알아보겠습니다. 

 

현재 설치된 서버는 Centos 6.9 버전입니다. 

 

 

 

리눅스 커널버전 확인

  • 현재 설치된 커널 버전을 확인하는 방법은 아래와 같이 여러 방법이 있습니다. 
uname -r 
cat /proc/version
cat /proc/sys/kernel/osrelease
dmesg | grep "Linux version"

 

커널 버전 다운로드 

아래 사이트에서 원하는 커널 버전을 다운로드 받습니다. 

저는 3.14 버전으로 업그레이드를 하기 위해 3.14 커널 버전을 다운로드 받습니다.

cd /var

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.14.1.tar.gz    --no-check-certificate

tar xvzf linux-3.14.1.tar.gz

 

https://mirrors.edge.kernel.org/pub/linux/kernel/

 

Index of /pub/linux/kernel/

 

mirrors.edge.kernel.org

 

 

 

커널 버전 업그레이드(kernel 2.6 -> 3.1) 

  • 이제 본격적으로 커널을 업그레이드 하겠습니다.

커널 업데이트 사전 셋팅 

  • 패키지 설치
yum install ncurses-devel 
yum groupinstall "Development Tools"
  • /usr/src 폴더로 이동후 링크를 걸어줍니다. 
cd /usr/src
ln -s /var/linux-3.14.1 linux

 

  • 커널 버전을 업데이트 진행
make mrproper
make clean
cp /boot/config-2.6.32-754.35.1.el6.x86_64  ./.config

 

커널 환경 설정 셋팅

  • 커널 설정 파일 적용
  • make menuconfig 실행 하면 아래 화면이 나옵니다. 
  • 화살표 버튼 (->) 을 눌러 서 Load 버튼을 클릭 합니다. 

  • OK 버튼을 클릭합니다.

  • Gerneral setup 을 선택 합니다. 

  • Enable deprecated sysfs features to support old userspace tools 를 체크 합니다.
  • 체크 이후 Save 버튼을 누릅니다. 

  • OK 버튼을 누르고 나옵니다. 

 

  • 위과정을 통해 커널 설정에 대한 기본 셋팅을 마쳤습니다.

커널 빌드

  • 설정 셋팅이 완료 되었다면 이제 신규 버전으로 빌드를 진행 합니다. 
  • 빌드시 꽤 많이 시간이 소요 됩니다. 
  • 조금이라도 빠르게 빌드를 원한 다면 make -j 옵션을 사용 하세요 
    • make -j 4  modules_install 
make all 
make moules_install
make install

 

  • make install 시 에러가 발생 한다면 무시하셔도 됩니다. 

ERROR: modinfo: could not find module snd_page_alloc

 

  • uname -a 로 변경 된 커널 버전을 확인 합니다. 
  • 만약 변경이 되지 않을 경우 /boot/grub/grub.conf 파일에서 default 버전을 변경 합니다. 
  • default=0 으로 변경후 reboot 을 후에 다시 커널 버전을 확인 합니다. 

  • 2.6 에서 3.14 로 커널 버전이 업그레이드 된것을 확인 할수 있습니다.
[root@centos6 linux]# uname -r 
3.14.1
[root@centos6 linux]# cat /proc/version
Linux version 3.14.1 (root@centos6) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #2 SMP Thu Dec 21 19:44:34 KST 2023
[root@centos6 linux]# cat /proc/sys/kernel/osrelease
3.14.1
[root@centos6 linux]# dmesg | grep "Linux version"
Linux version 3.14.1 (root@centos6) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #2 SMP Thu Dec 21 19:44:34 KST 2023
[root@centos6 linux]# 


 

 

 

728x90
반응형
728x90
반응형
  • gitlab 과 git 을 사용하면서 발생한 에러에 대해 해결 방법을 기록 합니다. 
  • Gtk-WARNING 발생 
    • 에러내용 : ※ (gnome-ssh-askpass:22626): Gtk-WARNING **: 20:48:04.168: cannot open display:
    • 해결 방법 : unset SSH_ASKPASS
  • fatal: empty ident name
    • 에러내용 : 

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <dev-account@centos7.(none)>) not allowed

 

  • 해결방법: 계정 정보를 등록 한다. 
728x90
반응형
728x90
반응형

gitlab 올라간 특정 디렉토리만 다운로드 받을 수 있는 방법을 소개 합니다. 

일반적으로 git clone 을 수행 하면 gitlab 에 등록된 프로젝트를 모두 다운로드 받게 되는데 

이럴경우 원하지 않는 파일도 모두 다운로드 받게 되어 비효율 적입니다. 

이번 글에서는 git config core.sparsecheckout true 명령을 통해 프로젝트중 원하는 디렉토리만 다운로드 방법을 소개 하겠습니다. 

 

GitLab 프로젝트 생성

  • 테스트위해 우선 임의로 아래 처럼 테스트를 위해 프로젝트를 생성 하고 디렉토리를 만듭니다.

[dev-account@centos7:/home/dev-account/test]$ tree -L 3
|-- guide_doc
|   `-- doc
|       |-- ReadMe.md
`-- testProject
    |-- README.md
    `-- guide_doc
        |-- doc
        `-- etc
6 directories, 3 files

 

GitLab 특정 디렉토리(폴더) 다운로드 

  • git lab 에 등록된 파일을 다운로드 받기 위해 test 프로젝트를 만듭니다. 
mkdir test
cd test

 

  • 이후 test 디렉 토리로 이동하여 local emtpy repository 를 생성 gitlab 프로젝트 정보를 등록 합니다. 
git init

git remote add -f origin http://xxx.xxx.xxx.xxx:6060/comdoc/testProject.git
  • 특정 디렉토리만 다운로드 받기 위해 sparse-checkout 을 활성화 합니다. 
  • guide_doc/doc  는 testProject 하위 폴더 입니다. 
echo "guide_doc/doc" > .git/info/sparse-checkout
git config core.sparsecheckout true
  • git pull 명령을 통해 디렉토리를 내려 받습니다. 
git pull origin main

 

git pull origin main
계정 및 비밀번호 입력 

remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (11/11), done.
From http://192.168.17.83:6060/comdoc/testProject
 * branch            main       -> FETCH_HEAD
[dev-account@centos7:/home/dev-account/test]$ ls
guide_doc
[dev-account@centos7:/home/dev-account/test]$ ll
total 0
drwxr-xr-x 4 dev-account dev-account  35 Dec 19 19:35 .
drwx------ 7 dev-account dev-account 193 Dec 19 19:25 ..
drwxr-xr-x 8 dev-account dev-account 162 Dec 19 19:35 .git
drwxr-xr-x 3 dev-account dev-account  17 Dec 19 19:35 guide_doc

 

GitLab 파일 수정 및 추가 후 업로드 [git push] 

  • 다운로드 받은 디렉토리에서 파일을 추가 하거나 수정 할경우 아래 절차로 gitlab 서버에 파일을 업로드 할수 있습니다.
    • git add [파일명]
    •  git commit -m "[comment]"
    • git push origin main
  • 테스트를 위해 임의로 쉘 스크립트를 만들었습니다. 
[dev-account@centos7:/home/dev-account/test/guide_doc/doc]$ vi test.sh
#!/bin/bash

while [[ $# -gt 0 ]]; do
  case $1 in
    -a|--option-a)
      arg_a="$2"
      shift
      ;;
    -b|--option-b)
      arg_b="$2"
      shift
      ;;
    *)
      # 알 수 없는 옵션에 대한 처리
      echo "Unknown option: $1"
      exit 1
      ;;
  esac
  shift
done

echo "Option -a: $arg_a"
echo "Option -b: $arg_b"

 

git add option_test.sh
git commit -m "option test shell commit"
  • git commit 명령 수행중 에러가 발생하면 에러 내용에 따라 git lab 계정정보를 등록 해주면 됩니다. 

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <dev-account@centos7.(none)>) not allowed

 

[dev-account@centos7:/home/dev-account/test/guide_doc/doc]$ git config --global user.email "test_user@example.com"
[dev-account@centos7:/home/dev-account/test/guide_doc/doc]$ git config --global user.name "test_user "
[dev-account@centos7:/home/dev-account/test/guide_doc/doc]$ git commit -m "option test shell commit"              
[master 6609602] option test shell commit
 1 file changed, 24 insertions(+)
 create mode 100644 guide_doc/doc/option_test.sh

 

  • local 에 저장된 파일을 이제 gitlab 프로젝트로 업로드 합니다. 
git push origin main
  • 아래 에러가 발생 할경우 브렌치를 변경해 줘야 합니다. [master -> main]
error: src refspec main does not match any.
error: failed to push some refs to 'http://xxx.xxx.xxx.xxx/comdoc/testProject.git'

 

git show-ref
git remote -v
git status

git branch -m master main

 

  • GitLab 파일 업로드 확인 

 

 

728x90
반응형
728x90
반응형
  • Centos 에서 현재 사용중인 포트를 확인 하는 방법에 대해 알아보겠습니다. 

netstat 명령 

  • 리눅스에서는 netstat  명령으로 현재 litten 하고 있는 포트 정보는 내외부 네트워크연결 정보를 상세하게 확인 할수 있습니다. 
  • netstat  명령에 -tulpn 옵션을 추가하면 현재 사용중인 포트정보만 확인 가능 합니다. 
    • -t: TCP 프로토콜에 관련된 정보를 표시합니다.
    • -u: UDP 프로토콜에 관련된 정보를 표시합니다.
    • -l: 현재 리스닝 상태인 소켓만 표시합니다.
    • -p: 프로세스 ID 및 프로그램 이름과 함께 소켓 정보를 표시합니다.
    • -n: 호스트 및 포트 번호를 숫자로 표시합니다. 호스트 및 포트를 이름으로 변환하지 않습니다.

현재 사용중인 포트 체크

  • netstat 명령어를 사용하여 현재 사용 중인 포트를 확인하고 awk 사용 중인 포트만 나열 합니다.
  • 이후 sort -n 을 통해 사용중인 포트를 정렬하여 출력 합니다. 
netstat -tulpn | awk '/LISTEN/ {print $4}' | awk -F ":" '{print $NF}' | sort -n 
22

사용 가능한 포트 확인 

  • 좀더 확장하여 사용가능한 포를 확인하는 방법을 쉘스크립트를 통해 알아보겠습니다. 
  • 아래 쉘은 사용가능 한 Ranage 를 입력받고  현재 사용중인 port 리스트 중 range 가 사용자가 입력한 범위 이상의 포트 대역대만 출력 하는 스크립트입니다. 
  • read -p 를 통해 사용하고자 하는 포트 범위를 입력 합니다. 
#!/bin/bash

read -p " 원하는 포트 범위를 입력하세요:" check_port_range
echo " $check_port_range 범위 이상의 포트 범위를 체크합니다. " 



# 현재 사용 중인 포트와 포트 범위를 확인하는 스크립트
# netstat 명령어를 사용하여 현재 사용 중인 포트를 확인하고 awk로 정리합니다.
# 마지막에 sort 명령어를 사용하여 포트를 정렬합니다.

used_ports=$(netstat -tulpn | awk '/LISTEN/ {print $4}' | awk -F ":" '{print $NF}' | sort -n | uniq)


# 포트 범위를 확인하는 함수
check_port_range() {
  local start_port=$1
  local end_port=$2
  port_range=$(expr $end_port - $start_port)

  if [ $port_range -ge $check_port_range ]; then
      echo " [ $(expr $port_range ) ] :  $(expr $start_port + 1 ) ~ $(expr $end_port + 1 ) " 
    
  fi

}

# 사용 중인 포트를 확인하면서 포트 범위를 확인합니다.
IFS=$'\n'
start_port=0

echo "PORT_RANGE : START_PORT ~ END_PORT" 
echo "================================================="
for port in $used_ports; do

  check_port_range "$start_port" "$port"
  start_port=$port

done

 

728x90
반응형

+ Recent posts