본문 바로가기

CentOS/Study

[Study43]Linux 장치 인식과 디스크 관리 1

반응형

< 디스크 작업 >

하드 드라이브를 설정하는 것은 꽤 복잡한 과정이지만, 여러 가지 단계를 따라서 디바이스가 올바르게 인식되어 데이터를 저장할 수 있도록 해야합니다.

하드 드라이브를 설정하는 첫 번째 단계는 디바이스 인식입니다. 이 단계에서는 시스템이 디바이스를 감지하고 식별하는 과정이 필요합니다. 이 단계는 매우 중요합니다. 만약 올바른 인식이 이루어지지 않으면 디바이스를 사용하거나 시스템에서 액세스할 수 없습니다. 그러므로 사용자는 이 단계를 꼼꼼하게 따라야합니다.

디바이스가 인식되면, 사용자는 하드 드라이브를 파티션해야합니다. 파티션은 데이터를 저장하기 위한 별도의 섹션 또는 파티션으로 하드 드라이브를 나누는 것을 의미합니다. 이 단계 역시 매우 중요합니다. 사용자는 자신의 요구에 맞게 데이터와 파일을 조직화할 수 있습니다. 이를 통해 데이터 관리가 더욱 용이해집니다.

파티션이 완료되면, 사용자는 파일 시스템을 설정해야합니다. 파일 시스템은 하드 드라이브에서 데이터를 구성하고 액세스하는 방법을 결정합니다. 다양한 파일 시스템이 있지만, 사용자는 자신의 요구에 가장 적합한 파일 시스템을 선택해야합니다. 이를 통해 데이터의 효율성과 보안성을 높일 수 있습니다.

마지막으로, 사용자는 하드 드라이브를 마운트해야합니다. 이를 통해 시스템이 드라이브에 저장된 데이터에 액세스 할 수 있습니다. 마운트는 하드 드라이브와 시스템 사이에 링크를 만드는 것을 의미합니다. 이 단계 또한 매우 중요합니다. 마운트하지 않으면 시스템에서 하드 드라이브의 데이터를 읽거나 쓸 수 없습니다.

결론적으로 하드 드라이브를 설정하는 것은 디바이스 인식, 파티션, 파일 시스템 설정 및 마운트와 같은 중요한 단계를 포함합니다. 이러한 단계를 꼼꼼하게 따르면 사용자는 하드 드라이브가 올바르게 설정되어 데이터를 효과적으로 저장할 수 있습니다. 또한, 이러한 단계를 따르면 사용자가 하드 드라이브를 더욱 잘 이해하게 됩니다.

 

< 디스크의 물리적인 구조 >

흔히 사용하는 S-ATA 디스크를 분해하였을 때, 스핀들(Spindle)이 있습니다. 이는 플래터를 돌려주는 축입니다. 스핀들모터는 스핀들과 완벽하게 물려있어, 스핀들을 회전시켜 스핀들과 함께 플래터를 회전 시킵니다. 플래터(Platters)는 원판(플랫터)이며, 데이터가 저장되는 공간입니다. 헤드(Heads)는 데이터를 읽어들이는 부분이며, 헤드 암(Head actuator arm)은 데이터를 읽어 들이는 팔입니다. 이렇게 S-ATA 디스크의 물리적인 구조는 스핀들, 스핀들모터, 플래터, 헤드, 헤드 암이 포함됩니다.

 

< 디스크의 내부 논리적 구조 >

디스크의 내부 논리적 구조에 대해 자세히 설명할 필요가 있습니다. 디스크는 일반적으로 트랙, 섹터, 클러스터 등으로 구성됩니다. 각각의 트랙은 디스크의 반지름에서 일정 거리에 위치한 원형 경로입니다. 섹터는 각각의 트랙에 대해 디스크 반지름에서 일정 거리에 위치한 부분으로, 디스크 상의 작은 부분입니다. 클러스터는 파일 시스템에서 파일을 저장하는 데 사용되는 단위입니다. 각각의 클러스터는 여러 섹터로 구성되며, 일반적으로 운영 체제는 클러스터를 파일이나 폴더와 같은 논리 단위로 사용합니다.

 

