[Linux 명령어] Apache와 비슷한 웹 서버 소프트웨어 (nginx)
Nginx Nginx("engine-x"로 발음)는 오픈 소스, 고성능 웹 서버, 리버스 프록시 서버 및 로드 밸런서다. 2002년 Igor Sysoev에 의해 만들어졌으며 주요 초점은 성능, 확장성 및 효율적인 리소스 사용이다. 2004년에 처음 출시되어 강력한 웹 서버 소프트웨어로 사용된다. 무료 오픈 소스 소프트웨어이므로 누구나 BSD 라이선스의 조건에 따라 사용, 수정 및 배포할 수 있다. Nginx는 많은 양의 요청을 동시에 처리할 수 있는 기능으로 널리 사용되어 대부분의 다른 웹 서버 보다 로드 시간이 더 빠르고 성능이 더 좋다. Nginx는 웹 서버 외에도 리버스 프록시, 로드 밸런서, 메일 프록시 및 HTTP 캐시로 사용할 수 있다. 다기능 기능 덕분에 유지 관리에 필요한 도구 및 구성의 ..
2023.03.26
[MySQL] MySQL이란?
MySQL MySQL은 데이터를 저장하고 관리하는 데 사용되는 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 많은 조직에서 널리 사용되며 세계에서 가장 널리 사용되는 데이터베이스 시스템 중 하나로 간주된다. MySQL은 1995년에 처음 출시된 이후 많은 업데이트와 개선을 거쳤다. MySQL은 SQL(Structured Query Language)을 사용하여 데이터를 관리하고 조작한다. 트랜잭션, 보기, 저장 프로시저 및 트리거를 비롯한 다양한 기능을 지원한다. 또한 다양한 스토리지 엔진을 지원하므로 특정 애플리케이션에 가장 적합한 것을 선택할 수 있다. 가장 일반적으로 사용되는 스토리지 엔진에는 InnoDB, MyISAM 및 MEMORY가 있다. MySQL은 Windows,..
2023.03.26
SQL
[Linux 명령어] 다양한 기능이 있는 다운로드 유틸리티 (wget)
wget wget 명령어는 인터넷에서 파일을 다운로드하기 위한 명령줄 유틸리티다. HTTP, HTTPS, FTP 등 다양한 네트워크 프로토콜을 지원한다. 이 명령어는 견고성과 내결함성을 위해 Linux, macOS 및 기타 Unix와 유사한 운영 체제에서 널리 사용된다. wget의 주요 기능에는 느리거나 불안정한 네트워크 연결 처리, 실패한 다운로드 재시도, 중단된 다운로드 재개 등이 있다. 또한 재귀적으로 파일을 다운로드하고, 특정 파일 유형을 필터링하고, 다운로드 속도를 제한하고, 다운로드 디렉토리를 지정하는 옵션을 제공한다. wget 설치 Ubuntu / Debian sudo apt update && sudo apt install wget CentOS / RHEL sudo yum install wg..
2023.03.25
[Linux 명령어] systemd에서 target 활용 및 변경 (systemctl)
목차 systemd 주요 기능 Systemd target 선택 systemd에서 target을 활용하기 위한 systemctl 명령어 활용 systemd systemd는 전통적인 System V init 시스템(SysVinit)을 대체하기 위해 많은 Linux 배포판에서 사용되는 초기화 시스템 및 시스템 관리자다. Lennart Poettering과 Kay Sievers가 개발했으며 2010년에 처음 출시되었다. systemd는 현대적인 디자인, 효율적인 프로세스 관리 및 다양한 Linux 구성 요소와의 통합으로 인기를 얻었다. systemd는 시작하는 동안 사용자 공간을 부트스트래핑하고, 시스템 서비스를 관리하고, 시스템 수명 주기 동안 일관된 상태를 유지하는 역할을 한다. 주요 기능 병렬화 syste..
2023.03.25
[Storage 이론] NFS를 이용한 자동 마운트
자동 마운터를 이용한 NFS export 마운트 자동 마운터는 파일 시스템 및 NFS export를 온디맨드로 자동 마운트하고, 마운트된 리소스가 현재 더 이 상 사용되지 않는 경우 파일 시스템 및 NFS export를 자동으로 마운트 해제하는 서비스(autofs)다. 자동 마운터 기능은 권한이 없는 사용자에게 mount 명령을 사용할 수 있는 충분한 권한이 없는 문제를 해결 하기 위해 고안되었다. 일반 사용자가 CD, DVD와 같은 이동식 미디어 및 이동식 디스크 드라이브에 액세 스하려면 mount 명령을 사용해야 한다. 또한 부팅 시 /etc/fstab 구성을 사용하여 로컬 또는 원격 파일 시스템을 마운트해야 일반 사용자가 마운트 해제된 파일 시스템을 마운트하고 해당 시스템에 액세스할 수 있다. 자동..
2023.03.25
no image
[Storage 이론] NFS(Network File System)를 이용한 스토리지 관리 + fstab 편집 요령
목차 NFS 주요 기능 fstab 수정 요령 NFS를 통한 설정 NFS NFS(Netwrok File System)는 컴퓨터가 로컬 하드 드라이브에 있는 것처럼 네트워크를 통해 파일에 액세스하고 공유할 수 있도록 하는 분산 파일 시스템 프로토콜이다. NFS는 1980년대에 Sun Microsystems에서 개발했으며 현재 Unix 및 Linux 기반 시스템은 물론 macOS 및 Windows(추가 소프트웨어 포함)와 같은 다른 운영 체제에서도 널리 사용되고 있다. NFS는 클라이언트-서버 모델에서 작동한다. 여기서 NFS 서버는 네트워크를 통해 이러한 공유 리소스를 마운트하고 액세스하는 클라이언트로 디렉토리와 파일을 내보낸다(공유). 이를 통해 여러 사용자와 시스템이 동시에 공유 파일에 대해 작업할 수 ..
2023.03.25
반응형
Nginx

