hack のためのネタ帳, etc,,,

状況

Btrfs で運用している仮想マシンの / が足らなくなったので
Microsoft Copilot へ以下の質問
Q
VirtualBox 上の以下の仮想ドライブ上で動かしてて、
```
$ VBoxManage list hdds | grep ec79e94d-0f78-467c-a408-870638a027a6 -A 7
UUID:           ec79e94d-0f78-467c-a408-870638a027a6
Parent UUID:    base
State:          locked write
Type:           normal (base)
Location:       C:\Users\kou\VirtualBox VMs\Ubuntu\Ubuntu.vdi
Storage format: VDI
Capacity:       20480 MBytes
Encryption:     disabled
```
仮想マシンからは、
```
$ sudo parted /dev/sda p
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sda: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了    サイズ  ファイルシステム  名前                 フラグ
 1    20.5kB  1049kB  1028kB                    BIOS boot partition  bios_grub
 2    1049kB  538MB   537MB   fat32             eps                  boot, esp
 3    538MB   21.5GB  20.9GB  btrfs             Linux filesystem
```
って見えてるんだけど、仮想マシンの /dev/sda3 を 40GB に増量する方法を教えて
A:
VirtualBoxで仮想マシンの`/dev/sda3`を40GBに増量するには、以下の手順を実行します。

1. **仮想ハードディスクのサイズを変更する**:
   - VirtualBoxのメインウィンドウで「ファイル」メニューから「仮想メディアマネージャー」を選択します。
   - 対象の仮想ディスク(Ubuntu.vdi)を選択し、「プロパティ」をクリックします。
   - 「サイズ」を新しい値(ここでは40GB)に設定し、「適用」をクリックします。

2. **ゲストOSでパーティションを拡張する**:
   - ゲストOSを起動し、ターミナルを開きます。
   - `sudo parted /dev/sda` コマンドを使用して、パーティションエディタを起動します。
   - `resizepart` コマンドを使用して、パーティション3のサイズを新しい最大サイズに変更します。
   - ファイルシステムがbtrfsの場合、`sudo btrfs filesystem resize max /` コマンドを使用して、ファイルシステムのサイズを拡張します。

3. **変更を確認する**:
   - `df -h` コマンドを使用して、新しいディスクサイズが反映されていることを確認します。

注意: このプロセスはデータ損失のリスクを伴う可能性があるため、操作を行う前には必ずバックアップを取ってください。また、VirtualBoxのバージョンやゲストOSの種類によっては、手順が異なる場合があります。詳細な手順や追加情報が必要な場合は、VirtualBoxの公式ドキュメントやオンラインのフォーラム、Q&Aサイトを参照すると良いでしょう¹²⁵。.

ソース: Bing との会話 2024/3/22
(1) 【VirtualBox】仮想マシンのディスク容量を増やすには?サイズ .... https://takabus.com/tips/552/.
(2) VirtualBoxにおけるCentOS7のディスク容量を増やす #Linux - Qiita. https://qiita.com/sakamoto051eng/items/960d7dc524e8b0341e5d.
(3) virtual box上のubuntuのディスク容量を拡張してみた #VirtualBox .... https://qiita.com/towamz/items/602b522cb2d648605fff.
(4) virtual box上のubuntuのディスク容量を拡張してみた #VirtualBox .... https://bing.com/search?q=VirtualBox+%2fdev%2fsda3+%e5%ae%b9%e9%87%8f+%e5%a2%97%e9%87%8f+%e6%96%b9%e6%b3%95.
(5) VMware 虚拟机根目录磁盘空间补足——给 /dev/sda3扩容 - 掘金. https://juejin.cn/post/7224006316895846457.
(6) 仮想化環境のディスク容量を拡張する - Avinton Japan. https://avinton.com/academy/extending-virtualbox-virtual-drive/.
(7) undefined. https://yukituna.com/2790/.
(8) undefined. https://beanhouse.org/wordpress/?p=1490.
(9) undefined. https://bing.com/search?q=.
(10) ja.wikipedia.org. https://ja.wikipedia.org/wiki/VirtualBox.

VM 動いたままだと vdi の resize が出来なかったので、一旦止めて 20GB から 40GB に増量
boot してみると root fs が mount 出来ないとか言われて kernel panic してしまい、しばらく悩む羽目に。

原因は容量不足のため
  • linux-image-5.15.0-101-lowlatency
のインストールが失敗してて、こっちから起動しようとしていたのが原因らしかったので、
SHIFT 押しながら起動して、GRUB menu 表示して、
  • linux-image-5.15.0-97-lowlatency
を選択することで無事起動出来た。

あとは、指示通り、parted で sda3 を拡張。
$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        20G   19G  912M  96% /
$ sudo parted /dev/sda
GNU Parted 3.4
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) resizepart                                                       
パーティション番号? 3                                                     
警告: パーティション /dev/sda3 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? Y                                               
終了?  [21.5GB]? ?                                                        
エラー: 不正な値です。
(parted) p
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sda: 42.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了    サイズ  ファイルシステム  名前                 フラグ
 1    20.5kB  1049kB  1028kB                    BIOS boot partition  bios_grub
 2    1049kB  538MB   537MB   fat32             eps                  boot, esp
 3    538MB   21.5GB  20.9GB  btrfs             Linux filesystem

(parted) help resizepart
  resizepart NUMBER END         パーティション NUMBER を END にリサイズする

	NUMBER は Linux カーネルによってパーティション番号として使われます。MS-DOS ディスクラベルでは、基本パーティション番号は 1
        から 4 までで、論理パーティションは 5 以降となります。
        END は、ディスク上の位置を 4GB や 10% などで表わします。負の値はディスクの終わりからの値になります。例えば、-1s
        は、最後のセクタを指します。
(parted) resizepart 3 -1s
警告: パーティション /dev/sda3 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? Y                                               
エラー: このパーティションで全ての制約を満たせません。
(parted) u s
(parted) p free
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sda: 83886080s
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始       終了       サイズ     ファイルシステム  名前                 フラグ
      34s        39s        6s         空き容量
 1    40s        2047s      2008s                        BIOS boot partition  bios_grub
 2    2048s      1050623s   1048576s   fat32             eps                  boot, esp
 3    1050624s   41940991s  40890368s  btrfs             Linux filesystem
      41940992s  83886046s  41945055s  空き容量

(parted) resizepart 3 83886046s
警告: パーティション /dev/sda3 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? Y                                               
(parted) q                                                                
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

見ての通りだが、新しい END を指定しないといけないが -1s は通らなかったので
p free で末尾の sector 確認して、直接指定している。

btrfs の filesystem を partition 一杯まで拡張
$ sudo btrfs filesystem resize max /                          
Resize device id 1 (/dev/sda3) from 19.50GiB to max
結果
$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        40G   19G   21G  47% /
という感じ。

Microsoft Copilot 先生、こういう所は割と的確な指示出してくれるようだ。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます