테크놀로지, Linux

리눅스에서 하드디스크 포맷 방법

리눅스에서 하드디스크 포맷하는 방법에 대해 정리한 글이며, 빠른 포맷, 로우 포맷에 대한 방법과 하드디스크가 사용 중일 때 …

(Last Updated On: 2022-05-05)

들어가기에 앞서…

현재 서버 겸 NAS 로 사용하고 있는 컴퓨터엔 4TB와 8TB 하드디스크가 꽂혀있다.

4TB는 문제가 없는데, 어느 날부턴가 8TB 하드디스크가 쓰기가 안되는 문제가 발생하기 시작했다.

나는 fstab 마운트 옵션에 errors=remount-ro로 설정하기 때문에 하드디스크에 문제가 발생 시, 자동으로 읽기만 가능하게 된다.

언마운트 후 fsck 을 통해 문제를 자동으로 Fix하고 다시 마운트를 하면 정상적으로 이용이 가능하나 며칠 못 가서 다시 위와 동일한 문제가 발생했다.

문제가 자주 생기는 하드디스크를 포맷하고자 방법을 정리해본다.

빠른 포맷 방법

1. 하드디스크가 사용 중인 경우

unmount 할 때, 사용자 및 프로세스가 사용하고 있으면 ‘device is busy’ 와 같은 메시지가 뜨는데 다음 명령어를 통해 사용 중인 사용자 & 프로세스를 확인 할 수 있다.
kill ‑9 프로세스번호 로 강제 종료시킨 후 umount 를 진행할 수 있다.

fuser -fuc /8TB
kill -9 프로세스 ID를 나타내는 번호
umount /8TB
# umount /8TB
umount: /8TB: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
# fuser -fuc /8TB
/8TB: 24245c(root)
# ps -ef | grep 24245
root 24245 1876 0 07:14 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
taking 25309 25057 0 07:18 pts/6 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn 24245
# kill -9 24245
# umount /8TB
# ll /8TB
합계 0
1. 하드디스크에 파티션이 없는 경우

파티션 생성

→ 하드디스크의 완료 되었다면, 이젠 파티션을 생성해주어야 한다.

‘fdisk 장치명’을 입력하여 다음을 입력한다.

New > Primary > enter (default) > enter (default) > Write

fuser -fuc /8TB
kill -9 프로세스 ID를 나타내는 번호
umount /8TB
# umount /8TB
umount: /8TB: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
# fuser -fuc /8TB
/8TB: 24245c(root)
# ps -ef | grep 24245
root 24245 1876 0 07:14 ? 00:00:00 /usr/sbin/smbd --foreground --no-process-group
taking 25309 25057 0 07:18 pts/6 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn 24245
# kill -9 24245
# umount /8TB
# ll /8TB
합계 0

파일 시스템 포맷

# fdisk -l
Disk /dev/sdc: 8001.6 GB, 8001563222016 bytes, 15628053168 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
Disk label type: dos
Disk identifier: 0xd7a07ce8
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4294967294 2147482623+ 83 Linux
# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870655 blocks
26843532 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# fdisk -l
Disk /dev/sdc: 8001.6 GB, 8001563222016 bytes, 15628053168 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
Disk label type: dos
Disk identifier: 0xd7a07ce8
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4294967294 2147482623+ 83 Linux
# blkid
/dev/sdc1: UUID="6782ec7b-af99-4ede-93df-83a50ec9e1a4" TYPE="ext4" PARTLABEL="easystore" PARTUUID="5c62a738-8f3b-4e42-bd9d-17cdfe6b65a3"
2. 하드디스크에 파티션이 있을 때

→ fdisk ‑l 을 통해 파티션 여부를 확인해보고 해당 파티션 번호를 통해 포맷을 진행한다.

# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870655 blocks
26843532 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

로우 포맷 방법

Fedora 또는 Debian 모두 동일하게 진행이 가능하다.

Fedora 는 yum 으로 Debian 은 apt 로 변경하여 진행하면 된다.

그냥 dd 로 로우포맷을 진행 할 수 있으나, 진행 과정을 보기 위해 dcfldd 와 pv 를 함께 사용하여 진행하기로 했다.

Fedora 계열인 경우

yum install -y dcfldd pv

Devian 계열인 경우

apt install dcfldd pv

하드디스크 경로 확인

fdisk -l

로우 포맷 시작

주의!

dcfldd of=/dev/sdc 이 부분은 위의 fdisk ‑l 을 통해서 자신의 하드디스크 장치명를 정확히 입력해야한다.
잘못하면, 다른 파티션을 포맷할 수 있으니 주의!
또한, 로우 포맷은 시간이 상당히 오래 걸리기 때문에 주의를 요한다.
dcfldd if=/dev/zero |pv| dcfldd of=/dev/sdc

만약, 관리자 계정이 아니라면

