TAS Filesystem

개요

TBASCFS(Tibero Active Storage Cluster Filesystem)는 FUSE(Filesystem in Userspace) 기반의 파일 시스템 마운트 도구로, TAS(Tibero Active Storage) 디스크 스페이스를 로컬 마운트 포인트에 마운트하여 표준 Linux 파일 시스템 인터페이스로 접근할 수 있도록 해줍니다.

TBASCFS를 통해 마운트하면 cp, ls, cat, mkdir, rm 등의 표준 Linux 명령어를 사용하여 TAS 디스크 스페이스에 저장된 파일을 직접 조회 및 관리할 수 있습니다. 또한, 로컬 파일과 TAS 파일 간의 복사 작업을 별도의 커맨드 없이 표준 파일 복사 명령어만으로 수행할 수 있습니다.

TBASCFS는 로컬의 TAS 인스턴스에 접속하여 파일 시스템 요청을 처리합니다.

circle-exclamation

지원 플랫폼 및 운영체제

TBASCFS의 지원 플랫폼 및 운영체제의 최소 버전은 다음과 같습니다.

본 기능은 Linux OS에서 제공하는 fusermount3 를 기준으로 합니다. fusermount3 는 일부 Linux 배포판에서 기본 설치되어 있지 않을 수 있으므로, 해당 환경에서는 필요에 따라 관련 패키지를 추가 설치해야 합니다.

OS
최소 버전

Red Hat Enterprise Linux

Red Hat Enterprise Linux 8.1

Oracle Linux

Oracle Linux 8.6

Rocky Linux

Rocky Linux 8.6

Ubuntu

Ubuntu 22.04

circle-info

참고

Tibero 지원 플랫폼 및 운영체제는 설치안내서 내 "지원 플랫폼 및 운영체제"를 참고합니다.

사용 시 주의사항

TBASCFS를 사용할 때 다음 사항에 유의해야 합니다.

프로세스 단일 실행: 동일한 $TB_HOME 환경에서 TBASCFS 프로세스는 하나만 실행할 수 있습니다. 이미 실행중인 TBASCFS가 있는 상태에서 추가로 실행하면 부팅에 실패합니다.

파일 크기 할당 단위: TAS에 새로운 파일을 생성하고 데이터를 쓰는 경우, 파일의 실제 디스크 사용량은 TAS 디스크 스페이스의 AU(Allocation Unit) 크기 단위로 증가합니다. 예를 들어 AU 크기가 1MB인 디스크 스페이스에 100바이트의 파일을 생성하면 실제 디스크 공간은 1MB가 할당됩니다.

TBASCFS 실행

TBASCFS를 실행할 때에 TAS 인스턴스의 포트 번호와 마운트 포인트를 다음과 같이 인자로 지정합니다.

[예 1] TBASCFS 실행 (파일 시스템 마운트)

TBASCFS는 입력한 포트 번호를 통해 로컬의 TAS 인스턴스에 접속하게 됩니다. 포트 정보와 마운트 포인트는 필수적으로 입력해야 합니다. 커맨드라인 툴을 실행하기 전에 접속할 TAS 인스턴스가 부팅되어 있어야 합니다.

circle-info

참고

TAS 인스턴스 연결이 실패하더라도 TBASCFS는 종료되지 않습니다. 실제 파일 I/O가 수행될 때 TAS에 연결이 가능하면 정상 동작합니다.

[예 2] TBASCFS 실행 옵션

[예 3] TBASCFS 제어 명령어

마운트된 상태에서 별도의 터미널을 통해 제어 명령어를 수행할 수 있습니다.

TBASCFS 옵션

TBASCFS를 실행할 때 사용할 수 있는 옵션은 다음과 같습니다.

TBASCFS 전용 옵션

옵션
설명

-p PORT, --port=PORT

TAS 포트 번호를 지정 (필수, 1-65535)

-a, --aio

TAS 파일 시스템에 대한 비동기 I/O(AIO) 사용

-h, --help

TBASCFS 및 FUSE 도움말 출력

-V, --version

TBASCFS 및 FUSE 버전 정보 출력

FUSE 자동 적용 옵션

TBASCFS는 다음 FUSE 옵션을 자동으로 적용합니다.

옵션
설명

default_permissions

