У меня есть перегородка /dev/sdb1
и перегородка /dev/sdb2
Они оба в /etc/fstab
с правильными UUID и установленными как /opt
и /home
Я хочу объединить их без потери файлов
Можно ли это сделать из командной строки, не перемещая все файлы?
Нет, вам придется переместить файлы.
Даже тогда у вас все еще есть проблема: вам придется смонтировать раздел как «/ home» и символическую ссылку «/ home / opt» на / opt.
Когда вы говорите слияние, я понимаю, что вы хотите иметь одну файловую систему, которая может использовать все пространство, выделенное в настоящее время для / opt и / home? Единственный «правильный» способ, которым я знаю, как это сделать, - воссоздать разделы, сделать их частью физического тома LVM и создать логический том поверх него.
Вам просто нужно занять место, выделенное для одного, и использовать его в другом? Ты можешь использовать mount --bind
если вы не хотите использовать символические ссылки.
Вы уверены, что это / dev / sdb и / dev / sdc? По соглашению / dev / sdb и / dev / sdc являются отдельными дисками, а не разделами на диске. Дисковые разделы обычно имеют номер, связанный с ними (например, / dev / sdb1, / dev / sdb2, / dev / sdc1 и т. Д.). Вы не можете объединить разделы на отдельных физических жестких дисках, вы должны перемещать данные с одного на другой.
Как уже было сказано другими, объединить их на самом деле невозможно. Вам нужно будет переместить данные и изменить размер разделов соответствующим образом.
Не то, чтобы я знал, хотя вы можете удалить один раздел и изменить размер другого: http://www.howtoforge.com/linux_resizing_ext3_partitions
Очевидно, что для этого вам потребуется достаточно места для хранения данных в одном разделе в другом месте.
Вы не можете слиться /opt
и /home
не имея также одного внутри другого.
Например /home
-> /opt/home
.
Затем вы можете выполнить команду ln -s / home / opt / home.
или еще лучше: mount --bind /opt/home /home
или запись в fstab: /opt/home /home none bind
Я действительно добавил следующее в свой /etc/fstab
файл. (на самом деле мой настоящий использует UUID раздела вместо [/dev/sdb1
])
/etc/fstab
/dev/sdb1 /share ext3 noatime,errors=remount-ro 0 1 /share/home /home none bind
Это могло сработать:
# copy files preserving attributes
cp -Rp /home /opt # --recursive --preserve
# comment out old /home entry
perl -pie'$_ = "#$_" if m[/home]' /etc/fstab
# add a bind entry to the end of fstab
echo /opt/home /home none bind >> /etc/fstab
# unmount both partitions
umount /home
umount /opt
# remove original /home partition
# resize /opt partition to use the freed space
# could also just restart here
mount /opt
mount /home
Вам нужно будет либо добавить sudo
к каждой строке или запустить как root
[sudo bash
].
Слияние невозможно, потому что некоторые числа, такие как inodes, должны быть уникальными в файловой системе, но некоторые будут повторяться, когда у вас будет два. Структуры внутренней файловой системы будут конфликтовать таким же образом.
Поглощение одной файловой системы в другую теоретически возможно, но я не думаю, что это предпринималось, потому что инструменты, которые обслуживают редкие варианты использования, имеют более высокий риск ошибок, которые могут иметь фатальные последствия. Вам потребуется делать резервные копии, и теперь, когда у вас есть резервные копии, вам не нужно преобразование на месте. Если вы хотите реализовать это, ближайшим инструментом является btrfs-convert, который фагоцитирует файловую систему ext4, сохраняя обе файловые системы в одном разделе, при этом структуры btrfs ссылаются на структуры ext4 и копируют при записи, гарантируя, что новые файлы будут btrfs. -только.