제로화 SSD 드라이브


18

고객을위한 VPS를 호스팅합니다. 각 고객 VPS에는 표준 스핀들 하드 디스크에 LVM LV가 제공됩니다. 고객이 떠나는 경우이 LV를 제로화하여 데이터가 다른 고객에게 유출되지 않도록합니다.

우리는 호스팅 사업을 위해 SSD를 사용할 생각입니다. SSD에 "마모 레벨링 (wear levelling)"기술이 있다는 점에서 제로화는 무의미합니까? 고객 데이터가 다른 고객에게 유출 될 수 없기 때문에이 SSD 아이디어를 실현할 수 없습니까?

답변:


23

막으려 고하는 것은 다음 고객이 이전 고객의 데이터를보기 위해 디스크를 읽는 것으로 가정하면 0을 모두 쓰면 실제로 작동합니다. 섹터 'n'에 0을 쓰면 섹터 'n'을 읽을 때 모든 0을 반환합니다. 사실, 실제 실제 데이터는 여전히 플래시 칩에있을 수 있지만 정상적인 읽기 작업을 수행 할 수 없으므로 상황에 문제가되지 않습니다.

누군가가 실제로 디스크를 잡고 디스크를 분리 할 수 ​​있다면 (플래시 칩을 직접 읽을 수 있기 때문에) 문제가되지만 SATA 버스 만 액세스 할 수있는 경우 전체에 0을 쓰는 것이 문제입니다 디스크가 잘 작동합니다.


1
내가 찾던 정답은 내가 생각했을 때 같은 결론에 이르렀다. :)
jtnire

2
SSD에 0의 섹터를 쓰면 실제 플래시 칩에 영향을 미치지 않을 것이라고 생각합니다 (그러나 확실하지 않으며 SSD에 사용되는 컨트롤러 칩셋에 달려 있음). 컨트롤러는 그것이 모두 0임을 인식하고 단순히 해당 섹터를 "제로 아웃"으로 표시합니다 (또는 모든 0을 포함하는 섹터를 가리킴). 0의 섹터를 작성하는 것은 합리적으로 일반적인 일이며, 플래시를 사용하는 것이 저렴하고 쉬운 방법 일 것이므로 Intel과 Sandforce가 적어도 그렇게하지 않으면 충격을받을 것입니다.
kindall

20

SSD를 절대로 채우지 마십시오. 최소한 이것은 SSD의 쓰기 수명 중 일부를 거의 또는 전혀 사용하지 않고 마모시킵니다. 최악의 시나리오에서는 SSD 컨트롤러를 일시적으로 성능 저하 상태 로 전환 할 수 있습니다 .

에서 이 소스 :

여러 번 반복하여 전체 디스크를 반복해서 덮어 쓰면 데이터가 성공적으로 파괴 될 수 있지만 펌웨어 변환 계층 (FTL)으로 인해 기존 하드 디스크 드라이브보다 훨씬 복잡하고 시간이 많이 걸립니다. 그들의 결과에 따르면, 그것은 매력없는 옵션입니다

최선의 옵션, 전체 디스크 암호화를 통한 안전한 지우기 :

일부 최신 SSD는 전체 디스크 암호화를 사용할 수 있습니다. 예를 들면 인텔의 새로운 320 드라이브와 일부 Sandforce 2200 시리즈 드라이브가 있습니다. 이러한 드라이브는 드라이브 마모없이 간단하고 빠른 방법으로 안전하게 지울 수 있습니다. 드라이브는 기록 된 모든 데이터에 대해 AES 암호화를 사용하므로 보안 지우기는 단순히 기존 AES 키를 삭제하고 새 키로 바꾸는 것을 의미합니다. 이렇게하면 드라이브의 모든 '이전'데이터를 복구 할 수 없게됩니다.

그러나 인텔의 보안 지우기는 자동화하기 쉽지 않습니다. AFAIK는 Intel의 Windows GUI 앱에서 수행해야하며 비어있는 비 부팅 드라이브에서만 실행할 수 있습니다. Intel 문서에서 21 페이지 이상을 참조 하십시오.