커널에서 파일 시스템 권한 검사를 수행

clone_fd

FUSE worker 스레드마다 별도의 /dev/fuse fd를 사용하여 스레드 간 경합 최소화

TBASCFS는 초기화 단계에서 direct_io 를 내부적으로 항상 활성화합니다. 따라서 일반 파일 데이터는 커널 파일 내용 캐시(page cache)를 하지 않습니다.

이로 인해 다음 FUSE 옵션은 효과가 없으며 지원하지 않습니다.

옵션
설명

kernel_cache

파일 내용 캐시를 유지

auto_cache

파일 재오픈 시 파일 내용 캐시를 무효화

ac_attr_timeout

auto_cache에 사용하는 timeout 설정

circle-info

참고

FUSE 자체 옵션(예: -f foreground, -d debug 등)도 함께 사용할 수 있습니다. tbascfs -h를 통해 전체 옵션 목록을 확인할 수 있습니다.

파일 시스템 구조

TBASCFS를 통해 마운트한 후의 파일 시스템 구조는 다음과 같습니다.

경로 구조

경로 규칙

  • 루트 경로(/)에는 현재 TAS에 존재하는 모든 디스크 스페이스가 +DSNAME 형식으로 표시됩니다.

  • 디스크 스페이스 내부의 파일 및 디렉터리에는 일반 파일 시스템과 동일한 방식으로 접근합니다.

  • 디스크 스페이스 자체(/+DS0)는 읽기 전용 디렉터리로 취급되며, 디스크 스페이스의 생성/삭제는 tbsql에서 수행해야 합니다.

  • 즉, 루트 경로 바로 아래에는 TBASCFS를 통한 디렉터리/파일 생성이 불가능합니다.

예제

파일 시스템 연산

TBASCFS를 통해 수행할 수 있는 파일 시스템 연산은 다음과 같습니다. 마운트된 디렉터리에서 표준 Linux 명령어를 사용하여 해당 연산을 수행할 수 있습니다.

파일 조회 (ls, stat)

마운트된 경로에서 ls 또는 stat 명령어를 사용하여 파일 및 디렉터리의 정보를 조회할 수 있습니다.

예제

circle-info

참고

파일의 atime/mtime/ctime은 TAS에서 파일별 시간 정보를 관리하지 않기 때문에 마운트 시점의 시간으로 표시됩니다.

파일 시스템 용량 조회 (df)

df 명령어를 사용하여 TAS 디스크 스페이스의 전체 용량과 여유 용량을 조회할 수 있습니다.

예제

circle-info

참고

표시되는 용량은 모든 디스크 스페이스의 합산 용량입니다.

파일 복사 (cp)

표준 cp 명령어를 사용하여 TAS 파일을 로컬로 복사하거나, 로컬 파일을 TAS로 복사할 수 있습니다.

사용법

예제

다음은 TAS 파일을 로컬로 복사하는 예제입니다.

다음은 로컬 파일을 TAS로 복사하는 예제입니다.

파일 생성

touch, cp, 또는 애플리케이션의 파일 생성 요청을 통해 TAS에 파일을 생성할 수 있습니다.

예제

파일 삭제 (rm)

표준 rm 명령어를 사용하여 TAS 파일을 삭제할 수 있습니다.

사용법

인자
설명

-r

디렉터리를 재귀적으로 삭제

-f

존재하지 않는 파일을 무시

예제

circle-info

참고

DB가 사용 중인 파일(예: 데이터 파일, 컨트롤 파일 등)은 삭제할 수 없으며, EBUSY 오류가 발생합니다.

디렉터리 생성 (mkdir)

표준 mkdir 명령어를 사용하여 TAS 디스크 스페이스 내에 디렉터리를 생성할 수 있습니다.

사용법

예제

circle-info

참고

디스크 스페이스 자체(/+DSNAME)는 생성할 수 없습니다. 디스크 스페이스 생성은 tbsql의 CREATE DISKSPACE 구문을 사용합니다.

디렉터리 삭제 (rmdir)

표준 rmdir 명령어를 사용하여 빈 디렉터리를 삭제할 수 있습니다.

사용법

예제

circle-info

참고

디렉터리가 비어있지 않으면 ENOTEMPTY 오류가 발생합니다. rm -r로 재귀적 삭제가 가능합니다.

