[리눅스마스터 2급 2차] 1과목 – 1. 파일시스템 관련 명령어

[1과목: 리눅스 운영 및 관리]

1. 파일 시스템 관련 명령어

1. 0. 리눅스 기본 명령어

  • #pwd
    : 현재 작업중인 경로 확인
  • #ls
    :현재 디렉터리의 파일 및 하위 디렉터리 확인
    • #ls: 현재 디렉터리의 파일 및 하위 디렉터리 확인
    • #ls -l: 파일 및 하위 디렉터리의 권한, 파일 크기 등 상세 내용 확인
    • #ls -a: 숨겨진 파일 및 하위 디렉터리 확인
    • #ls -all: 숨겨진 파일 및 하위 디렉터리의 상세 내용 확인
  • #cd
    : 현재 작업중인 경로 변경
    • cd: 홈 디렉터리로 경로 변경
    • cd ..: 상위 디렉터리로 경로 변경
    • cd [디렉터리명]: 특정 디렉터리로 경로 변경
  • #cat [파일명]
    : 파일의 내용을 텍스트 형태로 출력
  • #tail -n [출력 행 수] [파일명]
    : 파일의 마지막 행을 기준으로 출력 *default = 10줄
  • #touch [파일명]
    : 공백의 파일 생성
  • #mkdir [디렉터리명]
    : 새 디렉터리 생성
  • rm [파일명]
    : 파일 제거
  • #rmdir [디렉터리명]
    : 디렉터리 제거
  • #mv [파일명] [변경할 파일명] [이동할 디렉터리명]
    : 파일의 이름을 변경하거나, 다른 위치로 이동
  • #cp [파일명] [복사할 파일명] [복사할 디렉터리명]
    : 파일을 복사
  • #man [명령어]
    : 명령어에 대한 도움말


1. 1. 권한 및 그룹 설정

1. 1. 1. 소유권 관련 명령어 ★

#ls -al
: 현재 디렉터리의 파일 및 하위 디렉터리의 권한, 파일 크기 등 상세 확인

drw-rw-r–1namegroup222024-03-0415:13myfile
drw-rw-r–
파일유형소유자 접근 권한그룹 접근 권한기타 사용자 접근 권한

① 파일 허가권. 파일유형(d)과 파일 접근권한(소유자:o, 그룹:g, 기타사용자:o)으로 구성
② 물리적 파일 연결 개수
③ 파일 소유자 명
④ 파일 그룹 명
⑤ 파일 크기(byte)
⑥ 마지막 수정일
⑦ 파일명
cf) ⓛ필드는 허가권(Permission), ③,④ 필드는 소유권(ownership)과 관련

#chown ★★★
: 파일이나 디렉터리의 소유권 변경

#chown [옵션] [계정명]:[그룹명] [파일명]

[옵션]
-R: 디렉터리의 내부 파일 및 하위 디렉터리의 소유권 변경

chown yb:user test.txt  # test.txt파일의 소유자는 yb, 소유그룹은 user로 설정
chown -R root myfile    # myfile디렉터리의 모든 파일과 하위 디렉터리의 소유자를 root로 변경

#chgrp ★★★
: 파일이나 디렉터리의 소유그룹 변경

#chgrp [옵션] [그룹명] 파일명]

[옵션]
-R: 디렉터리의 내부 파일 및 하위 디렉터리의 소유그룹 변경

chgrp user test.txt  # text.txt의 소유그룹을 user로 변경


1. 1. 2. 허가권 관련 명령어 ★

#chmod ★★★
: 파일이나 디렉터리의 접근권한 변경

#chmod [옵션] [모드] [파일명]

[옵션]
-R: 하위에 위치한 파일과 디렉터리 권한 변경
-v: 현재 실행되고 있는 모든 파일 확인
-c: 실제로 변경된 파일들만 자세하게 출력

[모드] – 문자열모드

레퍼런스연산자권한
u: 사용자
g: 그룹
o: 기타사용자
a: 모두
+: 허가권 부여
-: 허가권 제거
=: 허가권 지정
r: 읽기
w: 쓰기
x: 실행하기
chmod u+w test.txt         #u(사용자)에게 w(쓰기)권한 추가
chmod u=rwx, o=r test.txt  #u(사용자)는 모든 권한을, o(기타 사용자)는 r(읽기)만 가능

[모드] – 8진법 모드

기호숫자(2진수)숫자(8진수)
0000
00x0011
rwx1117
chmod 777 test.txt  # 모든 사용자엑 모든 권한 부여
chmod 775 test.txt  # 사용자에게 모든 권한을, 그룹에게 읽기,실행하기를, 기타사용자에게 읽기,실행하기 권한을 부여

