実行時にシステムのルートパーティションのサイズを増やすにはどうすればよいですか?
ルートパーティション(ext4でもあります)の後に割り当てられていないパーティションがあります。サーバーをシャットダウンせずに、その未割り当てのスペースをルートパーティションに割り当てられたスペースに追加するにはどうすればよいですか?
実行時にシステムのルートパーティションのサイズを増やすにはどうすればよいですか?
ルートパーティション(ext4でもあります)の後に割り当てられていないパーティションがあります。サーバーをシャットダウンせずに、その未割り当てのスペースをルートパーティションに割り当てられたスペースに追加するにはどうすればよいですか?
回答:
GUI(Ubuntu 14.04以降):GParted v0.17以降は、これに適したGUIを提供します。(古いバージョンは、マウントされたパーティションのサイズ変更を拒否します)。
コマンドライン(すべてのUbuntuバージョン): これには3つのステップがあります。
手順1. 最初にパーティションのサイズを変更する必要があります。LVMを使用している場合、それは簡単であり、おそらくあなたは進む方法を知っているでしょう。クラシックパーティションを使用している場合は、もう少し複雑で、再起動が必要になる場合があります(ただし、別のシステムやライブCDを起動する必要はありません)。
これは私がそれを行う方法です:fdisk
最初にパーティションを削除するために使用し(アイデアはディスク上のデータが保持されるということです)、次に同じ位置でより大きなサイズで慎重に再作成します。
例:
$ sudo fdisk /dev/sda
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 9437183 4717568 83 Linux
Command (m for help): d
Selected partition 1
Command (m for help): p
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 2048 10485759 5241856 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
繰り返しますが、新しいパーティションは古いパーティションと同じブロックから開始することが重要です。Idも一致する必要があります(Linuxシステムの場合は83)。わずかな入力ミスですべてのデータを失う準備をしてください。
安全のために、を押してブートフラグを復元することもできます(Wikipediaによれば、一部のコンピューターではまだ必要です)a
。
スワップパーティションが邪魔になった場合の対処方法については、コメントセクションを参照してください。
今では人々がライブCDの使用を推奨する理由は明らかです。;-)
ステップ2は、
同様にfdisk
親切にあなたが進む前に、パーティションテーブルをリロードする必要があり、あなたを思い出させます。最も安全な方法は、単に再起動することです。partprobe
または、kpartx
(詳細)を使用することもできます。
手順3.
パーティションのサイズが変更され、パーティションテーブルが再resize2fs
読み込みされると、ファイルシステムで実行するだけで済み、ルートパーティションとしてマウントされている場合でも実行できます。
例:
$ sudo resize2fs /dev/sda1
fdisk
言うように、partprobe
またはkpartx
再起動の代わりに動作する可能性があります。この質問もご覧ください。再起動しても、ダウンタイムに関してはライブCDを使用するよりも、仮想マシンの場合は単純な再起動で10秒未満になる可能性があります。また、オペレーターの時間も短縮されるため、通常、このアプローチを自分で使用します。:)
free -h
)、スワップを無効にし(swapoff /dev/sda2
)、パーティションテーブルを変更し(スワップパーティションの削除と再作成を含む)、1)リブートまたは2)パーティションテーブルを再ロードしますswapon
。(メモリが一時的にスワップを無効にするにはきつすぎるなら、あなたはまだ作成して有効にすることができ、新しいスワップパーティションを(/dev/sda3
)、それからするswapoff sda2
;しかし、その後は更新する必要があります/etc/fstab
新しいスワップデバイス名で。)
ルートパーティションであっても、ext4ファイルシステムのオンラインサイズ変更を行うことができます。resize2fs
コマンドを使用します。
sudo resize2fs /dev/sda1
編集:オンラインでの縮小は許可されていません:
root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
man resize2fs
:The resize2fs program does not manipulate the size of partitions. If you wish to enlarge a filesystem, you must make sure you can expand the size of the underlying partition first. This can be done using fdisk(8) by deleting the partition and recreating it with a larger size or using lvextend(8),if you're using the logical volume manager lvm(8).
この質問は、ファイルシステムではなく、パーティションのサイズ変更に関するものです。区別は微妙ですが、非常に重要です。
The resize2fs program will resize ext2, ext3, or ext4 file systems. It can be used to enlarge or shrink an unmounted file system located on device. If the filesystem is mounted, it can be used to expand the size of the mounted filesystem, assuming the kernel supports on-line resizing. (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 and ext4.).
fdisk
時期growpart
をいじってはいけません。
より簡単な解決策-使用growpart <device> <partition>
:
growpart /dev/xvda 1 # Grows the partition; note the space
resize2fs /dev/xvda1 # Grows the filesystem
いつものように、念のためパーティションテーブル(sfdisk -d /dev/xvda > partition_bak.dmp
)をバックアップします。
sfdisk: /dev/nvme0n1p5: does not contain a recognized partition table
(Windowsでデュアルブートを使用)
gparted
することをお勧めします。
apt-get install cloud-utils
/dev/nvme0n1
です。p5は、このディスクのパーティション5です。従来のBSDディスクスライスと比較すると、同様の番号付けスキームが使用されています。
はい、再起動せずにオンラインルートパーティションを縮小/移動/拡張できます(livecdもusbkeyもなし):この回答を参照してください。非常に長く、少し危険ですが、非常によく書かれており、簡単に理解できます。したがって、ext4パーティションのみを拡張する場合は、従来の実用的なresize2fs
ソリューションに固執することができます。
私が考えた一般的なソリューションは、たとえば、あらゆるタイプの専用またはVPSソリューションで機能します。
TLDR; この解決策は、ルートパーティションを安全にライブおよびいじることができるようにすることpivot_root
を意味します。完了したら、新しいルートパーティションに戻ります。tmpfs
umount
pivot_root
これにより、ルートファイルシステムでのほとんどの操作が可能になります(移動、ファイルシステムの変更、物理デバイスの変更など)。
再起動なしには、プロセスに必要とされない、これは制限をバイパスすることを可能にするのresize2fs
に収縮することができない ext4
パーティションを。
私はこれを個人的に使用しましたが、debianシステムでも非常にうまく機能するため、Ubuntuでも機能するはずです。この詳細な解決策が、同じ問題を扱っているstackexchangeウェブサイトの多くの質問にもう少しリンクされていないことに私は非常に驚いています。
注:もちろん、パーティションを拡張したい場合resize2fs
は、多くの場所や他の回答で説明されているように、単純なもので十分です。
GPartedを利用することもできます-サイズ変更するパーティションが起動したパーティションでない限り-それ以外の場合、初心者にはライブCDオプションの方がやや簡単だと思います。
GPartedは基本的にすべてのステップを実行します-GUIを前面に置いただけです。
ルートがマウントされている間に、稼働中のシステムでext4ルートパーティションのサイズ変更を完了しました。
[root@habib i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.
[root@habib i686]#
@SørenLøvborgの答えを拡張したいと思います:存在するスワップパーティションでパーティションを拡張します。
最初に、拡張後のディスクのレイアウト:
$sudo parted /dev/sda 'unit s print' free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 14336000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 10485759s 10483712s primary ext4 boot
10485760s 10487805s 2046s Free Space
2 10487806s 12580863s 2093058s extended
5 10487808s 12580863s 2093056s logical linux-swap(v1)
12580864s 14335999s 1755136s Free Space
そのため、sda1はディスクの最後の空き領域で拡張する必要がありますが、スワップパーティションはそれらの間にあります。これはあなたがそれを行う方法です:
まず、スワップを無効にする必要があります。使用量と、オフにできるかどうかを確認してください。
$ free -h
total used free shared buff/cache available
Mem: 992M 52M 464M 3.2M 475M 784M
Swap: 1.0G 0B 1.0G
スワップはここでは使用されないため、オフにできます
$sudo swapoff /dev/sda5
次に、パーティションテーブルを変更します。
$sudo fdisk /dev/sda
(注:最初のパーティションが2048ではなくセクター63で始まる場合、オプションを追加する必要があります-c=dos
)
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 6.9 GiB, 7340032000 bytes, 14336000 sectors
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: 0x9e11c6df
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 10485759 10483712 5G 83 Linux
/dev/sda2 10487806 12580863 2093058 1022M 5 Extended
/dev/sda5 10487808 12580863 2093056 1022M 82 Linux swap / Solaris
Command (m for help): d
Partition number (1,2,5, default 5): 2
Partition 2 has been deleted.
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-14335999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-14335999, default 14335999): 12242941
Created a new partition 1 of type 'Linux' and of size 5.9 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (12242942-14335999, default 12242944):
Last sector, +sectors or +size{K,M,G,T,P} (12242944-14335999, default 14335999):
Created a new partition 2 of type 'Linux' and of size 1022 MiB.
Command (m for help): a
Partition number (1,2, default 2): 1
The bootable flag on partition 1 is enabled now.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
注:sda1のサイズは、セクターの合計量からスワップパーティションのセクターサイズを引いたものです:14335999-2093058 = 12242941
fdiskが言及しているように、カーネルはまだ古いパーティションテーブルを使用しているため、リロードする必要があります。
$partprobe
次に、sda1でresize2fsを実行する必要があります(これを忘れないでください!)
$resize2fs /dev/sda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 10
The filesystem on /dev/sda1 is now 38833617 (4k) blocks long.
今、物事はまだ終わっていません。お気づきのとおり、sda2はLinux(Ext4)タイプとしてパーティション分割されています。何らかの理由で、fdiskでタイプを選択する方法はありません。だから私たちはそれを使用してそれを交互にしなければなりませんcfdisk
$ sudo cfdisk
sda2を選択し、タイプをに変更し82 Linux swap / Solaris
て、必ず書き込みます(確認するにはyesと入力します)
これでスワップを再度有効化できます
$mkswap /dev/sda2
/dev/sda2
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0
そして最後に有効にします:
$swapon /dev/sda2
行う必要があるのは、fstabを更新して、ブート時にスワップパーティションを自動的にマウントすることだけです。
$sudo nano /etc/fstab
そして、スワップパーティションのUUIDを上記の出力に変更します。
# swap was on /dev/sda5 during installation
UUID=d58bf1cb-d27a-487d-b337-056767fd5ad6 none swap sw 0 0
これですべてが正常になり、問題なく再起動できます。
mkswap
&swapon
コマンドはsda2で実行する必要があります。投稿の冒頭で間違いを犯しましたswapoff
。sda5で実行する必要があります。コメントはいつでも歓迎します。書き留めるのは困難でした。
cryptdisks_stop
、次にの代わりに/ etc / crypttabを更新し、で/etc/fstab
cryptdisksを再起動する必要がありcryptdisks_start
ます。
Ubuntu 16.04、4.4.0カーネルのparted 3.2を使用して、メインパーティションを、、または一時的に削除せずumount
に正常にpivot_root
実行しました。注意するために、ネットワークを無効にした仮想コンソールからすべてを行い、念のためスナップショットを事前に作成しましたが、スナップショットは必要ありませんでしたので、SSHを介してランレベルを変更せずにこれを行うことができました。
パーティションサイズを決定します。 parted /dev/sda1 print | egrep "Disk.*GB"
必要に応じて、ネットワークなしでマルチユーザーモードに切り替えます(SSHではなくコンソールから行う必要があります)。
runlevel # remember the original runlevel
init 2
必要に応じて、VMスナップショットを作成して注意してください。
パーティションのサイズ変更:
parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q
ファイルシステムのサイズ変更: resize2fs /dev/sda1
問題が発生した場合は、ここでスナップショットを復元できます。すべてがうまくいった場合には、(上記で得られた)通常のランレベルに戻る-通常は5: init 5
。この時点で完全な再起動を行って、すべてが正常に戻ることを確認することをお勧めします(後で日付/ ntpの問題が発生しました)。
次の手順を実行します。
su
parted
p
して使用可能なパーティションを表示しますrm PARTITION NUMBER
して空き領域を作成することにより隣接するパーティションを削除します。resizepart ROOT NUMBER
必要に応じてシステムを入力して再起動し、ルートサイズを増やしますparted
入力exit
して端末タイプで終了し、partprobe
Enter キーを押します(再起動後でも実行できます)resize2fs /dev/sda PARTITION NUMBER
して、広々としたルートパーティションをお楽しみください。