[정보] 리눅스에서 하드디스크 포맷 방법

image by Pix­abay


1. 들어가기 앞서..

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

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

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

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

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

2. 빠른 포맷 방법

하드디스크가 사용 중일 경우

→ 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
하드디스크에 파티션이 없는 경우
파티션 생성

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

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

New > Prima­ry > 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" 


 

하드디스크에 파티션이 있을 때

→ 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

 

 

3. 로우 포맷 방법

설치

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

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

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

Fedo­ra 계열인 경우

yum install -y dcfldd pv

Devian 계열인 경우

apt install dcfldd pv
하드디스크가 사용 중일 경우

→ 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
하드디스크 경로 확인
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 > Prima­ry > 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" 


 

디스크 검사 방법 (2가지)

논리적 파일 시스템 결함 검사
fsck.ext4 -f /dev/sdc1

 

물리적 손상 검사

bad­block­s는 실제 물리적 손상을 검사

badblocks -sv /dev/sdc1

이 글은 블로그에서 지속적인 수정 보안이 될 예정입니다.

잘못된 정보가 있다면 답글이나 이메일로 피드백 부탁드립니다.

2019.07.10 (수) 오후 14:30

Tak­ing 올림
포스팅에 대해 표현해보세요! 
Like
Love
Haha
Wow
Sad
Angry
You have react­ed on”[정보] 리눅스에서 하드디스크 포맷 방법” A few sec­onds ago
알림 받기
다음과 같은 방식으로
guest
0 Comments
Inline Feedbacks
View all comments
Menu
0
Would love your thoughts, please comment.x
()
x