#umask ★★★
: 파일이나 디렉터리 생성 시 초기 접근권한 설정

  • 파일의 default 권한: 666
  • 디렉터리의 default 권한: 777
  • 파일이나 디렉터리 생성 시 디폴트 권한 값에서 umask값을 뺀 값을 기본 허가권으로 설정
umask      #기본 umask값 확인
umask -S   #기본 umask값을 문자로 확인
umask 002  #파일의 권한: 666-002=664, 디렉터리의 권한: 777-002=775


1. 1. 3. 특수권한 ★

SetUID / SetGID ★★★

  • 프로세스가 실행되는 동안 해당 프로세스의 root권한을 임시로 가져오는 기능
  • 사용자가 사용할 때만 소유자/그룹 권한으로 실행

sticky bit ★★★

  • 일반적으로 공용 디렉터리를 사용할 때 설정. 기타 사용자(x)에 t로 표기
  • /tmp 디렉터리에 기본적으로 설정되어 있음
  • Sticky bit가 설정되어 있는 디렉터리의 내용은 파일의 소유자와 root만 변경 가능
  • 누구든 접근 가능하며, 특정 응용프로그램이 다른 응용프로그램에서 생성한 파일을 삭제하지 못하도록 하는 권한 설정
코드절댓값설명
SetUIDs4000프로세스 실행 당시 UID로 설정
SetGIDs2000프로세스 실행 당시 GID로 설정
Sticky bitt1000실행 후에도 메모리를 점유하도록 설정


1. 2. 파일 시스템의 관리

  • OS가 파일을 시스템의 디스크상에서서 구성하는 방식
  • HDD나 SSD와 같은 물리적 저장소를 관리
  • 컴퓨터에서 자료를 쉽게 접근할 수 있도록 보관하는 체계

1. 2. 1. 리눅스 파일 시스템

ext1

  • 리눅스 초기에 사용되던 파일 시스템. 호환성이 없음
  • 2GB의 데이터와 파일명을 255자까지 지정 가능
  • 파일 접근에 대한 타임 스탬프, inode 수정 불가

ext2

  • ext1의 다음 버전으로, 고용량 디스크 사용을 고려하여 설계
  • 호환과 업그레이드가 쉽게 설계

ext3

  • ext2의 확장판으로, 리눅스의 대표적인 저널링을 지원하는 파일 시스템
  • ACL(Access Control List)를 통한 접근 제어 지원

ext4

  • ext2 및 ext3와 호환성이 있는 확장 버전
  • 파일에 디스크 할당 시 물리적으로 연속적인 블록을 할당
  • 64bit 기억 공간 제한을 없엠
  • 16TB의 파일 지원


1. 2. 2. 저널링 파일 시스템

  • 시스템의 비정상적인 종료 시 저널(로그)을 이용해 빠르고 안정적인 복구 가능
  • 데이터를 디스크에 기록하기 전에 로그에 데이터를 남겨, 로그를 사용한 복구 기능 제공
  • 저널링 기술이 적용 된 파일 시스템: ext3, ext4, XFS, JFS, ResierFS

XFS

  • SGI에서 개발한 고성능 저널링 시스템
  • 가장 크기가 큰 파일 생성이 가능
  • 64bit 주소 지원 파일 시스템으로, 확장성이 있는 자료구조와 알고리즘 사용

JFS

  • IBM사의 독자적인 저널링 파일 시스템
  • GPL로 공개하여 현재 리눅스용으로 개발

ReiserFS

  • 독일의 한스 라이저가 개발한 파일 시스템
  • 리눅스용 저널링 파일시스템 중 가장 안정적이라는 평가
  • 모든 파일 객체를 B트리에 저장, 간결하고 색인화된 디렉터리 지원


1. 2. 3. 네트워크 파일 시스템 ★

파일서버(File Server) ★★

  • 파일 서버에는 OS에 따라 Windows, UNIX, Linux 파일서버가 존재
  • Windows 파일섭는 CIFS를 사용하여 클라이언트에 스토리지를 공유
  • 흔히 PC의 윈도우 탐색기의 [속성] -> [공유]로 폴더를 공유하고, 다른 PC에서 네트워크 드라이브 연결로 상대PC의 스토리지를 원격 접속하는 것이 이에 해당
  • UNIX나 Linux에서는 CIFS가 아닌 NFS를 사용
    • Windows <-> Windwos: 윈도우 공유 기능을 이용하여 CIFS사용
    • Linux <-> Linux: 리눅스 NFS-Utils을 이용하여 NFS사용
    • Linux <-> Windwos: Samba를 이용하여 SMB/CIFS를 사용

