다시 포맷 된 드라이브를 0으로 채우려면 쓰기 성능이 향상됩니까?


14

> 99 %로 채워진 2TB 드라이브가 있습니다. 로 파티션을 삭제 fidsk하고로 포맷했습니다 mkfs.ext4.

내가 아는 한, 드라이브에 있던 실제 데이터는 여전히 존재합니다. 여전히 파티션 테이블이 재 지정되었습니다.

문제는 디스크를 정리할 경우 추가 쓰기 작업에 대한 쓰기 성능을 향상시키는 것 입니까? 청소하면 디스크를 0으로 채울 수 있습니까?

같은 것

dd if=/dev/zero of=/dev/sdx bs=1 count=4503599627370496

8
처음부터 시작하는 모든 것을 덮어 쓰기 때문에 0부터 시작하는 이점은 없습니다.
Moab

7
SSD 인 경우 mkfs.ext4는 실제로 TRIM을 사용하여 전체 파티션의 내용을 버리므로 수동으로 0을 쓰면 성능 이 약간 저하 되기 때문에 대답은 "지옥" 입니다.
user1686

2
@grawity 모든 0의 쓰기를 TRIM으로 자동 변환하는 SSD가 있는지 궁금합니다.
kasperd

@kasperd : 좋은 후속 질문!
liori

또 다른 가능한 후속 질문 : 디스크가 낮은 수준의 디스크 복제를 수행 한 SAN에 마운트 된 VM 인 경우 시스템이 VM 인식 API를 사용하지 않는 한 VM 수준에서 삭제 된 데이터의 경우 도움이 될 수 있습니다 SAN에 이러한 삭제 된 모든 블록이 고착되어야하는 반면, 모든 0으로 설정하면 중복 된 블록이 모두 제로를 가리키는 것으로 끝납니다)
Foon

답변:


36

아니요, 성능이 향상되지 않습니다.

TL; DR : 회전식 자기 하드 디스크 드라이브는 그렇게 작동하지 않습니다.

먼저, 주어진 데이터를 회전식 자기 저장 장치 드라이브에 쓸 때, 해당 데이터는 실제로 쓰는 비트 패턴과 매우 다르게 보일 수있는 자기 도메인 으로 변환 됩니다 . 플래터에서 다시 읽은 패턴에 일정량의 변동성이있을 때 동기화를 유지하기가 훨씬 쉽고, 예를 들어 "0"또는 "1"값의 긴 문자열은 동기화를 유지 하기가 매우 어려워서 부분적으로 수행됩니다. . (26,393 비트 또는 26,394 비트를 읽었습니까? 비트 사이의 경계를 어떻게 인식합니까?) 컴퓨터 데이터 비트와 저장 가능한 청크 사이에서 이러한 변환을 수행하는 기술은 시간이 지남에 따라 발전했습니다. 예를 들어 수정 된 주파수 변조 , MMFM,그룹 코드 기록 및보다 일반적인 실행 길이 제한 인코딩 기술 .

같은 실제의 기록 처리, HAMR , PMR , 에 진열 들이 자구가 물리적 매체에 저장되는 방식의 메커니즘을 설명하는 것을 등등과 이에 orthgonal이다.

둘째, 섹터에 새 데이터를 쓸 때 플래터 관련 부분의 자기 영역이 원하는 값으로 설정됩니다. 이것은 이전의 자기 영역이 특정 물리적 위치에 있었던 것과 상관없이 수행됩니다. 플래터가 이미 쓰기 헤드 아래에서 회전하고 있습니다. 먼저 현재 값을 읽은 다음 다른 경우에만 새 값을 쓰면 각 쓰기에 두 번의 회전 (또는 각 플래터의 추가 헤드)이 필요하므로 쓰기 대기 시간이 두 배로 증가하거나 드라이브의 복잡성이 크게 증가합니다. 차례로 비용이 증가합니다. 하드 디스크 순차 I / O 성능의 제한 요소는 각 비트가 읽기 / 쓰기 헤드에서 얼마나 빨리 전달되는지에 따라 사용자에게 아무런 이점도 제공하지 않습니다. (여담으로, 랜덤 I / O 성능의 제한 요소는 읽기 / 쓰기 헤드가 원하는 실린더에 얼마나 빨리 위치 할 수 있는지 그리고 원하는 섹터가 헤드 아래에 도달하는 속도입니다. 랜덤 I / O 워크로드에서 SSD가 너무 빠를 수있는 주요 이유는 이러한 두 가지 요소를 완전히 제거하기 때문입니다.)

JakeGould가 지적했듯이 드라이브를 고정 패턴 (예 : 모두 0) 으로 덮어 쓰려는 이유 중 하나는 의도적으로 또는 실수로 이전에 저장된 데이터의 나머지를 복구 할 수 없도록하는 것 입니다. 그러나 이렇게해도 위에서 언급 한 이유로 드라이브 성능에 영향을 미치지 않습니다. liori가 지적한 것처럼 "성능 향상"이라고 할 수있는 또 다른 이유 는 저장된 디스크 이미지의 사용되지 않은 부분을 압축하는 데 도움이되지만 사용중인 시스템의 성능을 향상 시키지는 않습니다.


