Не нужно ли переместить сжатую файловую систему, прежде чем изменять размер раздела?

У меня есть раздел размером X GB, заполненный файловой системой ext4. Теперь я хочу сжать этот раздел (и файловую систему) только на последнем X / 2 ГБ. Я использую инструменты командной строки и не parted . Итак, я прочитал ( здесь и здесь, например), что мне нужно resize2fs а затем использовать fdisk для сжатия раздела. Однако как насчет перемещения файловой системы на X / 2 GB вперед в разделе? Разве это не необходимый шаг?

Кроме того, если предположить, что это необходимо – следует ли использовать dd для перемещения данных или что-то еще необходимо / лучше?

One Solution collect form web for “Не нужно ли переместить сжатую файловую систему, прежде чем изменять размер раздела?”

Существенные структуры файловой системы рассматриваются относительно начала файловой системы, которая, как оказалось, совпадает с началом блочного устройства. Поскольку ваша файловая система неявно предполагается запустить в первом блоке блочного устройства, она не переносит никакого смещения в любой момент между первым блоком блочного устройства и первым блоком файловой системы.

Конец вашей файловой системы может быть изменен (выращен и сжат) относительно начальной точки, но нет простого способа выйти за пределы первого блока (или уменьшить файловую систему «назад»), поскольку вы вводите смещение между блочным устройством и начало файловой системы на нем. Теоретически это, конечно, возможно, однако текущий набор инструментов и ядро ​​Linux не готовы к этому типу операций.

В комментарии к этому ответу вы заявили, что вам только интересно переместить вашу файловую систему на новый раздел, охватывающий только вторую половину текущего паратитона.

Является ли файловая система зависимой от какого блочного устройства она использует? Нет. Перемещение файловой системы с помощью различных инструментов, таких как dd , возможно.

Процедура будет выглядеть так:

  1. сделать резервную копию, он никогда не болит
  2. снизьте существующую файловую систему вниз (или под) размер нового раздела
  3. вычислить текущую начальную позицию файловой системы на диске (не в разделе)
  4. передел вашего диска
  5. dd количество данных на диске в нужное место (поскольку вы знаете старую отправную точку, новую начальную точку и длину)
  6. расширьте свою файловую систему (в случае, если на шаге 2 вы сделали ее меньше)

Я хотел бы подчеркнуть, что эта процедура не будет работать, если ваша сжимаемая файловая система (точка 2) и ее новое место (новый раздел в пункте 4) накладывается на диск.

Подумайте об использовании LVM для смягчения этих проблем, подобных этому, и многих других. С LVM вы могли бы просто:

  1. сжать вашу файловую систему
  2. уменьшите свой логический объем (и пусть LVM справится с этим беспорядком)
  • изменить размер корневого тома с ошибкой пространства lvextend
  • Уменьшить время сжатия файловой системы ext4
  • Изменение размера раздела в CentOS 7
  • Безопасно ли изменять размер раздела при записи на него?
  • плохая геометрия: количество блоков 967424 превышает размер устройства (415232 блока)
  • Как создать раздел / opt на существующей установке без потери данных?
  • Перемещение и изменение размеров разделов пропорционально
  • Изменение размера раздела lvm root
  • Что делает команда resize2fs в Linux
  • Увеличьте корневой раздел, уменьшив / home
  • Ctrl-D, неспособное загрузить систему Linux, после того, как блок-устройство сжимается без файловой системы,
  • Linux и Unix - лучшая ОС в мире.