GNU/Linux >> Linux の 問題 >  >> Linux

ハードドライブのパーティション構造をコピーしています

<ブロック引用>

sda5 の名前を sda4 に変更する方法はありますか?

うん {それで、この質問の下に長い回答が存在するのです}

私の USB ペンドライブ /dev/sdc を例に取っています。状況に応じて変更してください

最初にドライブを確認してください:{目的のディスクを使用しているかどうかを確認するため }

<ブロック引用>

sudo fdisk -l /dev/sdc

Disk /dev/sdc: 14.32 GiB, 15376318464 bytes, 30031872 sectors
Disk model: Cruzer Blade    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba104c33

Device     Boot    Start      End Sectors  Size Id Type
/dev/sdc1           2048  3426303 3424256  1.6G 83 Linux
/dev/sdc2        3426304 12898303 9472000  4.5G 83 Linux
/dev/sdc3       12898304 20127743 7229440  3.4G  b W95 FAT32
/dev/sdc4       20127744 27377663 7249920  3.5G  5 Extended
/dev/sdc5       20129792 22233087 2103296    1G 83 Linux
<ブロック引用>

sudo sfdisk -d /dev/sdc

label: dos
label-id: 0xba104c33
device: /dev/sdc
unit: sectors
sector-size: 512

/dev/sdc1 : start=        2048, size=     3424256, type=83
/dev/sdc2 : start=     3426304, size=     9472000, type=83
/dev/sdc3 : start=    12898304, size=     7229440, type=b
/dev/sdc4 : start=    20127744, size=     7249920, type=5
/dev/sdc5 : start=    20129792, size=     2103296, type=83
<ブロック引用>

sudo parted -l /dev/sdc

Model: SanDisk Cruzer Blade (scsi)
Disk /dev/sdc: 15.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  1754MB  1753MB  primary   ext4
 2      1754MB  6604MB  4850MB  primary   btrfs
 3      6604MB  10.3GB  3701MB  primary   fat32
 4      10.3GB  14.0GB  3712MB  extended
 5      10.3GB  11.4GB  1077MB  logical   ext2

注意

  • パーティション テーブルの編集プロセス中に、すべてのパーティションがアンマウントされていることを確認してください。
  • ディスクにアクセスしたり、その内容を変更したりするアプリケーションはありません。

作業ツールを知る - sfdisk

マンページより

sfdisk は、任意のブロック デバイスを分割するためのスクリプト指向のツールです。

詳細を知りたい??

実行:man sfdisk

目的のドライブでツールを試す

sfdisk -d /dev/sdc

/dev/sdc の場合 ターゲットディスクです;

最初にパーティション テーブルをバックアップします sdc.bak

sfdisk -d /dev/sdc > sdc.bak

作業コピーを取得します - sdc.new

cp sdc.bak sdc.new

手を汚そう

sdc.new を開く お気に入りのエディターで

label: dos
label-id: 0xba104c33
device: /dev/sdc
unit: sectors
sector-size: 512

/dev/sdc1 : start=        2048, size=     3424256, type=83
/dev/sdc2 : start=     3426304, size=     9472000, type=83
/dev/sdc3 : start=    12898304, size=     7229440, type=b
/dev/sdc4 : start=    20127744, size=     7249920, type=5
/dev/sdc5 : start=    20129792, size=     2103296, type=83

パーティションの順序に注意してください

/dev/sdc1
/dev/sdc2
/dev/sdc3
/dev/sdc4
/dev/sdc5

パーティション シーケンスを次のようにしたい

/dev/sdc3
/dev/sdc4
/dev/sdc1
/dev/sdc2
/dev/sdc5

要するに、私の必要な変更:

/dev/sdc1 ------------> /dev/sdc3
/dev/sdc2 ------------> /dev/sdc4
/dev/sdc3 ------------> /dev/sdc1
/dev/sdc4 ------------> /dev/sdc2
/dev/sdc5 ------------> /dev/sdc5

sdc.new を編集 それに応じて

注-

  • パーティション番号以外の番号は変更しないでください。理由はご存知だと思います。
<ブロック引用>

sdc.new

label: dos
label-id: 0xba104c33
device: /dev/sdc
unit: sectors
sector-size: 512

/dev/sdc3 : start=        2048, size=     3424256, type=83
/dev/sdc4 : start=     3426304, size=     9472000, type=83
/dev/sdc1 : start=    12898304, size=     7229440, type=b
/dev/sdc2 : start=    20127744, size=     7249920, type=5
/dev/sdc5 : start=    20129792, size=     2103296, type=83

パーティションテーブルを書き戻す

sfdisk /dev/sdc < sdc.new

サンプル出力:

Checking that no-one is using this disk right now ... OK

Disk /dev/sdc: 14.32 GiB, 15376318464 bytes, 30031872 sectors
Disk model: Cruzer Blade    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba104c33

Old situation:

Device     Boot    Start      End Sectors  Size Id Type
/dev/sdc1           2048  3426303 3424256  1.6G 83 Linux
/dev/sdc2        3426304 12898303 9472000  4.5G 83 Linux
/dev/sdc3       12898304 20127743 7229440  3.4G  b W95 FAT32
/dev/sdc4       20127744 27377663 7249920  3.5G  5 Extended
/dev/sdc5       20129792 22233087 2103296    1G 83 Linux

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0xba104c33.
/dev/sdc1: Created a new partition 3 of type 'Linux' and of size 1.6 GiB.
Partition #3 contains a ext4 signature.
/dev/sdc4: Created a new partition 4 of type 'Linux' and of size 4.5 GiB.
Partition #4 contains a btrfs signature.
/dev/sdc5: Created a new partition 1 of type 'W95 FAT32' and of size 3.4 GiB.
Partition #1 contains a vfat signature.
/dev/sdc2: Created a new partition 2 of type 'Extended' and of size 3.5 GiB.
/dev/sdc3: Created a new partition 5 of type 'Linux' and of size 1 GiB.
Partition #5 contains a ext2 signature.
/dev/sdc6: Done.