다른 옵션 인 ATA 보안 지우기 :

다른 옵션은 Linux에서 fx HDPARM을 통해 ATA 보안 지우기 명령 을 실행하는 것입니다. 이것은 스크립팅을 통해 훨씬 쉽게 자동화 할 수 있습니다.

드라이브가 '좋은'방식으로 ATA 보안 지우기를 구현하는 경우 최소한 "플래시 변환 계층"(FTL)을 삭제해야합니다. FTL 테이블은 논리 섹터 (운영 체제가 '본다')와 드라이브 자체에있는 NVRAM의 물리적 페이지 간의 매핑을 유지합니다. 이 매핑 테이블이 파괴되면 드라이브에서 데이터를 복구하는 것이 매우 어렵지만 불가능하지는 않습니다.

그러나 ATA Secure Erase가 모든 제조업체 드라이브에서 일관되고 잘 구현되었다는 연구 결과를 알지 못하므로 항상 작동한다고 말하고 싶습니다. 제조업체 기술 문서를 읽어야합니다.

단일 파티션의 경우 :

다른 답변에 대한 의견을 읽으면 OP는 단일 파티션 만 안전하게 지우고 싶어합니다. 이를 수행하는 좋은 방법 중 하나는 LUKS 또는 TrueCrypt를 사용하여 암호화 된 볼륨 (fx) 만 작성하는 것 입니다 . 이렇게하면 온 드라이브 전체 디스크 암호화 구성표와 유사한 암호화 키를 제거하여 볼륨을 안전하게 지울 수 있습니다.

결론:

정말로 알고 싶다면 Sophos의 블로그에서 링크 된 문서읽고 보안 지우기에 관한 드라이브 제조업체 기술 노트를 읽으십시오. 그러나 '좋은'보안 지우기를 원한다면 전체 디스크 암호화 및 암호화 키의 안전한 삭제 및 교체가 가능한 SSD가 최선의 선택 일 것입니다. 또는 운영 체제 수준 암호화를 사용하고 데이터를 안전하게 지울 때 키를 버립니다.


1
주의는 좋지만 오래 전에 수정 된 특정 SSD의 심한 인공 작업 부하에서만 발생하는 컨트롤러 버그에 대해 2 년 전 통지를 인용하는 데 많은 무게가 주어질지는 확실하지 않습니다.
Daniel Lawson

1
@Daniel Lawson : 페어 포인트. :-) 해당 섹션을 다시 작성하여 일시적인 성능 저하로 변경했으며, 무거운 쓰기 작업 후 크게 느려지는 Crucial의 M4 / C400 드라이브 (현재 배송 드라이브)에 대한 링크를 변경했습니다.
Jesper M

6

웨어 레벨링은 데이터 제로 아웃과 관련이 없습니다.

다른 사람 / 응용 프로그램이 해당 데이터를 읽지 못하게하려면 데이터를 제로화합니다. SSD는 쓰기가 SSD에 대한 '손상'으로 인해 더 오래 사용할 수 있도록 데이터를 '마모 수준'으로 유지합니다. 또한 디스크는 일반적으로 사용량이 많지 않을 때이 작업을 수행합니다. 서버 상황에서 조용한 시간을 항상 사용할 수있는 것은 아니므로이 작업은 종종 수행되지 않습니다.

IO 운영에 대해 고객에게 비용을 청구합니까? 그렇지 않다면 기본적으로 항상 지속적으로 작성하여 몇 시간 / 일 동안 SSD의 일부를 죽이는가? SSD는 대부분의 사람들이 생각하는 것보다 , 특히 쓰기가 많은 환경에서 죽이기가 훨씬 쉽습니다 .


나는 '제로를 무의미하게 만드는 것'비트 크리스를
다루고 있었는데

1
if (time < 9am) chriss_try_again()
Chris S

하하-친구 걱정마 :)
Chopper3