파일/디렉터리 이동 및 이름 변경 (mv)

표준 mv 명령어를 사용하여 TAS 파일을 이동하거나 이름을 변경할 수 있습니다.

사용법

인자
설명

src, dst

마운트된 경로 내의 파일 또는 디렉터리 경로

예제

같은 디스크 스페이스 내에서의 이동 (alias 변경으로 처리):

다른 디스크 스페이스 간의 이동 (복사 후 삭제로 처리):

circle-info

참고

같은 디스크 스페이스 내 이동은 alias 변경으로 처리되어 빠르게 수행됩니다. 다른 디스크 스페이스 간 이동은 파일 복사 후 원본 삭제로 처리됩니다.

파일 권한 변경 (chmod)

표준 chmod 명령어를 사용하여 TAS 파일 및 디렉터리의 권한을 변경할 수 있습니다.

사용법

예제

circle-info

참고

루트 경로(/) 및 디스크 스페이스 경로(/+DSNAME)에 대한 권한 변경은 허용되지 않습니다.

파일 크기 변경 (truncate)

truncate 명령어 또는 애플리케이션의 truncate 호출을 통해 파일 크기를 변경할 수 있습니다.

예제

파일 공간 사전 할당 (fallocate)

fallocate 명령어를 통해 파일에 디스크 공간을 사전 할당할 수 있습니다.

사용법

예제

circle-info

참고

FALLOC_FL_KEEP_SIZE 모드가 지원됩니다. FALLOC_FL_PUNCH_HOLE, FALLOC_FL_ZERO_RANGE는 현재 지원되지 않습니다.

백업 및 복구 예제

TBASCFS를 활용한 백업 및 복구 예제를 설명합니다.

사전 조건

  • tbascfs 가 정상적으로 마운트된 상태여야 합니다.

  • 백업 및 복구 작업은 Tibero 관리자 권한으로 수행해야 합니다.

  • Hot Backup 및 Hot Recover 은 데이터베이스가 ARCHIVELOG 모드여야 합니다.

  • 복구 작업 전에 대상 경로와 백업 경로를 정확히 확인해야 합니다.

[예 1] Cold Backup

1.1 Diskspace 마운트

1.2 데이터베이스 종료

1.3 데이터 파일 백업

데이터 파일, 컨트롤 파일, 로그 파일을 백업 디렉터리로 복사합니다.

[예 2] Cold Recover

2.1 기존 데이터 삭제

기존 DB파일을 삭제합니다.

circle-exclamation

2.2 데이터 복구

데이터베이스가 종료된 상태에서 백업 파일을 원래 위치로 복사합니다.

2.3 데이터베이스 기동

[예 3] Hot Backup

3.1 Archive Mode 확인

다음 SQL을 DB 인스턴스에 접속 후 실행하여 데이터베이스가 ARCHIVELOG 모드인지 확인합니다.

실행 결과 예시는 다음과 같습니다.

3.2 Backup Mode 시작

3.3 데이터 파일 백업

데이터 파일을 백업 디렉터리로 복사합니다.

3.4 Backup Mode 종료

3.5 아카이브 로그 백업

아카이브 로그를 Diskspace 내에 저장하는 경우, 아카이브 로그도 함께 백업합니다.

[예 4] Hot Recover

4.1 기존 데이터 파일 삭제

circle-exclamation

4.2 데이터 파일 복구

백업한 데이터 파일을 원래 위치로 복사합니다.

4.3 아카이브 로그 복구

백업된 아카이브 로그가 필요한 경우 복구합니다. 아카이브 로그가 이미 존재하는 경우 이 단계를 생략할 수 있습니다.

4.4 데이터베이스를 MOUNT 상태로 기동

4.5 복구 수행

4.6 데이터베이스 OPEN

circle-exclamation

제어 명령어

TBASCFS가 마운트된 상태에서 별도의 터미널을 통해 실행 중인 TBASCFS 프로세스를 제어할 수 있습니다.

get loglevel

현재 설정된 로그 레벨을 조회합니다.

사용법

예제

set loglevel

로그 레벨을 변경합니다.

사용법

인자
설명

level

설정할 로그 레벨. 다음 값 중 하나: none, error, warn, info, debug, trace

예제

circle-info

참고

