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 MiB
x >= 1
答え2
一般的に
それは動作しません。少なくともデータを移動したり、既存のパーティションを変更したりしないでください。
デフォルトのパーティションが不足している場合は、論理パーティションのみを追加できます。ただし、これは拡張パーティションの境界内になければなりません。したがって、ブロックデバイスの最後にある新しいスペースを使用できるようにするには、拡張パーティションがブロックデバイスの最後にある必要があります。その後、親境界をデバイスの新しい端に移動し、新しい論理パーティションを作成できます。
理論的には、拡張パーティションをプライマリパーティションに拡張し、偽の論理パーティション(どの目的にも使用しないでください)を作成して、プライマリパーティションを「上書きする」ことが可能です。パーティショニングツールはこれに反応します。これはすぐに災害が起こるように見えるので推奨しません。
考えられる解決策
これにより問題が発生しない場合は、sda3
論理sda4
区画に変換できます。私はこのようなことをしたことがありません。これが機能するには、論理パーティション間に32Kの間隔が必要であるため(接続リストとして実装されているため)、およびsda3
のsda4
サイズを少し小さくする必要があると思います。sda5
だからあなたはする必要があります
- このパーティションのファイルシステムを32K以上縮小
- この32Kだけパーティションの上限を移動します。
- 拡張およびデフォルトのパーティションエントリのサイズを変更します(一度にすべて推奨)。
最も簡単な方法は、おそらくダンプパーティションテーブルを使用してsfdisk -d /dev/sda
変更し(sda3
、sda6
) 、sda4
このsda7
設定をインポートすることです(sfdisk /dev/sda <modified_dump.sfdisk
)。
別の方法は、パーティションを削除し(その中のデータには影響しません)、パーティションを同じ開始セクタですが、より小さいサイズの論理パーティションとして作成することです(選択したパーティションツールを使用して)。両方のタスクを実行するには、別のメディアから起動する必要があります。
とにかく、元のパーティションテーブルのコピーを別のドライブに保存してください。