sudo dcfldd if=/dev/zero |pv| sudo dcfldd of=/dev/sdc
# dcfldd if=/dev/zero |pv| dcfldd of=/dev/sdc
15872 blocks (496Mb) written. 499MiB 0:00:01 [ 498MiB/s] [ <=>
19968 blocks (624Mb) written. 628MiB 0:00:02 [ 129MiB/s] [ <=>
24064 blocks (752Mb) written. 753MiB 0:00:03 [ 123MiB/s] [ <=>
28160 blocks (880Mb) written. 880MiB 0:00:04 [ 127MiB/s] [ <=>
32256 blocks (1008Mb) written.1009MiB 0:00:05 [ 129MiB/s] [ <=>
36352 blocks (1136Mb) written.1.11GiB 0:00:06 [ 130MiB/s] [ <=>
40704 blocks (1272Mb) written.1.24GiB 0:00:07 [ 131MiB/s] [ <=>
44800 blocks (1400Mb) written.1.37GiB 0:00:08 [ 130MiB/s] [ <=>
48896 blocks (1528Mb) written. 1.5GiB 0:00:09 [ 130MiB/s] [ <=>
53248 blocks (1664Mb) written.1.63GiB 0:00:10 [ 131MiB/s] [ <=>
57600 blocks (1800Mb) written.1.76GiB 0:00:11 [ 135MiB/s] [ <=>
61696 blocks (1928Mb) written.1.89GiB 0:00:12 [ 131MiB/s] [ <=>
66048 blocks (2064Mb) written.2.02GiB 0:00:13 [ 133MiB/s] [ <=>
70144 blocks (2192Mb) written.2.15GiB 0:00:14 [ 131MiB/s] [ <=>
74496 blocks (2328Mb) written.2.28GiB 0:00:15 [ 132MiB/s] [ <=>
78592 blocks (2456Mb) written. 2.4GiB 0:00:16 [ 131MiB/s] [ <=>
82944 blocks (2592Mb) written.2.53GiB 0:00:17 [ 132MiB/s] [ <=>
87296 blocks (2728Mb) written.2.66GiB 0:00:18 [ 133MiB/s] [ <=>
91392 blocks (2856Mb) written. 2.8GiB 0:00:19 [ 134MiB/s] [ <=>
95744 blocks (2992Mb) written.2.93GiB 0:00:20 [ 132MiB/s] [ <=>
100096 blocks (3128Mb) written.3.06GiB 0:00:21 [ 133MiB/s] [ <=>
104192 blocks (3256Mb) written.3.18GiB 0:00:22 [ 130MiB/s] [ <=>
108544 blocks (3392Mb) written.3.31GiB 0:00:23 [ 131MiB/s] [ <=>
112640 blocks (3520Mb) written.3.44GiB 0:00:24 [ 133MiB/s] [ <=>
116992 blocks (3656Mb) written.3.57GiB 0:00:25 [ 132MiB/s] [ <=>
121088 blocks (3784Mb) written. 3.7GiB 0:00:26 [ 134MiB/s] [ <=>
125440 blocks (3920Mb) written.3.83GiB 0:00:27 [ 133MiB/s] [ <=>
129792 blocks (4056Mb) written.3.97GiB 0:00:28 [ 135MiB/s] [ <=>
134144 blocks (4192Mb) written.4.09GiB 0:00:29 [ 130MiB/s] [ <=>
138240 blocks (4320Mb) written.4.22GiB 0:00:30 [ 132MiB/s] [ <=>
142592 blocks (4456Mb) written.4.35GiB 0:00:31 [ 131MiB/s] [ <=>
146688 blocks (4584Mb) written.4.48GiB 0:00:32 [ 132MiB/s] [ <=>
151040 blocks (4720Mb) written.4.61GiB 0:00:33 [ 132MiB/s] [ <=>
155136 blocks (4848Mb) written.4.74GiB 0:00:34 [ 132MiB/s] [ <=>

파티션 생성

→ 하드디스크의 완료 되었다면, 이젠 파티션을 생성해주어야 한다.

‘fdisk 장치명’을 입력하여 다음을 입력한다.

New > Primary > enter (default) > enter (default) > Write

# fdisk /dev/sdc
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4294967295, default 2048):
Command (m for help): w
# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd7a07ce8.
WARNING: The size of this disk is 8.0 TB (8001563222016 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4294967295, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4294967294, default 4294967294):
Using default value 4294967294
Partition 1 of type Linux and of size 2 TiB is set
Command (m for help): w
The partition table has been altered!

파일 시스템 포맷

# fdisk -l
Disk /dev/sdc: 8001.6 GB, 8001563222016 bytes, 15628053168 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
Disk label type: dos
Disk identifier: 0xd7a07ce8
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4294967294 2147482623+ 83 Linux
# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870655 blocks
26843532 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# fdisk -l
Disk /dev/sdc: 8001.6 GB, 8001563222016 bytes, 15628053168 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
Disk label type: dos
Disk identifier: 0xd7a07ce8
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4294967294 2147482623+ 83 Linux
# blkid
/dev/sdc1: UUID="6782ec7b-af99-4ede-93df-83a50ec9e1a4" TYPE="ext4" PARTLABEL="easystore" PARTUUID="5c62a738-8f3b-4e42-bd9d-17cdfe6b65a3"

2019.07.01 (월) 오후 22:00 작성 됨.

답글 남기기

이메일 주소는 공개되지 않습니다.

현재 블로그를 개편 중입니다. 자료는 현재 테마를 기준으로 재작성되고 있습니다.