2. 파일시스템 관리
2-1. 파일 및 디렉터리 관리
1) ls-l 명령어 수행 시 각 필드 항목
2) 파일의 종류
- “ls-l” 명령어 사용 시 첫 번째 필드의 첫 번째 비트
- 일반 파일 : “-“로 표기
- 디렉터리 (directory) : ”d”로 표기
- 심벌릭링크 파일 : “l”로 표기
: ln 명령어 : 링크 파일 생성 명령어
: 옵션 없이 수행 시 하드 링크 파일 생성, [-s] 옵션 사용 시 심벌릭링크 파일 생성
- 하드 링크 : inode number가 같음. 복사 개념
- 심벌릭링크 : inode number가 다름. 바로가기 개념
EX) # ln -s file.txt file.txt.sl file.txt의 심벌릭링크 파일로 file.txt.sl을 생성
- 블록 장치 파일 (/dev/hda, /dev/fd0 등) : “b”로 표기
- 문자 디바이스 파일 (입출력 장치) : “c”로 표기
3) 파일의 권한 (Permission)
- “ls-l” 명령어 사용 시의 첫 번째 필드에서 첫 번째 비트를 제외한 9개 비트
- 소유자 (owner) / 그룹 (group) / 기타 사용자 (others) 순으로 표기
EX) # ls-l
drwxr-xr-x … directory directory 파일은 디렉터리이며 소유자에 대해 모든 권한을 부여하며, 그룹/기타 사용자에게는 읽기와 실행 권한만 부여
-rw--r--r … file.txt file.txt 파일은 일반 파일이며 소유자에 대해 읽기와 쓰기 권한을 부여하며, 그룹/기타 사용자에게는 읽기 권한만 부여
- 특수 접근 권한
: SetUID : 이 권한이 있는 파일을 실행하는 동안에는 파일 소유자의 권한으로 실행되도록 함
EX) -rwsr-xr-x 1 root root … /bin/passwd passwd 명령어를 실행하는 동안은 root 권한으로 동작
: SetGID : 이 권한이 있는 파일을 실행하는 동안에는 파일 소유 그룹의 권한으로 실행되도록 함
: Sticky bits : 이 권한이 있는 디렉터리에는 누구나 파일을 생성할 수 있음 (삭제는 소유자와 root만 가능)
EX) drwxrwxrwt 16 root root … /tmp tmp 디렉터리에는 누구나 파일을 생성할 수 있음
- umask 명령어
: 기본 접근 권한을 출력 변경하는 명령어
EX) # umask 022 그룹, 기타 사용자에게는 쓰기 권한을 부여하지 않도록 기본 접근 권한 설정
: 일반 파일의 최대 접근 권한은 666이고 디렉터리의 최대 접근 권한은 777
: umask가 022일 때 파일을 생성한 직후의 권한은 644이고 디렉터리를 생성한 직후의 권한은 755
: 파일과 디렉터리가 새로 생성될 때 새로 생성되는 파일은 실행 권한을 제외함
4) 권한 소유권 변경 관련 명령어
- chown 명령어
: 파일과 디렉터리의 소유자와 소유 그룹을 변경하는 명령어
: [-R] : 서브 디렉터리의 소유자와 소유 그룹도 같이 변경
EX) # chown fedora2 /linuxmaster/fedora.txt fedora.txt 파일의 소유자를 fedora2로 변경
# chown fedora2:grp01 /linuxmaster/fedora.txt fedora.txt 파일의 소유자를 fedora2로 소유 그룹을 grp01로 변경
- chgrp 명령어 : 파일과 디렉터리의 소유 그룹을 변경하는 명령어
- chmod 명령어
: 파일과 디렉터리의 접근 권한을 변경하는 명령어
: [-R] : 서브 디렉터리의 접근 권한도 모두 변경
EX) # chmod 644 perm.tmp perm.tmp 파일의 접근 권한을 644(rw-r—r--)로 변경
# chmod go-rwx perm.tmp perm.tmp 파일의 접근 권한에서 그룹과 기타 사용자의 권한을 모두 제거
: [-t] : sticky bit 설정하는 옵션
5) 파일 속성 관련 명령어
- 파일 속성 기호
: -a 해당 파일에 추가만 가능
: -c : 자동으로 압축된 상태로 저장
: -d : dump로 백업이 되지 않음
: -i : 해당 파일에 대해 변경/삭제 등을 할 수 없음
: -u : 해당 파일이 삭제될 경우 그 내용이 저장되며, 데이터 복구가 가능
- lsattr 명령어
: 디렉터리/파일의 속성을 출력하는 명령어
- chattr 명령어
: 디렉터리/파일의 속성을 변경하는 명령어
EX) chattr +i attr.tmp attr.tmp 파일에 i 속성을 추가
2-2. 파일시스템 복구
1) /etc/fstab 파일
- 파일시스템의 마운트 설정 정보를 가지고 있는 파일
- 파일 구조
: 장치 이름에는 장치 파일명 외에도 UUID나 라벨명으로 설정 가능
- 옵션 필드 종류
: defaults : 기본값. rw, nouser, auto, exec, suid 속성을 포함
: auto : 부팅 시 자동으로 마운트 <-> noauto
: exec : 실행파일이 실행되는 것을 허용 <-> noexec
: suid : SUID/SGID의 사용 허용 <-> nosuid
: ro : 읽기 전용 <-> rw : 읽기/쓰기 허용
: user : 일반 사용자도 마운트 가능 <-> nouser : 일반 사용자의 마운트 불가능 (root만 가능)
: usrquota : 사용자별로 디스크 쿼터 설정 허용
: grpquota : 그룹별로 디스크 쿼터 설정 허용
- 덤프 설정
: 1 : dump 등의 데이터 백업 명령어 사용으로 파일시스템의 내용 덤프 가능
: 0 : 파일시스템의 내용을 덤프 불가능
- 파일 점검 옵션
: 0 : 부팅 시 fsck 명령어로 파일시스템 점검 미수행
: 1 : 루트 파일시스템에 설정 부팅 시 파일시스템 점검 수행
: 2 : 루트 파일시스템 이외의 파일시스템 점검 수행
2) mount 명령어
- 파일시스템을 마운트하는 명령어
- 형식 : # mount [옵션] [장치 이름] [마운트 포인트]
- 주요 옵션
: [-t] : 파일시스템 종류를 지정
EX) # mount-t iso9660 /dev/cdrom /mnt/cdrom CD-ROM을 /mnt/cdrom 디렉터리에 마운트
: [-f] : 마운트가 가능한지 확인만 수행
: [-o] : 마운트 옵션을 지정
EX) # mount -t ext4 -o ro,user /dev/sdb /mnt /dev/sdb 장치를 /mnt에 마운트 읽기 전용, 일반 사용자도 마운트 할 수 있도록 허용
# mount -t iso9660 -o loop /linuxmaster/temp.iso /mnt/iso temp.iso ISO 이미지를 /mnt/iso에 마운트
- 언마운트는 umount 명령어를 이용
- CD-ROM 장치 언마운트 후 CD를 꺼낼 때 eject 명령어를 이용
* 마운트 주의사항
: 한 개의 장치는 한 개의 mp를 가져야 하며, mount와 umount 작업 시 mp 밖에서 작업해야 함
3) fdisk 명령어
- 디스크의 파티션 생성 삭제 정보 출력 등 파티션을 관리하는 명령어
- 주요 옵션
: [-l] : 파티션 테이블 출력
- 주요 내부 명령어
: d : 파티션을 삭제
: l : 사용가능한 파티션 시스템 종류를 출력
* 주요 시스템 종류 : 82(linux swap), 83(linux), 8e(linux LVM), fd(RAID)
: n : 새로운 파티션 생성
: p : 파티션 테이블 출력
: t : 파티션의 시스템 종류를 변경
: w : 파티션 정보를 디스크에 저장하고 종료
4) 파일시스템 생성 포맷 명령어
- mkfs 명령어
: [-t] : 파일시스템 종류 지정 (default : ext2)
EX) mkfs -t ext4 /dev/sdb1 /dev/sdb1 파일시스템을 ext4로 생성
: mkfs.ext2 / mkfs.ext3 / mkfs.ext4 명령어도 제공
- mke2fs 명령어
: [-t] : 파일시스템 종류 지정 (default : ext2)
: [-c] : 배드블록을 체크
: [-b ] : 블록크기를 바이트 수로 지정
: [-j] : ext3 형식으로 생성 (journaling)
: 기본 설정값은 /etc/mke2fs.conf 파일에서 정의
5) LVM(Logical Volume Manager)
- 독립적으로 구성된 디스크 파티션을 하나로 연결하여 한 파티션처럼 사용할 수 있도록 해주는 관리 도구
- 관련 용어
: PV(Physical Volume) : 실제 하드디스크의 파티션을 의미
: VG(Volume Group) : 여러 개의 PV를 그룹으로 묶은 것을 의미
: LV(Logical Volume) : VG를 다시 적절한 크기로 나눈 파티션을 의미
: PE(Physical Extent) : PV가 가진 일정한 블록을 의미
: LE(Logical Extent) : LV가 가진 일정한 블록을 의미
- 주요 명령어 (LVM 생성 시 사용 순)
1) 해당 파티션의 종류 변경
: fdisk t 기존 83(linux)를 8e(linux)로 변경
2) PV 생성
: pvcreate 명령어 : PV 생성
: pvscan 명령어 : PV 상태를 확인
3) VG 생성 : vgcreate 명령어
4) VG 활성화
: vgchange -a y 활성화
: vgchange -a n : 비활성화
: vgdisplay -v : VG 상태 확인
5) vgscan
: VG에 해당하는 모든 디스크를 스캔하고, LVM 캐시 파일을 재작성
[root@www~] #
Reading all physical volumes. This may take a while.. Found volume group “lvm0” using metadata type lvm2
[root@www~] #
6) LV 생성
: lvcreate 명령어
: lvcreate –L : LV의 사이즈를 지정하는 옵션(K-Kilobytes, M-Megabytes, G-Gigabytes, T-Terabytes)
: lvcreate –l : LV의 사이지를 지정하는 옵션으로 pe의 개수로 용량을 지정함
: lvscan 명령어 : LV 상태 확인
7) LV에 파일시스템 생성 : mkfs / mke2fs 명령어 사용
8) LV 마운트 : mount 명령어 사용
6) 파일시스템 점검 복구 관련 명령어
- fsck 명령어
: 파일시스템을 검사/복구하는 명령어
: [-f] : 강제 검사
: [-b] : 지정한 백업 슈퍼 블록을 사용하여 복구
: fsck.ext2 / fsck.ext3 / fsck.ext4 명령어도 제공
- e2fsck 명령어
: 파일시스템을 점검하기 전에 해당 파일시스템을 umount 후 진행
: [-j ext3/ext4] : ext3나 ext4 파일시스템을 검사할 때 지정
- badblocks 명령어
: 지정한 장치의 배드 블록을 검사하는 명령어
: [-v] : 검사 결과 자세히 출력
: [-o] : 검사 결과를 지정한 출력 파일에 저장
- tune2fs 명령어
: ext2 파일시스템을 설정(튜닝)하는 명령어
: [-i] : ext2 파일시스템을 ext3 파일시스템으로 바꿈
: [-l] : 파일시스템 슈퍼 블록 내용을 출력
7) 새로운 디스크 추가 과정
1. 새로운 디스크 설치
2. 파티션 생성 : fdisk 명령어
3. 파일시스템 생성 : mkfs / mke2fs 명령어
4. 마운트 할 디렉터리(마운트 포인트) 생성
5. 파일시스템 마운트 : mount 명령어
2-3. 관련 명령어
1) ls 명령어
- 주요 옵션
: [-a] 숨겨진 파일을 포함한 모든 파일의 목록을 출력
: [-d] : 지정한 디렉터리 자체의 정보를 출력
: [-i] : inode 번호를 출력
: [-l] : 파일의 상세한 정보를 출력
: [-A] : .(현재 디렉터리), ..(이전 디렉터리)를 제외하고 출력
: [-F] : 파일의 종류를 함께 출력 : (* : 실/행파일 , / : 디렉터리 , @ : 심벌릭링크)
: [-L] : 심벌릭링크 파일의 원본 파일 정보를 함께 출력
: [-R] : 하위 디렉터리들의 파일 목록까지 함께 출력
- grep 명령어와 조합
: 디렉터리만 출력
# ls -al | grep “^d”
: 일반 파일만 출력
# ls -al | grep “^-”
# ls -al | grep –v “^[a-zA-Z]”
: 특정 문자열이 들어간 파일 검색
# ls -al | grep linux
2) 디스크 사용량 출력 명령어
- df 명령어
: 파일 시스템별 디스크 사용량을 확인하는 명령어
: [-a] : 모든 파일시스템의 디스크 사용량을 출력
: [-h] : 디스크 사용량을 알기 쉬운 단위로 출력
: [-t] : 지정한 파일시스템에 해당하는 디스크 사용량을 출력
: [-T] : 파일시스템의 종류도 함께 출력
: 옵션 없이 사용 시 vs [-h] 옵션 사용 시 비교
- du 명령어
: 디렉터리나 사용자별로 디스크 사용량을 확인하는 명령어
: 형식 : du [옵션] [디렉터리]
: [-s] : 특정 디렉터리의 전체 사용량을 출력
: [-h] : 디스크 사용량을 알기 쉬운 단위로 출력
: [-d NUM] : (--max-depth=NUM) 현재 디렉터리 기준으로 하위 NUM 단계 아래의 디렉터리까지의 디스크 사용량 출력
: 옵션 없이 사용 시 현재 디렉터리의 디스크 사용량을 출력
3) 디스크 사용량(quota) 관련 명령어
- 쿼터 설정 전에 etc/fstab 파일의 옵션 필드에 쿼터 관련 설정을 해주어야 함
- quotacheck 명령어 (aquota.user와 동일)
: 쿼터 파일을 생성 확인 수정을 위해 파일시스템을 검사하는 명령어
: [-a] : 전체 파일시스템 검사
: [-u] : 사용자 쿼터 확인
: [-g] : 그룹 쿼터 확인
: [-m] : 파일시스템을 다시 마운트 하지 않음
: [-v] : 자세하게 출력
EX) # quotacheck -avugm
- quotaon 명령어
: 파일시스템의 쿼터 기능을 활성화하는 명령어
: [-a] : 전체 파일시스템의 쿼터를 활성화
: [-u] : 사용자 쿼터 활성화
: [-g] : 그룹 쿼터 활성화
: [-v] : 자세하게 출력
EX) # quotaon -augv
- edquota 명령어
: 쿼터를 설정하는 명령어 (vi 형식)
: [-u] : 사용자 쿼터 설정
EX) # edquota -u fedora fedora 유저의 쿼터 설정
: [-g] : 그룹 쿼터 설정
: [-p] : 쿼터 설정 복사
EX) # edquota -p fedora fedora2 fedora 유저의 쿼터 설정 내용을 fedora2 유저에게 적용
- setquota 명령어
: 쿼터를 설정하는 명령어 커맨드 라인에서 옵션으로 설정하는 형식
: 형식 : # setquota [옵션] [이름] [block soft limit] [block hard limit] [inode soft limit] [inode hard limit] [장치명]
EX) # setquota -u fedora 1000 1100 0 0 /
- quota 명령어
: 쿼터 정보를 출력하는 명령어
: [-u], [-g] 옵션 포함
EX) # quota -u fedora fedora 유저의 쿼터 설정 내용 출력
- repquota 명령어
: 쿼터 정보를 요약하여 출력하는 명령어
: [-a], [-u], [-g] 옵션 포함
: [-v] : 사용량이 없는 쿼터의 정보 출력
- uquota : 사용자에 대한 디스크 쿼터를 설정
4) 파일시스템 ACL(Access Control List) 관련 명령어
- getfacl 명령어
: 접근 권한을 확인하는 명령어
- setfacl 명령어
: 접근 권한을 설정하는 명령어
: [-m] : 권한을 수정
: [-x] : 권한을 삭제
: [-R] : 하위 디렉터리의 권한까지 변경
5) 스왑 영역 관련 옵션
- 스왑(swap)
- mkswap 명령어
: 스왑 영역을 생성하는 명령어
: [-c] : 스왑 영역을 만들기 전에 먼저 배드 블록을 검사
- swapon / swapoff 명령어
: 스왑 영역을 활성화 비활성화하는 명령어
- dd 명령어
: 블록 단위로 파일을 복사 변환하는 명령어
: [if=FILE] : 지정한 파일을 입력으로 받음
: [of=FILE] : 지정한 파일을 출력으로 설정
: [bs=BYTES] : 한 번에 읽어 들이거나(read) 출력(write)할 바이트 수 지정
: [count=BLOCKS] : 지정한 블록 수만큼 복사
EX) # dd if=/dev/zero of= swapfile bs=1024 count=1000 1024 바이트씩 1000번을 /dev/zero에 읽어서 /swapfile에 기록
- 스왑 파일 생성 절차
1) dd 명령어로 파일 생성
2) mkswap 명령어로 스왑 파일 생성
3) sync 명령어로 현재 메모리에 있는 데이터를 디스크에 저장
4) swapon 명령어로 스왑 영역 활성화
6) parted 명령어
- 파티션 생성, 삭제 크기 변경 등의 파티션 관리를 위한 명령어
- 파티션 분할 시 사용
7) partprobe 명령어
- 리부팅 없이 사용 중인 파티션 재인식
해당 블로그를 참고하여 정리했습니다.
https://bangu4.tistory.com/139
'자격증 & 공부 > 리눅스마스터 1급' 카테고리의 다른 글
[리눅스마스터1급 - 1차] 2과목 - 4-4. 소프트웨어 설치 및 관리 (0) | 2024.06.13 |
---|---|
[리눅스마스터1급 - 1차] 2과목 - 4-3. 프로세스 관리 (1) | 2024.06.13 |
[리눅스마스터1급 - 1차] 2과목 - 4-1. 사용자 관리 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 1과목 - 3-2. 네트워크의 이해 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 1과목 - 3-1. 네트워크 기초 (0) | 2024.06.13 |