< 디스크이름 >

디스크는 컴퓨터에서 중요한 역할을 합니다. 우리는 컴퓨터에서 다양한 디스크를 사용합니다. 이 중 가장 일반적인 디스크는 SCSI, IDE, Nvme 및 가상 디스크입니다.

SCSI 디스크는 /dev/sda, /dev/sdb, /dev/sdc와 같은 형식으로 표시됩니다. 반면 IDE 디스크는 /dev/hda, /dev/hdb, /dev/hdc와 같은 형식으로 표시됩니다. 그리고 Nvme 디스크는 /dev/nvme0, /dev/nvme1, /dev/nvme2와 같은 형식으로 표시됩니다.

가상 디스크는 /dev/vda, /dev/vdb, /dev/vdc와 같은 형식으로 표시됩니다. 또한 가상 디스크 버전 업을 위해 /dev/xvda, /dev/xvdb, /dev/xvdc와 같은 형식도 있습니다.

파티션이름

파티션은 디스크를 분할하는 데 사용됩니다. 주파티션은 1부터 4까지의 번호가 붙어 있고, 확장파티션은 5부터 15까지의 번호가 붙어 있습니다. 확장파티션은 다수의 논리파티션을 생성할 수 있습니다.

리눅스 최대 파티션 개수

SCSI 디스크의 경우, SCSI 드라이버 당 최대 15개의 파티션을 생성할 수 있습니다. 그러므로 /dev/sda1에서 /dev/sda15까지의 파티션을 생성할 수 있습니다.

이와 같이, 디스크와 파티션은 우리가 컴퓨터에서 데이터를 저장하고 관리하는 데 있어서 중요한 역할을 합니다.

 

< 파티션에 대한 이해 >

[1] 파티션이란?

컴퓨터의 저장 매체를 사용하려면 용량을 나누어야 합니다. 파티션이란 이러한 용량을 나누는 것을 말합니다. 하드 디스크 드라이브와 같은 비교적 큰 저장 매체를 유용하게 사용하기 위해 고안되었습니다. 파티션을 나누면 새로운 프로그램을 설치할 때에도 디렉토리 관리에 한계가 생기지 않습니다. 또한, 컴퓨터 바이러스에 감염되었을 경우에도 모든 프로그램과 데이터를 사용하지 못하게 되는 것을 방지할 수 있습니다. 파티션을 나누면 프로그램을 별도로 저장할 수 있어서, 컴퓨터 바이러스에 감염되었을 때에도 해당 파티션만 제거할 수 있습니다. 파티션을 나누는 것은 하드 디스크 드라이브를 사용할 때 중요한 요소 중 하나입니다.

[2] 파티션을 나누는 이유?

파티션을 나누는 이유는 여러 가지가 있습니다. 파티션을 나누는 이유 중 몇 가지 예를 들어 보겠습니다.

① 루트 파티션 파괴시 다중 파티션 자료보호 & 자료 백업 및 업그레이드 수월

리눅스가 설치된 파티션 이외의 파티션에도 데이터가 들어 있는 경우, 리눅스가 설치된 파티션을 포맷하더라도 다른 파티션에는 영향이 없기 때문에 데이터를 보호할 수 있습니다. 단일 파티션의 경우 데이터 백업 시 별도의 파티션을 필요로 하지만 다중 파티션의 경우 별도의 파티션 없이 다중의 파티션 중 다른 하나의 파티션을 선택하여 백업할 수 있고, 파티션 용량이 부족할 때 새로운 파티션으로 대체하여 사용 가능하기 때문에 용량 부족 시 업그레이드가 수월합니다. 이러한 이유로 파티션을 나누는 것이 유용합니다. 또한, 업그레이드가 쉬워지므로 유지 보수 비용을 절감할 수 있습니다.

② 다중 운영체제 설치시 다중 파티션 필요