삼바(Samba) ★★★

  • Windows OS와 Linux 또는 UNIX 서버에 접속하여 파일이나 프린터를 공유하여 사용할 수 있도록 해 주는 소프트웨어
  • SMB/CIFS 네트워킹 프로토콜을 다시 구현한 자유 소프트웨어

SMB(Server Message Block)

  • Microsoft와 Intel에서 개발한 Windows시스템과 다른 시스템 간 사용되는 파일/프린터 공유 프로토콜
  • Windows OS와 Linux, UNIX OS의 자료 및 하드웨어 공유
  • TCP/IP기반 하 NetBIOS프로토콜을 상하며 NFS, NIS와 같은 UNIX의 분산 인증 구조와 유사
  • 삼바(Samba)파일 시스템을 마운트하여 지정

CIFS(Common Internet File System) ★★

  • 네트워크를 위한 SMB를 확장한 파일 시스템. 라우터를 넘어서 연결 가능
  • Windows와 UNIX환경을 동시에 지원하는 인터넷의 표준 파일 규약 프로토콜
  • 이전의 폐쇄적인 SMB프로토콜과는 달리 여러 UNIX업체가 참여하여 결정된 내용

NFS(Network File System) ★★

  • Sun Microsystsems에서 개발한 네트워크 분산 파일 시스템(공유 프로토콜)
  • 다른 host에 있는 파일 시스템의 일부를 자신의 디렉터리 인 것처럼 마운트하여 사용
  • H/W, OS 또는 네트워크 구조가 달라도 공유 가능


1. 2. 4. 기타 지원 가능한 파일 시스템

FAT

  • Windows NT가 지원하는 파일 시스템 중 가장 간단한 시스템
  • FAT로 포맷된 디스크는 클러스터 단위로 할당
  • 읽기 전용, 숨김, 시스템 및 보관 파일 특성만 지원
  • 삼바(Samba) 파일 시스템을 마운트 지정

VFAT(Virtual FAT)

  • FAT 파일 시스템의 확장으로 FAT과 호환
  • FAT보다 제한이 적음
  • 파일 이름은 최대 255자 까지 가능, 공백이나 여러 구두점 포함

FAT32

  • Windows 95, 98 및 ME와 같은 버전과 다중 부팅 구성
  • 32GB보다 큰 파티션을 만들 수 없고, 파티션에 4GB를 초과하는 파일 저장 불가

NTFS

  • Windows에서 사용하는 파일 시스템
  • 안정성이 뛰어나고 대용량 파일 저장 가능. FAT32보다 우수

ISO 9600

  • CD-ROM의 표준 파일 시스템


1. 2. 5. 디스크 쿼터(Disk Quota) ★

: 파일 시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수(inode)를 제한할 때 사용

#quota ★★
: 현재 사용자 단위 쿼터 정보 출력

#quotaon
: 쿼터 서비스 활성화

#quotaoff
: 쿼터 서비스 비활성화

#quotacheck
: 모든 파일 시스템 점검, 쿼터 설정 및 기록 파일 갱신

#repquota ★★
: 시스템 단위 쿼터 정보를 요약하여 출력

#edquota ★★★
: 펀집기(editor, vi)를 이용하여 사용자나 그룹에 디스크 사용량 할당

#edquota [옵션] [계정명]

[옵션]
-p: 디스크 할당량 설정을 다른 사용자와 동일하게 설정
-u: 사용자 디스크 할당량 설정 *default옵션
-g: 그룹 디스크 할당량 설정
-t: 디스크 할당량 유예기간 설정

edquota -p linux yb  # 사용자 linux에게 설정된 쿼터를 사용자 yb에게도 적용
edquota -u yb        # 사용자 yb의 쿼터를 설정하며 vi편집기 실행

#setquota
: 편집기 기반이 아닌 명령행에서 직접 사용자나 그룹에 디스크 사용량을 할당

#setquota [옵션] [계정명] [block_soft_limit] [block_hard_limit] [inode_soft_limit] [inode_hard_limit] [파티션명]

[옵션]
-u: 사용자 디스크 할당량 설정
-g: 그룹 디스크 할당량 설정
-a: 해당 시스템의 모든 설정
-t: 유예기간 설정

setquota -u yb 20M 30M 0 0 /home
  #사용자 yb의 용량 제한을 soft 20M, hard 30M로 설정하고 inode에 대한 설정은 하지 않음

cf) 쿼터 설정 과정: quotacheck -> edquoa -> quotaon -> repquota


1. 2. 6. 파일 시스템 관련 명령어 ★