Nginx("engine-x"로 발음)는 오픈 소스, 고성능 웹 서버, 리버스 프록시 서버 및 로드 밸런서다. 2002년 Igor Sysoev에 의해 만들어졌으며 주요 초점은 성능, 확장성 및 효율적인 리소스 사용이다. 2004년에 처음 출시되어 강력한 웹 서버 소프트웨어로 사용된다.

 

무료 오픈 소스 소프트웨어이므로 누구나 BSD 라이선스의 조건에 따라 사용, 수정 및 배포할 수 있다. Nginx는 많은 양의 요청을 동시에 처리할 수 있는 기능으로 널리 사용되어 대부분의 다른 웹 서버 보다 로드 시간이 더 빠르고 성능이 더 좋다.

Nginx는 웹 서버 외에도 리버스 프록시, 로드 밸런서, 메일 프록시 및 HTTP 캐시로 사용할 수 있다. 다기능 기능 덕분에 유지 관리에 필요한 도구 및 구성의 양을 최소화하려는 조직에서 널리 사용된다. Nginx를 사용하는 유명한 회사로는 Autodesk, Atlassian, Intuit, T-Mobile, GitLab 및 DuckDuckGo가 있다.

Apache와 같은 다른 웹 서버와 비교할 때 Nginx는 더 적은 리소스와 하드웨어를 사용하며 올바르게 구성된 경우 Apache보다 더 효율적일 수 있다. 또한 Nginx는 많은 양의 요청을 동시에 처리할 수 있는 스레드가 없는 이벤트 기반 아키텍처를 사용하므로 트래픽이 많은 웹사이트에서 널리 사용된다.

Nginx를 구성하려면 sudo nano /etc/nginx/nginx.conf를 사용하여 Nginx 구성 파일을 열 수 있다. 여기에서 user, worker_processes, error_log 및 pid와 같은 지시문을 수정할 수 있다.


주요 기능
  • 웹 서버
    Nginx는 HTML, CSS 및 JavaScript와 같은 정적 파일을 사용자에게 제공한다. 많은 수의 동시 연결을 효율적으로 처리하도록 설계되어 트래픽이 많은 웹 사이트 및 웹 응용 프로그램에 적합하다.

  • 리버스 프록시 서버
    Nginx는 클라이언트의 요청을 다른 서버 애플리케이션(예: PHP, Node.js 또는 Python 기반 웹 애플리케이션)으로 전달하고 응답을 클라이언트에 반환하는 리버스 프록시 역할을 할 수 있다. 이는 로드 밸런싱, 백엔드 서버에서 작업 오프로드 및 추가 보안 계층 ​​제공에 도움이 된다.

  • 로드 밸런서
    Nginx는 로드 밸런서로서 수신 클라이언트 요청을 여러 백엔드 서버에 분산할 수 있다. 이를 통해 로드 균형을 조정하고 성능을 최적화하며 높은 트래픽으로 인한 서버 오류 위험을 줄일 수 있다.

  • SSL/TLS 지원
    Nginx는 SSL/TLS 암호화를 지원하여 클라이언트와 서버 간의 안전한 통신을 보장한다. 이는 민감한 정보를 보호하고 사용자 개인 정보 및 보안을 유지하는 데 필수적이다.

  • 구성
    Nginx는 유연하고 간단한 구성으로 유명하다. 관리자는 사람이 읽을 수 있는 텍스트 기반 구성 파일을 통해 특정 요구 사항을 충족하도록 동작을 쉽게 사용자 지정할 수 있다.

  • 확장성
    Nginx의 기능은 다양한 타사 모듈로 확장할 수 있으므로 사용자는 새로운 기능을 추가하고 다양한 사용 사례 및 요구 사항에 맞게 소프트웨어를 조정할 수 있다.

  • 크로스 플랫폼
    Nginx는 Linux, Windows, macOS 및 BSD를 포함한 다양한 운영 체제에서 사용할 수 있다. 이 교차 플랫폼 호환성으로 인해 다양한 서버 환경에서 널리 사용된다.

Nginx 설치

1. 패키지 관리자 업데이트

Debian 기반
sudo apt-get update

RedHat 기반
sudo yum update

2. Nginx 설치

Debian 기반
sudo apt-get install nginx

RedHat 기반
 sudo yum install nginx

3. Nginx 시작

sudo systemctl start nginx

4. Nginx가 실행 중인지 확인

sudo systemctl status nginx

5. 방화벽을 통한 Nginx 허용(해당하는 경우)

Debian 기반
sudo ufw allow 'Nginx HTTP'

RedHat 기반
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

이제 웹 브라우저에 서버의 IP 주소를 입력하여 Nginx에 액세스할 수 있다. 문제가 발생하면 sudo tail -f /var/log/nginx/error.log를 입력하여 Nginx 오류 로그를 확인할 수 있다.

 

6. Nginx 구성 확인(구성 파일 구문 오류 확인)

sudo nginx -t

이 명령은 구문 오류에 대한 구성 파일을 테스트하고 발견된 모든 문제를 보고한다. 구성 파일에 오류가 없으면 이 명령은 테스트가 성공했음을 나타내는 메시지를 출력한다 

반응형

[MySQL] MySQL이란?

이지IT
|2023. 3. 26. 10:28
반응형
MySQL

MySQL은 데이터를 저장하고 관리하는 데 사용되는 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 많은 조직에서 널리 사용되며 세계에서 가장 널리 사용되는 데이터베이스 시스템 중 하나로 간주된다. MySQL은 1995년에 처음 출시된 이후 많은 업데이트와 개선을 거쳤다.

