본문 바로가기
Linux

Disk 추가해보자.

by oncerun 2023. 6. 13.
반응형

 

리눅스는 /dev 내부에 모든 디바이스 장치를 표현하고 있다.

 

크게 두 가지로 나누어지며, 블록 디바이스와 캐릭터 디바이스이다.

 

블록 디바이스는 하드 디스크, CD/DVD, USB 등 블록이나 섹터 단위로 데이터를 전송하는 디바이스이다.

 

캐릭터 디바이스는 키보드, 마우스, 프린터 등의 입출력 장치로 바이트 단위로 데이터를 전송하는 디바이스이다.

 

 

b로 시작하는 파일은 블록디바이스며, c로 시작하는 파일은 캐릭터 디바이스이다. 

 

 

/dev 하위 여러 디바이스를 살펴보자.

 

요즘 hda는 보기 힘들고, 대부분 serial 방식의 디바이스를 사용하기 때문이다. 
개수로 a,b,c이며, 1,2,3으로 파티션을 의미하게 된다.

  • sr0은 cd-rom을 의미한다.
  • hda1 - PAPA 방식의 HDD1 (파티션 1)
  • sda1 - SATA 방식의 HDD1( 파티션 1)
  • sda2 - SATA 방식의 HDD2( 파티션 2)
  • tty - 입출력 터미널 인터페이스 등등
  • input - 입출력
  • block - 블록 
  • char - 캐릭터

 

요즘은 디스크가 포맷이 된 상태로 나와 별도의 포맷과정을 진행하지는 않는다. 

실제로 어떤 데이터를 디스크에 저장하기 위해선 데이터를 어떤 형태로 파일이 들어갈지.. 등등 사전에 구조화가 되어야 데이터를 저장할 수 있습니다.

 

하드 디스크는 파티션이라는 개념이 있습니다.

 

큰 디스크를 효율적으로 관리하기 위해서 하드 디스크 하나를 논리적으로 나누어 사용할 수 있고 이러한 파티션을 통해 여러 OS를 설치할 수도 있습니다. 

 

파티션은 Primary Partition인 운영 체제가 부팅이 될 수 있는 파티션(액티브), Extended Partition인 데이터가 저장되는 논리적 파티션을 최대 4개까지 포함할 수 있다.

 

 

USB를 추가한다고 생각해보자. 

 

시스템은 어떤 과정을 통해 연결되는 것일까? 

 

커널에서 디바이스 인식이 되면 적절한 드라이버를 로딩을 하고, 블록 스토리지로 추가가 되고, 파티션을 인식한 이후 유저스페이스에서 해당 파티션을 디렉터리로 마운트 해주는 과정을 거치게 된다. 

 

dmesg라는 명령어로 이 과정을 확인할 수 있다. 혹은 lsusb로 확인해볼 수 있다. (크기가 안 맞을 수 있다.)

 

디바이스 확인 명령어로는 fdisk, mount, unmount 등이 있다. 

 

 

 

swap이라는 것은 사실 메모리가 부족할 때 하드디스크를 땡겨 사용하는 것이다. 

 

고전적으로 이 swap 파티션을 최우선으로 만들었는데, SSD가 아닌 HDD 경우 맨 안쪽의 영역이 밖의 영역보다 미세하게 빨라 맨 처음에 만들어지는 것이 고전적인 이유이다. 

 

다만 요즘은 데이터 부분을 앞에 두고 각 사이를 버퍼를 두고 마지막에 swap 파티션을 만드는데, 요즘은 SSD를 대부분 사용하고 메모리 용량도 크기 때문이다.

 

이제는 굳이 파티션에 큰 비중을 두는 편아니다. 

 

디스크를 추가하기 전에 디스크를 확인해보자. 

 

크기는 fdisk -l로 확인할 수 있고, 용량은 df -h, df -T로 확인이 가능하다.

 

저는 하드 디스크를 추가해야할 타이밍 같습니다. 

 

근데 tmpfs는 뭔지 잘 모를 수 있는데,  메모리 파일 시스템으로 가상의 파일 시스템입니다. 메모리 일부를 디스크로 사용하는 것입니다. 용량이 적지만 빠르고 빈번하게 처리하는 부분을 말합니다. 공유, 락 파일 등등입니다.

 

 