데이터에 대해서는 사실이지만 살해에 대해서는 덜 사실입니다. "엔터프라이즈 플래시 드라이브"는 소비자 용 SSD보다 수명이 길고 크기는 더 크지 만 엔터프라이즈 HDD와 마찬가지로 성능에 대한 프리미엄을 지불합니다. 씨게이트에 따르면, 그들의 "펄서"ESD는 5 년의 수명을 가지고 있으며 이는 약 6 페타 바이트의 쓰기에 해당합니다. anandtech.com/show/2739/2 -에 펄서 드라이브 virtualgeek.typepad.com/virtual_geek/2009/02/... - EFD는 온
다니엘 B.

3
다니엘은 99 % 이상의 읽기 환경에 넣은 많은 엔터프라이즈 SSD를 구매하지만 테스트했을 때 여전히 놀라 울 정도로 쉽게 '킬 (kill)'하는 것을 발견했습니다. 예를 들어 HP는 2 개의 HP를 미러링 된 쌍으로 합리적으로 바쁜 Oracle 10 박스의 로그 디스크 및 4 주 내에 문제가 발생하기 시작했습니다. 이제 이것은 ~ 10 개월 전이되었으므로 HP의 해당 Pulsar 드라이브 버전이 다시 설치되지 않았습니다. 6PB는 5 년 동안 ~ 38MB / s 또는 1 년 동안 ~ 180MB / s에 달하므로 1 년 이내에 침입하지 않고 Pulsar를 사용하여 단일 HD 비디오 채널을 캡처 할 수 없었습니다.
Chopper3

3

같은 그것의 가치가 독서 기사 그래서 . 누군가가 디스크에 실제로 액세스 할 수 있으면 정보를 검색하는 것이 더 쉽습니다. SSD의 데이터 암호화를 고려한 다음 더 쉬운 문제인 개인 키에 대해 안전하게 잊어 버리면됩니다. 랜덤 액세스 성능이 훨씬 뛰어 나기 때문에 SSD가 SSD에서 큰 승리를 거두고 있음을 알 수 있습니다.


2

dd데이터를 제로 아웃하는 데 사용 하거나 임의의 데이터를 디스크에 쓰는 다른 방법 과 같은 기존의 SSD 지우기 방법을 사용하고 싶지는 않습니다 . 이러한 방법은 플래터 기반 디스크에 더 적합합니다. SSD를 지우는 데 효과적이지만 SSD의 제한된 쓰기 작업을 불필요하게 많이 사용하므로 SSD의 예상 수명이 단축됩니다. 그것은 빨리 비싸 질 것입니다. 또한 시간이 지남에 따라 SSD의 성능을 저하시킬 수 있습니다.

SSD는 보안 지우기 방법이 다릅니다. IDE 에뮬레이션을 수행 할 수있는 특정 유형의 SATA 컨트롤러가 필요하고 절차가 복잡 할 수 있기 때문에 수행하기가 매우 번거로운 것 같습니다. 일부 제조업체는 자체 SSD를 안전하게 지울 수있는 도구를 제공하지만 Linux의 경우 hdparm ( https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase)으로도 가능 합니다. 그러나 계속 진행하기 전에 해당 지침에서 드라이브가 "고정되지"않았는지 확인해야합니다. 시스템을 부팅하는 동안 드라이브를 "고정 해제"할 수있는 마더 보드 및 SATA 컨트롤러를 찾아야하기 때문에 이는 가장 어려운 단계 중 하나입니다. 일반적으로 SATA 케이블에서 플러그를 뽑았다가 다시 연결해야합니다.

어쨌든, 내 권장 사항은 연구를 수행하고 편리한 시스템에서 사용할 수있는 보안 지우기 유틸리티가 포함 된 SSD를 선택하는 것입니다.


기본적으로 512 바이트가 아닌 적당히 큰 블록 크기를 사용하는 한 dd를 사용하여 디스크를 0으로 만들면 쓰기 / 삭제주기가 많이 사용되지 않습니다. 대략 1을 사용합니다. 파일 시스템 정렬이 잘못되면 경우에 따라 동일한 플래시 블록에 두 번 쓸 수 있다고 생각하기 때문에 대략적으로 말합니다. 사용 dd bs=1M하면 마모가 최소화됩니다.
Daniel Lawson

2