각각의 운영체제가 설치될 공간은 독립적인 공간이어야 하므로, 이러한 공간을 만들기 위해서는 파티션을 나누는 작업이 필요합니다. 또한, 하나의 디스크에 여러 개의 운영체제를 사용하는 경우에 각 운영체제는 하드디스크의 파티션을 제어하므로 각 운영체제에 알맞은 파일 시스템 형식이 필요합니다.

③ 파일 시스템 점검 시간을 줄여 부팅시간 감소 & 데이터 손실 최소화

리눅스 시스템 부팅 시, fsck 유틸리티에 의해 파일 시스템 점검이 이뤄지게 되는데, 하나의 파티션이 아닌 여러 개의 파티션으로 분할되는 경우 체크 여부를 선택할 수 있으므로 점검 시간이 빨라집니다. 또한, 파일 시스템이 깨진 경우 하나의 파티션으로 분할 시 모든 내용을 복구해야 되서 많은 시간이 걸리지만, 파티션이 분할되어 있으면 깨진 파일 시스템의 파티션만 복구하면 되므로 부팅 시간이 단축됩니다. 부팅 이후 파일 시스템에 문제 발생 시, 문제가 발생된 파티션을 언마운트하여 시스템을 검사하여 복구할 수 있습니다. 파티션을 나누면 파일 시스템 문제 발생 시 데이터 손실을 최소화할 수 있습니다. 이러한 이유로 파티션을 나누는 것이 바람직합니다.

 

< 리눅스 파티션 표시법 >

리눅스 파티션 표시법은 하드디스크의 연결 순서에 따라 SCSI 컨트롤러와 IDE에 따라 나뉘어집니다. IDE의 경우 Primary master HardDisk, Primary slave HardDisk, Secondary master HardDisk, Secondary slave HardDisk와 같은 순서로 하드디스크를 표시하며, 각각 /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd와 같은 표기법을 사용합니다. SCSI의 경우에도 비슷한 방식으로 하드디스크를 표시합니다. Primary master HardDisk, Primary slave HardDisk, Secondary master HardDisk, Secondary slave HardDisk와 같은 순서로 하드디스크를 표시하며, 각각 /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd와 같은 표기법을 사용합니다. 이러한 파티션 표시법은 리눅스에서 하드디스크의 위치를 파악하고 관리하는 데에 매우 유용합니다.

IDE
                          Window         Linux 
Primary master HardDisk   disk0          /dev/hda
Primary slave HardDisk    disk1          /dev/hdb
Secondary master HardDisk disk2          /dev/hdc
Secondary slave HardDisk  disk3          /dev/hdd

SCSI
                          Window         Linux 
Primary master HardDisk   disk0          /dev/sda
Primary slave HardDisk    disk1          /dev/sdb
Secondary master HardDisk disk2          /dev/sdc
Secondary slave HardDisk  disk3          /dev/sdd

[1] 윈도우 (A ~ Z드라이브까지 할당 가능)

Windows 운영체제에서는 하드 디스크와 파티션을 여러 개 생성할 수 있으며 A부터 Z까지 드라이브 문자를 할당할 수 있습니다. ****이는 보통 C, D, E 등의 드라이브 문자로 구분됩니다. 이것은 일반적으로 하나의 디스크를 여러 개의 저장 장치로 나누어 사용할 수 있도록 해주며, 효율적인 저장 공간 관리를 위해 사용됩니다. 이러한 드라이브 문자는 파일 탐색기에서 사용되며, 사용자가 파일이나 폴더를 찾을 때 필요합니다. 또한, 윈도우 운영체제에서 파일을 저장할 때 기본적으로 C 드라이브에 저장되며, 사용자가 설정을 변경하지 않는 한 이를 변경할 수 없습니다.

[2] 리눅스의 파티션 구분 방식 (최대 15개 - 주 파티션 3개 + 확장 파티션 1개 + 논리 파티션 11개(권장))