MySQL은 SQL(Structured Query Language)을 사용하여 데이터를 관리하고 조작한다. 트랜잭션, 보기, 저장 프로시저 및 트리거를 비롯한 다양한 기능을 지원한다. 또한 다양한 스토리지 엔진을 지원하므로 특정 애플리케이션에 가장 적합한 것을 선택할 수 있다. 가장 일반적으로 사용되는 스토리지 엔진에는 InnoDB, MyISAM 및 MEMORY가 있다.

MySQL은 Windows, Linux 및 macOS를 포함한 다양한 운영 체제에 설치할 수 있다. 또한 PHP, Java 및 Python을 포함한 많은 프로그래밍 언어와 통합될 수 있다. 따라서 사용자 데이터를 저장하고 콘텐츠를 관리하고 다른 작업을 처리하는 데 사용할 수 있는 웹 응용 프로그램에 널리 사용된다.


사용 예
  • 데이터베이스 생성
    MySQL에서 데이터베이스를 생성하려면 "CREATE DATABASE" 명령 뒤에 데이터베이스 이름을 사용할 수 있다.
"CREATE DATABASE my_database;"
  • 테이블 만들기
    데이터베이스를 만든 후에는 데이터를 저장할 테이블을 만들 수 있다. MySQL에서 테이블을 생성하려면 "CREATE TABLE" 명령 뒤에 테이블 이름과 해당 데이터 유형과 함께 열 이름을 사용할 수 있다.
"CREATE TABLE my_table(id INT, 이름 VARCHAR(50), age INT);"
  • 데이터 삽입
    테이블을 생성한 후 "INSERT INTO" 명령 다음에 테이블 이름과 해당 열에 삽입할 값을 사용하여 데이터를 삽입할 수 있다.
"INSERT INTO my_table (id, name, age) VALUES (1, 'John', 25);"
  • 데이터 검색
    MySQL 테이블에서 데이터를 검색하려면 "SELECT" 문 뒤에 검색하려는 열 이름과 테이블 이름을 사용할 수 있다. "WHERE" 절을 사용하여 특정 조건에 따라 결과를 필터링할 수도 있다.
"SELECT name, age FROM my_table WHERE age > 20;"
  • 데이터 업데이트
    MySQL 테이블의 기존 데이터를 업데이트하려면 "UPDATE" 문 다음에 테이블 이름, 업데이트할 열 및 새 값을 사용할 수 있다. "WHERE" 절을 사용하여 업데이트할 행을 지정할 수도 있다.
"UPDATE my_table SET age = 30 WHERE id = 1;"
  • 데이터 삭제
    MySQL 테이블에서 데이터를 삭제하려면 "DELETE FROM" 문 다음에 테이블 이름을 사용하고 "WHERE" 절을 사용하여 삭제할 행을 지정할 수 있다.
"DELETE FROM my_table WHERE id = 1;"


이것 외에도 다양한 방법으로 데이터 및 데이터베이스 관리를 위해 MySQL에서 사용할 수 있는 다른 명령어와 기능들이 있다. 오늘은 간단히 소개하는 내용임으로 더 자세하게 진행하지는 않겠다.


장, 단점

장점

  • MySQL은 무료로 사용할 수 있고 널리 지원되는 오픈 소스 데이터베이스다.
  • MySQL에는 다른 데이터베이스보다 빠르고 저렴하며 안정적인 고유한 스토리지 엔진 아키텍처가 있다.
  • MySQL은 뷰, 트리거 및 저장 프로시저를 사용하여 개발자에게 더 높은 생산성을 제공한다.
  • MySQL은 대부분의 운영 체제에서 단 하나의 명령으로 쉽게 설치할 수 있다.
  • MySQL은 널리 사용되고 지원되므로 도움말과 리소스를 쉽게 찾을 수 있다.
  • MySQL에는 더 많은 기능을 제공하는 데 사용할 수 있는 다양한 도구와 플러그인이 있다.


단점

  • MySQL은 복잡하고 강력할 수 있으므로 소규모 애플리케이션에 적합하지 않을 수 있다.
  • Oracle이 MySQL을 인수한 이후로 MySQL의 운명에 대한 우려가 있어 일부 사용자가 사용을 주저하게 만들 수 있다.
  • 애플리케이션이 MySQL로 구축되면 기본 데이터베이스 또는 배포를 변경하기 어려울 수 있다.
  • MySQL은 PostgreSQL과 같은 일부 다른 데이터베이스만큼 기능이 풍부하지 않을 수 있다.


아무래도 Oracle에 인수된 이후 정책이 오픈 소스에 대해 호의적이지 않고 프로그램이 복잡해져 이슈가 되었던 것 같다. 또한 무료버전도 있으나 상업적 이용시 소스 코드를 제공해야 하는 것 같은 패널티들이 있으니 기업들이 차선책을 찾아 넘어가고 있다고 한다.


 

반응형
반응형
wget

wget 명령어는 인터넷에서 파일을 다운로드하기 위한 명령줄 유틸리티다. HTTP, HTTPS, FTP 등 다양한 네트워크 프로토콜을 지원한다. 이 명령어는 견고성과 내결함성을 위해 Linux, macOS 및 기타 Unix와 유사한 운영 체제에서 널리 사용된다.

 

wget의 주요 기능에는 느리거나 불안정한 네트워크 연결 처리, 실패한 다운로드 재시도, 중단된 다운로드 재개 등이 있다. 또한 재귀적으로 파일을 다운로드하고, 특정 파일 유형을 필터링하고, 다운로드 속도를 제한하고, 다운로드 디렉토리를 지정하는 옵션을 제공한다.


wget 설치

Ubuntu / Debian