3
파티션 / 드라이브 제로화의 또 다른 이유는 원시 파티션 / 드라이브 덤프 (예 : 백업, 여러 머신의 OS 이미지 작성, 시스템 마이그레이션 기술 등)를 수행하려는 경우입니다. 0은 압축률이 높으며, 이는 드라이브에 저장된 이전 내용과 다를 수 있습니다.
liori

@liori 좋은 지적이지만, 이는 일반적인 최종 사용자 시나리오가 아니며 OP가 설명하는 것과는 거리가 멀습니다.
CVn

광학 디스크가 회전하지 않거나 자기 디스크입니까?
Max Ried

4

당신은 이것을 말합니다 :

문제는 디스크를 정리할 경우 추가 쓰기 작업을 위해 쓰기 성능을 향상 시킵니까? 청소하면 디스크를 0으로 채울 수 있습니까?

100 % 아니요. 디스크에 0을 쓰면 성능이 향상되지 않습니다. 데이터를 파괴하기 위해서만 그렇게 할 것입니다. 그래서, 당신은 이것을 알고 있습니다 :

내가 아는 한, 드라이브에 있던 실제 데이터는 여전히 존재합니다.

기술적으로 예… 드라이브에 이미 존재했던 데이터는 여전히 기본적인 수준으로 드라이브에 존재합니다. 즉, 이 시점에서는 액세스하거나 복구하기 쉬운 형태로 존재하지 않지만 누군가가 데이터 조각을 복구하려는 노력으로 기꺼이 손상된 데이터에 대해 걱정하는 경우 문제가 될 수 있습니다. 남아있다.

따라서 보안 및 개인 정보 보호가 중요한 경우 모든 여유 공간을 완전히 지울 수 있도록 드라이브에 0을 기록 할 수 있습니다. 그러나 보안 및 개인 정보 보호는 성능을 향상시키지 않는 것과 같은 작업을 수행하므로 여유 공간을 0으로 지우는 절대적인 유일한 이유입니다.


recover"쉬운"것으로 계산되지 않는 도구를 실행합니까 ? 방금 이전에 있었던 전체 드라이브에 많은 파일이 나타납니다 mkfs.
홉스

0

여러분 모두에게 드리는 2 센트 선물은 제 자신의 경험입니다. 그렇습니다.하지만 도움이됩니다.

SSD가 많았고 자체 테스트를 기반으로 마스터 테이블을 다시 작성하기 전에 0으로 전체 채우기를 권장하고 파티션을 삭제하는 대신 마스터 테이블을 다시 작성하십시오.

나중에 나는 이유를 설명하지만 단계는 전체 SSD를 채우고 bs = 1M을 사용하고 bs = 1보다 훨씬 빠르며 끝까지 갈 수 있도록 count 매개 변수를 잊어 버릴 것입니다. 지정된 끝에 도달하므로 그러한 오류를 보더라도 걱정하지 마십시오. 전체 채우기 사용 gparted 또는 필요에 따라 마스터 테이블 (MBR / GPT / etc)을 작성하려는 경우 모든 디스크를 '트리밍'한 다음 원하는 형식으로 파티션을 생성합니다.

왜 0으로 채우나요? 짧은 대답은 내 경험은 0 ~ 24 개의 읽을 수없는 블록을 제공하는 곳에서 더 이상 블록을 더 이상 사용할 수없는 SSD를 0으로 채울 때입니다.

이제 새로운 SSD를받을 때 가장 먼저해야 할 일은 읽을 수없는 1KiB 블록의 일반적인 무작위 오류를 다시 겪지 않도록하기 위해 0으로 가득 채우는 것입니다.

내 경험 : 소프트웨어를 사용하여 전체 SSD를 읽고 테스트합니다 (각 '섹터'를 읽는 데 걸리는 시간을 알려줍니다) 나는 사용할 수없는 많은 '512 바이트 분파'(1KiB 블록)와 위치를 얻었습니다. 무작위로 변경하고 실패 횟수는 2에서 24까지 다양합니다. 0으로 완전히 채운 후 더 이상 읽을 수없는 섹터가없는 마스터 테이블을 다시 작성 (다듬을 수 없음)하십시오.

내 충돌 테스트 : 이러한 오류를 복구하기 위해 0으로 채우는 것, 몇 시간 후에 하나의 SSD를 사용하도록하고 1TB 미만의 테라 바이트 (120GiB SSD)로만 쓰면 절대로 죽지 않았습니다. 더 이상 그것에 액세스하면, 마더 보드 바이오스는 그것을 볼 수 없으며, USB 엔클로저는 액세스 할 때 멈 춥니 다. 따라서 Windows도 그것을 보지 못하고 Linix fdisk도 그것을 보지 못합니다.

그것은 동일한 SSD를 동시에 구입 한 여러 SSD를 사용한 '다이'테스트였습니다. 제로화하지 않은 모든 것은 죽었고, 나머지는 재 할당 된 블록이 많지만 더 이상 읽을 수없는 오류가 없습니다.

