LVMを使用して、ハードディスクの中央にある拡張パーティションのサイズを変更します。

LVMを使用して、ハードディスクの中央にある拡張パーティションのサイズを変更します。

LVMの空き容量(50GB)を使用するためにパーティションを追加したいと思います。ディスクが数回拡大され、このパーティションに混乱が発生しました。どうすれば正常に戻り、空き容量を使用できますか?

# cfdisk /dev/sda
Disk: /dev/sda
Size: 200 GiB, 214748364800 bytes, 419430400 sectors
Label: dos, identifier: 0x000cc491

    Device      Boot   Start           End       Sectors      Size     Id Type
>>  /dev/sda1   *       2048        499711        497664      243M     83 Linux
    /dev/sda2         501758     167770111     167268354     79.8G      5 Extended
    └─/dev/sda5       501760     167770111     167268352     79.8G     8e Linux LVM
    /dev/sda3      167770112     209715199      41945088       20G     83 Linux
    /dev/sda4      209715200     314572799     104857600       50G     83 Linux
    Free space     314572800     419430399     104857600       50G

後で論理パーティションを追加できるように、拡張パーティションのサイズを最初に調整しました。しかし、これはうまくいきません。

(parted) print                                                            
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  256MB   255MB   primary   ext2         boot
 2      257MB   85.9GB  85.6GB  extended
 5      257MB   85.9GB  85.6GB  logical                lvm
 3      85.9GB  107GB   21.5GB  primary
 4      107GB   161GB   53.7GB  primary

(parted) resizepart                                                       
Partition number? 2                                                       
End?  [85.9GB]? 135.6                                                     
Error: Can't have the end before the start! (start sector=501758 length=-236914)

追加情報:

# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda3  root lvm2 a--  20.00g    0 
  /dev/sda4  root lvm2 a--  50.00g    0 
  /dev/sda5  root lvm2 a--  79.76g    0 

# lvs
  LV     VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   root -wi-ao---- 146.48g                                                    
  swap_1 root -wi-ao----   3.28g   

                                             
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  root   3   2   0 wz--n- 149.75g    0 

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0       145G  129G  8.6G  94% /
udev             10M     0   10M   0% /dev
tmpfs           1.6G  9.2M  1.6G   1% /run
tmpfs           4.0G     0  4.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0G     0  4.0G   0% /sys/fs/cgroup
/dev/sda1       228M   53M  164M  25% /boot
tmpfs           801M     0  801M   0% /run/user/1000

答え1

新しいパーティションを追加するのではなく、既存のパーティションを増やすのはどうですか?

すべてのパーティションはすでに単一のLVMボリュームグループの一部であるため、パーティションを追加する必要なく既存のパーティションを拡張するだけです。

parted /dev/sda -- resizepart 4 100%
pvresize /dev/sda4

これがこの問題を解決する最も簡単な方法です。


既存のパーティションの順序を解決するのは少し複雑です。この問題を解決する最も簡単で安全な方法は、新しいディスクを接続して移行することです。

データを適切に混在させることができます。以前にこれを行ったことがあります。PV1のLVMをPV2に移動。ただし、分割の問題によりこのソリューションを直接適用することはできず、分割されていないスペースをマッピングするとlosetup --offset誤ったオフセットが得られ、再起動後も維持されないため危険です。

別のオプションは、デフォルトパーティションと論理パーティションを区別しないGPTパーティションに変換して、必要なだけパーティションを作成できることです。ただし、これを行うと、ブートローダを再インストールするまでシステムを起動できなくなります。 Grubの場合は、64秒から2047秒の間に配置できるbios_grubパーティションも作成する必要があります(最初のパーティションの前、ソートを無視)。

これpvdisplayが表示されたら、各パーティションを1MiBずつ縮小し、プライマリ/論理パーティション間で変換することもできます。 msdos 論理区画情報は、これらの区画間の間隔に保管されるため、縮小が必要です。現在、sda5-sda3-sda4間にはこれらの間隔がないため、論理区画に直接マップすることはできません。not usable x.y MiBx >= 1

答え2

一般的に

それは動作しません。少なくともデータを移動したり、既存のパーティションを変更したりしないでください。

デフォルトのパーティションが不足している場合は、論理パーティションのみを追加できます。ただし、これは拡張パーティションの境界内になければなりません。したがって、ブロックデバイスの最後にある新しいスペースを使用できるようにするには、拡張パーティションがブロックデバイスの最後にある必要があります。その後、親境界をデバイスの新しい端に移動し、新しい論理パーティションを作成できます。

理論的には、拡張パーティションをプライマリパーティションに拡張し、偽の論理パーティション(どの目的にも使用しないでください)を作成して、プライマリパーティションを「上書きする」ことが可能です。パーティショニングツールはこれに反応します。これはすぐに災害が起こるように見えるので推奨しません。

考えられる解決策

これにより問題が発生しない場合は、sda3論理sda4区画に変換できます。私はこのようなことをしたことがありません。これが機能するには、論理パーティション間に32Kの間隔が必要であるため(接続リストとして実装されているため)、およびsda3sda4サイズを少し小さくする必要があると思います。sda5

だからあなたはする必要があります

  • このパーティションのファイルシステムを32K以上縮小
  • この32Kだけパーティションの上限を移動します。
  • 拡張およびデフォルトのパーティションエントリのサイズを変更します(一度にすべて推奨)。

最も簡単な方法は、おそらくダンプパーティションテーブルを使用してsfdisk -d /dev/sda変更し(sda3sda6) 、sda4このsda7設定をインポートすることです(sfdisk /dev/sda <modified_dump.sfdisk)。

別の方法は、パーティションを削除し(その中のデータには影響しません)、パーティションを同じ開始セクタですが、より小さいサイズの論理パーティションとして作成することです(選択したパーティションツールを使用して)。両方のタスクを実行するには、別のメディアから起動する必要があります。

とにかく、元のパーティションテーブルのコピーを別のドライブに保存してください。

関連情報