New situation:
Disklabel type: dos
Disk identifier: 0xba104c33

Device     Boot    Start      End Sectors  Size Id Type
/dev/sdc1       12898304 20127743 7229440  3.4G  b W95 FAT32
/dev/sdc2       20127744 27377663 7249920  3.5G  5 Extended
/dev/sdc3           2048  3426303 3424256  1.6G 83 Linux
/dev/sdc4        3426304 12898303 9472000  4.5G 83 Linux
/dev/sdc5       20129792 22233087 2103296    1G 83 Linux

Partition table entries are not in disk order.

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

クロスチェックの時間

<ブロック引用>

sudo fdisk -l /dev/sdc

Disk /dev/sdc: 14.32 GiB, 15376318464 bytes, 30031872 sectors
Disk model: Cruzer Blade    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba104c33

Device     Boot    Start      End Sectors  Size Id Type
/dev/sdc1       12898304 20127743 7229440  3.4G  b W95 FAT32
/dev/sdc2       20127744 27377663 7249920  3.5G  5 Extended
/dev/sdc3           2048  3426303 3424256  1.6G 83 Linux
/dev/sdc4        3426304 12898303 9472000  4.5G 83 Linux
/dev/sdc5       20129792 22233087 2103296    1G 83 Linux

Partition table entries are not in disk order.
<ブロック引用>

sudo parted -l /dev/sdc

Model: SanDisk Cruzer Blade (scsi)
Disk /dev/sdc: 15.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 3      1049kB  1754MB  1753MB  primary   ext4
 4      1754MB  6604MB  4850MB  primary   btrfs
 1      6604MB  10.3GB  3701MB  primary   fat32
 2      10.3GB  14.0GB  3712MB  extended
 5      10.3GB  11.4GB  1077MB  logical   ext2

バックアップ パーティション テーブル sdc.bak からの復元がうまくいかない場合 -

sfdisk /dev/sdc < sdc.bak

これの一部を手伝うことができます。

ディスクが MBR パーティション テーブルを使用している場合、MBR は 4 つのプライマリ パーティションしかサポートできないため、ご想像のとおり、拡張パーティションを使用する必要があります。これが、GPT パーティション テーブルが好まれる理由の 1 つです。彼らにはその制限がありません。また、より大きなパーティションもサポートします。

Linux はディスク ドライブを調べると、ドライブ上で見つかった各パーティションにデバイスを順番に割り当てます。そのドライブが最初に検出されたドライブである場合、それは /dev/sda と呼ばれ、その上のパーティションは /dev/sda1 から始まるように割り当てられます。したがって、これらの名前を変更することはできません。

発生している問題の種類をデバイス名に依存しないことをお勧めします。ほとんどの人は、パーティションの UUID を使用してそれらを参照していますが、これは大きな改善です。私はさらに一歩進んで、一意で人間が読める意味のあるパーティション ラベルを使用してパーティションを参照します。複数のドライブがある場合、起動のたびにそれらが同じ順序で認識されるとは限りません。そのため、一度は /dev/sdb だったデバイスが、別のときには /dev/sdc になる可能性があります。システムに物理的に接続されるまでデバイス ファイルを取得できないリムーバブル ディスクがあると、状況はさらに悪化します。 UUID はより不変ですが、パーティションのサイズを変更したり移動したりすると変更されます。ラベルは変更されませんが、独自の名前を付ける必要があります。

/dev/sda4 がスキップされる理由がわかりません - 特にスワップがすでに /dev/sda2 に割り当てられている場合。それを修正する方法がわかりません。新しいドライブを見ると、/dev/sda4 があるはずの場所に「何か」があるはずです。 /dev/sda3 がディスクの残りの部分をいっぱいにするかもしれませんが、そうであったとしても、/dev/sda4 は依然としてその中の最初の拡張パーティションになると思います。または、逆に、ディスクの残りがいっぱいにならないため、/dev/sd3 拡張パーティション全体の後のスペースに /dev/sd4 が予約されています。

考えられる回避策として、別のコンピューターにアクセスできる場合は、その上に新しいドライブを構築し、すべての新しいパーティションの UUID またはラベルを取得してから、sed を介してすべてのスクリプトを実行し、すべてのデバイス参照を UUID を使用するように変更するか、ラベル。必要に応じて、GPT パーティショニング スキームに切り替えることもできます。


Linux
  1. シンプルなハードドライブのデータ回復

  2. パーティションのセクターサイズを見つけますか?

  3. パーティション全体またはハードドライブをスパースファイルにクローンしますか?

  1. LinuxでGNUPartedを使用してドライブをパーティション分割する

  2. ドライブ/パーティション番号がまだ使用されているのはなぜですか?

  3. Linuxでハードドライブをいっぱいにする方法

  1. Linuxでドライブをマウントするさまざまな方法?

  2. ボリューム、パーティション、ドライブの違いは?

  3. 新しいドライブに GRUB をインストールするには?