리눅스는 윈도우와 같이 드라이브가 아닌 디렉토리로 파티션을 구분합니다. 파티션이 분할되어 있어도, 실제로는 "/" 디렉토리(최상위 디렉토리) 아래에 하위 디렉토리로 표시됩니다. 파티션을 구분하는 방식은 '/dev/sd?'에 숫자를 붙여서 구분합니다.

예를 들어, Primary master 하드디스크 첫 번째 파티션은 '/dev/sda1'이며, Primary slave 하드디스크 첫 번째 파티션은 '/dev/sdb1'입니다.

리눅스는 파티션을 최대 15개까지 구분할 수 있습니다. 이 중, 주 파티션은 3개, 확장 파티션은 1개, 논리 파티션은 11개(권장)입니다. 이를 효율적으로 활용하면 더욱 안정적인 시스템을 구성할 수 있습니다.

위와 같은 방식으로 리눅스의 파티션을 구분하면, 다양한 용도로 파티션을 나눌 수 있습니다. 예를 들어, '/' 디렉토리에는 운영체제가 설치되고, '/home' 디렉토리에는 사용자 계정이 저장됩니다. 이렇게 파티션을 나누면, OS 변경이나 데이터 복구 작업 시에도 유용하게 사용할 수 있습니다.

리눅스의 partition구분법

/dev/sda1    Primary master하드디스크 첫 번째 파티
/dev/sda2    Primary master하드디스크 두 번째 파티션
/dev/sdb1    Primary slave하드디스크 첫 번째 파티션
/dev/sdb2    Primary slave하드디스크 두 번째 파티션

[참고] 파티션을 나누게 되면 하드디스크를 '/dev/sd?'이므로 '/dev/sd?'에 숫자를 붙여서 구분하게 된다.

 

< 파티션 종류와 설명 >

하나의 하드 디스크에는 최대 4개의 주 파티션만 만들 수 있습니다. 이는 파티션 테이블의 용량 제한 때문입니다. 이 제한을 극복하기 위해, 확장 파티션과 논리 파티션이 등장했습니다. 확장 파티션은 주 파티션 중 하나를 확장하여 그 안에 논리 파티션들을 만들 수 있게 해주는 파티션입니다. 주 파티션과 확장 파티션은 각각 1부터 4까지의 번호를 가지며, 5부터의 번호는 그 하드 디스크의 논리 파티션을 나타냅니다.

논리 파티션은 하드 디스크의 논리적인 파티션으로, 5부터 시작하는 번호를 가집니다. 이를 확장 파티션 안에 만들어 사용할 수 있습니다.

주 파티션은 최대 4개까지만 만들 수 있으며, 주 파티션 중 하나를 확장 파티션으로 만들어 더 많은 파티션을 생성할 수 있습니다. 확장 파티션은 파티션 테이블의 용량을 사용하지 않으며, 그 안에 논리 파티션을 만들어 사용합니다.

논리 파티션은 네 개 이상의 파티션을 사용할 때 만들어집니다. sda4를 확장 파티션으로 지정해 논리 파티션을 만들 수 있습니다.

파티션                    설명
주 파티션           주파티션(Primary Partition), 기본 파티션으로 더 이상 쪼갤 수 없는 파티션이다.
									하나의 하드디스크에는 주 파티션과 확장 파티션을 네 개까지만 만들 수 있다는 제한이 있다.
									네 개 이상의 파티션이 필요한 경우 확장 파티션을 만들어 그 안에 논리 파티션을 두게 된다.
확장 파티션          확장 파티션(Extended Partition),
									하드 디스크를 여러 개의 파티션으로 나누고자 할 때 만드는 파티션이다.
	                확장 파티션은 저장 공간이 없으며, 안에 논리 파티션을 만들 수 있게 해주는 커다란 그릇 역할만 한다.
							    확장 파티션은 디스크에 Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   10M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda6        43G  4.2G   39G  10% /