#mount
: 특정 장치 또는 파일 시스템을 디렉터리처럼 사용하기 위해 연결

#mount [옵션] [장치 또는 파일시스템] [디렉터리명]

[옵션]
-a: /etc/fstab 파일에 정의된 모든 시스템 마운트
-n: /etc/mtab 파일에 정보를 저장하지 않고 마운트
-f: 실제 시스템 호출은 하징 낳고, 마운트 가능 여부만 테스트
-r: 파일을 읽기 전용으로 마운트
-w: 파일 시스템을 읽기/쓰기 형식으로 마운트 *default
-v: 현재 시스템 마운트 정보 확인
t [타입]: 마운트할 파일 시스템의 형식 지정

[타입]
vfat: FAT32
ext2/ext3/ext4: Linux 파일 시스템
iso9660: CD-ROM, DVD
smbfs: 삼바(Samba) 파일 시스템
nfs: 네트워크 파일 시스템의 공유된 영역

#umount
: 마운트를 해제하는 명령어

#umount [옵션] [장치 또는 파일시스템] [디렉터리명]

[옵션]
-a: /etc/mtab에 명시된 파일 시스템 마운트 해제
-n: /etc/mtab 파일을 갱신하지 않고 마운트 해제
-t [타입]: 마운트 해제할 파일 시스템의 형식을 지정

#eject
: 이동식 보조기억 장치(CD-ROM, DVD)등과 같은 미디어를 해제하고 장치 제거

#eject [옵션] [장치명]

[옵션]
-r: CD-ROM 장치 제거
-t: 플로피 디스크 장치 제거

#fdisk ★★★
: 파티션 생성, 삭제, 파티션의 타입 결정 등 작업 수행

fdisk [옵션] [장치명(디스크)]

[옵션]
-v: fdisk 버전 정보 확인
-l: 현재 디스크의 파티션 테이블 정보 확인

fdisk [디스크] – [내부 명령어]
m: 사용 가능한 명령어 확인
l: fdisk에 알려진 파티션 유형 확인
n: 새 파티션 추가
d: 파티션 삭제
t: 파티션 타입 변경
p: 현재 설정된 파티션 정보 확인
w: 현재 설정한 파티션 정보 저장 및 종료
q: 설정된 정보 저장하지 않고 종료

#mkfs ★★★
: 파일 시스템 생성. fdisk로 HDD의 파티션을 나눈 후 해당 파티션에 맞는 파일 시스템을 mkfs 혹은 mke2fs로 생성

#mkfs [옵션] [장치명]

[옵션]
-V: 버전 확인
t [파일시스템]: 생성할 파일 시스템 타입(ext2, ext3, ext4 등) 지정 *미지정시 ext2 default
-v: 작업 상태와 결과 자세히 보기

#mke2fs ★★★
: ext2, ext3, ext4 타입의 리눅스 파일 시스템을 생성

#mke2fs [옵션] [장치명]

cf) 디스크 추가 및 마운트 과정: fdisk -> mkfs -> mkdir -> mount

mkfs.ext4 /dev/sdb1       # /dev/sdb1 파티션을 ext4 파일시스템으로 포맷
mkfs -t ext4 /dev/sdb1    # /dev/sdb1 파티션을 ext4 파일시스템으로 포맷
mke2fs -t ext4 /dev/sdb1  # /dev/sdb1 파티션을 ext4 파일시스템으로 포맷
mke2fs.ext /dev/sdb1      # 이와 같은 사용은 불가능

#fsck / e2fsck
: 파일시스템의 무결성을 점검하고 대화식으로 복구

#fsck [옵션] [장치명]
#e2fsck [옵션] [장치명]

#blkid
: 블록 장치의 파일 시스템 종류와 함께 파일 시스템의 UUID값 확인

#lsblk
: 파일 시스템의 정보를 blkid보다 상세하게 표시. 트리 형식으로 보이는 것이 특징

#du
: 파일 및 디렉터리 별로 디스크 사용량 확인

#du [옵션] [파일명]

[옵션]
-s: 사용량의 총 합계만 확인. 파일의 전체 크기를 합한 값
-k: 결과 값을 KB단위로 확인 *default
-m: 결과 값을 MB단위로 확인
-h: 결과 값을 용량 단위(KB, MB, GB)로 확인
-a: 디렉터리가 아닌 모든 파일에 대한 정보 확인
-c: 모든 파일의 디스크 사용 정보와 마지막의 총 합계(total) 확인