sudo apt update && sudo apt install wget

CentOS / RHEL

sudo yum install wget
sudo dnf install wget

사용 예시 및 옵션

1. 단일 파일 다운로드

wget http://example.com/path/to/file.txt

 

2. 특정 디렉토리에 파일 다운로드
파일을 특정 디렉토리에 다운로드하려면 -P 또는 --directory-prefix 옵션과 원하는 디렉토리 경로를 차례로 작성한다.

wget -P /path/to/directory http://example.com/path/to/file.txt

 

3. 다른 이름으로 파일 다운로드
다운로드한 파일을 다른 이름으로 저장하려면 -O 또는 --output-document 옵션 다음에 원하는 파일 이름을 작성한다.

wget -O new_file_name.txt http://example.com/path/to/file.txt

 

4. 중단된 다운로드 재개
중단된 다운로드를 재개하려면 -c 또는 --continue 옵션을 사용한다.

wget -c http://example.com/path/to/file.txt

 

5. 다운로드 속도 제한
다운로드 속도를 제한하려면 --limit-rate 옵션과 원하는 속도 제한(예: 100KB/s의 경우 100k)을 작성한다.

wget --limit-rate=100k http://example.com/path

 

6. 여러 파일 다운로드
여러 파일을 다운로드하려면 여러 URL과 함께 하나의 wget 명령어를 사용하거나 URL 목록이 포함된 텍스트 파일을 만들고 -i 또는 --input -파일 옵션을 사용한다.

wget http://example.com/path/to/file1.txt http://example.com/path/to/file2.txt

다른 방법) URL이 포함된 텍스트 파일(예: urls.txt)을 만든다.

sudo vi /path/urls.txt

http://example.com/path/to/file1.txt
http://example.com/path/to/file2.txt

그런 다음 -i 옵션을 사용하여 파일을 다운로드한다.

wget -i urls.txt

 

7. 재귀적으로 파일 다운로드
웹사이트나 FTP 서버에서 파일을 재귀적으로 다운로드하려면 -r 또는 --recursive 옵션을 사용하여라. 이렇게 하면 이미지 및 기타 파일과 같은 콘텐츠와 함께 지정된 URL이 다운로드된다.

wget -r http://example.com/path/to/website

 

8. 재귀 깊이 제어
wget 명령의 컨텍스트에서 재귀 깊이는 지정된 URL에서 파일이나 웹 페이지를 다운로드할 때 명령이 따라야 하는 최대 수준 수를 나타낸다. --recursive 옵션을 사용하는 동안 재귀 깊이를 제한하려면 -l 또는 --level 옵션 뒤에 원하는 깊이를 작성한다.

wget -r -l 1 http://example.com/path/to/website

 

9. 특정 파일 형식만 다운로드
특정 파일 형식만 다운로드하려면 -A 또는 --accept 옵션 다음에 쉼표로 구분된 파일 확장자 목록을 작성한다.

wget -r -A .jpg,.png http://example.com/path/to/website

 

10. 특정 파일 형식 제외
특정 파일 형식을 다운로드에서 제외하려면 -R 또는 --reject 옵션 다음에 쉼표로 구분된 파일 확장자 목록을 작성한다.

wget -r -R .jpg,.png http://example.com/path/to/website

 

11. 지정된 디렉토리에서만 파일 다운로드
지정된 디렉토리에서만 파일을 다운로드하려면 --include-directories 또는 --exclude-directories 옵션 다음에 쉼표로 구분된 디렉토리 목록을 작성한다.

wget -r --include-directories=dir1,dir2 http://example.com/path/to/website

 

12. 상대 링크만 따르기
기본적으로 wget은 절대 링크와 상대 링크를 모두 따른다. 상대 링크만 따라가려면 --no-parent 옵션을 사용한다.

wget -r --no-parent http://example.com/path/to/website

 

13. 재시도 횟수 제어
실패한 다운로드에 대한 재시도 횟수를 제어하려면 --tries 또는 -t 옵션 뒤에 원하는 재시도 횟수를 작성한다.

wget --tries=5 http://example.com/path/to/file.txt

 

14. 시간 초과 설정
연결 설정 또는 데이터 읽기에 대한 시간 초과를 설정하려면 --timeout 또는 -T 옵션 뒤에 원하는 시간 초과 값(초)을 작성한다.

wget --timeout=10 http://example.com/path/to/file.txt

반응형
반응형

목차

  1. systemd
  2. 주요 기능
  3. Systemd target 선택
  4. systemd에서 target을 활용하기 위한 systemctl 명령어 활용

systemd

systemd는 전통적인 System V init 시스템(SysVinit)을 대체하기 위해 많은 Linux 배포판에서 사용되는 초기화 시스템 및 시스템 관리자다. Lennart Poettering과 Kay Sievers가 개발했으며 2010년에 처음 출시되었다. systemd는 현대적인 디자인, 효율적인 프로세스 관리 및 다양한 Linux 구성 요소와의 통합으로 인기를 얻었다.

systemd는 시작하는 동안 사용자 공간을 부트스트래핑하고, 시스템 서비스를 관리하고, 시스템 수명 주기 동안 일관된 상태를 유지하는 역할을 한다. 


