파일이나 자료를 쉽게 발견하고 접근할 수 있게 하기 위해서 보관 또는 조직적인 체제라고 보면 된다.
일반적으로 리눅스 파일 시스템을 구성하는 구조도는 위 그림과 같다.
부트 블럭이 있고 그룹별로 블럭이 구성되어 있다.
조금 더 자세히 보면
슈퍼 블럭, 그룹 디스크립터, 블럭 비트맵, 인코드 비트맵, 인코드 테이블 그리고 데이터 블럭으로 나눈다.
슈퍼 블럭: 시스템 관련 정보를 저장하는 블럭, 시스템 관련 정보는 블럭의 크기나 총 블럭의 개수, 블럭 그룹 개수 그리고 inode 개수를 저장
그룹 디스크립터: 각 블럭 그룹을 관리하는 정보를 저장, 블럭 비트맵, inode 비트맵 번호 등을 저장
블럭 비트맵: 블럭들의 상태를 나타내는 공간
inode 비트맵: 파일의 제어 정보나 블럭 포인트를 저장한다. 즉 파일에는 고유 번호가 붙여지게 되는데 그 번호 뿐만 아니라 파일 형태 크기 위치 소유자 정보 등 파일의 구체적인 정보가 inode에 구체적으로 저장이 되서 파일을 제어, inode의 상태 정보를 나타낸다.
inode Table: 각각의 inode의 정보를 나타내는 inode descriptors로 구성
리눅스는 다양한 파일 시스템을 지원
리눅스 전용 파일 시스템을 보겠다.
ext 계열이다.
ext1: 리눅스 초기에 사용되던 파일 관리자, 2gb의 데이터 까지만 컨트롤, 파일명도 255자까지 제한
파일명 지정 시 어떤 파일 시스템을 사용하느냐에 따라서 파일명 규칙이 있다.
아이노드 수정이 불가해서 즉 파일에 대한 제어 정보나 이런 것들을 수정할 수 없었다.
ext2: ext1 다음 버전.
2gb의 데이터 까지만 컨트롤할 수 있었던 것을 보완해서 고용량 디스크도 컨트롤할 수 있게 설계된 파일 시스템
ext3: ext의 확장판.
저널링 기능을 지원.
저널링은 로그 파일. 저널을 다른 말로 로그. 로그를 보고 시스템의 상태를 판단하게 되는데 그러한 기능들을 지원.
시스템의 상태를 안전하게 복원할 수 있는 기능을 지원할 수 있는 파일 시스템
ext4: 최근에는 ext4를 사용.
ext2 및 ext3와 호환이 가능한 버전.
최대 16TB 파일도 지원.
64비트 기억 공간 제한 없음.
<저널링 파일 시스템>
저널이 로그를 보통 저널이라고 이야기 한다.
저널이라는 로그를 보고 시스템 상태를 저장.
시스템이 비정상적으로 종료하게 되면 저널 정보를 검사를 하고 저널을 베이스로 해서 파일 시스템을 안전하게 복원
ext3, ext4, XFS, JFS, ReiserFS 등이 있다.
JFS: IBM 사에서 만든 독자적인 저널링 시스템, GPL 라이센스를 공유하고 있음, 리눅스용으로 개발되고 있음
XFS: eXtended File System의 약자. 고성능 저널링 시스템.
64비트 파일 시스템을 지원. 높은 확장성이나 처리율을 가지고 있다.
파일 수와 상관 없이 시스템이 다운되면 (예기치 못한 상황이 발생) 신속하게 복구나 재시작이 가능하게 한다.
ReiserFS: 독일의 한스 라이저가 개발한 파일 시스템. 복원이 안정적으로 진행이 되서 JFS나 XFS도 많이 사용되지만 ReiserFS도 많이 사용되는 파일 시스템.
<네트워크 파일 시스템>
업무를 하다 보면 파일 공유 프린트 공유를 하게 된다.
이 때 네트워크 파일 시스템을 이용해서 작업 공유 네트워크 공유를 할 수 있게 된다.
SMB: Server Message Block 이라고 해서 윈도우 운영체제에서 파일이나 프린트 공유를 할 때 일반적으로 사용하는 네트워크 파일 시스템. 삼바 파일 시스템에서도 SMB를 이용해서 이기종 운영체제, 윈도우와 리눅스 사이에서 자료를 공유할 때도 이 SMB를 사용해서 이기종 운영체제 관해서도 원활하게 네트워크 공유를 가능하게 해주는 파일 시스템
CIFS: Common Internet File System의 약자로 SMB를 확장한 파일 시스템.
NFS: Network File System으로 썬 마이크로 시스템사에서 개발한 네트워크 공유 프로토콜. 주로 동기종 SMB는 이기종 운영체제에 관해서 파일 공유를 가능하게 하는 반면 동기종 같은 기종 운영체제들 간에 파일 공유를 할 때 일반적으로 사용하는 파일 시스템
<기타 지원 가능한 파일 시스템(1)>
MS에서 지원하는 파일 시스템도 지원하고 있다.
FAT: 윈도우 NT 계열에서 사용했던 파일 시스템
VFAT: FAT 파일 시스템 확장. FAT의 단점인 하드 용량, 디스크 용량 관리 용량의 제한을 해결하다 보니 디스크 관리 영역이 더 커졌다. 파일명 지정에 약간의 제약이 있다. 최고 255자까지 만들 수 있다. 대소문자를 구분하지 않는다. MS 쪽에서의 초기 파일 시스템이라고 본다면 리눅스에서는 ext와 특성이 동급 형태라고 보면 된다.
FAT32: SMB를 확장한 파일 시스템. Window 95, 98, ME 에서 자주 사용되던 파일 시스템. 그러나 저장할 수 있는 파일 용량을 32GB 이상은 관리할 수 없다.
NTFS: MS 계열에서 가장 안정적인 파일 시스템. 대용량 파일 저장 관리할 수 있음. 16EB 정도 데이터를 저장할 수 있는 기존 FAT32보다는 대용량의 파일을 저장할 수 있는 장점을 갖고 있다. MS계열에서 대부분 NTFS를 사용한다. 리눅스에서도 NTFS는 사용할 수 있게 지정해놓고 있기는 하다.
ISO 9660: 1988년에 제정된 표준으로 CD나 CD-ROM을 관리할 수 있게 해주는 파일 시스템
UDF: Universal Disk Format의 약자로 광확 매체용 파일 시스템의 표준. ISO 9660을 대처해서 만든 DVD 에 대한 파일 시스템.
HPFS: 운영체제 중에서도 OS/2 운영체제가 있다. 마이크로 소프트와 IBM 공동 개발한 파일 시스템. OS/2 운영체제를 운영 관리하기 위한 파일 시스템
<관련 명령어>
mount
특정 디바이스를 디렉토리 처럼 사용하기 위해서 장치와 디렉토리를 연결하는 작업이다.
리눅스는 PnP기능을 지원하고 있지만 지원하는 하드웨어가 많지 않기 때문에 시스템을 부팅 후에 수동으로 마운트를 해서 시스템을 사용을 일반적으로 하게 된다.
마운트 관련된 시스템 정보는 /etc/mtab이라고 하는 파일에서 마운트된 블럭 정보들을 확인할 수 있다.
마운트 설정은 옵션 뒤에 디바이스명이나 디렉토리명을 입력하면 된다.
이 때 옵션에서는 파일 시스템을 지정할 수 있다.
VFAT이나 ext계열이나 ISO, SMB 이런 것들을 옵션 t를 이용해서 파일 시스템을 지정할 수 있다.
umount
설정된 마운트를 해결할 때는 umount를 이용해서 설정된 마운트를 해제할 수 있음
eject
이동식 보조기억장치, DVD나 CD-ROM 같은 매체를 미디어에서 해제하고 제거하는 명령어.
특히 r은 CD-ROM을 제거할 때 사용.
f는 플로피를 제거할 때 사용.
fdisk
리눅스 설치하는 과정에서 보았는데, 새로운 파티션을 생성하거나 기존 파티션을 삭제하거나 파티션을 파일 시스템을 지정할 때 보통 fdisk를 이용해서 작업을 할 수 있다.
한번에 한 디스크에만 적용되서 수행할 수 있음.
fdisk를 사용하기 위해서는 어떤 디스크에 파티션을 나눌지 먼저 계획을 잡고 진행을 해야만 한다.
mkfs
fdisk를 통해서 파티션을 나눈 다음에 파일 시스템을 생성하기 위해서 사용하는 명령어
mke2fs
ext2, ext3, ext4 타입의 리눅스 파일 시스템을 생성할 때 사용하는 명령어.
즉 fdisk를 통해 파티션을 나누었다면
나누어진 파티션에 파일 시스템을 지정하는 명령어 중 하나가 mkfs, mke2fs 둘 중 하나를 적절하게 이용해서 파일 시스템을 결정하면 된다.
fsck
파일의 무결성을 점검하는 명령어.
무결성이라 함은 데이터에 변조가 있었는지 이러한 이상 유무를 오류 체크를 확인하는 명령어.
만약에 이 과정에서 문제가 일어난 파일들은 /lost+found 라는 디렉토리에 일시적으로 생성이 되서 그 오류 내용들을 확인할 수 있다.
특히 fsck에서 점검하는 내용은 저널 로그를 점검하거나 아이노드나 간접 데이터 블록, 파일 크기, 디렉토리 항목 등등을 확인할 수 있다.
e2fsck
리눅스 전용 파일 시스템인 ext2, ext3, ext4 타입의 리눅스 파일 시스템 형태로 디스크를 포맷할 때 보통 사용한다.
그룹은 시스템 속성이 동일한 사용자들을 멤버십으로 구분해서 그 구성원들은 같은 파일에 대해서 같은 권한을 가져서 작업을 진행할 수 있다.
drwxrwxr-x: 앞에 d는 디렉토리를 의미한다.
변경할 소유자명과 소유 그룹명을 입력
chown root Young: Young 파일을 root로 소유자명을 변경
chown :root Young: Young 파일을 root로 소유자 그룹을 변경 => chgrp root Young
r: 하위 디렉토리의 소유자명과 소유자 그룹 변경 가능, 소유권의 상속
디렉터리의 그룹 소유권을 변경할 때 사용할 수 있다.
chown :root Young: Young 파일을 root로 소유자 그룹을 변경 => chgrp root Young
파일 허가권
파일 권한에 대해서 살펴보겠다.
-rw-rw-r--
파일 유형과 파일 권한으로 나눈다.
파일 유형에는 일반 파일, 디렉토리, 특수파일이 올 수 있다.
- 일반 파일: 실제 문자가 저장되어 있는 파일
d 디렉토리: 저장 공간
b,c,l 특수파일: b는 블럭파일 (블럭장치들을 관리하는 특수 파일, 하드디스크, 플로피 디스크, CD, DVD) c는 캐릭터 디바이스 파일, 문자파일 (마우스, 키보드, 프린터 같은 입출력 장치), l은 링크파일 (바탕화면에 아이콘 바로가기, 실제 저장하는 위치와 실행파일들의 위치가 다를 경우 링크 파일을 두고 두개의 파일은 연결하여 사용하게 됨)
리눅스는 사용자별로 파일 권한을 부여한다.
rw- rw- r-- 이렇게 세개로 구분할 수 있다.
rw- 파일 소유자에 대한 권한을 나타냄
rw- 그룹 속한 구성원들의 권한
r-- 그외 사용자들의 권한 (파일 소유자도 아니고, 그룹에 속하지도 않은 사람들)
rwx
r: read (파일 읽기 권한)
w: write (파일 수정 삭제 권한)
x: execute (실행 권한)
-: 권한 없음
권한은 8진수 형태로 구성할 수 있음
rwx: 7
rw-: 6
r--: 4
이렇게 권한을 기호로 구분할 수 있다.
744 TST ==> rwxr--r--
chmod
chmod 644 TST.txt
chmod o+w TST.txt
644 => rw- r-- r--
소유자는 읽고 쓸수 있는 권한을 가지고 있지만
그룹이나 그외 사용자는 읽을 수 있는 권한만 갖고 있다.
u: 소유자
g: 그룹
o: 기타 사용자
a: 모든 사용자
+: 권한 부여
-: 권한 제거
r,w,x 를 종합해서 사용할 수 있다.
chmod o+w TST.txt => TST.txt 파일에 기타 사용자에게 수정 및 삭제 권한을 부여
umask
파일이나 디렉토리를 생성할 때기본적으로 권한이 매겨지게 되는데 이 권한을 지정할 때 베이스가 되는 디폴트 값을 주는 것이다.
파일권한 최대 666
디렉터리 권한 777
umask
0002
mkdir AAA
ls -l
0777 - 0002 = 0775
즉 mkdir의 권한은 d rwx rwx r-x
umask 값이 얼마가 설정되어 있는지에 따라 기본 생성되는 허가권이 결정이 된다.
setUID와 setGID
특수 권한은 프로세스가 실행하는 동안 해당 프로세스의 루트 권한을 임시로 가져오는 기능
일반 사용자들이 업무를 진행하다 보면 특정 업무에 대해서만 루트 권한으로 업무를 진행하는 경우가 있다.
해당 업무에 대해서는 루트 권한으로 실행을 하고
이후에 다시 일반 사용자로 돌아와서 일반 사용자의 계정의 권한으로 업무를 진행한다.
권한의 일시적 위임
설정값 형태로 보면 된다.
setUID 프로그램을 실행하는 동안에 프로세스의 파일 소유자와 같은 권한을 일반사용자가 갖게 되고 그것을 실행할 수 있게 된다.
setGID 프로그램을 실행하는 동안에 그 파일을 소유하고 있는 그룹 안의 구성원처럼 파일의 권한을 부여 받아서 실행이 가능하게 된다.
Sticky bit
공유 디렉토리를 생성할 때 Sticky bit를 설정하게 된다.
예를 들어 게시판에 게시된 글들은 누구나 읽을 수 있다. 대신 게시글을 수정하거나 삭제할 수 있는 권한은 소유자나 혹은 관리자만 할 수 있다.
누구나 그 파일에 대해서 읽을 수 있다. 그러나 소유자만 파일에 대해 수정하거나 삭제할 수 있다.
이러한 경우를 Sticky bit를 설정했다고 한다.
일반적으로 이런 Sticky bit는 temporary 디렉토리 안에 파일들을 지정하고 있다.
디스크 쿼터
사용자나 특정 그룹에 할당될 수 있는 하드디스크 용량을 제한하는 것.
하드 디스크 용량 제한
웹 호스팅 서비스를 지원할 경우에 과금을 많이 낸 사람에게는 더 많은 디스크 용량을 할당하고 적은 과금을 지불한 사람에게는 적은 디스크 용량을 할당하게 하는 웹 호스팅 업체에서 주로 디스크 쿼러를 활성화하여 사용하고 있다.
디스크 쿼터는 배포본마다 구성하는 방법이 다르다.
전반적으로 어떻게 이루어지는지만 숙지하면 된다.
/etc/fstab에 디스크 쿼터 설정
디스크 쿼터를 이용한 하드 디스크가 별도로 사용되기 때문에 현재 시스템에 마운팅하는 작업을 한다.
쿼터 데이터 베이스를 생성
사용자 쿼터 파일과 그룹 쿼터 파일 두개로 나눌 수 있다.
사용자 쿼터 파일은 사용자 정보들이 저장되는 DB
그룹 쿼터 파일은 그룹별로 디스크 쿼터가 지정됬을 때 그룹 정보들이 저장
사용자별 쿼터 지정 : 쿼터를 지정한 유예 기간 사용한도 정보를 사용자별로 지정
쿼터 현재 상황 점검: 반드시 필요한 것은 아니다.
디스크 쿼터 관련 명령어
quotaoff: 쿼터 서비스를 비활성화 할 때 사용
quotacheck: 쿼터 설정한 하드 디스크의 상태를 점검할 때 사용하는 명령어
edquota: 편집기를 이용해서 사용자나 그룹의 디스크 할당량을 재조정할 때 사용하는 명령어
setquota: 편집기가 아니라 직접 명령어 행에서 사용자나 그룹에 대한 디스크 용량을 조절하는 명령어
디스크나 플래시에 저장된 운영체제를 주기억장치에 적재해주는 프로그램 즉 이동 시켜주는 프로그램이다.
즉 모든 프로그램을 주기억장치에 옮겨 와야 그 주기억장치에서 cpu로 데이터를 읽어 가기 때문에 아주 중요한 기능을 수행한다.
부트 로더는 운영체제가 시동하기 전에는 화면이 올바르게 실행되기 위해서 모든 관련된 실행들을 마무리시켜주고 최종적으로 운영체제를 수동하기 위한 프로그램이기도 하다.
부트로더의 크기는 대략 512byte로 하드 디스크 첫번째 섹터인 mbr에 위치하게 된다.
일반적으로 mdr은 마스터 부트 레코드라고 해서 하드 디스크의 첫번째 섹터를 이야기 한다. 여기에는 부트로더 정보 뿐만 아니라 파티션 정보도 저장한다.
그리고 주 파티션 마다는 그 부트 섹터가 할당이 되는데 부트 섹터는 디스크의 그 다른 부분에 저장되는 부팅 프로그램을 담는 하드디스크를 이야기하는데
주 파티션은 부팅 가능한 파티션이고 그러려면 부팅 관한 정보 등은 어딘가에 저장이 되어야 하는데 그것이 주 파티션의 부트섹터에 저장이 된다고 보면 된다.
한 컴퓨터에는 다수 개의 운영체제가 설치되서 이제 하나의 운영체제를 선택해서 부팅을 하게 된다. 이를 멀티 부팅이라고 이야기 한다.
그런데 x86 컴퓨터에서 사용되는 멀티 부팅을 지원해주는 부트 로더는 리로나 그럽이라고 하는 것이 있다.
리로는 리눅스 운영체제에 한정되는 반면 그럽은 리눅스 운영체제 외에도 다른 운영체제에서도 사용이 가능하다라는 장점이 있고 최근에는 리로보다는 그럽을 이용해서 운영체제 다중 운영체제를 관리를 하고 있다.
그럽이나 리로는 모두 시스템 전원이 공급되면 가장 먼저 온바이오에스에서 이제 시스템 제어권을 가지고 정착된 하드웨어에 대한 기본적인 점검과 이제 테스트를 하게 된다.
롱바이로스는 그 하드 디스크의 첫번째 부트 섹터인 MBR에 있는 부트로더에게 제어권을 넘겨서 이러한 작업들을 진행을 하게 된다.
런레벨은 리눅스 부팅시 시스템 환경을 결정하는 번호라고 보면 된다.
그 GUI로 시스템을 부팅할 것인가 아니면 CUI로 시스템을 부팅할 것인가 이런 런레벨에 따라 작업 서비스 환경이 달라지기 때문에 런레벨을 서비스 조정이 가능하다라고 정의할 수 있다.
런레벨은 0~6까지 총 7가지가 있다. 이와 같은 설정은 /etc/inittab이라는 파일에서 확인이 가능하다.
inittab을 확인하면 화면 하단부에 id:O:initdefault라고 하는 것을 확인할 수 있다.
id 뒤에 오는 그 번호가 런 레벨이다.
런 레벨은 3이나 5가 일반적으로 사용한다.
3은 CUI 모드로 시스템을 부팅하게 된다. 동시에 여러 사람이 사용할 수 있는 다중 사용 모드 환경을 지원한다.
O는 그래핑 모드로 GUI 방식으로 시스템을 부팅하게 되고 3과 마찬가지로 다중 사용자 모드로 부팅이 가능하게 한다.
런레벨 특히 1같은 경우는 눈여겨볼 필요가 있는데 단일 사용자 모드로 루트만 로그인이 가능할 수 있는 모드이다. 네트워킹이나 파일 공유 시스템 같은 것은 제공해주지 않고 루트 패스워드를 분실하였거나 파일 시스템 점검 및 복구할 때 보통 런레벨1로 들어가게 된다.
레벨 0과 6은 일반적으로 많이 사용하지는 않는다.
만약에 0을 하면 시스템을 부팅하는 동시에 종료한다는 서비스고 6은 시스템을 부팅하는 동시에 시스템을 재시작한다라고 하는 것이기 때문에 일반적이지는 않지만 명령어 init0 또는 init6을 이용하면 런레벨 0이나 런레벨6과 같은 동일한 환경을 이용해 작업이 진행이 될 수 있다.
리눅스의 로그인과 로그아웃
X윈도우즈 상에서 GUI 상에서 로그인 로그아웃할 수 있고 또는 콘솔상에서 로그인 로그아웃을 진행할 수 있다.
특히 콘솔상 CUI로 로그인 로그아웃이 진행될 경우는 startx라는 명령어를 이용해서 차후에 x윈도우즈를 불러올 수 있다.
로그인할때는 보통 패스워드를 입력하게 되는데 패스워드를 입력하게 되면 etc 패스워드나 etc 셰도우라고 하는 필드에서 패스워드의 그 동일 여부를 체크를 하게 된다. 이 과정을 거치게 되면 셸이라는 설정 파일을 실행하게 되는데
셸은 사용자에 맞는 검색 경로를 설정하거나 터미널 종료, 환경변수 혹은 로그인 메세지를 출력한다. 로그인 전이나 로그인 후에 사용자에게 어떠한 메시지를 출력할 것인지를 결정해주는 파일로는 이슈, 이슈넷, motb같은 파일들이 있다.
명확하게 구분을 해 놓으면 좋다.
로그아웃은 logout, exit 또는 조합키인 [ctrl]+[D]를 사용해서 로그아웃을 할 수 있다. 만약 관리자가 일정 시간동안 작업을 수행하지 않는 모든 작업들은 강제로 로그아웃될 수 있다. 강제 로그아웃을 하기 위해서는 etc profile의 타임아웃 변수를 지정해서 해당 작업을 진행할 수 있다.
파티션을 다중으로 둘 경우 장점은 파일 시스템 점검 시간이 줄어들고 부팅 시간을 단축시킬 수 있고
하나의 파티션이 손상이 되더라도 다른 파티션에 영향을 주지 않기 때문에 높은 안정성을 준다.
리눅스에서는 주 파티션, 확장 파티션, 논리 파티션 그리고 스왑 파티션으로 구분할 수 있다.
주 파티션은 부팅이 가능한 기본 파티션. 최대 4개로 분할 가능. 하나의 디스크에 6개 이상의 파티션을 구분하고 싶으면 주 파티션은 3개 나머지는 확장 파티션에 여러개의 논리 파티션을 둠으로써 다수 개의 4개 이상의 파티션을 나눌 수 있다.
하나의 디스크에 4개 이상의 파티션을 주고 싶으면 기본적으로 확장 파티션을 주게 됩니다.
확장 파티션은 물리적 디스크에 생성할 수 있다. 컨테이너에 해당한다고 보면 된다. 논리 파티션을 담을 수 있는 그릇과 같은 역할을 한다.
확장 파티션 안에는 논리 파티션을 생성할 수 있는 공간이 된다.
논리 파티션은 확장 파티션 안에 생성되는 파티션으로 12개 이상 생성되지 않는다. 논리 파티션을 알 수 있는 방법은 번호가 5번 이상부터 붙어 있으면 논리파티션이라고 보면 된다.
스왑 파티션은 하드 디스크의 일부분을 메모리처럼 사용하는 영역이다. 설치과정에서 주 파티션, 논리 파티션에서 생성 가능. 램 용량이 부족할 경우 하드 디스크를 대신해서 램처럼 사용할 수 있게 하는 영역으로 보통 스왑 영역 크기는 램의 2배를 설정하도록 권고하고 있다.
분할된 파티션은 그 번호가 붙여지게 된다.
일반적으로 hd a 3과 같이 파티션 나눠진 디스크에는 다음과 같은 번호가 맺혀지는데
hd 는 하드디스크의 유형이다. sd는 스카시 또는 us 방식의 디스크. hd는 아이디나 데이터 방식의 디스크를 이야기 한다.
a는 하드디스크 번호이다. 하드디스카가 하나가 전체가 될 수 있고, 두개가 전체가 될 수 있고 다수개도 정착될 수 있다.
만약에 첫번째 정착된 하드디스크는 a, 두번째 정착된 하드디스크는 b 그리고 세번째 정착된 하드디스크는 c이다. 하드디스크의 갯수라고 인색해도 무방하다.
3은 하나의 디스크에 분할된 파티션의 번호라고 보면 된다. 1~4번까지 붙여지면 주 파티션 혹은 확장 파티션 그리고 5번 부터는 논리적 파티션이라고 볼 수 있다.
파일 시스템
파일 시스템은 일반적으로 파일 관리자라고 이야기 한다.
하드디스크에는 다양한 파일들이 저장되는데
어떻게 관리할지를 파일 시스템 유형에 따라 결정된다.
파티션에 파일 시스템이 없다면 파일 시스템 생성을 거쳐서 반드시 하드디스크를 운영하는 파일 관리자를 선정을 해야 한다.
리눅스는 리눅스 고유 파일 시스템 뿐만 아니라 다양한 파일 시스템을 지원한다.
리눅스 전용 파일 시스템은 ext 계열이 있다.
저널링 파일 시스템은 jfs
네트워크 파일 시스템에는 smb나 nfs
타 운영체제인 펫이나 펫30 ants 같은 파일 시스템을 지원하고 있다.
리눅스의 주 특징이다. 타 운영체제에서 지원하는 파일 시스템도 지원함으로써 디스크 운영 방식이 폭이 넓다.
LVM(Logical Volume Manager)
여러 개의 하드디스크를 합쳐서 사용하는 기술.
적은 용량의 하드디스크 여러개가 있을 흩어져 있는 다수개의 용량의 하드디스크 거대한 하나의 용량처럼 논리적으로 묶어서 사용할 때 LVM이라는 파일 시스템을 사용해서 작업할 수 있다.
LVM을 사용하여 파티션의 크기를 늘리거나 줄일 수 있는 장점이 있다.
용량을 늘리는 것이 목적.
RAID
복수 계열 독립 디스크의 약자로
여러개의 논리적 디스크를 하나의 논리적 디스크로 인식해서 작동하게 하는 기술이다.
데이터를 중복 시켜 저장시킴으로써
하나의 디스크에서 문제가 일어나도
지속적으로 서비스를 가능하게 하기 위한 리던던트 결합 허용이 목적인 것이 RAID의 구성 목적이다.
시스템 이상이 일어났을 때 가용성을 보장해주는 것이 주 목적.
LVM과 비교하면 용량이냐 안정성이냐 차이점을 두고 인식하면 구분하면 될 것 같다.
레이드는 하드웨어 레이드 그리고 소프트웨어 레이드로 구성할 수 있다.
하드웨어 레이드는 하드웨어 업체에서 처음부터 레이드를 구성할 목적으로 하드디스크 여러개를 꽂을 수 있는 장비 자체를 만들어서 레이드를 구성할 수 있게 모듈을 만들어서 그 자체를 공급하기 때문에 장비 자체도 고가이고 그러나 안정적인 시스템
소프트웨어 레이드는 고가의 하드웨어 레이드를 대체하는 것으로 리눅스나 ms같은 운영체제에서 레이드를 구성하게 하는 것. 저렴하지만 안정적으로 데이터를 저장한다는 장점이 있다. 하드디스크 레이드보다는 안정성이 떨어진다.
레이드는 저장하는 방법에 따라 레벨을 붙이고 있다. 레벨 숫자가 커지면 커질수록 신뢰성이 높거나 전체적인 성능이 향상된다고 보면 된다.
RAID 0 RAID 1 RAID2 RAID3 RAID4 이렇게 숫자가 커지면 커질수록 전체적인 신뢰성이나 성능이 조금씩 더 향샹된다고 볼 수 있다. 전체적으로 다 설명을 할 수는 없고 RAID0과 1의 저장방식을 이야기 하겠다.
RAID0은 스트라이핑 저장 방식이다. 즉 스트라이핑 저장 방식이란 연속된 데이터를 여러 디스크에 나눠서 저장하는 방식이다. 1234라는 데이터가 흩어져서 저장하는 방식을 스트라이핑 방식이라고 한다. 이 방법은 고장 대비 능력이 없다. 하나의 디스크가 고장이 나면 다른 디스크의 내용도 복원할 수 없는 상황이 되기 때문에 레이드는 안정성이 주목적인데 하나의 디스크가 문제가 일어나면 복원을 할 수 없기 때문에 레이드 본연의 기능을 제공하지 못하기 때문에 RAID0이라고 이름 붙인다. 레이드가 아니다라고 하면서도 이러한 특성을 가지기 때문에 제로라는 명칭을 붙이고 있다.
RAID1은 레이드가 가지고 있는 안정성을 결합 허용을 보장해주고 있는 구성형태이다. 두개의 디스크에 동일한 데이터가 싱크하게 저장된다. 이러한 방식을 미러링 방식이라고 이야기 한다. 하나의 디스크에 데이터가 저장되면 다른 디스크에도 동일한 데이터가 백업되어 저장된다. 두배의 용량이 필요하기 때문에 공강 효율성을 떨어지긴 하지만 결합 허용이 제공되기 때문에 안정성은 높다라고 이야기 한다. 만약 중요한 데이터를 저장할 경우라면 RAID1을 사용하시면 될 것 같다.
RAID 3은
RAID 4는
RAID 5는
RAID 6은
레이드는 여러 레벨들의 장점을 합쳐서 장점만 모은 RAID 구성이 있다. RAID0+1, RAID1+0이런 식의 명칭을 쓰기도 한다.
RAID0+1은 먼저 하드디스크 2개씩 레이드0을 구성한 후에 0으로 구성된 하드디스크를 다시 레이드 원으로 구성을 해서 즉 미러링 전에 스트라이핑을 진행해서 데이터를 저장하는 방식. 저장속도는 빠르지만 데이터 복구 시간은 느리다는 단점을 가진다.
RAID1+0은 RAID0+1의 반대 구성으로 하드 디스크 2개씩 레이드1을 구성한 후에 레이드1로 구성된 하드디스크를 다시 레이드0으로 구성하는 방식이다. 미러링 후에 스트라이핑을 진행하는 것으로 손실된 데이터만 빠른 복원이 가능하기 때문에 RAID0+1보다 보안상 더 유리하다.
이러한 레이드를 구성하거나 LVM을 쓰는 것은 대부분 하드 디스크의 파티션을 가하게 되는데 일반적으로 파티션을 진행하는 유틸리티가 있다. 즉 리눅스의 파티션을 생성하거나 수정, 삭제할 수 있는 유틸리티를 보통 f디스크라고 이야기 한다.
fdisk는 fdisk 명령어를 통해서 다양한 옵션들이 있는데 a라고 하는 것은 파티션을 나누기 위해서 다양한 명령어들이 있다.
fdisk sdb
sd형태의 하드디스크가 있는데 b라고 하면 두번째 히드디스크를 정착하고 거기에 파티션을 여러개 나누려고 할 경우 이렇게 엔터키를 치면 fdisk에서 사용하는 명령어를 쭉 나열을 할 수 있다.
n: 새로운 파티션 추가
a, l: 파티션 목록 확인 또는 부팅 파티션 지정
t: 파티션 종류 변경
w: 파티션 정보 저장
p: 파티션 정보 확인
q: 이러한 fdisk 모든 작업을 마무리 하려면 q를 입력하여 하드디스크의 파티션을 구분할 수 있다.
단계 2에서는 fdisk를 나눌 때 수학 파티션으로, 레이드 구성, LVM 구성을 파일 시스템에서 결정을 하게 되는데 잘 살펴보면 될 것 같다.