로그 레벨 변경은 TBASCFS 재시작 없이 즉시 적용됩니다. 로그는 $TB_HOME/instance/ascfs/ascfs.log 파일에 기록됩니다.

circle-exclamation

로그 관리

로그 파일 경로

TBASCFS의 로그 파일은 다음 경로에 생성됩니다.

로그 파일 재오픈 (logrotate 연동)

TBASCFS는 자체적인 로그 파일 크기 제한, 로그 파일 크기 감시 등의 로그 롤링 관련 기능은 제공하지 않습니다. 로그 파일 롤링이 필요한 경우 logrotate 등의 외부 툴 연동이 필요합니다.

logrotate 등의 외부 툴을 사용하여 로그 파일을 rotate한 후, SIGUSR1 시그널을 보내면 TBASCFS가 새로운 로그 파일을 열어 기록을 계속합니다. SIGNAL 수신 전까지는 rotate 이전 파일에 로그가 기록됩니다.

예제

Callstack Dump

치명적 시그널(SIGSEGV, SIGBUS, SIGILL, SIGFPE, SIGABRT) 발생 시 다음 경로에 callstack dump가 자동으로 생성됩니다.

callstack dump는 pstack 또는 gstack 툴을 사용하므로, 오류 발생시 callstack 확보가 필요한 경우 사전에 해당 tool들의 설치 여부와 접근 권한 여부 확인이 필요합니다.

마운트 해제

TBASCFS를 통해 마운트한 파일 시스템을 해제하려면 fusermount 또는 umount 명령어를 사용합니다.

사용법

예제

circle-info

참고

TBASCFS 프로세스가 정상/비정상 종료될 때 자동으로 마운트를 해제하려면 auto_unmount 옵션으로 mount가 필요합니다.

TBASCFS 에러

다음은 TBASCFS를 사용하는 도중에 발생할 수 있는 에러에 대한 원인과 해결 방법에 대한 설명입니다.

connection failed! (IP:PORT)

원인

포트 번호를 통해 TAS 인스턴스와 연결하는데 실패했을 경우

해결 방법

포트 번호 또는 TAS 인스턴스가 실행되어 있는지 확인. 단, TBASCFS는 연결 실패 시에도 종료되지 않으며 이후 I/O 시점에 연결이 가능하면 정상 동작함

TAS port not specified or invalid. Use -p option.

원인

TAS 포트 번호가 지정되지 않았거나 유효하지 않은 포트 번호(0 이하 또는 65535 초과)가 입력된 경우

해결 방법

-p 옵션으로 유효한 TAS 포트 번호(1-65535)를 지정

argument parsing failed.

원인

TBASCFS 실행 시 올바르지 않은 옵션이나 인자가 입력된 경우

해결 방법

tbascfs -h를 통해 올바른 옵션 및 인자를 확인

file system mount failed.

원인

FUSE 파일 시스템 마운트에 실패한 경우. 마운트 포인트가 유효하지 않거나, FUSE가 설치되어 있지 않거나, 권한이 부족한 경우 등

해결 방법

마운트 포인트 경로가 존재하고 접근 가능한지 확인. FUSE(libfuse3)가 설치되어 있는지 확인. $TB_HOME/instance/ascfs/ascfs.log 파일에서 상세 에러 내용 확인

Failed to connect to control socket

원인

tbascfs get loglevel 또는 tbascfs set loglevel 등의 제어 명령어 실행 시 실행 중인 TBASCFS 프로세스에 연결하지 못한 경우

해결 방법

TBASCFS가 실행 중이고 마운트되어 있는지 확인

EBUSY (rm, mv 등에서)

원인

DB 또는 다른 프로세스가 해당 파일을 사용 중인 경우

해결 방법

파일을 사용 중인 프로세스가 종료된 후 다시 시도

ENOTEMPTY (rmdir에서)

원인

삭제하려는 디렉터리가 비어있지 않은 경우

해결 방법

디렉터리 내 파일을 먼저 삭제하거나 rm -r로 재귀적 삭제 수행

EACCES (mkdir, chmod 등에서)

원인

디스크 스페이스 경로(/+DSNAME)에 대해 허용되지 않는 연산을 시도한 경우

해결 방법

디스크 스페이스 관련 작업은 tbsql을 통해 수행

Last updated