Назад | Перейти на главную страницу

как объединить два раздела ext3 на ubuntu из командной строки?

У меня есть перегородка /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. -только.