한 가지 대답이 이미 받아 들여졌지만 blkdiscard /dev/sdX여기서 언급 할 가치가 있다고 생각합니다 .

Arch Wiki : SSD 에 따르면 이 blkdiscard명령은 모든 블록버리고 모든 데이터가 손실됩니다. "SSD를 판매하려면"전에 사용하는 것이 좋습니다.

TRIM의 작동 방식에 익숙하지 않으므로 데이터가 지워질 것이라는 보장이 없습니다. 그러나 나는 아무것도하지 않는 것보다 낫다고 생각합니다.

BTW, 나는이 명령이 단일 파티션이 아닌 전체 장치에서만 작동하는 것을 두려워합니다.

도움이 되었기를 바랍니다. :)


blkdiscardTRIM자체는 요청 일 뿐이며 모든 SSD 컨트롤러가이를 존중하지는 않기 때문에 모든 경우에 안전하지 않은 것 같습니다 . 여기여기 에서 자세한 내용을 읽을 수 있습니다 . 그러나 거기에서 설명했듯이 Linux 커널은 TRIM을 존중하는 것으로 알려진 장치의 화이트리스트를 유지 관리합니다.
nh2

그렇다면 hdparm -I /dev/theSSD포함 Deterministic read ZEROs after TRIM, blkdiscard빨리해야 보장 제로 나중에 읽을. 그렇지 않으면 보안 지우기 가 더 나은 솔루션처럼 보입니다. 그러나 고객 보안에 대한 질문이 있다면 Secure Erase 는 이러한 사용 사례에 맞게 설계된 것이므로 더 나은 솔루션 일 수 있습니다.
nh2

1

가상 머신 이미지에서 데이터를 지우는 가장 좋은 방법은 TRIM 기능을 사용하는 것입니다. 많은 최신 운영 체제가이를 지원합니다. 거의 모든 현재 SSD도 지원합니다.

또한이 옵션을 더욱 향상시키는 것은 모든 SAN이 SCSI 이름 UNMAP 아래에서이 기능을 지원 한다는 것 입니다. 스파 스 프로비저닝을 구현하는 SAN에는 훌륭한 명령이며, 특히 블록 중복 제거와 결합 될 때 가상 머신에 뛰어난 기능입니다.

TRIM 명령이 SSD에 제공되면 펌웨어는 해당 블록을 재사용 할 수 있도록 즉시 표시합니다. 일부 SSD는 TRIM'd 블록에 대해 항상 0을 반환합니다 . 다른 드라이브는 구현 정의 (예 : 임의) 데이터를 반환합니다.

TRIM을 지원하는 운영 체제에서 파일을 간단히 삭제하면 TRIM 블록이 표시됩니다. 실제 TRIM 작업은 즉시 수행되거나 나중에 수행하기 위해 일괄 처리 될 수 있습니다. 때로는 파일을 강제로 트리밍하거나 파티션에서 사용하지 않는 모든 블록을 검사하는 도구가 있습니다.

Linux의 TRIM 성능은 여전히 ​​반점이므로 사용하는 경우 옵션을 조사해야합니다. Windows에서는 꽤 견고합니다.


미안하지만 전혀 말이되지 않습니다. TRIM은 내가 아는 한 씬 프로비저닝과 아무런 관련이 없으며 SSD가 파일 시스템에 의해 삭제되지 않았다는 것을웨어 레벨링 섹터를 신경 쓰지 말라고 지시합니다. 제로 아웃 블록.
Chopper3

@ Chopper3 : ATA TRIM과 SCSI UNMAP이 같은 명령임을 알 수 없습니까? UNMAP은 씬 프로비저닝에 확실히 사용됩니다. TRIM은 최소한 일부 SSD 드라이브에서 블록을 제로화합니다. TRIM 후 데이터가 사라졌습니다 . 데이터 를 검색하는 데 지원되는 방법이 없으며 드라이브는 0을 리턴 할 수도 있고 일부는 리턴 할 수도 있습니다.
Zan Lynx

