Linux에서 zfs raidz 풀 파티션의 섹터 크기를 변경할 수 있습니까?

Linux에서 zfs raidz 풀 파티션의 섹터 크기를 변경할 수 있습니까?

저는 희소 파일이 있는 가상 장치를 통해 Linux의 zfs raidz 풀을 새 디스크로 마이그레이션했습니다. 디스크 크기가 각각 1.9T로 다양하기 때문에 디스크에 파티션을 사용했습니다. 마지막으로 추가된 디스크는 4Tb 디스크였는데, 다른 디스크와 마찬가지로 파티션을 나누고 풀에 1.9T 파티션을 추가했습니다. GPT 파티션 테이블을 사용합니다. 4T 디스크의 마지막 파일을 1.9T 파티션으로 교체하려고 하면 다음 메시지가 나타납니다.

zpool replace -f zfs_raid /zfs_jbod/zfs_raid/zfs.2 /dev/sdd1 
cannot replace /zfs_jbod/zfs_raid/zfs.2 with /dev/sdd1: devices have different sector alignment

파티션 섹터 크기를 다른 것과 마찬가지로 512로 변경하려면 어떻게 해야 합니까? 아니면 실패할 경우 다른 풀 장치를 4024로 변경할 수 있습니까? 분명히 논리 섹터 크기는 512입니다.

cat /sys/block/sdd/queue/hw_sector_size
Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

원래 네 번째 파일 기반 장치가 포함된 디스크를 다시 파티션했기 때문에 장치를 교체하려고 시도했지만 작동하지 않아 장치 파일을 다시 생성하여 장치가 현재 재동기화되고 있습니다.

zpool 상태 출력:

NAME                            STATE     READ WRITE CKSUM
zfs_raid                        DEGRADED     0     0     0
  raidz1-0                      DEGRADED     0     0     0
    sda3                        ONLINE       0     0     0
    sdc2                        ONLINE       0     0     0
    sdb1                        ONLINE       0     0     0
    replacing-3                 OFFLINE      0     0     0
      /zfs_jbod/zfs_raid/zfs.2  OFFLINE      0     0     0
      /mnt/butter2/zfs.4        ONLINE       0     0     0  (resilvering)

답변1

필요한 옵션을 찾았습니다! 풀은 현재 다음 명령을 실행한 후 새 파티션을 다시 동기화하고 있습니다.

 zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1

이는 가능하지만 4k 유형 드라이브에 512b를 강제로 기록하면 성능이 저하되므로 권장되지 않습니다. 나는 내가 추가해야 할 어려운 방법을 배웠다

-o ashift=12 

풀을 만들 때현재는 4k 섹터 크기로 "마이그레이션"할 수 있는 방법이 없으므로 나중에 다시 생성하지 않도록 합니다.

관련 정보