**Describe the bug**

Since we upgraded to 20.10.3.30, one of our clickhouse cluster takes much more time to start. (Up to 50 minutes, and before it took ~3 minutes)
The log file is filled with
>  <Debug> DiskLocal: Reserving 1.00 MiB on disk `default`, having unreserved 16.90 TiB

Additionally, the memory consumption increases, linearly, a lot (up to arround 230 G for us) and then drop back to normal values once clickhouse finished starting up. During that loading phase, a single CPU core is used at 100%.
If that memory is not available for the machine, clickhouse gets OOMed by the kernel.


**How to reproduce**
* Issue appeared after we upgraded to ClickHouse server version 20.10.3.30

* How could I find wich of our tables may be responsible for that ?


**Expected behavior**
A fast startup :)

continue;
        restorer.addDataRestoreTask(
            [storage = std::static_pointer_cast<MergeTreeData>(shared_from_this()),
             backup,
             part_path_in_backup = data_path_in_backup_fs / part_name,
             part_info=*part_info,
             restored_parts_holder]
            { storage->restorePartFromBackup(restored_parts_holder, part_info, part_path_in_backup); });
        ++num_parts;
    }
    restored_parts_holder->setNumParts(num_parts);
}
void MergeTreeData::restorePartFromBackup(std::shared_ptr<RestoredPartsHolder> restored_parts_holder, const MergeTreePartInfo & part_info, const String & part_path_in_backup) const
{
    String part_name = part_info.getPartName();
    auto backup = restored_parts_holder->getBackup();
    UInt64 total_size_of_part = 0;
    Strings filenames = backup->listFiles(part_path_in_backup, / true);
    fs::path part_path_in_backup_fs = part_path_in_backup;
    for (const String & filename : filenames)
        total_size_of_part += backup->getFileSize(part_path_in_backup_fs / filename);
    std::shared_ptr<IReservation> reservation = getStoragePolicy()->reserveAndCheck(total_size_of_part);
    auto disk = reservation->getDisk();
    fs::path temp_dir = restored_parts_holder->getTemporaryDirectory(disk);
    fs::path temp_part_dir = temp_dir / part_path_in_backup_fs.relative_path();
    disk->createDirectories(temp_part_dir);
    /
    /
    /
    /