주요 기능
  • 병렬화
    systemd는 서비스를 동시에 시작하여 멀티 코어 프로세서를 활용하여 더 빠른 부팅 시간을 허용한다.

  • 종속성
    systemd는 복잡한 서비스 종속성을 관리하여 서비스가 올바른 순서로 그리고 종속성이 충족될 때만 시작되도록 한다.

  • Cgroups
    systemd는 제어 그룹(cgroups)을 사용하여 각 서비스에 대한 리소스를 관리하고 격리하여 시스템 안정성과 리소스 활용도를 향상시킨다.

  • 서비스 관리
    systemd는 서비스를 모니터링하고 감독하며 장애 또는 충돌이 발생할 경우 자동으로 다시 시작한다. 이는 시스템 안정성을 높이고 다운타임을 줄인다.

  • 로깅
    systemd에는 전체 시스템의 로깅을 처리하는 'journald' 서비스가 포함되어 있다. 인덱싱, 압축, 액세스 제어와 같은 고급 로그 관리 기능을 제공한다.

  • 구성
    systemd는 서비스 관리를 단순화하는 단위 파일로 알려진 서비스에 대한 통합 구성 형식을 사용한다.
    systemd에서 서비스를 관리하려면 systemctl 명령을 사용할 수 있다. 몇 가지 일반적인 작업은 다음과 같다.
  1. 서비스 시작: sudo systemctl start service_name
  2. 서비스 중지: sudo systemctl stop service_name
  3. 서비스 재시작: sudo systemctl restart service_name
  4. 부팅 시 서비스 시작 활성화: sudo systemctl enable service_name

Systemd target 선택

systemd target은 원하는 상태에 도달하기 위해 시작해야 하는 systemd 유닛 집합이다. target 파일은 .target 확장자를 가지며 일반적으로 /lib/systemd/system 또는 /etc/systemd/system에 있다. 다음 테이블에는 가장 중요한 target이 나열되어 있다.

 

자주 사용되는 target

  1. graphical.target : 시스템은 멀티 유저, 그래픽 및 텍스트 기반 로그인을 지원
  2. multi-user.target : 시스템이 멀티 유저, 텍스트 기반 로그인만 지원
  3. rescue.target : sulogin 프롬프트, 기본 시스템 초기화
  4. emergency.target sulogin : 프롬프트, initramfs 피벗 완료, /에 읽기 전용으로 마 운트된 시스템 루트에 사용

systemd에서 target은 특정 시스템 상태 또는 실행 수준을 생성하기 위해 다른 장치(서비스, 소켓, 장치 등)를 함께 그룹화하는 장치 구성 파일이다. target은 서로 다른 시스템 상태 간의 시스템 초기화, 종속성 및 전환을 관리하는 데 도움이 된다. 이는 전통적인 System V init 시스템(SysVinit)에서 발견되는 실행 수준의 진화로 간주될 수 있다.


systemd에서 target을 활용하기 위한 systemctl 명령어 활용

1. target 간 전환

예1_ 그래픽 target에서 다중 사용자 target으로 전환(그래픽 인터페이스 비활성화)

sudo systemctl isolate multi-user.target

예2_그래픽 target으로 다시 전환

sudo systemctl isolate graphical.target

2. 기본 target 설정

예_ 기본 target을 multi-user.target으로 설정

sudo systemctl set-default multi-user.target

기본 target을 설정한 후 시스템은 다음 재부팅 시 지정된 target(이 경우 multi-user.target)으로 부팅된다.

3. 맞춤 target 만들기

필요에 따라 특정 서비스 또는 시스템 상태를 그룹화하기 위해 사용자 정의 target을 생성할 수 있다. 사용자 지정 target을 만들려면 다음 단계를 따르십시오.

1_ /etc/systemd/system에서 새 target 파일을 만든다.

sudo nano /etc/systemd/system/my-custom.target

2_ 필요한 구성을 파일에 추가하여 사용자 지정 target을 정의한다. 예를 들어 multi-user.target과 유사하지만 일부 추가 서비스가 있는 사용자 정의 target을 생성하려면 다음 구성을 사용할 수 있다.

[Unit]
Description=My Custom Target
Requires=multi-user.target
After=multi-user.target
Wants=my-additional-service1.service my-additional-service2.service

이 구성에서 사용자 지정 target은 multi-user.target이 필요하고 이후에 시작된다. 또한 사용자 정의 target과 함께 시작되는 my-additional-service1.service 및 my-additional-service2.service 서비스를 원한다는 뜻이다.


4_ 파일을 저장하고 systemd 구성을 다시 로드한다.

sudo systemctl daemon-reload


4. 사용자 지정 target으로 전환

sudo systemctl isolate my-custom.target

 

5. 사용자 정의 target을 시스템이 부팅할 기본 target으로 설정

sudo systemctl set-default my-custom.target

이제 시스템은 다음 재부팅 시 사용자 지정 target으로 부팅된다. 이 사용자 지정 target은 multi-user.target에 필요한 서비스와 함께 구성에 지정된 서비스를 시작한다.

 

6. 현재 지정돼 있는 target 확인

sudo systemctl get-default

실무에서는 server에서 graphical.target 을 거의 사용하지 않는다고 한다. 이 target은 좀 더 가시성을 좋게 만들어주는 것으로 (네트워크를 설정할 때 nmcli가 아닌 nmtui로 보는 느낌) server는 켜져있고 작동만 잘 되면 됨으로 굳이 가시성이 좋을 필요가 없다는 것이다.

반응형
반응형
자동 마운터를 이용한 NFS export 마운트

자동 마운터는 파일 시스템 및 NFS export를 온디맨드로 자동 마운트하고, 마운트된 리소스가 현재 더 이 상 사용되지 않는 경우 파일 시스템 및 NFS export를 자동으로 마운트 해제하는 서비스(autofs)다.

 

자동 마운터 기능은 권한이 없는 사용자에게 mount 명령을 사용할 수 있는 충분한 권한이 없는 문제를 해결 하기 위해 고안되었다. 일반 사용자가 CD, DVD와 같은 이동식 미디어 및 이동식 디스크 드라이브에 액세 스하려면 mount 명령을 사용해야 한다. 또한 부팅 시 /etc/fstab 구성을 사용하여 로컬 또는 원격 파일 시스템을 마운트해야 일반 사용자가 마운트 해제된 파일 시스템을 마운트하고 해당 시스템에 액세스할 수 있다.

 