물론, 모든 결론은 브랜드와 용량에 관계없이 모든 SSD가 신뢰할 수 없다는 결론입니다.

그래서 내 경험상 그들과 함께하는 첫 번째 것은 무작위보다 0으로 더 잘 채우도록하는 것입니다 (더 빠릅니다).

더구나, 대부분의 SSD는 0으로 기록 될 때 내부 트림을 수행합니다 (garbe recollection 알고리즘 등).

또한 처음 한 번만 채우면 쓰기 오류가 발생하는 블록이 재 할당됩니다. 데이터가 손실 된 경우 (모두 0) 데이터가 관련이 없지만 데이터가 운영 체제에 중요하지 않은 경우 매우 나쁩니다.

대부분의 SSD 재 할당은 그렇게하지만 쓰기 오류를 일으킨 블록의 데이터를 잃어 버립니다. '기업'(GiB 당> 10 €)만이 재 할당이 올바르게 된 후 쓰기를 다시 시도합니다. 일부 SSD는 또한 이러한 '실패'와 같은 실패한 블록에서 다른 모든 '섹터'를 잃어 버립니다.

따라서 전체 채우기 후에 먼저 시도하여 SMART 데이터를 확인하여 얼마나 많은 재 할당을 수행 할 수 있는지 확인하십시오.

얼마나 많은 재 할당이 수행되었는지는 중요하지 않습니다. 대부분의 SSD는 이미 재 할당 된 일부 블록이있는 제조업 자로부터 왔으며, 0이있는 블록은 1 % 미만이므로, 재 할당과 미래의 재 할당 비율이 중요합니다.

수백 개의 SSD가 5 년 동안 5 년 동안 사망 한 후 일부는 첫 사용 시간, 1 주일, 다른 한 달 동안 사망 한 경험입니다. 그러나 내가 완전히 작성하지 않은 모든 것은 2 ~ 3 년 동안 살았으며 매일 쓰인 13GiB, 3 * 365 * 13 GiB = 13.9TiB로 작성되었으며 제조업체가 말하는 것보다 훨씬 적습니다 (> 100TiB).

그러나 속도 문제는 대부분 Windows에서 (리눅스에서 2xHDD LVM2 스트라이핑이 깔끔한 부팅 시간을 제공하지만> 25 년 내에 실패하지 않음) 기가 바이트 당 0.21 € (120GiB = 25 €)의 SSD를 사용하는 경우 가치는 (Windows의 경우) 2 ~ 3 년 후에 변경됩니다. 기술이 신뢰성을 향상시키기를 바랍니다.

리눅스의 경우 SSD가 더 안정적이 될 때까지 더 이상 SSD를 원하지 않지만 Windows (Vista, 7 및 10)의 경우 시스템 파티션은 필수입니다 (Windows Vista에서는 부팅 시간이 30 분이 아닌 10 배 더 낮음) 오래된 노트북에서 4 분 이상 부팅합니다).

예, 내 경험에 따르면 0으로 전체 채우기는 필수입니다.

그러나 SSD를 받고 어떤 용도로든 사용하기 전에 만 SSD를 사용하십시오.

팁 : SSD가 가비지 콜렉션을 잘 수행하지 않고 운영 체제가 모두 다 쓰지 말라고하면, 블록을 폐기 할 때 SSD 내부적으로 0으로 완전히 채우는 것이 좋습니다. 또한 0을 쓰면 전자 장치가 지워 지므로 실패한 읽기 블록을 복구하는 데 도움이됩니다.

또한 데이터를 변경할 때마다 복제를 시도하십시오. SSD는 쓰기가 정상임을 알리고 읽을 수없는 섹터에 대해 읽을 수 있지만 읽을 수는 없지만 읽을 수는 없습니다. 운영 체제가 그러한 조건을 지원하도록 설계되지 않았습니다. wtit가 정상이라면 데이터를 읽을 수 있다고 추측한다. 읽을 수있는 다른 데이터를 읽을 때 혼동하지 마십시오.

그것이 SSD와 HDD에 대한 나의 경험입니다. Windows 부팅 및 응용 프로그램의 경우 SSD를 사용하지만 SSD는 3 년 이내에 죽기 때문에 일반 HDD에서 복제를 수행하지만 항상 gor Linux는 2x 또는 3x good 2.5 "HDD ti를 사용합니다. , 그러나 훨씬 더 오래 지속됩니다 (> 25 년).

10 년 동안 잘 작동하는 100GiB entetprise SSD의 경우 1000 유로를 초과하지 않습니다. 2 ~ 3 년마다 130GiB에 25 유로를 지불하는 것이 좋습니다. 가격은 연간 100 유로 (기업)와 연간 10 유로 (유콘, 삼성 등)로 계산하면됩니다.


예약 된 섹터가 여전히 존재하는 한, 불량 섹터를 덮어 쓰는 것은 실제로 "고정"하는 확실한 방법입니다.
색종이 조각
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.