헷갈릴 수 있어 리눅스에서는 다음과 같이 사용합니다. 

 

디스크를 어디에 마운트 되어있고 어떤 유형이고 얼마나 많은 사이즈를 가지는지 확인하기 위해선 lsblk 명령어를 사용해 보는 것도 좋습니다.

만약 디스크를 마운트 했고 파티션을 만들고 싶다면 fdisk /dev/sd{?}로 시작하시고,

n p 1 enter enter w 라는 명령어를 순서대로 치시면 됩니다.

 

n은 새로운 파티션을 추가하는 것이고,

p는 primary 파티션으로,

enter는 용량을 첫 번째 섹터부터 끝까지 사용하고,

w로 저장합니다. 

 

이제 디스크를 포맷하고 연결해야 합니다. 

sudo mkfs.ext4 /dev/sdb1 ( or sudo mkfs -t ext4 /dev/sdb1) 파일 시스템을 만들고

sudo mount /dev/sdb1 /data ( /data에 마운트합니다.)

 

이제 마지막으로 수동 마운트는 재부팅 시 마운트가 자동으로 적용되지 않습니다. 

 

따라서 부팅 시 자동으로 연결될 수 있도록 /etc/fstab을 수정해주어야 합니다.

 

`/etc/fstab` 파일은 파일 시스템 마운트 정보를 설정하는 데 사용되는 구성 파일입니다. 각 줄은 하나의 파일 시스템 마운트를 설명하며, 주요 구성 요소는 다음과 같습니다:

1. 디바이스 또는 UUID: 마운트 할 파일 시스템의 장치 경로나 UUID를 지정합니다. 예를 들어, `/dev/sda1` 또는 `UUID=12345678-9 abc-def0-1234-56789 abcdef0`와 같은 형식을 사용할 수 있습니다.

2. 마운트 지점: 파일 시스템이 마운트 될 디렉터리 경로를 지정합니다. 예를 들어, `/mnt/data` 또는 `/home`과 같은 디렉터리를 지정할 수 있습니다.

3. 파일 시스템 유형: 마운트 할 파일 시스템의 유형을 지정합니다. 예를 들어, `ext4`, `ntfs`, `xfs`와 같은 파일 시스템 유형을 사용할 수 있습니다.

4. 옵션: 파일 시스템 마운트 옵션을 지정합니다. 일반적으로 `defaults` 옵션을 사용하며, 필요에 따라 읽기 전용(`ro`), 실행 권한(`exec`) 등의 옵션을 추가할 수 있습니다.

5. Dump 옵션: 백업 도구가 파일 시스템을 백업해야 하는지를 나타냅니다. 일반적으로 `0`으로 설정하여 백업을 비활성화합니다.

6. 파일 시스템 체크 순서: 부팅 시 파일 시스템 체크 순서를 지정합니다. 일반적으로 루트 파일 시스템은 `1`로 설정되며, 다른 파일 시스템은 `2` 이상의 숫자로 설정됩니다.

예를 들어, 다음은 `/etc/fstab` 파일의 예시입니다:

```
/dev/sda1   /       ext4    defaults        0 1
UUID=12345678-9abc-def0-1234-56789abcdef0   /mnt/data   ext4    defaults    0 2
```



위의 예시에서 첫 번째 줄은 `/dev/sda1` 장치에 위치한 `ext4` 파일 시스템을 루트 디렉터리(`/`)에 마운트하고 있습니다. 

 

두 번째 줄은 `UUID`가 `12345678-9 abc-def0-1234-56789 abcdef0`인 장치에 위치한 `ext4` 파일 시스템을 `/mnt/data` 디렉터리에 마운트하고 있습니다.

 

이제는 권한에 따라 소유권(chown)을 전달하고 chmod(접근권한)을 정책에 따라 부여하시고 사용하시면 됩니다.

 

 

 

 

 

 

 

 

 

 

반응형

'Linux' 카테고리의 다른 글

daemon  (0) 2023.06.14
hostnamectl  (0) 2023.06.13
Linux FileSystem (1)  (0) 2023.06.11
명령어 [복습]  (0) 2022.03.10
환경 구축 (2)  (0) 2022.03.09

댓글