"드라이브도 0을 반환 할 수 있습니다"와 "데이터를 복구 할 수 없습니다"는 매우 다른 두 가지입니다. 어쨌든 사용자는 실제로 SSD를 지우고 싶지 않고 다음 고객이 이전 고객의 데이터를 가져올 수 있기를 원하지 않습니다.
Chris S

0

"SSD 보안 지우기 유틸리티"가 필요합니다. dd마모 레벨링 과 같은 것을 사용 하면 여전히 오래된 고객 데이터가 포함 된 예비 섹터가 생길 수 있습니다. 보안 지우기 유틸리티는 장치의 모든 섹터 (OS에 디스크로 표시되는 섹터뿐만 아니라)를 지 웁니다.

이러한 유틸리티 중 일부는 특정 제조업체에 따라 다르므로 드라이브 제조업체에 권장 사항을 문의하십시오.


전체 디스크를 지우지 않기 때문에 이것이 내가 찾고있는 것이 아닙니다. 물리적 SDD 디스크에서 클라이언트 데이터를 계속 사용할 수있는 것에 대해 걱정하지 않습니다. 다른 고객이 액세스 할 수있는 것을 원하지 않기 때문에 LV로 데이터가 유출되는 것을 원하지 않습니다.
jtnire

0

0을 쓰면 다른 고객이 디스크를 읽지 못하게하는 데 도움이 될 것이라고 생각하지 않습니다.

SSD에서 무언가를 작성할 때 프로세스는 일반 하드 디스크와 매우 다릅니다.

다음 상황을 상상해보십시오. SSD 드라이브의 "빈"메모리 셀은 모두 1로 채워집니다. 당신이 그것에 무언가를 쓸 때, 그것은 0을 기록하고 1을 변경하지 않은 채로 둡니다.

다른 항목을 저장하려는 경우 이전 내용과 새로운 내용을 비교합니다. 만약 0을 써서 이전 것이 새로운 것이 될 수 있다면 좋습니다. 그렇게 할 수 없으면 다른 메모리 셀이 사용됩니다.

"clear": 11111111 1 차 저장 : 11011011

새로운 데이터 : 00110011 11011011을 00110011로 만들 수있는 방법이 없습니다 (1을 1에서 1로 돌릴 필요가 있으며 SSD에서는 불가능하다는 점에 유의하십시오). 따라서 다른 메모리 셀이 사용됩니다.

드라이브를 트리밍하면 사용되지 않은 모든 메모리 셀이 1로 재설정됩니다. 따라서 다시 사용할 수 있습니다. 그리고 저장된 데이터가 유지됩니다.

원하는 작업을 수행하려면 먼저 파일을 삭제 (삭제)하십시오. 해당 파일의 메모리 셀은 사용 가능한 것으로 표시됩니다. 그런 다음 TRIM을 수행하십시오. 모든 메모리 셀은 데이터 표시없이 1이됩니다.


0

쉬운 대답 : Linux를 사용하여 파티션을 EXT4로 다시 포맷하면 파티션의 모든 섹터에서 트리밍을 수행하는 것처럼 SSD에 모든 블록을 지울 준비가되었음을 알 수 있습니다. 부작용은 적은 수의 쓰기 (EXT4 구조)입니다.

무작위로 잊어 버리면 SSD 수명이 많이 줄어 듭니다. 일부 SSD는 지능적이며 쓰지 않는 0으로 채워진 전체 섹터를 보면 지우는 것으로 표시합니다.

펌웨어의 내부를 알 수 없으므로 가장 좋은 방법은 현대 리눅스 커널에서 파티션을 ext4로 포맷하는 것입니다 (전체 포맷을 바꾸지 않고 빠른 것만, 구조 만). 전체 파티션을 다듬습니다. 포맷하기 전에.

보안 지우기, 즉 전체 SSD에 대해 한 번에 이야기하는 모든 사람들을 혼란에 빠뜨리십시오. 단 하나의 SSD 파티션과 SSD에 저장된 나머지 정보 (SSD 레벨이 아닌 파티션 레벨)를 잃지 않고 묻습니다.

결론 : Ext4로 다시 포맷 한 다음 다른 포맷이 필요한 경우 다른 포맷으로 다시 포맷하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.