자동 마운터 구성 파일은 /etc/fstab 항목과 유사한 방식으로 파일 시스템 마운트 정보로 채워진다. / etc/fstab 파일 시스템은 시스템 부팅 중 마운트되고 시스템을 종료하거나 다른 개입이 있을 때까지 마운 트된 상태로 유지되지만, 자동 마운터 파일 시스템은 시스템 부팅 중에 반드시 마운트되는 것은 아니다. 대신 자동 마운터 제어 파일 시스템은 사용자 또는 애플리케이션이 파일에 액세스하기 위해 파일 시스템 마운트 지점을 입력할 때 온디맨드로 마운트된다.


자동 마운터 이점

파일 시스템은 프로그램에서 열려 있는 파일을 읽고 쓸 때만 리소스를 사용하기 때문에 자동 마운터 파일 시 스템의 리소스 사용량은 부팅 시 마운트된 파일 시스템과 동일하다. 마운트되었지만 유휴 상태인 파일 시스 템과 마운트되지 않은 파일 시스템은 동일한 양의 리소스를 사용한다(거의 사용하지 않음).

 

자동 마운터의 이점은 파일 시스템을 더 이상 사용하지 않을 때마다 마운트 해제하여 파일 시스템이 열려 있 는 동안 발생하는 예기치 않은 손상으로부터 보호한다는 것이다.

 

파일 시스템을 다시 마운트하도록 지정하 면 마지막 시스템 부팅 중 몇 달 전에 마운트한 구성을 여전히 사용할 수 있는 /etc/fstab 마운트와 달리, autofs 서비스는 최신 마운트 구성을 사용한다. 또한 NFS 서버 구성에 중복 서버 및 경로가 포함된 경우 자동 마운터는 새 파일 시스템이 요청될 때마다 가장 빠른 연결을 선택할 수 있다.


자동 마운터 autofs 서비스

autofs 서비스는 NFS 및 SMB 파일 공유 프로토콜을 포함하여 /etc/fstab 파일과 같은 로컬 및 원격 파 일 시스템을 지원하고, 보안 매개 변수를 포함하여 동일한 프로토콜별 마운트 옵션을 지원한다.

 

자동 마운 터를 통해 마운트한 파일 시스템은 기본적으로 모든 사용자가 사용할 수 있지만 액세스 권한 옵션을 통해 제 한할 수 있다. 자동 마운터는 표준 mount 및 umount 명령을 사용하여 파일 시스템을 관리하는 클라이언트 측 구성이므 로 사용 중인 자동 마운트 파일 시스템은 /etc/fstab를 사용하여 마운트한 파일 시스템과 동일하게 작동 한다.

 

차이점은 마운트 지점에 액세스할 때까지 자동 마운터 파일 시스템이 마운트 해제된 상태로 유지되어 파일 시스템이 즉시 마운트되고 파일 시스템을 사용하는 동안 마운트된 상태로 유지된다는 것이다. 파일 시 스템의 모든 파일이 닫히고 모든 사용자와 프로세스가 마운트 지점 디렉터리에서 나가면 자동 마운터는 최소 시간 초과 후 파일 시스템을 마운트 해제한다.


직접 및 간접 맵 사용 사례

자동 마운터는 직접 및 간접 마운트 지점 매핑을 모두 지원하여 두 가지 유형의 마운트 요청을 처리한다. 직접 마운트는 파일 시스템이 변경되지 않는 알려진 마운트 지점 위치에 마운트되는 경우다. 자동 마운터에 대해 알아보기 전에 사용자가 구성한 거의 모든 파일 시스템 마운트는 보통 직접 마운트이다.

 

직접 마운트 지점은 다른 일반 디렉터리와 마찬가지로 영구 디렉터리로 존재한다. 간접 마운트는 마운트 요구가 발생할 때까지 마운트 지점 위치를 알 수 없는 경우다. 간접 마운트의 한 예 는 원격 마운트 홈 디렉터리 구성으로, 사용자 홈 디렉터리의 디렉터리 경로에 사용자 이름이 포함된다.

 

자동 마운터에서 홈 디렉터리를 마운트하도록 지정한 사용자를 파악하고 사용할 마운트 지점 위치를 결정한 후에 만 사용자의 원격 파일 시스템이 홈 디렉터리에 마운트된다. autofs 서비스는 간접 마운트 지점이 있 는 것처럼 보여도 마운트 요청이 발생하면 해당 지점을 생성하고, 요청이 종료되어 파일 시스템이 마운트 해 제되면 다시 삭제한다.


NFS 컨텍스트에서 마스터 맵, 간접 맵 및 직접 맵은 자동 마운트 서비스와 관련된다. 자동 마운트는 NFS 공유에 액세스할 때 자동으로 마운트하고 비활성 기간 후에 마운트 해제한다. 이를 통해 리소스 사용량을 줄이고 NFS 마운트를 효율적으로 관리할 수 있다.

  • 마스터 맵
    마스터 맵은 자동 마운터 마운트 지점과 해당 맵 파일을 정의하는 구성 파일이다. 마스터 맵의 이름은 일반적으로 auto.master이며 /etc/auto.master 또는 /etc/auto.master.d/auto.master에 있다.

  • 간접 맵
    간접 맵은 실제 NFS 공유 및 해당 옵션을 정의한다. 간접 맵은 일반적으로 auto.<mapname>으로 이름이 지정되며 /etc에 저장된다.

  • 직접 매핑
    직접 매핑을 사용하면 탑재 지점 디렉터리 없이 개별 경로를 NFS 공유에 직접 매핑할 수 있다.

