Quora의 Cheir Hu, Investment Manager at Venture Capital (2017-present)
의 답변을 번역한 문서입니다. 직역과 군더더기를 뺴고 최대한 자연스럽게 번역하였습니다.
랩톱이던 데스크톱이던 간에, "전원 버튼을 눌러 컴퓨터를 강제 종료하는 행위" 는 "도란스 내리기" 와 결코 동일하지 않습니다.
전원 버튼을 길게 눌러 컴퓨터의 전원을 끄는 행위를 하드웨어적인 관점에서 본다면, PWRBTN# 핀을 살짝 뽑았다 다시 꽂는 것과 같습니다. 전원 키를 누르면 PWRBTN# 핀의 상태가 High가 되고, 보드에 장착된 타이머가 이 핀 상태가 얼마나 지속되는지를 관찰합니다. 만약 5초 이상 전원키를 누르거나 하여 PWRBTN# 핀의 상태가 Low가 되지 않으면, 컴퓨터 종료 절차가 시작됩니다. 이 '컴퓨터 종료 절차' 는 '전원 뽑기' 와는 다르며, 컴퓨터가 일반적으로 수행하는 하드웨어 전원 끄기 프로세스를 충실히 따릅니다.
CPU와 메인보드에는 전기가 흐르는 선이 참 많습니다. 전원을 끄는 것은 코드를 뽑는 것처럼 단순한 일이 아닙니다. 칩셋 설명서에 따르면, 칩에 연결된 각각의 전원선에서 전원이 차단되는 순서와 타이밍이 정해져 있어 이를 따라야만 합니다. 이 시간 동안, ACPI 모드는 전원선이 뽑힘을 의미하는 G3가 아닌 G2로 진입하며 메인보드의 일부분에는 전기가 여전히 흐릅니다.
(역주: ACPI는 고급 구성 및 전원 인터페이스를 의미하며, 컴퓨터의 하드웨어와 전원 상태를 정의하는 일종의 표준으로 G0, G1, G2, G3는 각각 작동, 절전 모드, 소프트 전원 종료, 기계적 전원 종료를 의미한다)
전원 버튼을 꾹 눌러 전원을 끄면, 컴퓨터를 끌 때마다 항상 거치는 정상적인 전원 끄기 프로세스를 거칩니다. 하드웨어의 관점에서 본다면, 윈도우에서 shutdown 명령어로 전원을 내리는 것과 이론적으로 동일하며 전원을 뽑아서 강제종료하는 것과 다릅니다. 앞서 하드웨어 수준에서 OS 상에서 수행하는 일반적인 전원 끄기 절차와 전원 버튼 강제종료 절차는 동일하다고 설명했습니다. 그렇다면, 차이점은 무엇일까요?
바로, OS 단계에서의 전원 끄기 절차를 건너뛴다는 점이 되겠습니다. 전원 단추를 짧게 누르거나 명령어를 치거나, 시작버튼을 눌러 전원 끄기를 누르는 등의 행동을 하여 OS 상에서 컴퓨터를 끄라는 명령을 받게 되면, 이 순간부터 OS와 펌웨어는 ACPI 규격에 따라 같이 협업하여 정해진 절차에 따라 컴퓨터를 안전하게 종료합니다. 이는 저장하지 않은 파일 저장하기 등의 작업을 포함하며, 이 절차를 넘길 경우 파일이 손상됩니다. 어떤 파일이 손상되느냐에 따라 문서가 안 열리거나 운영체제를 구성하는 중요 파일이 손상될 수도 있죠.
결국 전원 버튼을 눌러 컴퓨터를 끄는 것은 기계를 손상시키지 않으며, 그저 HDD에 내장된 전원 강제종료 보호기능을 사용하지 못한다는 차이점밖에 없습니다. 진짜 중요한 문제는 데이터의 보존유무가 되죠.
그럼, 전원선을 잡아뽑거나 집에서 컴퓨터를 사용하던 중 정전이 일어난다면, 하드웨어에 손상을 주게 되나요? HDD를 사용 중이라면, 걱정하실 필요가 없습니다. 진짜 문제는 SSD와 메인보드입니다. SSD의 경우 FTL의 존재 때문에, FTL의 논리적 및 물리적 블록에 대한 변환표가 NAND 플래시에 저장이 되어야 합니다. 만약 그렇지 않으면 SSD에 혼란을 일으키게 되죠. 고성능 SSD에는 속도를 빠르게 하기 위한 용도로 다수의 DRAM이 있어 여기에 저장된 내용까지 NAND 플래시에 저장되어야 합니다.
(역주: FTL은 플래시 메모리를 마치 HDD처럼 OS의 파일시스템에서 접근할 수 있도록 전환해 주는 계층으로, 따라서 HDD의 섹터 같은것임. 대한 자세한 설명 http://blog.skby.net/ftl-flash-translation-layer/)
전원이 정상적으로 꺼지면, SATA의 즉시 절전 명령과 SCSI의 멈춤 명령을 받아 SSD 컨트롤러가 해당 정보를 NAND에 천천히 정상적으로 저장할 수 있게 해 줍니다. 그러나, 갑자기 전원이 내려가면 상황이 복잡하게 흘러가게 됩니다.
이 SSD에는 수많은 작은 축전기가 있습니다. 주전원 입력 핀 VCC에서 전원이 갑자기 차단되면, 이 축전기의 게이트가 열리고 약 1ms의 시간 동안 마스터 컨트롤러에 전원을 공급해 줍니다. 마스터에 미처 저장되지 못한 정보는 버려지게 되고, 디스크에 문제가 발생하지 않도록 이 짧은 시간 동안 FTL 표를 저장하기 시작합니다.
고가의 산업용 SSD의 경우, 포함되는 DRAM 용량이 거의 1GB 정도로 많습니다. 한편 이런 SSD의 데이터 무결성 요구조건은 소비자용 SSD에 비해 매우 높아, 절대 데이터가 사라져서는 안됩니다. 따라서, 여기서는 FTL 표만 저장되는 것이 아니라 DRAM에 저장된 모든 자료들까지 NAND 플래시에 기록되어야 합니다.
산업용 SSD를 분해하면 다음과 같은 노란색 벽돌 형태의 축전기를 볼 수 있는데, 예시로 든 micron의 SSD는 3개의 노란 축전기가 포함되어 있습니다. 한편 몇몇 Intel SSD는 이 축전기가 8개나 있는데, 그 이유는 DRAM의 용량이 크기 때문입니다.
저성능의 보급형 SSD는 축전기가 없거나, 저품질의 축전기가 포함되어 오랜 기간 사용시 축전용량이 서서히 감소합니다. 이 경우 전원이 내려가면 FTL 값이 NAND로 저장되지 않으며, 다음에 전원을 켤 때 FTL 표를 다시 작성하게 됩니다. 이 이유로 FTL 표 재작성 기간동안 SSD의 속도는 매우 느리며, 표가 전부 작성되었을 때 속도가 다시 빨라집니다. SSD 펌웨어 질이 나쁠 경우, SSD가 손상되어 사용불능 상태가 되어버리는 경우도 발생합니다.
한편, 메인보드의 손상은 전원 차단 직전과 직후에 발생하는 서지 그리고 전류의 급격한 변화로 발생한다고 요약할 수 있습니다. 저품질 파워 서플라이와 나쁜 메인보드 조합이라면, 명백히 문제를 유발할 가능성이 있습니다. 이게 바로 좋은 파워 서플라이를 사용해야 되는 이유가 됩니다.
메인보드에서 전원이 뽑혔을 때 전류가 잔존하는 시간은 최소 16ms입니다. 이 정도면 SSD의 남은 데이터를 저장하기에 충분한 시간이 아니냐구요? 전혀 그렇지 않구요 이 16ms는 그저 UPS와 함께 사용할 AC 사이클일 뿐입니다. 이 16ms는 HDD나 SSD에게 있어서 전혀 도움이 되지 않는데, 이 시간 동안 파워 서플라이와 HDD 사이에 신호 교환이 불가능하기 때문입니다. 쉽게 말해 파워 서플라이가 디스크에게 '나 아무래도 맛탱이가 간것 같으니 어서 파일을 저장해!' 라는 말을 못한다는거죠. 따라서, 디스크 드라이브에게 있어서는 이 시간을 제대로 활용하지 못하고 바로 전원이 차단되는 것이나 마찬가지입니다.
그리고, 컴퓨터의 파워 서플라이에 대해 많은 사람들이 잘못 알고 있다는 사실 역시 언급할 만한 가치가 있습니다. 전원 키가 눌려지지 않고 팬이 돌지 않는 경우 컴퓨터 메인보드 자체가 완전히 꺼진 것이라고 일반적으로 자주 오해하고 있는데, 그렇지 않습니다. 케이스 앞부분의 전원버튼에 연결되는 케이블에는 여전히 전류가 공급되고 있기 때문이죠.
컴퓨터 앞의 전원버튼은 파워 서플라이와 직접 연결되지 않습니다. 메인보드에 전원이 아예 들어오지 않는다면, 전원 버튼을 눌렀다는 그 신호를 파워 서플라이가 받아야 전원 공급이 시작되는데 이 신호를 주는 것이 불가능하겠죠. 이렇게 되면 컴퓨터를 한번 끄고 난 뒤 다시 전원을 켤 수 없지 않을까요?
일단 전원 코드가 연결이 되어 있다면, 전원이 꺼졌는지 켜졌는지의 여부와는 상관없이 메인보드의 EC (만약 있다면), BMC (만약 있다면), CPLD 그리고 그 주변에 존재하는 회로들에 항상 전원이 들어갑니다. 그리고, 바로 이게 ACPI 상의 G3와 G2의 차이점이 됩니다.
추가
1. 전원을 뽑아도 HDD는 영향을 받지 않습니다. 왜냐하면 HDD의 헤드는 전원 차단시 플래터의 관성이 유도 전류를 발생시켜 헤드를 알아서 제 위치로 돌아오게 하도록 설계되었기 때문입니다. 하지만 HDD에 쓰기 작업이 진행중일 때 이를 뽑는 것은 캐시 데이터를 증발시킴으로써 데이터를 손상시킬 수 있습니다.
2. DOS 시절에는, 파킹이라는 작업이 있었습니다. 왜냐하면 이 시기의 HDD는 전원이 꺼졌을 때 헤드가 자동으로 제 위치를 찾아가는 것이 불가능했기 때문입니다. 이후 이 기능이 추가된 HDD가 출시되면서 헤드파킹은 잉여짓이 되어버렸죠. 그리고 가속센서를 이용해 헤드를 파킹하는 기능도 추가되었습니다.
(역주: 프린세스 메이커 일러스트가 나오는 파킹 프로그램이 유명했죠 ㅎ)
PS/2와 시리얼 포트가 표준이던 시절, 컴퓨터가 켜진 상태에서 마우스를 꽂으면 인터페이스 회로를 손상시켜 고장의 원인이 될 수 있었습니다. 물론 다 머나먼 옛날 이야기구요.
제대로 만들어진 요즘의 하드웨어라면 잘 안망가질 것입니다. 최신 하드웨어는 언제 어디서든 꺼질 수 있게 설계되기 때문이죠. 그리고 소프트웨어의 경우 반쯤 돌아가는 혹은 읽기 중인 상태에서 강제 종료가 되면, 어딘가 어중간한 상태가 되어 복구 불능이 될 수도 있습니다.
똑딱이 스위치로....
그래서 스위치 끄면 그냥 코드 뽑는 것과 동일한 행위였었죠.
ATX로 바뀌면서 전원 스위치 연결이 메인보드로 가고 소프트스위치로 변경되면서 위의 내용과 같이 되어 좀더 안전하게 되었습니다.
AT 시절은 정말 모아니면 도 같은 느낌이랄까....