4. 디스크 관리
바이트, 비트?
데이터의 크기를 나타내는 단위이다. 컴퓨터에서는 모든 데이터를 2진수로 된 수치로 취급한다. 10진수는 수치를 0~9까지의 숫자로 나타낸다. 2진수는 0과 1로만 나타낸다.
10진수 | 2진수 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
컴퓨터가 데이터를 2진수로 취급하는 이유는
어떤 컴퓨터든 기본적 구조는 전자회로에 전류가 흐르고 있는지 아닌지로 되어있으며
전류가 흐르지 않는 상태는 0(OFF), 흐르는 상태는 1(ON)으로 나타내기 때문.
이 0,1로 나타내는 단위를 비트(bit : binary digit)라고 한다.
이는 컴퓨터가 취급하는 최소 단위이다.
바이트(byte)는 8비트를 한 세트로 한 정보량의 단위이다.
1byte = 1bit
1바이트는 0이나 1이 8개 나열되며 256개(2의 8승)의 데이터를 나타낼 수 있다.
수치가 너무 커지면 바이트나 비트만으로 나타내기 힘들기 때문에 아래와 같이 큰 양의 수치를 나타내는 보조 단위를 사용한다.
종류 | 단위 환산 |
---|---|
KB(킬로바이트) | 1KB = 1,024byte |
MB(메가바이트) | 1MB = 1,024KB |
GB(기가바이트) | 1GB = 1,024MB |
TB(테라바이트) | 1TB = 1,024GB |
하드디스크의 구조
하드디스크는 보조기억장치이며 프로그램이나 데이터를 저장해두기 위한 대용량 장치이다.
하드디스크 안에는 자기로 기록할 수 있는 딱딱한 원반이 여러장 들어있다. 고속으로 회전하고 있다.
각 원반의 기록면은 메모리의 주소와 비슷한 섹터와 트랙이라는 단위로 구분되어있다.
이것은 하드디스크를 처음 사용할 때 포맷이라는 초기화 작업을 수행하면 작성된다.
포맷에는 섹터의 데이터를 모두 초기화하는 물리적 포맷과
파일 시스템이 관리하는 영역만을 초기화하는 논리적 포맷이 있다.
파일 시스템의 형식을 디스크 포맷이라고 부르기도 한다.
데이터의 읽고 쓰기는 Arm 끝에 붙어있는 자기 헤드가 고속으로 회전하는 디스크 위를 이동하면서 수행한다.
하드디스크의 회전 속도는 rpm(1분당 회전수)으로 표기한다. 이값이 클수록 데이터의 읽고 쓰기 속도가 빠르다. OS에 주는 부담을 덜 수 있다. 디스크에 저장된 데이터가 단편화(Fragment)되어 있으면 읽고 쓰는 속도가 저하된다. OS에는 단편화를 해소하기 위해 Defrag를 할 수 있다.
Track : 하드 디스크의 기록면. 동심원 형태로 분할된 영역이다. Sector : 트랙을 다시 분할한 영역이다. 자기 디스크의 경우 섹터는 보통 512byte의 영역을 가진다.
파일 시스템
하드디스크에 파일이나 디렉터리를 작성할 때 그것을 어떻게 기록할지를 정한 것을 파일 시스템이라고 한다.
파일시스템은 보안강화나 대용량화에 맞춰 진화되어 왔다. OS마다 많은 종류의 파일 시스템이 있다.
윈도우즈의 경우에는 FAT32, NTFS가 있다.
Mac Os의 경우에는 HFS Plus 등이 있다.
CD나 DVD와 같은 이동식 파일 시스템은 대부분의 OS가 지원하고 있다.
Stream : 프로그램이 OS를 통해 데이터를 파일과 주고받을 때, 프로그램과 파일 사이의 데이터 흐름을 의미한다.
단편화(Fragmentation) 하드디스크와 같은 기억 장치의 기억영역에 단편적인 데이터가 저장되어 있는 상태
리던던시(Redundancy) 시스템의 리던던시는 시스템의 장애가 발생해도 큰 손실이 없도록 시스템 전체에 여유를 가지게 하는 것이다.
외부 기억 장치의 종류
데이터의 엑세스 방식별 분류
랜덤 엑세스(Random Access) : 하드 디스크 드라이브처럼 기억 영역상에 있는 목적 데이터에 직접 액세스하는 방식이다. 고속으로 엑세스할 수 있다.
디스크를 읽고 쓰는 자기 헤드가 목적하는 기억 영역 장소로 이동하는 것을 Seek라고 한다. 하드디스크 드라이브(HDD), CD/DVD/블루레이(BD) 드라이브 , 플로피 디스크 드라이브(FDD)
시퀀셜 액세스 (Sequential Access) : 자기 테이프와 같이 기억 영역의 맨 처음부터 데이터를 순서대로 검색하여 액세스해 나가는 방법. 기억 영역의 뒷쪽에 있는 데이터에 엑세스하는데에 시간이 걸린다...
자기테이프, 플래시 메모리, SD 메모리 카드
디스크 시스템
OS에 따라 하드디스크와 같은 외부 기억 장치가 어떻게 할당되는지, 사용되는지가 다르다.
Windows
Windows에서는 하드디스크 드라이브 등을 드라이브라는 단위로 할당한다. 첫번째 하드디스크를 C로 해서 영문자를 순서대로 붙인다. 기억매체 관리상의 단위를 '볼륨'이라고 한다.
하나의 하드디스크를 분할하여 드라이브를 할당할 수 있다. 분할한 각 영역을 파티션이라고 한다.
UNIX
UNIX에서는 접속된 외부 기억 장치가 dev 디렉터리 아래의 폴더로 나타난다.
/
|-- dev/
|------- had/
|------- hdb/
|------- hdc/
|------- cdrom/
마운트(Mount) 컴퓨터에 접속한 외부 기억 장치를 디렉터리 계층으로 이용할 수 있는 상태로 만드는 것.
언마운트(Unmount) OS의 인식을 해제하는 것.
물리 볼륨과 논리 볼륨 여러 개의 하드디스크 드라이브를 통합한 일부를 볼륨으로 간주하는 기능도 있다. UNIX의 논리 볼륨 관리자, Windows의 동적 디스크.
파일과 디렉터리
파일
OS는 데이터를 파일 단위로 관리한다. 파일은 크게 두가지로 나눌 수 있다.
- OS에서 실행할 수 있는 프로그램 파일
정보가 기록되어 있을 뿐인 데이터 파일
파일명 끝에 있는 . 이후를 확장자라고 한다. (UNIX에서는 서픽스) 파일의 종류를 나타내는데 활용한다.
Windows에서는 확장자가 실행 애플리케이션과 연결되어 특별한 의미를 가진다.
확장자의 예
확장자 | 개요 |
---|---|
bin | 바이너리 데이터 전반을 나타낸다. |
dat | 데이터 파일 전반 |
sys | OS나 프로그램의 설정을 기술한 파일 전반 |
exe/dom | Windows의 실행가능한 파일이다. |
txt | 텍스트 파일 (문자만 있는 파일) |
htm/html | HTML로 기술된 웹상의 도큐먼트 파일 |
jpg | JPEG 형식으로 압축된 정지 그림 파일 |
gif | 256색까지 취급할 수 있는 정지 또는 애니메이션 그림 파일이다. |
bmp | Windwos의 정지 그림 파일이다. |
mpg | MPEG 형식으로 압축된 동영상 파일 |
Adobe Systems사의 전자 문서 파일이다. | |
zip | ZIP 형식으로 압축된 파일 |
디렉터리(폴더)
파일을 계층구조로 된 디렉터리(폴더)안에 저장하여 관리한다.
최상위 디렉터리를 루트 디렉터리, 그 아래 것은 서브 디렉터리라고 한다.
나뭇가지처럼 갈라진 계층 구조를 트리 구조라고 한다.
디렉터리 경로
파일의 위치를 지정하기 위해 루트 디렉터리부터 파일이 있는 특정 디렉터리까지의 경로를 디렉터리 경로(Path)라고 한다.
루트 디렉터리부터 도달하는 것을 절대 경로,
특정 디렉터리를 기준으로 하는 것을 상대 경로라고 한다.
- 루트디렉터리는 '/'로 표시한다.
- 구분문자는 Windows는 \, Unix는 / 로 표기한다.
트랙과 섹터
하드디스크는 Platter라는 원반이 여러장 조합된 구조로 이루어져있다.
트랙
디스크의 기록면은 Track이라는 동심원 상태인 영역으로 분할되어 있다.
섹터
트랙을 다시 분할한 영역을 Sector라고 한다.
실린더
트랙의 모음을 Cylinder라고 한다.
일반적인 섹터의 크기
자기 디스크 : 512byte
광 디스크 : 2048byte
하드디스크의 기억용량 = 섹터 사이즈 1트렉당 섹터 수 1실린더상 트랙 수 * 실린더 수
하드디스크 속도 = 1트랙 용량 * 1초당 회전수
클러스터
OS가 파일을 취급할 때는 섹터를 여러개 모은 Cluster라는 단위로 관리한다.
1 클러스터 = 4섹터인 경우
1800 byte 파일 = 512byte *4 에서 한개의 섹터는 미사용 영역이 발생한다.
클러스터에 파일을 할당할 때 발생하는 미사용 영역은 프레그먼테이션의 원인이 된다.
디스크 포맷
기억장치의 파일시스템과 초기화 작업을 의미한다.
파일시스템
기억 장치에 파일이나 디렉터리를 기록하는 방법을 파일시스템(=디스크포맷)이라고 한다. 파일시스템은 OS에 따라 다르고 OS가 지원하지 않으면 그 파일 시스템에 엑세스가 불가능하다.
FAT32 Windows의 파일 시스템 중 하나이다. 디스크 영역의 사용효율이 좋다. 과거 OS와 호환성이 높다.
최대 파일 사이즈 : 4GB / 최대 볼륨 사이즈 : 2TB
NTFS Windows에서 주로 사용되는 파일 시스템으로, 검색 기능의 고속화 및 파일에 대한 엑세스 제한 기능이 추가되었다.
최대 파일 사이즈 : 16TB/최대 볼륨 사이즈 : 256TB
HFS Plus Mac OS에서 채택하고 있는 파일 시스템이다. 대용량 파일을 지원한다.
2TB~8EB(Exabyte) /2TB~8EB (OS 버전에 따라 다르다)
ext3 Linux의 파일 시스템,OS 정지시나 파일의 손상에 강한 Journaling 기능이 특징.
2TB / 32TB
ISO9660 CD-ROM의 파일 시스템, 다양한 OS에서 읽을 수 있다.
4GB / 8TB
UDF 광디스크의 파일 시스템, 디스크의 대용량화로 인해 ISO9660을 대신하여 DVD나 BD에 채택되었다.
16EB / 128TiB(Tedibyte)
디스크의 초기화
하드디스크를 사용하려면 파티션을 작성한 후에 다음과 같은 초기화 처리를 순서대로 수행해야 한다.
물리 포맷 : 섹터에 기록된 데이터는 모두 삭제된다. 물리 포맷을 수행하지 않으면 기억장치로 사용할 수가 없다.
논리 포맷 : 파일 시스템이 관리하는 영역을 작성한다. 다른 파일 시스템을 사용할 때는 논리 포맷이 필요하다.
논리 포맷은 섹터의 구획을 정리한다.
파일 작성
스트림 프로그램이 파일을 읽고 쓸 때 프로세스와 파일간에 데이터가 통하는 길을 만들어서 주고받기를 한다. 이 통로를 흐르는 데이터의 흐름을 Stream이라고 한다.
프로세스가 시스템 콜을 통해 커널에 명령을 던지면 커널은 프로세스와 파일을 연결한다. 스트림은 데이터의 흐름이다.
<스트림 조작 종류> | 명령어 | 설명 | |--------|-------| |.Open(파일열기) | 프로세스와 파일을 연결한다.| |.Read(읽기) | Open한 파일의 내용을 읽어들인다 | |.Write(쓰기) | Open한 파일에 데이터를 기록한다 | |.Close(파일닫기) | Open한 파일의 연결을 끊는다. |
파일 조작하기 OS에는 파일이나 디렉터리에 대한 여러 조작 기능이 있다..
파일 복사, 삭제, 이동, 파일명 변경, 파일 속성 변경, 디렉터리 작성과 삭제
프래그먼테이션(Fragmentation:단편화)
디스크를 계속 사용하면 기억 영역이 단편화(조각화)된다. 하드디스크와 같은 기억 장치의 기억영역에 단편적인 데이터가 저장되어있는 상태를 의미한다. 프래그먼테이션이 있으면 OS가 데이터를 읽어들이는 작업이 느려진다.
하나의 파일이 여러 트랙에 분할되어 기록되어있기 때문에 시크 횟수가 증가하여 액세스하는데 시간이 걸리기 때문이다.
디프래그(Defrag)
프래그먼테이션을 해소하기 위해 단편화된 디스크의 기억 영역을 연속된 영역으로 다시 기록하는 것을 의미한다. 디프래그는 용량이 적은 파일일수록 효과적이다.
디스크의 액세스 시간 = 평균 시크 시간+ 회전 대기 시간(1회전에 소요되는 시간/2) + 데이터 전송 시간(섹터 사이즈/ 데이터 전송속도)
데이터 전송 속도 = 1트랙의 기록 용량 / 1회전에 소요되는 시간
메모리의 단편화 해소 -> 컴팩션
디스크의 단편화 해소 -> 디프래그
사용자별 파일 관리
액세스 권한
파일에는 읽기나 쓰기와 같은 액세스를 허가하는 정보가 정의되어있다. 특정 사용자나 그룹으로 액세스 권한을 설정할 수 있다.
이 권한을 Permission이라고 한다. 파일시스템에서 관리하는 퍼미션 목록을 액세스 제어 목록이라고 한다.
Quota
여러 사용자가 OS를 공유할 때 각 사용자가 사용할 수 있는 하드디스크 용량의 상한값을 설정할 수 있다.
디스크 캐시
고속화 장치
하드디스크의 처리 능력은 CPU나 메모리에 비해 매우 느리다. 이런 하드디스크의 결점을 보완하기 위해 하드디스크에는 읽어들인 데이터를 일시적으로 저장하기 위한 전용 메모리가 마련되어있다. 이를 디스크 캐시(Disk Cache)라고 한다.
메인메모리가 한번 읽은 데이터는 하드디스크 내의 디스크 캐시에 저장되어 그때그때 자기 디스크로부터 읽어들일 필요가 없어지므로 액세스 속도가 향상된다.
RAM 디스크
RAM 디스크는 RAM을 디스크 드라이브로 사용할 수 있도록 한 것이다. 기계적인 동작이 없기 때문에 보통의 디스크에 비해 고속으로 액세스할 수 있다. 전원을 끄면 내용이 사라진다.
- Windows 32bit에서는 최대 4GB까지 탑재할 수 있는 컴퓨터에서도 메인메모리를 3GB이상 사용할할 수 없지만, 나머지 약 1GB의 영역을 RAM 디스크로 사용할 수 있다. 최근에는 캐시 메모리나 SSD로 충분한 성능을 얻고 있어서 별로 사용하지 않는다.
압축
파일을 압축하면 크기가 줄어들어 데이터 전송시 부담을 덜 수 있다.
압축의 구조
압축이란, 데이터를 숫자적으로 변환하여 내용을 유지한 채 크기를 줄이는 것을 말한다. 파일을 실제로 사용할 때는 원래의 형식으로 복원해야하는데 이를 압축해제(풀기)라고 한다.
RLE(Run Length Encoding) 방식 동일한 요소가 몇개 있는지 세어서 그 수를 데이터로 하는 방식.
Huffman 방식 출현 빈도가 높은 요소에는 짧은 문자열을 출현빈도가 낮은 요소에는 긴 문자열을 치환한다.
비가역 압축
파일 내용이 다소 손실되는 것을 허용하는 압축을 비가역 압축이라고 한다. 주로 그림, 음성, 동영상분야에서 사용된다. 사람이 느끼기 힘들정도의 미세한 정보를 삭제하므로 그냥 봐서는 화질이나 음질의 열화를 느낄 수 없다. 압축률을 너무 높이면 열화를 인식하게 된다.
주요 비가역 압축 포맷 : JPEG, mp3, mpeg..
비가역 압축을 하면 전후의 데이터가 완전히 일치하진 않는다.
가역 압축
파일 내용이 손실되지 않는 압축.
주요 가역 압축 포맷 : zip, gzip, lzh
검색
디스크 안에서 파일을 찾거나 파일에 포함된 내용을 찾는다.
파일 검색
OS에는 파일이나 폴더의 저장 장소를 검색하는 기능이 있다. 파일이 많으면 검색기능의 중요성도 높아진다.
인덱스화
Index란 파일의 목차다. 파일에 독자적 번호를 붙여서 관리한다. 디스크상의 모든 파일을 직접 조사할 필요가 없어지며, 검색 속도가 향상된다.
인덱스는 키워드, 수정일, 확장자등으로 정리할 수 있다.
풀텍스트 검색
여러 파일의 내용을 조사하여 특정 문자열을 검색하는 것을 의미한다.
<종류>
*순차 주사 검색
여러 파일을 순차적으로 주사하여 검색대상이 되는 문자열을 찾는다. 파일이 많을 수록 속도가 느리다.
UNIX에서는 같은 기능을 가진 명령어 이름을 따서 'grep'이라고 한다.
*인덱스 검색
사전에 파일을 조사해서 색인을 준비해 두고 그안에서 검색한다. 검색 대상 파일수가 방대할 때 고속으로 검색할 수 있다.
리던던시(Redundancy)
중요한 시스템의 설계에는 리던던시를 지니게 하는 것이 상식이다.
시스템의 리던던시
시스템에 장애가 발생해도 큰 손실이 일어나지 않도록 기기를 최소 필요이상으로 마련하여
시스템 전체에 여유를 가지게 하는 것이며 여유도라고 한다.
<종류>
듀얼 시스템
동일한 처리를 여러대에 동시에 작동시키는 구성으로, 한 대가 정상으로 작동하고 있으면 시스템의 기능을 유지한다.
듀플렉스 시스템
다른 기기를 예비로 대기시키는 구성으로, 예비 기기가 시스템의 기능을 유지한다.
데이터의 리던던시
통신 등에서 다루는 데이터 안에 실질적으로 의미가 없는 여분의 데이터가 있는 상태를 말하며 중복성이라고 한다. 데이터의 정당성을 검증하기 위해 확인을 위한 값을 추가하는 것을 리던던시를 지닌다라고 한다.
<통신등에 의한 데이터 오류 체크 방법>
패리티 검사(Parity Check)
데이터에 홀수/짝수를 나타내는 한 비트(패리티 비트)를 추가하여 데이터가 올바른지 체크한다.
데이터 전송후에도 일치하는지 체크한다.
체크섬(Checksum)
데이터 전송후에도 일치하는지 확인차, 데이터의 각 바이트 합 등 정해진 방법으로 값을 산출하여 일치하는지 체크한다.
RAID(Redundant Array of Inexpensive Disks)
여러개의 하드디스크를 연결하여 동시에 여러개의 하드디스크에 액세스하는 방식. RAID를 사용하면 CPU나 메모리의 부담이 줄며, OS에도 부담이 적어진다.
<종류>
신뢰성레벨에 따라 RAID0~5가 있고, 5가 가장 뛰어나다.
RAID0 : 데이터를 분산하여 기록한다. (스트라이핑) 속도는 빠르지만 리던던시는 없다.
RAID1 : 각 HDD에 동일한 데이터를 기록한다. (미러링) 고속은 아니지만 리던던시 존재함.
RAID2 : 오류 검출과 정정이 가능한 코드(해밍 코드)를 기록한다. 장애에 강한 것이 특징이다.
RAID3 : 데이터 오류를 발견하는 전용 디스크를 준비한다. 디스크 용량을 쓸데없이 사용하는 것을 최소한으로 억제한다. (패리티 전용 디스크 마련)
RAID4 : 스트라이핑에 의해 데이터를 분산하면서 패리티 전용디스크를 준비한다. RAID3보다 속도 개선
RAID5 : 패리티를 분산시켜 하나의 디스크에 장애가 발생해도 다른 디스크의 패리티로 복원할 수 있도록 한다. 읽기 성능이 뛰어나다. 서로의 디스크를 복원할 수 있다.
백업과 복원
백업이란 컴퓨터에 저장된 데이터가 디스크 파손이나 바이러스 감염과 같은 장애에 의해 소실되거나 읽어들일 수 없는 상태가 되지 않도록 다른 기억 매체에 데이터를 보존해두는 것을 의미한다.
복원이란 백업으로 저장한 데이터로부터 원래의 상태로 되돌리는 것이다.
백업 방법에는 전체 백업과 부분 백업이 있다.
전체 백업은 매번 모든 데이터를 백업한다. 백업 작업에 시간이 걸리지만, 복원 작업이 간단하다.
부분 백업은 첫번째만 전체 백업을 하고 그 이후에는 이전의 백업과 달라진 부분만 백업한다. 백업 작업에 걸리는 시간은 짧지만 복원 작업에 시간이 걸린다.
백업은 정기적으로 수행해야할 중요한 작업이다.