Итак, я сменил свой блестящий SATA SSD на еще более блестящий PCI-E SSD. Я запускаю свою основную ОС на SSD, потому что это глупо-быстро. Я сделал это на моем старом SSD, поэтому создал новый раздел EXT4, а затем просто dd
перебросил данные (извините, я не знаю точную команду, которую я больше выполнял), и после переустановки grub я загрузился на PCI-E SSD. На первый взгляд все работало отлично, и все работало быстрее, чем когда-либо.
Но потом я заметил свободное место на новом, более крупном диске: оно было почти таким же, как и на другом диске ... Диск, который был вдвое меньше.
Похоже, что я неправильно скопировал файлы, и вместе с ним скопированы некоторые метаданные файловой системы.
Такие инструменты, как du
и Disk Usage Analyzer, возвращаются с правильными цифрами. Вещи, которые смотрят на раздел (а не на файлы), похоже, думают, что диск имеет 120 ГБ
Я использовал этот диск уже неделю, так что он не синхронизирован со старым SSD, поэтому выгрузка данных и начинать заново - это не работа, которая наполняет меня радостью, а два вопроса:
Есть ли способ исправить мою файловую систему, чтобы она знала, о чем она на самом деле? fsck
e2fsck
и badblocks
все, кажется, могут сканировать его, не обнаруживая проблем с ним.
Если я снова подключу свой старый SSD, скопирую данные с моего PCI-E на него, а затем скопирую его обратно в новую файловую систему (например, перенесу данные), что является лучшим способом сделать тот? Я, очевидно, хочу сохранить все разрешения и программные ссылки там, где они есть.
Инструмент, который вы использовали dd
, не является инструментом копирования файлов, это инструмент копирования дисков, и он копирует байт за байтом. Это означает, что каждый фрагмент информации, включая метаданные о количестве места в разделе на диске, был скопирован.
Вам необходимо сделать полное резервное копирование ваших файлов, отформатировать диск (включая полный формат разделов), создать новый корневой раздел ext4 и заменить диск, а затем скопировать файлы.
После того, как вы скопировали файлы, вам нужно chroot
перейти на новую систему и запустить команду update-grub
, чтобы установить загрузочную систему на новый диск.
Или вы можете просто запустить новую установку Ubuntu и вернуть файлы обратно.
Ран
sudo rsync -ax /media/ssd /media/backup-drive/ssd-backup
Это занимает много времени. Я сделал некоторую очистку перед копированием, но все еще имел 35 ГБ, и пока я получал пакеты записи ~ 120 МБ / с, это заняло некоторое время. rsync не выдаст вам вывод по умолчанию, но вы можете добавить --progress
, если вы хотите извращенное количество деталей (хотя он слишком быстро двигался, чтобы я мог его прочитать - и, возможно, просто замедлил).
killall ubiquity
после того, как он начал копировать файлы. Затем я удалил все файлы, которые скопировал установщик, затем скопировал резервные файлы:
sudo rm -rf /media/ssd/*
sudo rsync -ax /media/backup-drive/ssd-backup /media/ssd
/etc/fstab
, пока вы там. На самом деле это нормально, чтобы dd
весь диск в другой. Но тогда вам нужно изменить размер разделов, чтобы заполнить новый, больший диск. Вы можете использовать удивительный gparted
инструмент разбиения диска для этого. У них тоже есть свой LiveCD.
У меня была эта проблема при изменении размера раздела Linux EX2 с помощью Paragon Partition Manager в Windows. К счастью, у меня было два Linux-раздела EX2, каждый с дистрибутивами Linux. Я смог загрузиться в раздел Linux, размер которого не был изменен, а затем использовал Gparted, чтобы сжать, а затем снова развернуть раздел, который неправильно выделил свободное пространство для файловой системы. Это сработало отлично!
Я предполагаю, что вы делаете что-то вроде:
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
делает немного для битовой копии всего исходного раздела в целевой раздел, в этом случае он пытается скопировать все скрытое / невидимое пространство в меньший раздел вместе с исходным содержимым. Он не имеет ни малейшего представления о том, что копирует, и не заботится о нем - он вообще не должен быть действительной файловой системой.