우분투에서 하드디스크 완전 삭제

요약

1
2
3
sudo shred -v -z -n3 /dev/sdx
sudo badblocks -w -c 600 /dev/sdx
dd if=/dev/urandom of=/dev/sdx bs=1M

shred?

  • 데이터 복구가 어렵도록, 실제 데이터를 쓰고/지우는 것을 반복하는(default 3) 명령어

설치

  • Ubuntu 20.04
1
apt-get install coreutils

디스크 삭제 준비

  • 디스크 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
lsblk

# ex) sdg, sdf 를 삭제하고자 함
root@gedgem01:~# lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0  55.6M  1 loop /snap/core18/2654
sda                         8:0    0 953.9G  0 disk
├─sda1                      8:1    0   512M  0 part /boot/efi
├─sda2                      8:2    0     1G  0 part /boot
└─sda3                      8:3    0 952.4G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0 952.4G  0 lvm  /
sdb                         8:16   0 931.5G  0 disk
sdc                         8:32   0   3.7T  0 disk
sdd                         8:48   0   3.7T  0 disk
└─sdd1                      8:49   0   3.7T  0 part /mnt/sdd
sdf                         8:80   0   1.8T  0 disk
├─sdf1                      8:81   0   2.4G  0 part
├─sdf2                      8:82   0     2G  0 part
├─sdf3                      8:83   0     1K  0 part
└─sdf5                      8:85   0   1.8T  0 part
sdg                         8:96   0   1.8T  0 disk
  • 파티션이 존재하면 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# sdx는 삭제하려는 파티션이 존재하는 디스크 
fdisk /dev/sdx

# ex) 
# 파티션 확인 command (p)
# 파티션 삭제 command (d)
# 실행 내용 저장 command (w)
root@gedgem01:~# fdisk /dev/sdf

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdf: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: 001-1CM164
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: 0x00014c49

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sdf1          2048    4982527    4980480  2.4G fd Linux raid autodetect
/dev/sdf2       4982528    9176831    4194304    2G fd Linux raid autodetect
/dev/sdf3       9437184 3907015007 3897577824  1.8T  f W95 Ext'd (LBA)
/dev/sdf5       9453280 3906822239 3897368960  1.8T fd Linux raid autodetect

Command (m for help): d
Partition number (1-3,5, default 5): 5

Partition 5 has been deleted.

Command (m for help): d
Partition number (1-3, default 3): 3

Partition 3 has been deleted.

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): p
Disk /dev/sdf: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: 001-1CM164
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: 0x00014c49

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

디스크 삭제

  • 사용할 옵션
    • -v : 진행사항을 보여줌
    • -n1 : 반복하여 쓰기/지우기를 수행할 횟 수(default 3)
    • -z : 마지막 쓰기 시, Zero 값으로 덮어쓰기
1
sudo shred -v -z -n3 /dev/sdx

[참조]How can I seurely erase a hard drive?
[참조]shred - Linux man page


badblocks

  • 디스크의 배드블럭(badblock, 물리적으로 손상된 부분)을 찾을 때 사용하는 명령어
    • 옵션 중, 랜덤 값을 디스크에 쓰면서, 배드블럭인지 아닌지 확인하는 기능이 있음
    • 이를 활용하여, 랜덤쓰기를 수행

      설치

  • Ubuntu 20.04
1
apt-get install e2fsprogs

디스크 삭제

  • 사용할 옵션
    • -w : 랜덤 값(0xaa, 0x55, 0xff, 0x00) 을 장치의 모든 블럭에 쓰고(Write) 읽은 후, 서로 비교하여 배드블럭인지 유무를 판단
    • -ㅊ : 한 번에 테스트할 블럭의 크기 (default 64)
1
2
# block size는 512, 4096, 32768 등 
sudo badblocks -w -c 600 /dev/sdx

dd

  • 일반적으로 리눅스 환경에서 로우 포맷용으로 활용
    • randomw 쓰기로 장치에 입력
1
dd if=/dev/urandom of=/dev/sdx bs=1M