/dev/sda3       5.0G   69M  5.0G   2% /home
/dev/sda1       2.0G  126M  1.7G   7% /boot
/dev/sda2        47G  1.2G   46G   3% /var
tmpfs           795M  1.2M  794M   1% /run/user/42
tmpfs           795M  4.6M  791M   1% /run/user/0하나만 만들 수 있다. (ex - hda4)
논리 파티션          논리적인 파티션(Logical Partition),
                  네 개 이상의 파티션을 사용하게 되는 경우 sda4를 확장 파티션으로 지정하여 논리 파티션을 만들게 된다.

 

< 현재 운영체제 파티션 구성 정보 확인 >

디스크에는 여러 종류가 있습니다: IDE(SATA), SCSI(SAS), SSD 등이 있습니다. 각 디스크 종류마다 장단점이 있으므로, 컴퓨터에 적합한 디스크를 선택할 때 이러한 요소를 고려하는 것이 중요합니다.

IDE와 SCSI를 자세히 살펴보겠습니다. IDE(Integrated Drive Electronics)는 마더보드에 직접 연결되는 저장 장치입니다. 표준 IDE 인터페이스는 Advanced Technology Attachment(ATA)로 알려져 있으며, 최신 버전인 SATA(Serial Advanced Technology Attachment)도 있습니다. IDE는 신뢰성이 높은 선택이지만, 성능과 확장성 측면에서 제한이 있을 수 있습니다.

반면 SCSI(Small Computer System Interface)는 컴퓨터와 주변 기기 사이의 물리적인 연결과 데이터 전송을 위한 표준입니다. SCSI는 IDE보다 빠르고 더 많은 기기를 지원하므로, 고성능 저장소가 필요한 경우에 좋은 선택입니다. 그러나 IDE보다 비싸다는 단점이 있습니다.

IDE와 SCSI 중에서 선택할 때 안정성, 성능, 확장성, 가격 등의 요소를 고려하는 것이 중요합니다. 두 가지 옵션 모두 장단점이 있으므로, 자신의 필요와 선호를 이해하고, 정보를 충분히 수집한 후 결정하는 것이 좋습니다.

또한 각 디스크 종류마다 이름 지정 규칙이 있습니다. IDE 디스크는 일반적으로 /dev/hd로 표시되며, SCSI 디스크는 /dev/sd로 표시됩니다. 또한 IDE 디스크는 /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd와 같은 문자로 이름이 지정되며, SCSI 디스크는 /dev/sda, /dev/sdb, /dev/sdc 등과 같은 문자로 이름이 지정됩니다.

'df' 명령은 지정된 파일, 파일 시스템 또는 디렉토리를 포함하는 파일 시스템의 사용 가능한 디스크 공간을 표시하는 데 사용됩니다. '-h' 옵션을 사용하면 사람이 읽을 수 있는 형식으로 디스크 공간을 표시합니다. 이 명령은 파일 시스템의 크기, 사용된 양, 남은 양, 사용량의 백분율을 보여줍니다. '# fdisk -l' 명령은 지정된 장치의 파티션 테이블을 표시하는 데 사용되며 각 파티션의 크기를 보여줍니다.

'cat /proc/swaps' 명령을 사용하여 현재 스왑 영역과 해당 사용량을 볼 수 있습니다. 이 명령은 각 스왑 영역마다 장치 이름, 파티션 유형, 파티션 크기, 사용된 양 및 우선 순위가 포함된 한 줄을 보여줍니다.

다음은 'df -h' 명령의 출력 예시입니다:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   10M  3.9G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda6        43G  4.2G   39G  10% /
/dev/sda3       5.0G   69M  5.0G   2% /home
/dev/sda1       2.0G  126M  1.7G   7% /boot
/dev/sda2        47G  1.2G   46G   3% /var
tmpfs           795M  1.2M  794M   1% /run/user/42
tmpfs           795M  4.6M  791M   1% /run/user/0

다음은 'cat /proc/swaps' 명령의 출력 예시입니다:

Filename				Type		  Size	  Used	Priority
/dev/sda5       partition	4194300	      -2

이러한 명령은 파일 시스템과 관련된 문제를 해결하는 데 유용하며, 디스크 공간과 메모리 사용과 관련된 문제를 해결하는 데 사용할 수 있습니다.

반응형