리눅스 하드(HDD) 추가(파티션,ntfs 생성,수정,삭제) 및 마운트

리눅스에서 대용량(2TB 이상) 하드 파티션 생성 및  마운트하기

필자는 얼마전 대용량 하드디스크 4TB(테라바이트) 하드를 3개 구입했다. 총 12TB이다. 이것들은 필자가 운영중인 해외 TV서비스의 편의기능으로 TV영상 녹화 등에쓰인다. 이 하드들을 어떻게 관리할지는 아직도 고민 중이다.

오늘은 리눅스(필자의 시스템은 우분투임)에서 하드디스크 파티션을 관리하는 방법에 대해 알아 볼까 한다.

0. 하드디스크 설치

보통 sata 방식으로 연결한다. 메인보드의 sata지원 여부와 하드디스크의 레벨에 따라 전송 속도가 결정된다. 참고로 SATA 1.5 Gbit/s(SATA1), SATA 3.0 Gbit/s(SATA2), SATA 6.0 Gbit/s(SATA3)의 전송속도를 가지지만 이론적인 수치일뿐 이 수치에 너무 여념하지 말라, HDD의 성능에 따라 전송속도는 결정된다고 봐도 무방하다.

1. 설치된 하드디스크 확인

$sudo fdisk -l

필자의 시스템에는 위와같은 hdd가 설치돼 있다. /dev/sdb 하드디스크는 오늘 포스트를 하기전에 미리 설치하고 파티션을 잡아둔 상태이다. 일단 설치된 /dev/sdb1의 파티션을 지우고 다시 파티션을 생성해 보겠다. 파티션 삭제 예를 보여주기 위해 아래 과정을 진행하는 것이며 파티션 생성과 마운트가 목적이라면 '4. 4테라 이상 GPT 파티션 생성하기'부터 따라가면 되겠다.

2. 파티션 삭제

$sudo fdisk /dev/sdb

리눅스에선 fdisk라는 명령으로 파티션을 관리한다. 이 명령의 옵션은 command (m for help) : 'm'을 입력해 보면 알 수있다. 위 그림처럼 지우는 옵션은 'd'이다.

'd'를 주자 어떠한 경고 메시지도 없이 지워준다. 4테라의 하드에 중요한 데이터가 잔뜩 있었으면 정말이지 '억~' 소리가 날 것임으로 파티션을 관리할 때는 특히 지우는 명령을 쓸 때에는 철처히 확인하고 또 확인해서 만약의 불상사에 대비하자.

'p' 명령으로 현재 선택한 hdd의 파티션 정보를 확인 할 수 있다.

리눅스에서 2테라 이상의 하드를 단일 용량으로 사용하기 위해서는 gpt파티션으로 잡아줘야 사용 가능하다. 필자는 이미 gpt로 라벨 생성을 한 상태임을 알 수 있다.

마지막으로 'w' 옵션으로 설정 값을 적용한다.

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

3. GPT 파티션을 삭제

GPT 파티션과 관련된 부분은 fdisk가 아닌 parted라는 툴을 사용해야 한다. GPT 파티션을 삭제하려고 한다면 다음과 같이 진행하면 된다.

$parted /dev/sdb

(parted) mklabel msdos                                                   

Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?

Yes/No? Yes


참고로 mklabel의 타입에는 bsd, loop (raw disk access), gpt, mac, msdos, pc98, sun 등이있다.

4. 2TB(테라바이트) 이상 GPT 파티션 생성하기

아래 명령으로 현재 파티션 정보를 확인한다.

$sudo fdisk -l

Device     Boot     Start       End   Sectors  Size Id Type

/dev/sda1  *         2048 457146367 457144320  218G 83 Linux
/dev/sda2       457148414 488396799  31248386 14.9G  5 Extended
/dev/sda5       457148416 488396799  31248384 14.9G 82 Linux swap / Solaris

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x244b96aa

4. GTP에 단일 볼륨 파티션 생성

fdisk에서 파티션을 생성할 하드를 선택한다.

$sudo fdisk /dev/sdb

위와 같이 DOS 파티션으로는 2테라까지만 지원하니 GPT로 포맷하라는 안내가 메세지가 나온다.

Command (m for help): g

Created a new GPT disklabel (GUID: 407846ED-3CF1-FD45-B299-FBFE6FC73D62).
The old dos signature will be removed by a write command.

Command (m for help): p

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 407846ED-3CF1-FD45-B299-FBFE6FC73D62


