@Override
  public IChunkReader getChunkReader(IChunkMetadata chunkMetaData, Filter globalTimeFilter)
      throws IOException {
    long t1 = System.nanoTime();
    try {
      Chunk chunk =
          ChunkCache.getInstance()
              .get(
                  new ChunkCache.ChunkCacheKey(
                      resource.getTsFilePath(),
                      resource.getTsFileID(),
                      chunkMetaData.getOffsetOfChunkHeader(),
                      resource.isClosed()),
                  chunkMetaData.getDeleteIntervalList(),
                  chunkMetaData.getStatistics(),
                  context);

      long t2 = System.nanoTime();
      IChunkReader chunkReader = new ChunkReader(chunk, globalTimeFilter);
      SeriesScanCostMetricSet.getInstance()
          .recordSeriesScanCost(INIT_CHUNK_READER_NONALIGNED_DISK, System.nanoTime() - t2);

      return chunkReader;
    } finally {
      long time = System.nanoTime() - t1;
      context.getQueryStatistics().getConstructNonAlignedChunkReadersDiskCount().getAndAdd(1);
      context.getQueryStatistics().getConstructNonAlignedChunkReadersDiskTime().getAndAdd(time);
    }
  }
To read one chunk from disk, and only used in iotdb server module.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java