일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2기화이팅
- CI
- SwiftUI VStack
- LGTM
- 쏙쏙 들어오는 함수형 코딩
- auto_assign
- github
- Swift thread
- Firebase
- IOS
- 함수형 프로그래밍
- xcode
- ChatGPT
- Swift
- firestore
- os_log
- swift CI 적용
- swift github action
- MVVM
- print 단점
- Apple Developer Academy @ POSTECH
- combine
- XCTest
- SwiftUI
- 함수형 코딩
- flutter
- 액션과 계산 데이터
- 하드디스크 삭제 원리
- 오픈소스
- unittest
- Today
- Total
개발공방
저장 공간 삭제에 관한 의문 (feat. 하드디스크 삭제 원리) 본문
처음 의문이 든 것은 문득 데이터가 삭제되는 과정이 너무 궁금했다.
무언가를 지운다면 그 잔해가 분명 남을텐데, 어떻게 외부와의 통신이 없이 지워지는 것일까? 란 궁금증에서 출발했다.
내 생각으론 에너지 보존 법칙에 같이 폐쇄되어 있는 공간에서 무언가를 삭제했다면 그 에너지(데이터)는 외부와의 통신이 없다면 내부에 남아 있을 것인데, 어떻게 데이터가 꾸준히 삭제되는 것인지에 대한 의문이 생겼다.
(우리가 집 내부에서 무언가를 버린다고 해서 쓰레기통에 넣지만, 아직까지 집 내부에 있는 쓰레기통에 들어있기 때문에 전체적인 질량은 변하지 않는것과 같은 원리로 생각했다.)
혼자 곰곰히 생각해보다가 한 가설을 세웠다. 처음 생각한 가설은
가설 : 잔해가 남을 것이다. (틀림)
우리가 만약 정확히 100GB의 하드디스크가 있다고 가정했을 때, 정확히 5GB짜리의 파일을 다운받으면 95GB를 사용 가능할 것이다.
이때 이 파일을 다시 삭제한다면 다시 100GB가 아닌 100GB와 비슷하지만 어느정도의 오차가 발생할 것이라 생각했다.
다시 100GB가 아닌 이유는 외부와의 통신을 하지 못했기 때문에, 잔해가 어느정도 남을 것이라 생각했다.
그럼 이 잔해는 언제 처리하지?? → OS가 외부와의 통신이 있을 때 끼워서 밖으로 보낼까?? 이건 너무 말이 안되는 것 같다.
간단한 실험을 하나 해봤다.
사용 가능 공간이 200.29GB있는 상태에서
32.44GB의 프로그램을 지운다면 사용 가능 공간이 어떻게 될까??
당연히 200.29 + 32.44 한 만큼의 값이 추가될 것 같았다.
하지만
32가 아닌 17정도 추가가 되었다. 그래서 뭔가 단단히 잘못되었음을 깨닫고
https://discussionskorea.apple.com/thread/254736051
애플 커뮤니티에 질문을 남겼지만
누구도 답변을 달아주지 않아 ChatGPT에게 물어봤다.
즉시 추가적인 공간이 되는건 아니라고 한다.
사실 이 생각 자체가 위에서 말했던 에너지 보존 법칙에 위배된다. (컴퓨터 안에선 에너지 보존 법칙이 없겠지만)
삭제를 하더라도 내부에 있으니까 30GB 그대로 유지해야 할 것이다.
이 궁금증을 해결하기 위해 이것저것 찾아보았다.
(위의 의문은 맥북에서 했던 실험이었다. 맥북은 SSD를 사용한다.)
이와 관련해서 찾아보다가 맥북과는 다른 하드디스크의 삭제 방식을 접하게 되었고, 재밌는 정보들이 있어서 공유하고자 한다.
Q. 하드디스크의 데이터는 어떻게 지워질까??
데이터는 지워지지 않는다
이게 무슨 소리냐면, 우리가 실제 데이터를 지운다고 삭제 버튼을 누르고 휴지통에서 비운다고 해도 실제 하드디스크에서 데이터는 삭제되지 않는다.
왜 Why??
하드디스크는 너무 느린 장치이기 때문에 직접 삭제하는 건 시간이 오래 걸려서 해당 저장 위치에 ‘삭제되었음’ 이라고 체크만 해두는 것이다.
사용자에게 눈속임을 하는 것이다.
시스템마다 다르겠지만, 위의 사진처럼 bit로 0과 1을 통해 체크를 한다고 한다.
그리고 나서 실제 저장공간이 필요할 때 체크해놨던 곳에 덮어씌우는 방식으로 기존 데이터가 사라진다.
때문에 실제 데이터는 덮어씌워지기 전까진 사라지지 않고 눈속임이 이뤄지는 것이다.
그럼 뭐 어떻게 해야합니까??
실제로 데이터의 내부까지 비울 순 없다. (그 이유는 아래에 말하겠다.)
그래서 기존의 데이터가 만약 110011이라는 데이터로 되어 있다면, 이 값을 000000으로 바꾼다던지 전혀 엉뚱한 110110 값으로 변경시키는 방법이 있다.
이 작업을 해주는게 삭제 프로그램들이다. 와이퍼 프로그램이라고 부르기도 한다.
나라마다 삭제에 대한 표준이 있다고 한다.
예를 들어 난수를 발생시켜서 전체적으로 설정한다음, 전체를 0으로 바꿔서 삭제하는 방법등 다양한 방법이 있다고 한다.
여기서도 한가지 의문이 들었는데 그냥 전부 0으로 만들면 한번에 깔끔하지 않나?? 란 생각이 있었는데, 그건 물리적인 이유와 관련이 있다고 한다.
이 때문에 혹시나 하드디스크를 판매하게 된다면, 데이터를 완전히 지워 줄 필요가 있다.
이때 각종 삭제 프로그램을 이용하거나, 빠른 포맷이 아닌 느린 포맷을 이용해 포맷해줘야 한다.
빠른 포맷을 사용하면 안되는 이유는, 위의 bit로 삭제됐다고 표시하는 부분을 전부 비워짐으로만 처리를 하는 작업이기 때문이다. 실제 데이터는 그대로 있다.
하드디스크는 웬만하면 판매하지 말고, 폐기를 하자.
폐기를 하는 방법도 크게 두가지가 있다.
- 디가우저를 이용한 폐기
하드디스크의 자성을 파괴해서 제 기능을 못하게 하는 기계이다. 하지만 너무 비싸다. - 물리적인 파괴
다 필요없고 망치로 하드디스크를 박살내주면 된다. 내부의 원판같은걸 확실히 박살내주자.
+) 실제 하드디스크를 샀을 땐 데이터가 비어져 있는 상태인데, 그 데이터를 채우기 시작하면 다시 빈 상태로 만들기는 어렵다. 그 이유는 하드디스크의 물리적인 특징 때문이다. 데이터가 저장된 블록이나 섹터가 물리적으로 변하기 때문에, 다시 새 상태를 만드는 것은 매우 어렵다고 한다. 대부분 깨끗하게 지운다 해도 새 상태가 아니라 초기화된 상태이다.
따라서 내가 처음 생각했던 잔해가 남는것은 접근이 잘못된 생각이었다. 실제 삭제는 이루어지지 않았고, 눈속임 당한 후 실제 다른 데이터로 덮어씌워질 때야 비로소 삭제되는 것이었다.
하드디스크의 데이터를 실제로 삭제하는게 어렵다고만 다들 얘기하지 어떻게 하면 지울 수 있는지는 잘 나오지 않아서 하드디스크로 유명한 Western Digital에 직접 여쭤봤다.
위와 같이 고객센터에 문의를 남겼더니, 친절하게 답변해 주셨다.
실제 내부 데이터를 지우기 위해서는 로우 포맷을 진행해야 한다고 한다. 그 과정이 설명으로만 들어도 좀 어려워 보이긴 한다. 디스크가 몇번으로 인식 되어 있는지도 알아야하고, 꽤나 전문적인 영역인 것 같다.
그래서 와이퍼 프로그램으로 삭제를 하나보다.
느낀점
문득 삭제라는 과정이 너무 신기하고 말이 안되는 것 같아서, 혼자 곰곰히 생각하다 도무지 정답을 모르겠어서 직접 찾아봤다.
이 과정에서 하드디스크에 대해 자세히 알게 되었고, 데이터 복구가 가능한 이유도 같이 알게되어서 너무 재밌는 시간이었다. 내가 하던 공부들이 일상에서 적용되는 순간을 접할 때 가장 짜릿한 것 같다.
참고
하드디스크의 파일 삭제 원리를 알려주세요. - 컴퓨터 / 하드웨어 - 기글하드웨어
제가 배우기로 하드디스크의 파일 기록은 자기배열입니다. 자기의 N극 및 S극 배열을 이진법의 0과 1로 삼아서 101011101의 이진수로 기록하는 것이죠. 그리고 헤더를 통해 이 기록을 쓰거나
gigglehd.com
https://www.youtube.com/watch?v=0wfOO2DEGZ0
https://support-ko.wd.com/app/askweb
Submit a Case | WD 지원
support-ko.wd.com
'개발 토크' 카테고리의 다른 글
[쏙쏙 들어오는 함수형 코딩] 액션과 계산, 데이터 - 2 (0) | 2023.07.09 |
---|---|
[쏙쏙 들어오는 함수형 코딩] 함수형 프로그래밍이란? - 1 (0) | 2023.06.28 |
[쏙쏙 들어오는 함수형 코딩] 책을 읽게 된 이유 - 0 (0) | 2023.06.21 |
팀의 성장을 멈추게 만드는 마법의 단어 'LGTM' (3) | 2023.05.29 |
Apple Developer Academy @ POSTECH 회고 겸 꿀팁들 (8) | 2023.02.28 |