実行時にシステムのルートパーティションのサイズを増やすにはどうすればよいですか?
ルートパーティション(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を意味します。完了したら、新しいルートパーティションに戻ります。tmpfsumountpivot_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/fstabcryptdisksを再起動する必要があり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の問題が発生しました)。
次の手順を実行します。
supartedpして使用可能なパーティションを表示しますrm PARTITION NUMBERして空き領域を作成することにより隣接するパーティションを削除します。resizepart ROOT NUMBER必要に応じてシステムを入力して再起動し、ルートサイズを増やしますparted入力exitして端末タイプで終了し、partprobeEnter キーを押します(再起動後でも実行できます)resize2fs /dev/sda PARTITION NUMBERして、広々としたルートパーティションをお楽しみください。