iSCSI를 통한 Zvol 트리밍/맵 해제

iSCSI를 통한 Zvol 트리밍/맵 해제

현재 디스크 없는 부팅을 위해 SAN을 설정하고 있습니다. 내 백엔드는 iSCSI를 통해 공유되는 ZFS-Vol로 구성됩니다. 지금까지 TRIM/UNMAP을 제외하고 모든 것이 잘 작동하고 있습니다. 테스트 목적으로 정적 IPv4 주소가 있는 내부 네트워크를 통해 함께 네트워크로 연결된 VirtualBox에서 Ubuntu20.04를 실행하는 두 개의 VM을 설정했습니다. 대상(tgt)에 ZFS로 포맷된 두 번째 가상 드라이브가 있습니다. 이 zpool에서 zVol을 생성하고 GPT 및 ext4로 포맷했습니다.

/etc/tgt/conf.d/iscsi.conf
<target example.com:lun1>
    <backing-store /dev/zvol/tank/iscsi_share>
        params thin_provisioning=1
    </backing-store>
    initiator-address 192.168.0.2
</target>

개시자(open-iscsi)에서 다음 명령을 사용하여 TRIM 작업을 호출합니다.

sudo mount /dev/sdb1 /iscsi-share
sudo dd if=/dev/zero of=/iscsi-share/zero bs=1M count=512
sudo rm /iscsi-share/zero
sudo fstrim /iscsi-share

그러나 쉘은 "fstrim: /iscsi-share: 폐기 옵션이 지원되지 않습니다"로 응답합니다. 대상 시스템에서 해당 명령을 실행하면 zVol의 "REFER" 속성이 예상대로 감소합니다.

웹을 검색하는 동안 아무것도 찾지 못했기 때문에 이것이 작동하지 않는 이유나 이것이 가능한지에 대한 힌트를 찾지 못했습니다.


편집: 옵션을 사용하라는 조언을 받았기 때문에씬_프로비저닝.

드라이브를 다시 파티션하고 이니시에이터에 마운트한 후 blk_update_request: critical target error, dev sdb, sector 23784 op 0x9:(WRITE_ZEROES) flags 0x800 phys_seg 0 prio class 0 여러 섹터에 대해 오류 메시지가 표시되고 테스트 파일을 생성 및 삭제한 후 fstrim메시지를 보냅니다 .

blk_update_request: I/O error, dev sdb, sector 68968 op 0x3:(DISCARD) flags 0x800 phys_seg 1 prio class 0
fstrim: iscsi-share: FITRIM ioctl failed: Input/output error

편집 : 다음을 참조하는 답변이 있었기 때문에리오이제 targetcli도 사용해 보았습니다. 거기에서 /backstores/block/iscsi 및 set attribute emultate_tpu=1. 이것을 개시자로 가져온 후 다시 파티션하고 포맷하고 개시자에 마운트했습니다. 그런 다음 테스트 파일을 만들고 삭제한 다음 fstrim명령을 실행하면 제대로 작동했습니다. 도와 주셔서 감사합니다.

답변1

LIO는 기본적으로 UNMAP을 비활성화합니다. 이를 활성화하려면 emulate_tpu대상에 속성을 설정해야 합니다.

답변2

귀하가 요구하는 것은 iSCSI 대상 구현에 따라 매우 다릅니다. 대부분은 1:1 SCSI 명령 매핑을 수행하지 않으므로 iSCSI 대상이 하드 디스크를 에뮬레이트하는 경우 iSCSI를 명시적으로 요청하지 않는 한 인식되지 않는 명령(물론 UNMAP 포함)을 기본 저장소 @ 백엔드로 우회하지 않습니다. 그렇게 하는 것을 목표로 합니다. TGT를 사용하면 구성 파일에서 가상 LUN에 대해 "thin_provisioning=1"을 지정합니다.

답변3

TRIM은 기본적으로 Ubuntu 20.04에서 매주 실행되도록 활성화되어 있으므로 수동으로 실행하더라도 문제가 없습니다. 다음과 같은 경우에 fstrim.service 및 fstrim.timer에서 이를 확인할 수 있습니다.https://askubuntu.com/questions/1034169/is-trim-enabled-on-my-ubuntu-18-04-installation

그러나 이미 언급한 대로 대상에서 UNMAP을 활성화해야 하는 것처럼 보입니다. 많은 SATA SSD에 UNMAP 문제가 있었기 때문에 LIO에서는 기본적으로 비활성화되었습니다.http://www.linux-iscsi.org/Doc/LIO%20Admin%20Manual.pdf.

물론, iSCSI 대상이 더 이상 수정하지 않고도 기본적으로 TRIM/UNMAP을 지원하면 상황이 훨씬 쉬워집니다. 예는 다음과 같습니다.https://forums.starwindsoftware.com/viewtopic.php?f=5&t=5343

관련 정보