큰 SCSI 쓰기를 생성하는 사용자 공간 응용 프로그램이 있습니다 (아래 세부 정보). 그러나 SCSI 대상 (예 : FC로 연결된 저장소)에 도달하는 SCSI 명령을 살펴보면 이러한 쓰기를 512K 청크로 분할하고 있습니다.Linux : 쓰기가 512K 청크로 분할됩니다.
적용은 기본적으로 직접 장치에 1M 크기의 직접 기입을 수행
는fd = open("/dev/sdab", ..|O_DIRECT);
write(fd, ..., 1024 * 1024);
이 코드는 SCSI, 512K 각각 전송 될 두 기입시킨다.
그러나 블록 계층없이 직접 SCSI 명령을 실행하면 쓰기가 분할되지 않습니다. 나는 명령 줄에서 다음 명령을 실행
sg_dd bs=1M count=1 blk_sgio=1 if=/dev/urandom of=/dev/sdab oflag=direct
나는 하나의 1M 크기의 SCSI의 WRITE를 볼 수 있습니다.
질문은 무엇이 분할 쓰기이고, 더 중요한 것은 구성 가능합니까?리눅스 블록 레이어는 SG_IO가 통과하지 못하기 때문에 죄책감을 느낍니다. 512K는 설정 가능한 매개 변수가 아닌 숫자로 보입니다.
아니, 블록 크기는 관련이없는 -가 512에 데이터를 분할 - ** 킬로 **하지 바이트 덩어리, 512 바이트 것. – Leonid99