Накопитель сообщает о неправильном свободном месте
Поэтому я сменил свой блестящий SATA SSD на еще более блестящий PCI-E SSD. Я запускаю свою основную ОС на SSD, потому что это глупо-быстро. Я сделал это на моем старом SSD, поэтому я создал новый раздел EXT4, а затем просто ddотредактировал данные (извините, я не знаю точную команду, которую я больше выполнял), и после переустановки grub я загрузился на SSD PCI-E. На первый взгляд все работало отлично, и все работало быстрее, чем когда-либо.
Но затем я заметил свободное дисковое пространство на новом, более крупном диске: оно было почти таким же, как и на другом диске... Диск, который был в два раза меньше его.
Таким образом, похоже, что я скопировал файлы неправильно, и он скопировал некоторые метаданные файловой системы вместе с ним.
Инструменты как du и Disk Usage Analyzer возвращаются с правильными цифрами. Вещи, которые смотрят на раздел (а не файлы), похоже, считают, что диск 120 ГБ
Я пользуюсь этим диском уже неделю, поэтому он не синхронизирован со старым твердотельным накопителем, поэтому сброс данных и повторный запуск - это не работа, которая наполняет меня радостью, а два вопроса:
Есть ли способ исправить мою файловую систему, чтобы она знала, о чем она на самом деле?
fscke2fsckа такжеbadblocksпохоже, что все могут сканировать его, не обнаруживая проблем с ним.Если я снова подключу свой старый SSD, скопирую на него данные с моего PCI-E, а затем скопирую обратно в новую файловую систему (например, перенесу данные), каков наилучший способ сделать это? Я, очевидно, хочу сохранить все разрешения и программные ссылки там, где они есть.
4 ответа
Инструмент, который вы использовали dd это не инструмент для копирования файлов, это инструмент для копирования дисков, и он копирует байт за байтом. Это означает, что каждый фрагмент информации, включая метаданные о количестве места в разделе на диске, был скопирован.
Вам нужно сделать полное резервное копирование ваших файлов, отформатировать диск (включая полный формат разделов), создать новый корневой раздел ext4 и заменить диск, а затем скопировать файлы.
После того, как вы скопировали файлы, вам нужно chroot к новой системе и запустить update-grub Команда для установки загрузочной системы на новый диск.
Или вы можете просто запустить новую установку Ubuntu и вернуть свои файлы обратно.
Что сделал Оли, чтобы это исправить
- Загрузился на LiveCD и выбрал "Try Ubuntu"
- Установлен мой SSD, а также другой диск (для копирования)
Ран
sudo rsync -ax /media/ssd /media/backup-drive/ssd-backupЭто занимает много времени. Я сделал некоторую очистку перед копированием, но все еще имел 35 ГБ, и пока я получал пакеты записи ~120 МБ / с, это заняло некоторое время. rsync не выдаст вывод по умолчанию, но вы можете добавить
--progressесли вы хотите извращенное количество деталей (хотя я действительно слишком быстро их прочитал - и, возможно, просто замедлил ход).- Я пытался обнулить накопитель, но у меня возникли проблемы с "занятым устройством" от palimpsest (Дисковая утилита), поэтому я запустил установщик! В инсталляторе я просто сказал ему создать хорошую файловую систему, используя весь SSD-диск, а затем запустил
killall ubiquityпосле того, как началось копирование файлов. Затем я уничтожил все файлы, которые скопировал установщик, и скопировал обратно файлы резервных копий:
sudo rm -rf /media/ssd/* sudo rsync -ax /media/backup-drive/ssd-backup /media/ssd- Затем я перезагрузился и обнаружил, что мой UUID изменился (очевидно, когда вы об этом думаете), поэтому grub2 понятия не имел, с чего начать загрузку, и взорвался, поэтому я вернулся к LiveCD. Если вы следуете этому руководству, советую пропустить этот шаг;)
- Переустановите личинку! Я следовал за справочными документами и следовал за выбором chroot. Вы можете найти, что вам нужно отредактировать ваш
/etc/fstabпока ты там. - Перезагрузитесь и все готово. Я вернулся, у меня есть метрическая "куча" свободного пространства. Возгласы ликования.
На самом деле это нормально dd весь диск в другой. Но тогда вам нужно изменить размер разделов, чтобы заполнить новый, больший диск. Вы можете использовать удивительный gparted инструмент для разбиения диска, чтобы сделать это. У них тоже есть свой LiveCD.
Я предполагаю, что вы делаете что-то вроде:
sudo dd if=/dev/sda98 of=/dev/sda99
где /dev/sda98 имеет размер 12 ГБ, а /dev/sda99 - 25 ГБ.
Очевидно, что эти имена неверны, но вы поняли.
То, что вы сделали, - это переместили в новый раздел не только данные, но и всю файловую систему, включая все ее метаданные, описывающие, что свободно и что используется. В нем много свободного места, но это свободное пространство не было включено в файловую систему в /dev/sda99, поэтому оно скрыто в конце раздела и совершенно непригодно для использования.
Решением является изменение размера файловой системы, расположенной в разделе:
sudo resize2fs /dev/sda99
он работает в файловых системах EXT2, EXT3 и EXT4.
Вы должны сделать резервную копию в первую очередь.
Это скажет файловой системе расшириться во все доступное пространство раздела, включив новое пространство в метаданные файловых систем, чтобы файлы могли храниться в нем.
Вы не можете скопировать больший раздел в меньший раздел с помощью dd если только вы не скажете ему копировать столько с параметром count. dd делает битовую копию всего исходного раздела в целевой раздел, в этом случае пытается скопировать все скрытое / невидимое пространство в меньший раздел вместе с исходным содержимым. Он не имеет ни малейшего представления о том, что копирует, и не заботится о нем - он вообще не должен быть действительной файловой системой.
У меня была эта проблема при изменении размера раздела Linux EX2 с помощью Paragon Partition Manager в Windows. К счастью, у меня было два Linux-раздела EX2, каждый с дистрибутивами Linux. Я смог загрузиться в раздел Linux, размер которого не был изменен, а затем использовал Gparted, чтобы сжать, а затем снова развернуть раздел, который неправильно выделил свободное пространство для файловой системы. Это сработало отлично!