web-dev-qa-db-ja.com

CentOSで異なるディスクを持つ2つのパーティションをマージします

私のシステムにはlitecentos6があります。そのパーティションの1つをサイズ変更します。このシステムのファイルシステムは次のとおりです。

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_hadoop1-lv_root
                      5.5G  3.7G  1.6G  71% /
tmpfs                 937M     0  937M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
/dev/sdb1             5.0G  139M  4.6G   3% /disk1
cm_processes          937M     0  937M   0% /var/run/cloudera-scm-agent/process

サイズを変更したい/disk1を1Gに変更し、サイズを変更します/から9.5G。しかし、問題は/および/disk1は2つの異なるデバイス上にあります!サイズを変更することは可能ですか/それをフォーマットせずに?

参考までに、fdisk-lの出力は次のとおりです。

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008d752

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1306     9972736   8e  Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8376205b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux

Disk /dev/mapper/vg_hadoop1-lv_root: 5981 MB, 5981077504 bytes
255 heads, 63 sectors/track, 727 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/vg_hadoop1-lv_swap: 4227 MB, 4227858432 bytes
255 heads, 63 sectors/track, 514 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Vgscanの出力:

Found volume group "vg_hadoop1" using metadata type lvm2

また、このマシンはゲストOSとしてvmware esx内に配置されていますが、この事実によってプロセスが変わることはないと思います。

よろしく。

1
Ali

/は論理ボリューム上にあるため、再フォーマットせずにgrow/dev/mapper/vg_hadoop1-lv_rootすることができます。落雷がなければ、この操作は非常に安全です。

/ dev/sdb1(/ disk1)は論理ボリュームではないため、まだ可能縮小することができます-ただし、常にこの失敗の可能性があります。十分なスペースがあれば、パーティションのサイズ変更で個人的に問題が発生したことはありません。しかし、それは不可能だという意味ではありません!パーティションを縮小するために使用できるツールの多くは、この事実を警告します。繰り返しになりますが、それにもかかわらず、問題を抱えている人は誰もいません。

ここで、/ disk1をバックアップしている場合、または/ disk1が失われてもかまわない場合は、続行してください。


したがって、データピボットを続行するには、最初に/ disk1を縮小し、後で/を拡張するのに十分なスペースを確保します。まず、マウントされていないことを確認する必要があります。マウントされたボリュームを(安全に)縮小することはできません。

# umount /dev/sdb1

ツール

[他の読者への注意:これはext {2,3,4}ファイルシステムでのみ機能します] resize2fs + fdisk、またはgpartedのいずれかを使用できます=。 fdiskは気弱な人向けではありません。 GUIを使用してパーティションを縮小する場合は、次のガイドに従うことができます: http://gparted.org/display-doc.php?name=help-manual#gparted-resize-partition =、

まず、境界(パーティション)のサイズを変更して、パーティションの最後にデータがないことを確認しましょう。

# resize2fs /dev/sdb1 1G

これで、fdiskに対して次のことができます。

# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):  

パーティションはデータの単なる境界であることを忘れないでください。パーティションを削除しても、基になるデータは削除されません。それらは、ガベージコレクションされていないプログラミング言語のポインタのようなものです。幸い、fdisk -lからの出力により、パーティションの境界(ポインターの場所)ができました。

これはデータを失う可能性がある場所です。/disk1をバックアップせずに、非常に重要なものを/ disk1から削除する責任はありません。この手順を実行する前に、必要なものを2か所にバックアップしてください

パーティションを削除しましょう

Command (m for help): d
Partition number (1-4, default 4): 1
Partition 1 is deleted

Command (m for help): 

そして(縮小された)境界でそれを再作成します

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default e): p
Selected partition 1
First sector (1-5368, default 1): <hit enter>
Last sector, +sectors or +size{K,M,G} (2-5368, default 5368): +1G
Partition 1 of type Linux and of size 1 GiB is set

Command (m for help): 

次に、作成したすべての新しい空き領域で後で使用できる別のパーティションを作成します

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default e): p
Selected partition 2
First sector (1025-5368, default 1025): <hit enter>
Last sector, +sectors or +size{K,M,G} (1026-5368, default 5368): <hit enter>
Partition 2 of type Linux and of size <remaining> is set

Command (m for help): 

新しいパーティションがセットアップされ、次のステップに進むことができます


涼しい!難しい部分は終わりました。あなたの質問は、LVMの素晴らしい機能の1つであり、なぜそれがそれほど頻繁に使用されるのか(別々のドライブ上でもパーティションをマージする!)

したがって、私たちがやろうとしているのは論理ボリュームを増やすこれは/ dev/mapper/vg_hadoop1-lv_rootです。そのためには、ボリュームグループに十分なスペースが必要です。これを行うには、物理ボリュームボリュームグループに追加します。

したがって、最初に新しいパーティションからPhysical Volumeを作成して、LVMで認識できるようにし、後でvolume groupに追加します。私たちはこれを...

# /sbin/pvcreate /dev/sdb2

LVMは任意の物理ボリュームを任意のボリュームグループに追加できるため、次の出力から見つけたHadoopボリュームに追加します。

# /sbin/vgscan 

したがって、vg_hadoop1が必要であることがわかります。新しい物理ボリュームをこのボリュームグループに追加します...

# /sbin/vgextend vg_hadoop1 /dev/sdb2

追加されたので、クイックコマンドを実行して現在の論理ボリュームのサイズを変更します

# /sbin/lvextend -L +4.0G /dev/mapper/vg_hadoop1-lv_root 

lvextendの-Lパラメーターは非常に優れており、さまざまな入力を受け取ることができます。多くのプログラミング言語では、+ =二項演算子とほぼ同じように+を使用しています。 「新しいサイズ=現在のサイズ+ 4.5G」と言っています

以上で、2つのファイルシステムがあり、それらが存在するボリュームと同じサイズではありません。 ext2/3/4fsファイルシステム[最も一般的](使用しているファイルシステムを示すためにfdisk -lの出力が得られたら質問を更新します)の場合、パーティションサイズに一致するようにファイルシステムを変更できます。 :

# /sbin/resize2fs /dev/mapper/vg_hadoop1-lv_root
# /sbin/resize2fs /dev/sdb1

新しいサイズを確認するには、rootを再マウントする必要がある場合があります。/disk1を再度マウントすることもできます。これを行う:

# mount -o remount /
# mount /dev/sdb1 /disk1

Df(ディスクフリー)を使用してすべてが機能し、すべてが適切なサイズであることを確認しましょう。

# df -H

これらの2つのコマンドの出力を取得したら、この質問を更新して、実行する前にすべてが正しいことを二重に確認できるようにします。

幸運を!

2
Travis