web-dev-qa-db-ja.com

コマンドラインからubuntuの2つのext3パーティションをマージする方法?

パーティション/dev/sdb1とパーティション/dev/sdb2があります

どちらも/etc/fstabに適切なUUIDであり、/optおよび/homeとしてマウントされています。

ファイルを失うことなくそれらをマージしたい

これは、すべてのファイルを移動せずにコマンドラインから実行できますか?

6
sal

一方のパーティションを削除してもう一方のパーティションのサイズを変更することはできますが、私は気づいていません: http://www.howtoforge.com/linux_resizing_ext3_partitions

明らかにそれが機能するためには、他の場所の1つのパーティションにデータを格納するのに十分なスペースが必要です。

1
Adam Gibbins

いいえ、ファイルを移動する必要があります。

それでもまだ問題があります。パーティションを「/ home」としてマウントし、「/ home/opt」を/ optにシンボリックリンクする必要があります。

4
lfaraone

マージと言うとき、現在/ optと/ homeに割り当てられているすべてのスペースを使用できる1つのファイルシステムが必要だと思いますか?これを行う方法を知っている唯一の「正しい」方法は、パーティションを再作成し、それらをLVM物理ボリュームの一部にして、その上に論理ボリュームを作成することです。

一方に割り当てられたスペースを借りて、もう一方で使用する必要がありますか?シンボリックリンクを使用したくない場合は、mount --bindを使用できます。

3
jaredg

/ dev/sdbと/ dev/sdcでよろしいですか?慣例により、/ dev/sdbおよび/ dev/sdcは個別のディスクであり、ディスク上のパーティションではありません。通常、ディスクパーティションには番号が関連付けられています(つまり、/ dev/sdb1、/ dev/sdb2、/ dev/sdc1など)。別々の物理ハードドライブ上のパーティションをマージすることはできません。データを一方から他方に移動する必要があります。

他の人がすでに言っているように、それらをマージすることは実際には不可能です。データを移動し、パーティションのサイズを適切に変更する必要があります。

2
dagorym

/opt/homeをマージするには、一方を他方の内部に配置する必要があります。

たとえば、/home-> /opt/homeです。

次に、ln -s/home/opt/homeを実行します。

またはそれ以上:mount --bind /opt/home /home

またはfstabエントリは次のとおりです。/opt/home /home none bind

実際に/etc/fstabファイルに以下を追加しました。 (実際、私の実際の1つは、[/dev/sdb1]の代わりにパーティションのUUIDを使用します)

/etc/fstab

/dev/sdb1/share ext3 noatime、errors = remount-ro 0 1 
/share/home/home none bind 
1
Brad Gilbert

Inodeのように、ファイルシステム内で一意であることが期待されるため、マージは実行できませんが、2つある場合は繰り返されます。内部ファイルシステム構造も同じように競合します。

ファイルシステムを別のファイルシステムに吸収することは理論的には実現可能ですが、まれなユースケースに対応するツールはバグのリスクが高く、致命的な結果をもたらす可能性があるため、試みられたとは思いません。バックアップを作成する必要があります。バックアップができたので、インプレース変換は必要ありません。これを実装したい場合、最も近いツールはbtrfs-convertです。これは、両方のファイルシステムを同じパーティションに保持することでext4ファイルシステムを貪食し、btrfs構造はext4構造を参照し、コピーオンライトは新しいファイルがbtrfsであることを保証します。 -のみ。

0
Tobu

これはうまくいく可能性があります:

# 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]。

0
Brad Gilbert