자동 마운트 방법

1. 자동 마운터 설치

Ubuntu 또는 Debian 기반
sudo apt-get update
sudo apt-get install autofs

CentOS, RHEL 또는 Fedora 기반
sudo yum install autofs
sudo dnf install autofs


2. 마스터 맵 구성

1) 마스터 맵 파일 /etc/auto.master를 편집한다. (vi, vim, vi 등)

sudo vi /etc/auto.master

2) 간접 맵에 대한 행을 추가할 경우
/mountpoint경로 /etc/auto.<mapname>

예_
/mnt/nfs_shares /etc/auto.nfs

3) 마스터 맵에 직접 맵을 추가할 경우
/- /etc/auto.direct

이 구성은 직접 매핑 파일 /etc/auto.direct가 직접 매핑에 사용되도록 지정한다.

 

3. 간접 지도 구성

1) 간접 맵 파일을 만들고 편집한다.
sudo vi /etc/auto.<mapname>

예_
sudo vi /etc/auto.nfs

2) 다음 형식을 사용하여 NFS 공유를 간접 맵에 추가한다.
<mount_point> <options> <nfs_server>:<remote_path>

예_
share1 -fstype=nfs,rw,hard,intr server_ip:/path/to/share1
share2 -fstype=nfs,rw,hard,intr server_ip:/path/to/share2


4. 직접 맵 구성

1) 직접 맵 파일을 만들고 편집한다.
sudo vi /etc/auto.direct

2)다음 형식을 사용하여 NFS 공유를 직접 맵에 추가한다.
<full_local_path> <options> <nfs_server>:<remote_path>

예_
/mnt/direct_share1 -fstype=nfs,rw,hard,intr server_ip:/path/to/direct_share1
/mnt/direct_share2 -fstype=nfs,rw,hard,intr server_ip:/path/to/direct_share2

 

5. 자동 마운트 서비스 다시 시작(변경 사항 적용)

Ubuntu 또는 Debian 기반
sudo systemctl restart autofs

CentOS, RHEL 또는 Fedora 기반
sudo systemctl restart autofs

 

6. 이제 자동 마운터 서비스가 구성되고 실행되면 간접 및 직접 맵에 지정된 NFS 공유가 액세스될 때 자동으로 마운트된다.


간접 맵의 경우 /path/to/mount/point(예: /mnt/nfs_shares) 아래에 지정된 마운트 지점에 액세스할 때 주문형 NFS 공유가 마운트된다. 예를 들어 /mnt/nfs_shares/share1에 액세스하면 자동 마운트는 이 경로의 server_ip:/path/to/share1에서 NFS 공유를 마운트한다. 비활성 기간이 지나면 자동 마운트가 공유를 마운트 해제한다.

직접 맵의 경우 지정된 전체 로컬 경로(예: /mnt/direct_share1)에 액세스할 때 NFS 공유가 직접 마운트된다. /mnt/direct_share1에 액세스하면 자동 마운트가 이 경로의 server_ip:/path/to/direct_share1에 NFS 공유를 마운트한다. 간접 맵과 유사하게 자동 마운트는 비활성 기간 후에 공유를 마운트 해제한다.

자동 마운트 서비스는 필요에 따라 공유를 마운트 및 마운트 해제하여 NFS 공유 관리를 개선하여 리소스 사용량과 네트워크 로드를 줄이는 데 도움이 된다. 또한 마스터 맵, 간접 맵 및 직접 맵을 사용하면 NFS 마운트를 중앙 집중식 구조화 방식으로 구성할 수 있다.

반응형
반응형

목차

  1. NFS
  2. 주요 기능
  3. fstab 수정 요령
  4. NFS를 통한 설정

NFS

NFS(Netwrok File System)는 컴퓨터가 로컬 하드 드라이브에 있는 것처럼 네트워크를 통해 파일에 액세스하고 공유할 수 있도록 하는 분산 파일 시스템 프로토콜이다. NFS는 1980년대에 Sun Microsystems에서 개발했으며 현재 Unix 및 Linux 기반 시스템은 물론 macOS 및 Windows(추가 소프트웨어 포함)와 같은 다른 운영 체제에서도 널리 사용되고 있다.

NFS는 클라이언트-서버 모델에서 작동한다. 여기서 NFS 서버는 네트워크를 통해 이러한 공유 리소스를 마운트하고 액세스하는 클라이언트로 디렉토리와 파일을 내보낸다(공유). 이를 통해 여러 사용자와 시스템이 동시에 공유 파일에 대해 작업할 수 있으므로 협업이 향상되고 스토리지 관리가 중앙 집중화된다.

NFS는 클라이언트와 서버 간의 통신에 RPC(원격 프로시저 호출)를 사용한다. 다양한 버전을 지원하며 NFSv4는 가장 기능이 풍부한 최신 버전이다. 


주요 기능
  • 투명한 액세스
    NFS는 클라이언트가 마치 로컬에 저장된 것처럼 공유 파일에 액세스할 수 있도록 하여 원활한 경험을 제공한다.

  • 캐싱
    NFS 클라이언트는 파일 데이터를 캐싱하여 성능을 개선하고 네트워크 부하를 줄인다.

  • 상태 비저장(NFSv3 이하)
    NFS 서버는 연결 상태 정보를 유지하지 않으므로 장애 발생 시 신속하게 복구할 수 있다. NFSv4는 성능과 기능을 개선하기 위해 몇 가지 상태 저장 요소를 도입했다.

  • 액세스 제어 및 인증
    NFS는 파일 및 디렉터리 권한과 같은 공유 리소스에 대한 액세스를 제어하는 ​​다양한 메커니즘과 NFSv4의 Kerberos 인증과 같은 고급 보안 기능을 제공한다.

  • 잠금
    NFS는 데이터 일관성을 보장하고 여러 클라이언트가 동일한 파일에 액세스하고 수정할 때 충돌을 방지하기 위해 파일 잠금을 지원한다.


