배포판 설치 프로그램이 SSD에 피해를 주고 있나요?

배포판 설치 프로그램이 SSD에 피해를 주고 있나요?

인텔에 따르면, 솔리드 스테이트 드라이브에 Linux 파일 시스템을 생성할 때 블록을 삭제하지 않는 것이 중요합니다. 문서에는 기본 동작( mke2fs2015년 3월 기준)이 블록을 폐기하지 않는 것이라고 명시되어 있습니다. 그러나 현재 mke2fs매뉴얼 페이지에는 다음과 같이 명시되어 있습니다.

버리다:mkfs 시간에 블록 폐기를 시도합니다(초기 블록 폐기는 솔리드 스테이트 장치 및 스파스/씬 프로비저닝 스토리지에서 유용합니다). 장치가 폐기된 데이터도 0이 되었음을 알리는 경우(폐기 후 및 쓰기 전의 후속 읽기는 0을 반환함) 아직 0이 아닌 모든 inode 테이블을 0으로 표시합니다. 이렇게 하면 파일 시스템 초기화 속도가 크게 향상됩니다.이것이 기본값으로 설정되어 있습니다.

SSD를 수동으로 포맷할 때 명령줄 -E nodiscard에 추가하여 포맷하는 동안 블록 삭제를 방지할 수 있지만 mke2fs배포 설치 프로그램은 자동이므로 이를 수행할 수 없습니다. 이것이 걱정할 일입니까?

답변1

링크된 문서는 특정 목적(Linux 커널 NVME 드라이버 개발 및 벤치마킹)을 제공하는 것으로 보이며 최종 사용자를 위한 일반적인 조언을 나타내지는 않습니다.

ext4는 mkfs 시간에 삭제되지 않는다고 주장합니다...

핵심 파일 시스템:

  • ext4 - 기본 확장 옵션은 파일 시스템 작성 시 블록을 삭제하지 않고 이를 유지하며 일부 정보에서 지시하는 대로 "discard" 확장 옵션을 추가하지 않는 것입니다.
  • xfs – mkfs.xfs에 –K 옵션을 추가하면 블록을 버리지 않습니다.

...그래도 그렇습니다. 그것이 가장 먼저 하는 일입니다.

# mkfs.ext4 /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Discarding device blocks: done
Creating filesystem [...]

따라서 모든 데이터를 삭제하지 않으려면 mkfs.xfs -K제안된 대로 xfs를 사용하고 ext4를 사용하는 경우 적극적으로 이를 방지해야 합니다 mkfs.ext4 -E nodiscard.

# mkfs.ext4 -E nodiscard /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem [...]

기본 동작이 변경되었는지는 알 수 없습니다. 내가 알 수 있는 한, 그것은 항상 기본값이었습니다. -E 폐기 이전에는 nodiscard 옵션이 제공되었으며 기본적으로 비활성화된 경우 폐기를 활성화하는 대응 옵션이 없는 데이터를 유지하기 위한 -K(기본 폐기 비활성화)도 있었습니다.

매뉴얼 페이지에서는 nodiscard가 기본값이라고 주장한 적이 있지만 커밋 기록 어디에서도 코드에 반영된 것을 볼 수 없으므로 문서 실수로 돌아갈 수도 있습니다.

mke2fs: -K 옵션 지원 중단, 폐기/nodiscard 도입

(실제로 이번 커밋에서는 폐기와 nodiscard가 모두 기본값이라고 동시에 주장했습니다.)

nodiscard가 기본값이고 일주일 후까지 fstrim이 불가능하다면 좋을 것입니다. Linux는 데이터를 버리는 데 약간 빠릅니다. 잘못된 장치를 포맷하고 실수를 즉시 알아차리더라도 어떤 종류의 데이터 복구도 하기에는 이미 너무 늦었습니다.

답변2

선행: 실제로 구매하지는 않습니다.

이 문서는 오래되었으며 더 이상 정확하지 않을 수 있습니다.

또한 그것은 명백히 틀릴 수도 있습니다. 역사적으로 이에 관해 많은 오해가 있었고 가이드를 작성하는 사람들이 반드시 같은 회사의 Linux 커널에 기여하는 사람들과 동일하지는 않습니다. 상황은 실제로 복잡합니다. 하나의 SSD에 대한 최적화는 다른 SSD에 대한 최악의 작업일 수 있으며 칩셋 제조업체는 컨트롤러의 선호도를 전달할 방법을 찾지 못했습니다.
그러나 NVMe 폐기 기능은 오랫동안 표준화되어 왔으며(인텔이 실제로 여기에 지배적으로 참여했습니다) 이것이 의도된 사용법이므로 "좋지" 않다면 상당히 놀랄 것입니다.

대체로 폐기를 사용하면 SSD에 더 많은 정보가 제공됩니다. 이를 사용하여 수행하는 작업은 SSD에 달려 있습니다. 따라서 무시할 수도 있는 더 많은 정보로 인해 작업이 더욱 악화됩니다. 이는 실제로 드라이버 문제가 아니라 SSD 컨트롤러 펌웨어 문제입니다. Linux 데이터 센터에서 잘 지원되는 데 큰 관심을 갖고 있는 인텔은 오랫동안 그 문제를 해결해 왔을 것입니다.

관련 정보