LVMを使用せずにHDDを追加するときにファイルシステムを拡張しますか?

LVMを使用せずにHDDを追加するときにファイルシステムを拡張しますか?

LVMを使用せずにハードドライブを追加するときにファイルシステムを拡張する方法はありますか?彼らは何ですか?

ベストアンサー1

この回答では、結果のデバイスを「ボリューム」と呼び、それを作成するために使用されるパーティションを「デバイス」と呼びます。

LVMはこのツールを内部的に使用してdmsetupボリュームを設定し、記憶領域の一部を使用してメタデータ(デバイスの設定方法に関する情報など)を保存します。

代替方法は、dmsetupメタデータの記憶領域を明示的に割り当てることなく、デバイスを手動で作成することです。すでにデータを含むパーティションでこの機能を使用することもできます。現在、ext4ファイルシステムである/ dev / sda5ドライブがあるとします。 100GBのサイズなので、正確なセクタサイズを取得するには、次の手順を実行します。

# blockdev --getsz /dev/sda5
195310000

新しい300 GBのハードドライブsdbがあり、それを使用してsda5を拡張しようとしているとします。あなたできるこれを行うには、パーティションテーブルの代わりにsdbデバイス全体を使用してください。ただし、長期的な健康を維持するために、後でディスクがどのように使用されたかを覚えるために、ディスク全体にわたるパーティションを作成する方が良いかもしれません。したがって、blockdevが報告するサイズsdb1があります。

# blockdev --getsz /dev/sdb1
583984375

したがって、これら2つをマージするために最初にすべきことは、古いデバイスを削除することです。もちろん、その前でも問題が発生した場合は、データをバックアップしておいてください。そのため、バックアップ処理後に以下を実行してください。

# umount /dev/sda5

確認。注:私はsystemdがあるシステムでこれを試したことがないので、手動でアンインストールをキャンセルする可能性を防ぐためのより良い方法があることを確認してください。

次に、新しいボリュームを設定するコマンドを含むファイルを作成します。いくつかの手動計算が必要です。デフォルトでは、作成したファイルは、新しいボリュームの各部分がディスク上にある場所を一度に1行ずつ通知します。したがって、セクタ0-195309999(合計セクタ195310000個)をデバイス/ dev / sda5のセクタ0-195309999にマッピングしたいと思います。次に、セクター195310000-779294374(合計583984375セクター)をデバイス/ dev / sdb1のセクター0-583984374にマップしようとします。これを行うには、次の行を使用して/etc/mybigvolume.dmsetup.txtファイルを作成します。

0 195310000 linear /dev/sda5 0
195310000 583984375 linear /dev/sdb1 0

行あたりの形式(セクタのすべての単位= 512バイト):

<offset inside volume> <number of sectors> "linear" <source device> <source device offset>

したがって、大きな音で読むと、この行の意味は次のようになります。

  • ターゲットボリュームのセクタは0から始まり、/ dev / sda5デバイスの195310000セクタの前に移動し、/ dev / sda5内のセクタ0から始まります。

  • ターゲットボリュームのセクタは195310000で始まり、/ dev / sdb1デバイスの583984375セクタの前に展開され、/ dev / sdb1内のセクタ0から始まります。

メモ:数字を理解しやすくするために、後でもう一度同じ300Gディスクを追加したい場合は、ファイルの内容は次のとおりです。

0 195310000 linear /dev/sda5 0
195310000 583984375 linear /dev/sdb1 0
779294375 583984375 linear /dev/sdc1 0

元の例に戻ってファイルを作成したら、ボリュームを設定して使用できるようになりました。私たちはdmsetup createこの目的のためにそれを使用します。

# dmsetup create mybigvolume < /etc/mybigvolume.dmsetup.txt

すべてが正しく行われた場合、つまり何も出力されていない場合は、新しいボリュームが/dev/mapper/mybigvolume195310000 + 583984375 = 779294375セクタと呼ばれる新しいデバイスとして存在する必要があります。確認してみましょう:

# blockdev --getsz /dev/mapper/mybigvolume
779294375

あなたは実行することができます

# dmsetup table

いつでもdmsetupを使用して、どのデバイスが設定されているかを確認してください。

うん!今考慮すべきいくつかの重要な点があります。

  • 今すぐディスクにアクセスするには、/dev/mapper/mybigvolumeを使用して起動する必要があります。いつも。 /dev/sda5を使用すると、ファイルシステムが破損する可能性があります。したがって、/dev/sda5 がなくなったことを確認してください。もちろん、/etc/mybigvolume.dmsetup.txtdmsetup 構成を保存する場所は除外されます。

  • ファイルシステムは、新しい空き領域の使用を明示的に要求するまで、ディスクの最初の195,310,000セクタのみを使用します。詳細については、ファイルシステム管理ツールを参照してください。 LVMを使用している場合でも、この手順が必要です。

  • この設定(例:dmsetup設定)は、再起動するまで維持されます。したがってdmsetup create ...、ファイルシステムをマウントする前に、起動時にコマンドを自動的に実行するようにシステムを設定するか、起動するたびに手動でコマンドを実行してからボリュームを手動でマウントする必要があります。前者の実行方法は、主にLinuxディストリビューションによって異なります。ただし、これはcryptsetupの実装方法と似ています(dmsetupはデバイスの設定にも使用されます)。

/etc/fstab のエントリの例:

/dev/mapper/mybigvolume  /data  ext4  defaults,noatime  0 0

最後に指摘したいのは、ボリュームエラーのリスクが単一のデバイスエラーのリスクよりも確かに高いことです。しかし、私はあなたの設定を知りません。おそらくこの/dev/mapper/mybigvolumeをraid-1配列の一部として使用しているでしょう!とにかく、幸運を祈ります! :)

PS。ただ心を楽に聞いてください!

おすすめ記事