mysql 5.5 repartition
There probably is no way to change the partitioning without taking downtime.  If you can block just writes, then this would allow concurrent reads:

disable writes (not via SQL)
CREATE TABLE new ... PARTITION BY RANGE ...
INSERT INTO new
    SELECT * FROM real;   --  probably wise to do in chunks
test new table
RENAME TABLE real TO old, new TO real;  -- Fast and atomic
DROP TABLE old;
enable writes


But -- Before embarking on the rebuild, please show us SHOW CREATE TABLE (both by-hash and by-range) and the important SELECTs.  Also, explain the purpose of using Partitioning.  It may be that Partitioning, even by-range, is not worth doing.  (In my experience by-hash is useless.)

My comments on partitioning (perhaps relevant):  http://mysql.rjweb.org/doc.php/partitionmaint