zfs 풀 생성: HDD가 잘못 정렬되었나요?

zfs 풀 생성: HDD가 잘못 정렬되었나요?

최근 btrfs에서 새로운 ZFS 풀을 만들었습니다. 나는 일반적인 튜토리얼과 최신 튜토리얼을 따르고 매뉴얼 페이지와 Ubuntu 매뉴얼을 확인했습니다.

모든 기사에서는 ZFS가 나를 위해 포맷팅과 파티션 테이블 생성을 처리할 것이라고 말했고 결과는 정말 좋아 보였습니다.

그런 다음 dmesg 로그를 확인하고 다음과 같은 의심스러운 줄을 발견했습니다.

$ dmesg -H --color=always --follow --decode  --ctime
kern  :warn  : [Wed Dec  9 20:13:22 2020] sd 5:0:0:0: [sdc] Optimal transfer size 33553920 bytes not a multiple of physical block size (4096 bytes)

이제 어떻게 이런 일이 일어났는지 궁금합니다. 내가 찾은 모든 매뉴얼에 따르면 이런 일이 일어나서는 안 됩니다. 이것이 경고가 아니라면 상관하지 않습니다. 이 오류 메시지에 대한 정보도 많이 찾지 못했습니다.

다음은 hdparm의 일부 정보입니다.

(user@host)[~/] $ sudo hdparm -I  /dev/sdc

/dev/sdc:

ATA device, with non-removable media
        Model Number:       WDC WD20EFRX-68EUZN0                    
        Serial Number:      WD-WCCXXXXXXXXP
        Firmware Revision:  82.00A82
        Transport:          Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
        Supported: 9 8 7 6 5 
        Likely used: 9
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:    16514064
        LBA    user addressable sectors:   268435455
        LBA48  user addressable sectors:  3907029168
        Logical  Sector size:                   512 bytes
        Physical Sector size:                  4096 bytes
        Logical Sector-0 offset:                  0 bytes
        device size with M = 1024*1024:     1907729 MBytes
        device size with M = 1000*1000:     2000398 MBytes (2000 GB)
        cache/buffer size  = unknown
        Nominal Media Rotation Rate: 5400

반품:

$ zpool get all | grep ashift
nextcloud  ashift                         0                              default

그래서 내 생각은 다음과 같습니다.

  • 이미지에서 두 개의 HDD 중 하나를 제거합니다.
  • ashift=12를 사용하여 수동으로 새 풀 생성
  • 데이터 복사
  • 오래된 풀을 파괴하세요
  • 다른 HDD를 새 풀에 연결

하지만 전송 크기는 ashift와 관련이 없을 수도 있습니다. 도움을 주셔서 감사합니다!

미리 감사드립니다

//편집: 시스템 정보

(user@host)[~] $ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

(user@host)[~] $ zfs --version
zfs-0.8.3-1ubuntu12.5
zfs-kmod-0.8.3-1ubuntu12.4

답변1

이 질문은 ZFS와 관련이 없으므로 질문에서 해당 태그를 제거하겠습니다.

이 경고는 무시해도 됩니다. HDD에서 보고한 "최적 전송 크기" 값은 명백히 말도 안 되는 내용입니다. 즉, 33553920바이트는 섹터 65535( 512바이트)입니다. 따라서 HDD는 0xFFFF해당 섹터를 모든 비트가 설정된 16비트 숫자인 최적의 전송 크기로 보고합니다. 이는 일반적으로 드라이브의 펌웨어가 아직 해당 값에 도달하지 않았거나 NV 스토리지에 제대로 프로그래밍되지 않았음을 의미합니다. (보통 NAND 플래시 삭제/초기화 후 모든 비트가 1로 설정됩니다.)

이전 커널 버전에서는 파티셔닝 도구를 속여 파티션이 잘못 정렬되도록 할 수 있습니다. 최신 커널은 온전성 검사를 수행하고 최적의 전송 크기에 대한 홀수 값을 삭제하지만 사용자에게 디스크가 말도 안되는 소리를 하고 있음을 알리는 경고를 출력합니다.

fdisk정렬되지 않은 파티션이 발생하면 일반적으로 불만을 표시하므로 fdisk -l그런 프롬프트가 표시되지 않더라도 일반적으로 안전합니다.

여기같은 질문에 대한 심층적인 답변입니다.

관련 정보