web-dev-qa-db-ja.com

論理を削除せずに拡張パーティションを削除する

Linuxベースのラップトップを実行していて、その中でいくつかのディストリビューションをマルチブートするために、GPartedを使用して論理パーティションの束を含む拡張パーティションを作成しました。さて、このセットアップでかなり長い時間を過ごした後、データパーティション用のストレージスペースが不足しているため、考えが変わりました。今、私は通常のように1つのディストリビューションを単独で保持し、最終的には他のオペレーティングシステムを外部サポートに保存して、必要に応じてプラグインして使用できるようにします。

明らかに、私が保持したい(そして少し拡大したい)このパーティションも、私が保持したい拡張内の論理的なものです。私が大丈夫な数に関しては、私は現在、この大きなディストリビューション専用の拡張、スワップ、およびデータパーティションを持っているので、拡張を削除する前に別のプライマリ用のスペースがありますが、それなしで削除する方法がわかりませんその中の論理に触れて、すべての変更と設定を失ってシステムを再インストールしたくないし、論理だけのために拡張パーティションを保持したくない。

どのようにできるのか?新しいプライマリを作成し、その中の論理コンテンツをコピーしてから、すべてを削除する必要がありますか?システムは起動し、現在のすべての機能を正確に維持しますか?または、論理が1つだけ含まれている場合に、拡張をプライマリに変換する方法はありますか?または、ロジックを拡張から直接移動してプライマリに変換することはできますか?または、もう一度、私はねじ込まれていますか?

3
HisDudeness

答えのおかげで、私は最終的に他の方法もいくつか見つけました。私は間違った方法を探していました。私が書かなければならないのは「論理をプライマリに変える」ことだけだとは知りませんでした。私が見つけた解決策は、knjersが提案しているものだと思いますが、それを読むまで、彼が何について話しているのかさえ一文で理解できませんでした。

投稿はこれです: ターミナル経由で変換

以前にこの問題の解決策を探す方法を見つけていたら、役に立たない投稿を1つ残していたでしょうが、同じ状況にある人もいるので、解決策を再開します。簡単に言えば、sfdiskが必要です。ファーストラン

Sudo sfdisk -d/dev/sdX

ドライブの詳細マップを取得するには(明らかに、Xはデバイス文字を表します。ドライブのコードがわからない場合は、Sudo fdisk -lを実行してドライブリストを取得します)。
それをテキストファイルにコピーし、パーティションテーブルを手動で編集して必要なものにします。注意してください、すべてを台無しにする可能性はかなり高いです。以前にUSBスティックでテストしましたが、正常に機能します。

とにかく、あなたがしなければならないのは、あなたが作成したい地図を見つけて、それをセクターの観点から表現することです。私のような状況(拡張パーティションを削除したい)の場合は、すべてが簡単です。つまり、論理を削除できますが、プライマリに変換して、拡張内に論理を1つだけ持つことができます。それ。 GPartedのような簡単な自動ツールでこの状況に到達できます。拡張の開始点と終了点を新しいプライマリに使用できるので簡単ですが、拡張を複数の論理で保持し、そのうちの1つをその外に移動したい場合(明らかに、それが可能である場合にのみ可能です)最後または最初のもの-そうでない場合は移動するだけです-プライマリ/拡張パーティションが3つ以下の場合)拡張の新しい開始/終了ポイントを正しく指定する必要があるため、編集は少し複雑になります他のすべてのプライマリなどを含めるため。

たとえば、この単純なマップがあるとします。最初に配置された拡張への1つの論理、スワップ、および巨大なデータパーティションです。

Sudo sfdisk -d/dev/sda

/ dev/sdaのパーティションテーブル
ユニット:セクター

/ dev/sda1:start = 2048、size = 80000000、Id = f
/dev/sda2:start = 80002048、size = 800000、Id = 82
/dev/sda3:start = 80802048、size = 800000000、Id = 83
/dev/sda4:start = 0、size = 0、Id = 0
/dev/sda5:start = 4096、size = 79997952、Id = 83

数字は、それがどのように機能するかを簡単に確認できるように、私が作成したものです。ご覧のとおり、可能な「真の」パーティションの最大数は4です。つまり、プライマリが4つ未満の場合でも、すべての論理は5から番号付けを開始します。また、/ dev/sda4は、パーティションが3つだけで論理がない場合にも、0から始まるタイプ0およびビッグ0として表示されます。 4つのプライマリのしきい値が常に表示されます。 Id83はLinuxextパーティション、82はLinuxスワップ (IDを持つパーティションタイプのリスト) 。ここで、拡張を論理パーティションとして置き換える論理パーティションを除いて、この正確なマップを保持したい場合は、(「パーティションテーブル」から)取得したコマンドの正確な出力を貼り付けて、次のように変更します。

