あるファイルシステムから領域を回収し、LVMなしで別のファイルシステムに割り当てる

あるファイルシステムから領域を回収し、LVMなしで別のファイルシステムに割り当てる

あるファイルシステムスペースを別のファイルシステムに追加したいと思います。

/dev/cciss/c0d0p2    152358920 143606116    888588 100% /db2
/dev/cciss/c0d0p15   203899764  50767420 142607764  27% /db2/ade/sapdata1

この場合は から まで/db2/ade/sapdata1です。/db2私たちのサーバーもLVM形式でインストールされません。

空き容量を確保するにはどうすればよいですか/db2

答え1

この作業の難しさは、2つのパーティションのブロックレイアウトによって異なります。開始ブロックと終了ブロックの観点から、ディスク上のどのパーティションが最初に出るのか、別のパーティションがあるのか​​、またはその間に空き領域があるのか​​などがあります。ちょっと待って.... ..

使用されるファイルシステムも/db2/ade/sapdata1縮小をサポートする必要があります。たとえば、xfsはそうではありません。

参考になるように例を挙げましょう。これは非常に危険な作業なので、お勧めできません。しかし、それはあなたに何が関係しているかについてのアイデアを与えます。この例は最も単純なケースです。パーティションのある場所から別の場所にデータを戻す(最後のブロックから最初のブロックとして計算する)必要があるため、他の場合ははるかに困難です。

p15が最初にディスクに保存され、次にp2が保存され、一緒に他のパーティションや利用可能なブロックなしでディスク全体を占めるとします。やるべきことは次のとおりです。

  1. p15のファイルシステムの縮小
  2. p15パーティションをファイルシステムの新しいサイズに縮小します。これにより、2つのパーティション間に空き容量が作成されます。
  3. p2(/db2)の削除
  4. p2パーティションの開始ブロックを手順2で使用できる最初の空きブロックに変更します(つまり、パーティションの開始位置をディスクの以前の場所にバックアップします)。
  5. ディスクからデータを戻すには、次のコマンドを使用します。

    dd if=/dev/cciss/c0d0p2 of=/dev/cciss/c0d0p2 bs=xxx skip=yyy
    

    xxxチャンクサイズは、残りのない成長中のパーティションの数で割る必要があり、バイト数を成長しているパーティションの数で割ったものでyyyなければなりませんxxx

  6. /db2 ファイル・システムを拡張します。

想像できるように、ステップ5は非常に危険な作業です。実行に長い時間がかかる可能性があり、失敗したり中断したりすると回復が困難になる可能性があります。あなた〜しなければならないこれにより、自分が何をしているのかがわかります。

Linux で実行している場合のもう 1 つのオプションは、既存のデータをすべてそのままにして、デバイスマッパーを使用して既存のパーティションに隣接していない空のスペースをリンクして、より大きな仮想パーティションを形成することです。これは基本的にLVMが実行するものですが、ブロック範囲を自動的に透過的にリンクする素晴らしいLVMユーザーインターフェイスとメタデータはありません。

関連情報