NFS 서버를 설정하려면 필요한 패키지를 설치하고 공유 디렉토리를 구성하고 적절한 권한을 설정해야 한다. 클라이언트는 NFS를 설치해야 한다.


사용 방법은 기존 마운트 방법과 크게 다르지 않다.

  1. mount 명령어로 직접 마운트
  2. 텍스트 편집기를 이용해 영구 마운트
  3. 자동 마운터 메소드를 사용해 온디멘드

이 중 1번은 이미 이전 포스팅에서 다룬적이 있으므로 2, 3번을 다루도록하겠다.

 

[Linux 명령어] 디스크와 디렉토리 연결하기 (mount) + mkfs

마운트는 리눅스에서 파일 시스템을 사용하기 위한 작업으로, 하드 디스크, USB 드라이브, CD-ROM 등의 장치를 시스템에 연결하여 사용할 수 있게 한다. 마운트는 장치와 파일 시스템 간의 링크를

easyitwanner.tistory.com


fstab 수정 요령

1. nano 또는 vi와 같은 텍스트 편집기로 /etc/fstab 파일을 연다. 관리 권한을 얻으려면 sudo를 사용하십시오.

sudo nano /etc/fstab


2. 마운트하려는 파일 시스템에 대한 적절한 구문을 사용하여 파일에 새 줄을 추가한다. /etc/fstab 항목의 일반적인 형식은 다음과 같다.

<device> <mount_point> <filesystem_type> <options> <dump> <pass>

<device>: UUID, 장치 경로 또는 레이블과 같은 장치 식별자다.
<mount_point>: 파일 시스템이 마운트될 디렉토리.
<filesystem_type>: 파일 시스템 유형, 예: ext4, xfs 또는 nfs.
<options>: defaults, rw, sync, auto 또는 noauto와 같은 마운트 옵션이다.
<dump>: dump 유틸리티가 파일 시스템을 백업해야 하는 빈도(일반적으로 0으로 설정됨).
<pass>: fsck 유틸리티가 부팅 시 파일 시스템을 검사하는 순서다(확인을 비활성화하려면 0, 루트 파일 시스템의 경우 1, 기타 파일 시스템의 경우 2 사용).


예)

UUID=<UUID> /mnt/data ext4 defaults 0 2

<UUID>를 blkid 명령을 사용하여 얻을 수 있는 /dev/sdb1 파티션의 실제 UUID로 바꾼다.

sudo blkid /dev/sdb1

변경 사항을 저장하고 종료한다.

NFS를 통한 설정

[1] NFS 서버 설정

1. NFS 서버 패키지를 설치한다(아직 설치하지 않은 경우).

Ubuntu 또는 Debian 기반
sudo apt-get update
sudo apt-get install nfs-kernel-server

CentOS, RHEL 또는 Fedora 기반
sudo yum install nfs-utils


2. 공유할 디렉터리를 만들고 적절한 권한을 설정한다.

1) 디렉토리 생성
sudo mkdir /path/to/shared/directory

2) 권한 설정
sudo chown nobody:nogroup /path/to/shared/directory
sudo chmod 755 /path/to/shared/directory


3. /etc/exports 파일을 편집하여 NFS 내보내기를 구성한다.

sudo nano(vi, vim...) /etc/exports

1) 다음 줄을 추가하여 클라이언트와 디렉터리를 공유한다.
/path/to/shared/directory client_ip(rw,sync,no_subtree_check)

2) client_ip를 NFS 클라이언트의 IP 주소로 바꾼다.



4. 공유 디렉터리를 내보내고 NFS 서버를 다시 시작한다.

1) 내보내기
sudo exportfs -a

2) NFS 서버 재시작
sudo systemctl restart nfs-kernel-server


5. 서버의 방화벽에서 필요한 포트가 열려 있는지 확인하십시오.


[2] NFS 클라이언트 설정


1. NFS 서버 패키지를 설치한다(아직 설치하지 않은 경우).

Ubuntu 또는 Debian 기반
sudo apt-get update
sudo apt-get install nfs-common

CentOS, RHEL 또는 Fedora 기반
sudo yum install nfs-utils

 

2. NFS 공유를 마운트하려는 클라이언트에서 디렉토리를 생성한다.

sudo mkdir /path/to/mount/point


3. 마운트 지점에 NFS 공유를 마운트한다.

sudo mount server_ip:/path/to/shared/directory /path/to/mount/point

'server_ip'를 NFS 서버의 IP 주소로 바꾼다.


4. NFS 공유가 성공적으로 마운트되었는지 확인한다.

df -h

출력되는 메시지에는 지정된 마운트 지점에 마운트된 NFS 공유가 표시되어야 한다.


5. 부팅 시 NFS 공유가 자동으로 마운트되도록 하려면 /etc/fstab 파일에 항목을 추가하자.

server_ip:/path/to/shared/directory /path/to/mount/point nfs rw,sync,hard,intr 0 0

'server_ip'를 NFS 서버의 IP 주소로 바꾼다.

이 단계를 통해 NFS 내보내기를 통해 디렉토리를 성공적으로 마운트되었을 것이다. 클라이언트는 이제 마치 로컬에 저장된 것처럼 공유 디렉토리의 파일 및 디렉토리에 액세스할 수 있다. 클라이언트가 공유 파일에 액세스하려면 NFS 서버가 실행 중이고 네트워크를 통해 액세스할 수 있어야 한다.


휴... 다음은 NFS를 통한 자동 마운트에 다루도록하겠다.

반응형