/ dev/sdaのパーティションテーブル
ユニット:セクター

/ dev/sda1:start = 4096、size = 79997952、Id = 83
/dev/sda2:start = 80002048、size = 800000、Id = 82
/dev/sda3:start = 80802048、size = 800000000、Id = 83
/dev/sda4:start = 0、size = 0、Id = 0

私たちが行ったのは、拡張された(現在は5未満の位置を占めている)代わりに、元の制限(拡張の少し後に開始し、拡張の少し前に終了するため、独自の制限を設定する必要があります)を使用して論理を配置することだけでした。 ID 83(Linuxネイティブファイルシステム、最終的にプライマリとして定義)の拡張またはプライマリに予約されています。このように、新しいテーブルをインポートするときに、論理のすべてのファイルを含むチャンクがプライマリの一部として認識されますが、それらのいずれも削除されないため、完璧です。新しい構成をインポートするには、テキストファイルを保存して、次のコマンドを実行します。

Sudo sfdisk --force/dev/sdX <path/to/file/yournewpartitiontable.txt

重要:これはライブセッションから実行します。ハードディスクが使用されておらず、すべてのパーティションがアンマウントされていることが基本です。変更するドライブがシステムのものではない場合(セカンダリハードドライブ、外付けドライブ、USBペンドライブ/ SDカードなど)、問題ありません。すべてのパーティションがアンマウントされていることを確認してください。

GPartedメソッド:

GParted liveを起動して他のすべての論理パーティションを削除し、拡張してプライマリに切り替えたい論理をすべて含むようにしているときに、偶然に新しいメソッドに遭遇しました(使用したメソッドなので、それが機能することを保証します。無料のバックアップブロックが必要になり、拡張を削除する前に実際に新しいプライマリを作成するため、パーティションは4つ未満である必要があります)。

GPartedにはcopy関数があり、パーティションの正確なコピーを十分な大きさの空きブロックに作成します。私が行ったのは、拡張の外部に論理をコピーし、すべてが元のパーティションと同じように機能することを確認した後、論理と拡張を削除し、それらの代わりにすべてを移動して、データパーティションを拡張することだけでした。この方法は、100%手動ではないため、より安全ですが、はるかに長く(データパーティションが残りの空き領域を占有するようにし、5時間を必要とする380から440 GiBに拡大しました)、おそらくハードディスクにストレスがかかります。パーティションテーブルとシンボリック情報を直接変更する代わりに、その中でより多くのアクションを実行します。しかし、繰り返しになりますが、すべてを1つの操作で実行し、残りの空きスペースを占有し、パーティションを無駄なスペースなしで互いにくっつけます(sfdiskを使用すると、新しいプライマリに古い論理の境界を与えることができます。間に未使用のスペースを残します)。

これがお役に立てば幸いです、乾杯!

4
HisDudeness

論理パーティションの開始および終了LBAアドレスを使用し、MBRの4つのプライマリパーティションスロットの1つの開始および終了として入力するだけです。

SSDの場合は、8つのLBAセクターの倍数に調整されることを期待してください。 SSDは、すべてが少なくとも4096Bに調整されていると、長寿命になります。 128KBでさらに良くなります。

0
knjers

個人的には気にしません。 1つの論理パーティションを内部に持つ拡張パーティションを保持しても、実際に害はありません。論理パーティションのデータ構造が損傷したためにパーティションが失われるリスクはわずかですが、そのリスクは、パーティションツールを使用して論理パーティションをプライマリパーティションに変換する場合のリスクよりもおそらく少ないでしょう。

本当にやりたいと思っているなら、MBRシステムと現在のパーティションレイアウトによって課せられた制約の範囲内で、プライマリを論理に、またはその逆に変換できる私の FixParts プログラムをお勧めします。あなたが言ったことから、私はこの変換に問題がないと予想しています。手順は次のようになります。

  1. ディスク上でFixPartsを起動します
  2. pと入力してパーティションテーブルを表示し、FixPartsに必要なものがすべて表示されていることを確認します
  3. rと入力して、論理をプライマリに変更します。 (パーティション番号の入力を求められます。)
  4. pと入力してパーティションテーブルを再度表示し、すべてが正常であることを確認します。
  5. wと入力して、変更を保存します。

論理パーティションの開始セクターと終了セクターを記録し、それとそれに含まれる拡張パーティションの両方を削除してから、fdiskまたはpartedを使用して手動でパーティションを再作成することはできますが、それは余分な作業であり、それは人為的ミスの追加の機会を提供します。したがって、私はそのようにはしません-タイプミスが大混乱を引き起こす機会なしに自動的にそれを行うツールが存在するときではありません。

0
Rod Smith