**Describe what's wrong**

`system.parts` ->  `modification_time` was not correct after move part operation.

**Does it reproduce on recent release?**

The latest release: v21.9.4.35-stable

**How to reproduce**
* Clickhouse version: v21.9.4.35-stable
* Create a MergeTree family table.
```sql
CREATE TABLE t
(
  a UInt32,
  b Date
)
ENGINE = MergeTree()
PARTITION BY b
ORDER BY b
```
* Write some data to table `t`
* Move a data part of `t` to another disk.
```sql
ALTER TABLE t MOVE PART 'part name' TO DISK 'some disk'
```
* Select part info from `system.parts`.
```sql
SELECT modification_time FROM system.parts WHERE table = 't' AND name = 'part name'
```
* We got this

|modification_time|
|:-:|
|1970-01-01 00:00:00|

**Expected behavior**
We should get the correct `modification_time` but we got '1970-01-01 00:00:00', seems that the `modification_time` had not been initialized after move part operation.
{
            
            UInt64 first_part_size = f->getBytesOnDisk();
            UInt64 second_part_size = s->getBytesOnDisk();
            return std::tie(first_part_size, f->name) < std::tie(second_part_size, s->name);
        }
    };
    std::set<MergeTreeData::DataPartPtr, PartsSizeOnDiskComparator> elems;
    UInt64 required_size_sum;
    UInt64 current_size_sum = 0;
public:
    explicit LargestPartsWithRequiredSize(UInt64 required_sum_size_) : required_size_sum(required_sum_size_) {}
    void add(MergeTreeData::DataPartPtr part)
    {
        if (current_size_sum < required_size_sum)
        {
            elems.emplace(part);
            current_size_sum += part->getBytesOnDisk();
            return;
        }
        
        if (!elems.empty() && (*elems.begin())->getBytesOnDisk() >= part->getBytesOnDisk())
            return;
        elems.emplace(part);
        current_size_sum += part->getBytesOnDisk();
        removeRedundantElements();
    }
    
    void decreaseRequiredSizeAndRemoveRedundantParts(UInt64 size_decrease)