gpt 파티션으로 변환 되었다. 새로운 파티션을 생성한다. 생성 과정은 'n'옵션을 주면 되고 파티션 넘버 '1'을 주었고 시작섹터는 2048(디폴트 값이 있을때는 엔터만 치면된다.) 끝나는 섹터는 7814037134(마찬가지로 엔터)이다. 

Command (m for help): n

Partition number (1-128, default 1): 1
First sector (2048-7814037134, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-7814037134, default 7814037134): 


마직막으로 현재 파티션이 ntfs볼륨인데 이 ntfs볼륨을 지우고 Linux filesystem으로 사용 하겠냐고 묻는다. 필자는 이 파티션을 최종 ntfs로 쓰려고 한다. 'N'선택하면 ntfs로 쓸 수 있지만 Linux filesystem에서 어떻게 ntfs 볼륨으로 변환하는지 그 과정을 보여 주기 위해 Linux filesystem을 선택했다.

Created a new partition 1 of type 'Linux filesystem' and of size 3.7 TiB.

Partition #1 contains a ntfs signature.

Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.


다시 파티션 정보를 확인한다.

Command (m for help): p

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 407846ED-3CF1-FD45-B299-FBFE6FC73D62

Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 7814037134 7814035087  3.7T Linux filesystem
Filesystem/RAID signature on partition 1 will be wiped.


리눅스 파일 시스템으로 잘 변환되었다. 'w'로 마무리한다.

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

5. ntfs filesystem변환

Linux filesystem에서 윈도우에서도 사용가능한 ntfs볼륨을 생성하려면 ntfs-3g 패키지를 사용해야 한다. 설치가 안 되어 있다면 아래의 명령으로 설치 한다.

$sudo apt-get install ntfs-3g

다음 명령으로 ntfs로 포맷 한다.

$sudo mkfs.ntfs /dev/sdb1 -f

-f옵션은 윈도우에서 사용하는 quick옵션과 같은 의미이다. 지정하지 않으면 시작 섹터부터 끝나는 섹터까지 하나하나 차례대로 포맷을 할 것이다. 시작이 얼마나 걸릴지.. 다시 파티션 정보를 확인한다.

$sudo fdisk -l

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 407846ED-3CF1-FD45-B299-FBFE6FC73D62

Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 7814037134 7814035087  3.7T Linux filesystem


/dev/sdb1은 3.7TB Linux filesystem으로 확인되지만 실제로는 ntfs filesystem을 가지고 있다.

참고로 다시 Linux filesystem으로 포맷 하려면 아래의 명령으로 fidisk 도움없이 변환 가능하다.

$sudo mkfs.ext4 /dev/sdb1

6. ntfs filesystem의 마운트

임시로 임의 폴더로 마운트 해 보겠다.

$sudo mount -t ntfs /dev/sdb1 /mnt

df명령으로 마운트된 목록을 확인한다.

$df -h /dev/sd*

위와 같이 /dev/sdb1이 잘 마운트 되었다.

이제 시스템 시작시 자동으로 마운트 시키려 한다. 자동 마운트를 위해 디스크의 uuid를 확인한다. (uuid는 장치의 유일한 식별id를 뜻한다. 해당 하드웨어의 물리적인 sata port 변경시 이 id도 바뀌니 참고하자.)

$ls -l /dev/disk/by-uuid

시스템 등록을 위해 unmoun 한다.

$sudo umount /mnt

이제 시스템 시작 시 자동으로 마운트를 위해서 fstab에 등록한다.

$sudo nano /etc/fstab

UUID=[복사해둔 uuid값] /mnt/sdb1 ntfs defaults 0 0

참고로 리눅스 파일 시스템인 ext4를 마운트 하려면 위 'ntfs'부분을 'ext4'로 바꾸어주면 된다.

확인을 위해 다음의 명령으로 마운트 한다. 이 명령으로 마운트가 정상적으로 된다면 실제 시스템 시작 시 마운트되는 거나 다름없다.

$sudo mount -a

필자는 /rec/pvr1라는 폴더를 따로 만들어서 마운트 시켰습니다. 여러분도 본인의 환경에 맞는 적당한 폴더에 마운트 시키면 되겠습니다. 이상 입니다.

※   저작권 관련 안내
본 블로그의 모든 글과 사진 및 영상은저작권 보호를 받는 게시물 입니다. 본 블로그의 내용을 링크 및 인용 할 때에는 꼭 출처를 밝혀주세요. 게시자 허락없는 무단도용은 당신을 불행하게 만들 수도 있습니다.

당분간 서비스 업데이트 준비로 본페이지는 운영되지 않습니다. 정상화 되면 공지 하겠습니다.

당분간 서비스 업데이트 준비로 본 페이지는 운영되지 않습니다. 정상화 되면 공지 하겠습니다.