Mac OS X 10.4: неразрушающее увеличение раздела HFS+
У меня MacBook под управлением OS X 10.4.11. Некоторое время назад я сократил свой основной раздел жесткого диска для двойной загрузки с Linux, но теперь у меня заканчивается свободное пространство на разделе Macintosh, и я хотел бы удалить раздел Linux и восстановить раздел Macintosh до его первоначального размера, Мне удалось удалить раздел Linux, но я не могу слить свободное пространство обратно в раздел Macintosh. Первоначально я использовал GParted для сокращения раздела, но я не могу использовать GParted для восстановления раздела, потому что GParted не может увеличить разделы HFS+.
Кто-нибудь знает, как я могу восстановить свой раздел HFS+ до его первоначального размера, не теряя своих данных и не тратя деньги на коммерческий продукт?
Если я попытаюсь использовать diskutil
чтобы изменить размер раздела (при загрузке с установочного DVD OS X), я получаю следующее:
# diskutil resizeVolume disk0s2 119690149888B
Started resizing on disk disk0s2 Macintosh HD
Verifying
Resizing encountered error No space left on device (28) on disk
Значение 119690149888 байтов было указано как максимальный размер в выходных данных команды diskutil resizeVolume disk0s2 limits
,
Другие инструкции о том, что я хочу сделать, я нашел на http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp, но для этого требуется Boot Camp, который больше не доступен для OS X 10.4.
(Это почти та же проблема, что и в вопросе 50317 "Изменение размера раздела HFS", но в Mac OS X 10.4 приложение Дисковой утилиты не может изменить размер разделов неразрушающим образом. Когда я пытаюсь переразбить раздел, он предупреждает, что все данные будут потеряны.)
1 ответ
Может ли GParted переписать карту разделов (удалить раздел linux, а затем изменить размер оставшегося раздела HFS+), не пытаясь увеличить файловую систему HFS+? Если так, то вы можете использовать diskutil
увеличить файловую систему HFS+, чтобы она соответствовала границам нового раздела.
Прежде чем попробовать это (или даже использовать какое-либо коммерческое программное обеспечение), вы должны убедиться, что у вас есть полная резервная копия (чтобы вы могли просто деструктивно восстановить раздел с помощью Дисковой утилиты и восстановить его из резервной копии, а также получить "бесплатную" дефрагментацию для твои неприятности).
TL; DR: Переместите весь раздел влево с помощью
dd
или жеgparted
. Тогда вы сможете увеличить его.
Сейчас 2020 год, и diskutil (и его графический интерфейс) остаются прежними, когда он пытается обрабатывать изменение размера и прочее. Единственное правило, которого он придерживается, - он никогда не перемещается туда, где начинается раздел. В следствии:
- максимальный размер изменения размера ограничен тем, где вы начинаете свой раздел
- когда вы "разбиваете" раздел, новые всегда добавляются после исходного
К счастью, переместить начало раздела несложно: вы просто копируете данные, не зная ничего о файловой системе. Именно так
gparted
обрабатывает ходы. После того, как вы переместите начало раздела и соответствующим образом скорректируете таблицу разделов, вы сможете изменить размер как обычно.
В моем конкретном случае я сожалел о преобразовании в APFS на очень громком жестком диске 10 ТБ и пытался вернуться к HFS+. Я сделал следующее, в основном с помощью графического интерфейса Disk Utility:
- Сжать раздел APFS ("P1") до минимальных 2,23 ТБ, разрешенных для моей группы файлов.
- Сделайте остальное разделом HFS+ ("P2") и скопируйте туда все.
- Уменьшите размер раздела HFS+, и, к счастью, он составил всего 2,18 ТБ. Это создает третий раздел HFS+ ("P3").
- Удалите раздел APFS (P1), отформатировав его в HFS+.
- Поскольку P2 меньше, чем P1, я могу просто
dd if=/dev/rdisk3s2 of=/dev/rdisk3s1 bs=$((128 * (1 << 20))
чтобы скопировать его туда, где находится P1. - Теперь, когда все снова в P1, я могу просто удалить P2 и P3 с помощью кнопки раздела. Это автоматически увеличивает размер P1 до полного размера 10 ТБ минус (2,23 ТБ - 2,18 ТБ). Это связано с тем, что diskutil не видит неиспользуемого пространства ни одним из разделов (я знаю, что это глупо).
- Зажечь
sudo gdisk /dev/rdisk3
, Нажмитеn
для нового раздела нажмите enter трижды, чтобы восстановить значения по умолчанию, и нажмитеw
записать в раздел. sudo diskutil eject /dev/disk3
, а затем снова откройте приложение Дисковые утилиты. Выполните операцию с разделом, чтобы удалить только что созданный мини-раздел, чтобы освободить это пространство.
Возможно, вам не так повезло, что у вас достаточно места для хранения двух копий раздела на диске, поэтому gparted будет вашим другом. Конечно, вы можете вручную подсчитать сектора и выполнить
dd
плюс
gdisk
, но считать мне... тяжело. Переместить раздел вправо с помощью dd будет еще сложнее, так как вам нужно копировать в обратном направлении.
Почему Apple не делает что-то подобное? Как бы легко ни звучало, сказать, что Apple не заботится о реализации глупой медленной функции,
parted
ребята из GNU сделали то же самое, когда столкнулись с некоторыми осложнениями. Проблема, похоже, в том, что они хотят изменять размер с перемещением, а изменение размера требует специфических для fs знаний. Ну, это является более эффективным, чтобы сократить до переезда в конце концов...