실행환경: CentOS 7.5.1804 

자바: Oracle JDK 8 version 


아래의 작업은 모두 root 계정으로 진행되었다. 

1. Oracle JDK 8버전을 Linux x64 환경에서 작동할 .tar.gz 형식으로 된 파일로 다운로드 한다. 


2. 파일질라를 이용하여 설치하고자 하는 서버에다가 다운로드 받은 파일을 /opt 밑으로 이동시킨다. 


3. 압축해제를 한 후 생성된 디렉토리명을 java로 변경해 준다. 

$tar xzvf jdk-8u191-linux-x64.tar.gz $mv jdk1.8.0_191 java 


4. /etc/profile 파일 밑에다가 다음 내용을 추가해 준다. 

export JAVA_HOME=/opt/java export JRE_HOME=$JAVA_HOME/jre 

export PATH=/$PATH:/opt/java/bin:/opt/java/jre/bin 


5. 여기까지 하고 변경된 내용을 시스템에 적용시켜준다. 

$source /etc/profile

반응형

설치 환경: Red Hat Enterprise Linux 7.6 버전


1. Golang 타르 파일 다운로드 하기. 어떤 버전의 파일을 다운로드 받을지는 여기서 (https://golang.org/dl/) 확인하기.

$wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz


2. 다운받은 파일을 압축해제.
$tar -xzf go1.11.4.linux-amd64.tar.gz

3. 압축해제된 디렉토리를 /usr/local 밑으로 이동.
$mv go /usr/local

4. ~/.bash_profile을 열어서 실행환경을 다음과 같이 추가해준다.
1
2
3
4
export GOROOT=/usr/local/go
export GOPATH=/opt/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
 
cs


5. 변경된 내용을 source 커맨드를 이용하여 적용해 준 후 go version 커맨드를 실행해 보면 설치가 되었음을 확인할 수 있다.
$source ~/.bash_profile


반응형

값에 의한 호출은 함수를 호출할 때 매개변수 값을 복사해서 함수 내부로 전달한다. 함수 내부에서는 전달된 매개변수의 본래 값을 변경할 수 없다. Go는 값에 의한 호출이 기본이며, 함수 내부에서 본래 값을 변경하려면 & 연산자로 변수의 메모리 주소를 전달해야 한다.


다음은 값에 의한 호출 예제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
 
import "fmt"
 
func inc(i int) {
    i = i + 1
}
 
func main() {
    i := 10
    inc(i)
    fmt.Println(i)
}
cs

위의 코드를 실행하면 10이 나온다. 


참조에 의한 호출로 매개변수를 전달하면 함수에서는 전달한 매개변수의 메모리 주소를 매개변수로 받는다. 이때 * 연산자를 사용하여 매개변수 타입을 포인터로 지정해야 한다. 함수의 매개변수 타입을 포인터로 지정하면 변수의 값이 아닌 변수의 메모리 주소가 전달된다. 이렇게 포인터로 메모리 주소에 접근하면 매개변수로 전달된 인수의 본래 값을 변경할 수 있다. 단, 참조 타입인 슬라이스와 맵은 메모리의 참조 값을 전달하는게 기본이다.


다음은 참조에 의한 호출 예제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
 
import "fmt"
 
func inc(i *int) {
    *= *+ 1
}
 
func main() {
    i := 10
    inc(&i)
    fmt.Println(i)
}
cs


위의 코드를 실행하면 11이 나온다.

반응형

사설 네트워크 (흔히 192.168.x.x로 나오는 IP 주소가 사설 네트워크이다)는 원칙적으로 외부와 소통할 수 없다. 외부와 소통하기 위해서는 인터넷 주소 관리 기관에서 공식적으로 발급받은 공인 IP를 가지고 있어야만 한다.


그렇다면 공인 IP를 갖고 있지 않은 개별 컴퓨터 (혹은 서버)는 어떻게 외부와 소통하는 것일까?


(이미지 출처: https://www.onlinecomputertips.com/support-categories/networking/601-network-address-translation-nat)


우리가 인터넷을 통해 어떤 사이트에 접속 한다고 하자. 도메인의 이름은 abc.com이라고 할 때, 이 abc.com이라는 도메인은 171.12.18.101, 171.12.18.102 171.12.18.103이라는 각 공인 IP에 매핑되어 있다. 바로 이 공인 IP를 사설 IP로 바꿔주는 것이 NAT의 역할이다. 이렇게 함으로써 사설 IP를 추가하여 내부 서버를 증설하더라도 공인 IP의 개수에 구애받지 않을 수 있다. 


반대로 각 내부 서버에서 외부로 요청이 나갈때, NAT는 사설 IP를 공인 IP로 바꿔준다. 즉 위의 이미지에서 어떤 내부 서버에서 요청을 외부로 보낸다고 할 때, 발신 IP는 매핑된 공인 IP 발신으로 나가게 된다. 

반응형

'Web & Network' 카테고리의 다른 글

웹소켓 (Websocket)은 무엇인가?  (0) 2022.12.11

뭔가 전문가 스럽지 못한 (?) 방법이지만 아무튼 다음과 같다.


1. 리파지터리에 들어가서 issues 탭을 클릭한다. 그러면 다음과 같은 화면이 펼쳐지는데


여기서 'New issue' 버튼 (녹색 바탕에 흰 글자)을 클릭하면 글을 적는 화면이 나온다. 글쓰기 박스 하단에 영어로 Attach files by dragging & dropping, selecting item, or pasting from the clipboard.라고 써있는 문구가 있는데, 여기서 selecting them을 클릭하면 PC 이미지를 선택할 수 있다. 이 중에 삽입하고자 하는 이미지를 가져오면 하단과 같이 문자열로 처리되어 나타난다.


이것을 README.md 파일에 갖다 붙이면 이미지가 삽입되는 것을 확인할 수 있다.

반응형

기본 조건: LVM 확장이 되어 있음


XFS 파일시스템에서는 xfs_growfs 커맨드를 활용하여 파티션 크기를 조정할 수 있다. 옵션을 사용하여 구체적으로 사이즈를 명시하여 다음과 같은 방식으로 크기를 조정할 수 있다.


$xfs_growfs -D (size)


여기서 말하는 사이즈는 블록 사이즈이다.


한편, 현재 마운트 되어 있는 XFS 파일시스템 파티션에 대한 정보는 다음과 같이 알아볼 수 있다.


data 쪽 라인을 보면 블록당 사이즈가 4096 바이트, 즉 4킬로바이트이며 총 78,642,944개의 블록으로 구성되어 있다는 것을 알 수 있다.

위의 결과에서 /dev/xvdb1 파티션의 데이터 영역 사이즈는 78,642,944 * 4 / 1024 / 1024 = 약 300기가바이트임을 확인할 수 있다.

반응형

'Linux' 카테고리의 다른 글

xfs 파일시스템이란 무엇인가 (feat. inode)  (0) 2018.07.18

설치 환경: CentOS 7


젠킨스 설치에는 여러가지 방법이 있을 수 있는데, 그 중 두가지는 다음과 같다.

1. jenkins.war 파일을 다운받아서 톰캣 webapps 밑으로 옮긴 다음에 톰캣을 실행함으로써 다음 작업 수행

2. 패키지 설치


여기서는 yum을 이용한 패키지 설치에 대한 설명을 한다.


1. 다음 커맨드로 epel-release 패키지를 설치하고 패키지 업데이트를 해놓는다.

$sudo yum install epel-release

$sudo yum update


2. 젠킨스를 설치 및 실행하는데 있어서 자바가 먼저 깔려있어야 된다. 자바 설치에 대한 내용은 여기서는 별도로 언급하지 않는다.


3. 젠킨스 리파지터리를 끌어오고 설치한다. 편의상 사용자 루트 디렉토리로 이동하여 작업을 진행한다.

$cd ~

$sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

$sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

$sudo yum install jenkins


4. 설치를 정상적으로 마치면 젠킨스가 서비스에 등록이 된다. 서버 부팅시 젠킨스가 자동적으로 시작되도록 하려면


$systemctl enable jenkins


이렇게 실행하면 된다. 물론 젠킨스 시작은 systemctl start jenkins라고 하면 된다.

반응형

XFS 1993년 실리콘 그래픽스 (SGI)가 만든 고성능 64비트 저널링 파일 시스템으로, CentOS 7버전부터 기본 지원되는 파일시스템이다. 기존 CentOS에는 EXT가 기본 지원되고 있었다. XFS 파일시스템은 64비트 환경에 최적화 되어 있으며, 다른 파일시스템에 비해 가지는 장점으로는 다음이 있다.


1. 이론상이긴 하지만 900만 TB까지 지원이 가능하다 ( 단, 32bit 환경에서는 16TB까지만 지원이 가능하다.)

2. 사용가능한 inode값이 넉넉하다 .같은 용량의 ext3에 비해 8배 많은 inode 생성이 가능

3.  xfs_growfs 유틸을 통해 마운트된 상태에서도 파일시스템 확장이 가능하다.

4. 파일시스템 생성(포맷)시간이 타 파일시스템에 비하여 압도적으로 빠르다.

5. 파일시스템 체크 시 ext3는 사용하지 않는 inode까지 체크를 하기때문에 많은 시간이 소요되는 반면 xfs는 사용중인 inode만 체크하므로 빠른 속도를 낼 수 있다.

6.  동일 크기의 파일을 삭제하여도 ext3보다 2.5배 빠른 속도를 제공한다.

 

<XFS의 단점>

1. 대용량 위주 파일시스템이다 보니 작은 사이즈의 파일에선 되려 속도가 느린 부분이 있다.

2. 정식 채택된지 얼마 안된 파일시스템이다 보니 이식성이 ext에 비해 떨어진다.

3. 만약 파일시스템에 문제가 발생했을시에 아예 커널 메시지가 나오질 않는 증상을 야기할 가능성이 존재한다.

4. 디버그 옵션이 존재하지 않아 삭제된 파일은 복구가 불가능하다.

5. 파일시스템이 깨졌을때 xfs_repair를 실행시 물리적 메모리나 swap이 2TB당 1G 이상이 되어야 repair 실행이 가능하다.

6. 시스템이 아닌 별도의 데몬에서 파일시스템을 관리한다.

 

# ps aux | grep xfs

root      2359 0.0 0.0     0 0 ? S<  15:05 0:00 [xfslogd/0]

root      2360 0.0 0.0     0 0 ? S<  15:05 0:01 [xfslogd/1]

root      2361 0.0 0.0     0 0 ? S<  15:05 0:00 [xfsdatad/0]

root      2362 0.0 0.0     0 0 ? S<  15:05 0:00 [xfsdatad/1]

root      2363 0.0 0.0     0 0 ? S  15:05 0:03 [xfsbufd]

root      4402 0.0 0.0     0 0 ? S  15:43 0:00 [xfssyncd]


* inode

유닉스 계통 파일시스템에서 사용하는 자료구조. 아이노드는 정규 파일, 디렉토리 등 파일시스템에 관한 정보를 제공하고 있다. 파일들은 각자 1개의 아이노드를 가지고 있으며, 아이노드는 소유자 그룹, 접근 모드(읽기, 쓰기, 실행 권한), 파일 형태, 아이노드 숫자(inode number, i-number, 아이넘버) 등 해당 파일에 관한 정보를 가지고 있다. 파일시스템 내의 파일들은 고유한 아이노드 숫자를 통해 식별 가능하다.

일반적으로 파일 시스템을 생성할 때 전체 공간의 약 1퍼센트를 아이노드를 위해 할당한다. 아이노드를 위한 공간이 한정되어 있는 만큼 파일시스템이 가질 수 있는 파일의 최대 개수도 한정되어 있다. 그러나 대부분의 경우, 사용자가 느끼기에 거의 무한 개에 가까운 파일을 생성하고 관리할 수 있다.

 

<아이노드에 포함된 정보>

  • 파일 모드: 파일과 관계된 접근과 실행 권한을 저장하는 16비트 플래그

 

출처: https://ko.wikipedia.org/wiki/%EC%95%84%EC%9D%B4%EB%85%B8%EB%93%9C

비트

내용

12-15

파일 형식 (일반, 디렉토리, 문자 또는 블록 특별, 선입선출 파이프)

9-11

실행 플래그

8

소유자 읽기 허가

7

소유자 쓰기 허가

6

소유자 실행 허가

5

그룹 읽기 허가

4

그룹 쓰기 허가

3

그룹 실행 허가

2

다른 사용자 읽기 허가

1

다른 사용자 쓰기 허가

0

다른 사용자 실행 허가

  • 링크 수: 이 아이노드에 대한 디렉토리 참조 수

  • 소유자 아이디: 파일의 소유자

  • 그룹 아이디: 이 파일과 관계된 그룹 소유자

  • 파일 크기: 파일의 바이트 수

  • 파일 주소: 주소 정보 (39바이트)

  • 마지막 접근: 마지막으로 파일에 접근한 시각

  • 마지막 수정: 마지막으로 파일을 수정한 시각

  • 아이노드 수정: 마지막으로 아이노드를 수정한 시각

 



반응형

'Linux' 카테고리의 다른 글

XFS 파일시스템에서 파티션 리사이즈  (0) 2018.07.24

말 그대로다. 깃허브에 소스를 푸시해서 브라우저에서도 푸시된 소스코드를 확인할 수 있는데, 정작 contribution 카운트가 올라가지 않는 경우가 있다.


찾아본 결과, 원인은 다음과 같았다.

"깃 로컬 유저 정보가 푸시한 리파지터리의 컨트리뷰터에 없음"


즉, 리파지터리에서는 A 계정이 컨트리뷰터로 되어 있는데 로컬 깃 유저는 B로 설정이 되어 있었던 것이다.


따라서 로컬에서 다음 작업을 통해 로컬 깃 유저 정보를 바꿨다.


$git config --global user.name MYNAME

$git config --global user.email MYEMAIL (깃허브 리파지터리의 컨트리뷰터 계정 이메일)


그 다음에 다시 아무거나 푸시를 해보니 정상적으로 컨트리뷰션 카운트가 올라가는 것을 확인할 수 있었다.



참고: https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/

반응형

MySQL 5.6 이상의 버전을 쓰는 경우, 셸이나 커맨드라인에 계정 정보를 그대로 노출하면 경고가 발생한다. 제목은 그 경고 메세지다.



이러한 경고가 발생하지 않도록 하기 위해 로그인 파일을 생성해 놓고 설정명만을 명시하여 사용할 수 있는 방법이 있다. mysql_config_editor 커맨드를 이용하는 것이다. 커맨드는 다음과 같이 구성된다.


$mysql_config_editor set --login-path=[접속명] --host=[host정보] --user=[계정명] --password --socket=[소켓위치] --port[포트번호]


커맨드를 실행하면 패스워드를 입력하라는 말이 나온다. 계정에 대한 패스워드를 입력하면 로그인 정보가 생성이 되며, .mylogin.cnf라는 이름의 파일이 계정 폴더 내에 생성된다.


이렇게 생성이 되고 나서 다음과 같이 간편하게 로그인 할 수 있다.


$mysql --login-path=[접속명]


아래는 적용 사례.


특정한 접속 정보를 삭제하고자 할 때

$mysql_config_editor remove --login-path=[접속명] 


접속 정보를 모두 삭제하고자 할 때

$mysql_config_editor remove


한편, 마리아DB에서 이와 같은 기능을 제공하는지 여부를 찾아봤는데, 현재까지는 없는듯하다.

출처: https://mariadb.com/kb/en/library/mysql_config_editor-compatibility/

반응형

+ Recent posts