du -sh /*  #/하위의 모든 파일의 총 합계를 용량 단위(KB, MB, GB)로 확인

#df ★★
: 시스템에 마운트 된 HDD의 파티션 단위 사용량 확인

#df [옵션] [파일명]

[옵션]
-h: 용량 단위(KB, MB, GB)로 확인
-T: 파일 시스템 유형을 포함하여 확인
-i: inode 사용량, 공간, 퍼센트 확인
-t [파일 유형] 표시되는 파일 시스템 유형 지정

df -Tht ext2
  # ext2 파일시스템 유형의 파티션 사용량을 파일시스템 유형을 포함하여 용량 단위(KB, MG, GB)로 확인


1. 2. 6. /etc/fstab, /etc/mtab, RAID, LVM ★

/etc/fstab ★★

  • 파일 시스템 정보부팅 시 마운트 포인트가 저장되어 있는 파일
proc/procprocdefaults00

① 파일시스템 장치명, 볼륨 라벨, UUID
② 마운트 포인트
③ 파일 시스템 종류
④ 파일 시스템 속성
default: auto / exec/ rw등을 모두 가짐
auto: 부팅 시 자동 마운트
exec: 실행 파일이 실행되는 것을 허용
ro: 읽기 전용
rw: 읽고 쓰기
user: 일반 사용자들의 마운트 권한 부여
usrquota: 사용자의 디스크 쿼터 설정 명시
grpquota: 그룹별 디스크 쿼터 설정 명시
noauto / noexec/ nouser: 비활성화
⑤ 덤프(dump) 명령으로, 백업 시 덤프 레벨을 결정. 즉 백업 사용 주기 결정
0: 덤프 불가
1: 매일 데이터 백업 가능
2: 이틀에 한번 데이터 백업 가능
⑥ 파일 점검 옵션. 부팅 시 파일 시스템을 점검하는 fsck 순서 부여
0: 파일 시스템 미점검
1: 루트 파일 시스템 점검
2: 루트 파일 시스템 이외의 파일 시스템 점검

/etc/mtab ★★

  • 현재 마운트 되어 있는 파일 시스템이 기록.
  • 내용은 /etc/fstab과 동일하며, 현재 마운트된 파일 시스템의 상태를 읽을 때 사용

RAID(Redundant Array of Independent Disks ★★★
: 여러 개의 디스크를 하나로 묶어서, 하나의 큰 저장 장치처럼 동작하도록 만드는 기술

  • RAID 0
    • 연속된 데이터를 여러 디스크에 라운드 로빈(Round Robin)방식으로 기록
    • 스트라이핑을 통한 성능 향상
    • 데이터를 여러 디스크로 분산하여 저장함으로써 빠른 읽기/쓰기 속도 제공
    • 단일 디스크의 고장 시 데이터 손실 우려
  • RAID 1
    • 미러링으로 데이터 복제본을 만들어 저장
    • 하나의 디스크가 고장나도 복제된 디스크에서 데이터 복구 가능
    • 저장 공간의 활용이 낮음
  • RAID 2
    • 해밍 코드(Hamming Code)를 사용한 오류 검출과 복구 수행
    • 오류 검출과 복구가 가능하지만 복잡하고 비효율적
  • RAID 3 & RAID 4
    • 데이터를 여러 디스크에 스트라이핑 방식으로 분산 저장 후, 오류 수정을 위한 패리티 정보를 별도의 디스크에 따로 저장
    • RAID 3는 데이터를 바이트로 나누어 디스크에 동등하게 분산
    • RAID 4는 데이터를 블록 단위로 나누어 디스크에 분산
  • RAID 5 & RAID 6
    • 분산 패리티 방식. 데이터와 패리티 정보를 포함하여 여러 디스크에 분산하여 저장
    • RAID 5는 하나의 디스크가 고장나도 분산 패리티 정보를 활용하여 데이터 복구
    • RAID 6는 추가적인 패리티 정보를 사용하여 두개의 디스크 고장에도 복구 가능

LVM(Logical Volume Manage) ★★★
: 논리 볼륨 관리자. 여러 개의 물리적인 하드 디스크를 논리적인 디스크로 관리

  • PV(Physical Volume)
    • 실제 스토리지 디바이스로, HDD나 SSD와 같은 저장장치를 의미
    • LVM으로 사용하기 위해 형식을 변환
  • VG(Volume Group)
    • 하나 이상의 PV를 묶어서 구성하는 논리적인 그룹
    • 여러 스토리지 디바이스를 하나의 논리적 그룹으로 묶어서 관리
  • LV(Logical Volume)
    • VG내에 생성된 가상 볼륨
    • 파일 시스템을 만들어 데이터를 저장할 수 있으며, 실질적인 파티션으로 사용

Leave a Comment