MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Linuxその他 - ディスクイメージのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Linuxその他 - ディスクイメージ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ディスクイメージは、ディスク全体またはパーティションの完全なコピーであり、後で復元や分析が可能である。<br> これは、システムのバックアップや移行、テスト等で非常に役立つ。<br> <br><br> == ディスクイメージファイルの拡張 == Linux OSのディスクイメージファイルをマウントして使用する場合、ディスクイメージファイルの空き領域が不足する時がある。<br> ここでは、ディスクイメージファイルのサイズを変更する手順について記載する。<br> <br> ==== 方法 1 (推奨) ==== まず、ディスクイメージファイルを確認する。<br> sudo fdisk -lu <ディスクイメージファイル>.img # 出力例 ディスク 2023-10-10-raspios-bookworm-arm64-lite.img: 2.54 GiB, 2722103296 バイト, 5316608 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x7788c428 デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ 2023-10-10-raspios-bookworm-arm64-lite.img1 8192 1056767 1048576 512M c W95 FAT32 (LBA) 2023-10-10-raspios-bookworm-arm64-lite.img2 1056768 5316607 4259840 2G 83 Linux <br> <code>dd</code>コマンドを使用して、空き領域を追加する。<br> 上記の例では、最初のパーティションはブートパーティション(カーネルとバイナリブロブ)、2番目のパーティションはファイルシステムである。<br> ディスクイメージファイルに空の空き領域を追加して、2番目のパーティションを拡張する。<br> sudo dd if=/dev/zero bs=1M count=3072 >> <元のディスクイメージファイル>.img # この例では、3[GB]を追加している <br> 空き領域を追加したディスクイメージファイルの情報を表示する。<br> この時、出力結果は空き領域が追加されたサイズ(以下の例では、5.54[GiB])と表示するが、ディスクイメージファイルの2番目のパーティションのサイズはまだ変更されていない。(以下の例では、2[G])<br> sudo fdisk -lu <元のディスクイメージファイル>.img # 出力例 ディスク 2023-10-10-raspios-bookworm-arm64-lite.img: 5.54 GiB, 5943328768 バイト, 11608064 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x7788c428 デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ 2023-10-10-raspios-bookworm-arm64-lite.img1 8192 1056767 1048576 512M c W95 FAT32 (LBA) 2023-10-10-raspios-bookworm-arm64-lite.img2 1056768 5316607 4259840 2G 83 Linux <br> これを解決するため、ディスクイメージファイルの空の追加領域の部分を埋めるようにパーティションのサイズを変更する必要がある。<br> まず、ループバックデバイスを作成する。<br> sudo losetup -f -P --show <元のディスクイメージファイル>.img # 出力例 /dev/loop0 <br> これにより、/dev/loop<span style="color:#C00000">X</span>がディスクイメージファイル全体、/dev/loop<span style="color:#C00000">X</span>p2がサイズ拡張するパーティションとして設定される。<br> 他のループバックデバイスを選択する場合は、未使用のループバックデバイスのドライブを割り当てる。<br> sudo fdisk -lu /dev/loop<span style="color:#C00000">X</span> # X : ループバックデバイス番号 # 実行例 sudo fdisk -lu /dev/loop0 # 出力例 ディスク /dev/loop0: 5.54 GiB, 5943328768 バイト, 11608064 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x7788c428 デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ /dev/loop0p1 8192 1056767 1048576 512M c W95 FAT32 (LBA) /dev/loop0p2 1056768 5316607 4259840 2G 83 Linux <br> 上記の出力例では、/dev/loop0p1はブートパーティション、/dev/loop0p2はルートパーティションである。<br> <br> 次に、<code>parted</code>を実行して、パーティションのサイズを変更する。<br> 2番目のパーティションのサイズを、<code>parted</code>コマンドのヘッダ出力の<u>Disk</u>または<u>ディスク</u>で始まる行で指定された/dev/loop<span style="color:#C00000">X</span>のフルサイズに変更する。<br> 以下の例では、<u>ディスク</u>は5943[MB]である。<br> sudo parted /dev/loop<span style="color:#C00000">X</span> <br> (parted) print # 出力例 モデル: Loopback デバイス (loopback) ディスク /dev/loop0: 5943MB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 4194kB 541MB 537MB primary fat32 lba, type=0c 2 541MB 2722MB 2181MB primary ext4 type=83 <br> 2番目のパーティションサイズを変更する。<br> 以下の例では、2番目のパーティション(ルートパーティション)をフルサイズに変更している。<br> (parted) resizepart <パーティション番号> <拡張するサイズ> # 実行例 (parted) resizepart 2 5943MB <br> 正常に拡張されているかどうかを確認する。<br> (parted) print # 出力例 モデル: Loopback デバイス (loopback) ディスク /dev/loop0: 5943MB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 4194kB 541MB 537MB primary fat32 lba, type=0c 2 541MB 5943MB 5402MB primary ext4 type=83 <br> <code>e2fsck</code>コマンドを実行して、拡張したディスクイメージファイルのファイルシステムを確認する。<br> sudo e2fsck -f /dev/loop<span style="color:#C00000">X</span>p<span style="color:#C00000">Y</span> # Xはデバイス番号, Yは拡張したパーティション番号 <br> <code>resize2fs</code>で拡張したディスクイメージファイルのファイルシステムを拡張する。<br> <u>※パーティションのサイズは既に変更しているので、ここではファイルシステムをリサイズ(拡張)する。</u><br> sudo resize2fs /dev/loop<span style="color:#C00000">X</span>p<span style="color:#C00000">Y</span> # Xはデバイス番号, Yは拡張したパーティション番号 <br> ディスクイメージファイルが正常に拡張されているかどうかを確認する。<br> sudo parted /dev/loop<span style="color:#C00000">X</span> (parted) print # 出力例 (正常に拡張されている場合) モデル: Loopback デバイス (loopback) ディスク /dev/loop0: 5943MB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 4194kB 541MB 537MB primary fat32 lba, type=0c 2 541MB 5943MB 5402MB primary ext4 type=83 <br> 最後に、ループバックデバイスを削除する。<br> sudo losetup -d /dev/loop<span style="color:#C00000">X</span> <br> ==== 方法 2 ==== まず、空のイメージファイルを作成する。<br> 以下の例では、拡張するサイズを5[GiB]としている。<br> truncate -s 5GiB <空のイメージファイル名>.img <br> 元のディスクイメージファイルと空のイメージファイルを結合する。<br> cat <元のディスクイメージファイル>.img <空のイメージファイル名>.img > <結合したディスクイメージファイル名>.img <br> 現在空いているループバックデバイスを確認する。<br> sudo losetup -f # 出力例 /dev/loop0 <br> 結合したディスクイメージファイルをループバックデバイスにマウントする。<br> sudo losetup /dev/loop<span style="color:#C00000">X</span> <結合したディスクイメージファイル名>.img # X : ループバックデバイス番号 <br> 正常にマウントできたかどうかを確認するため、ループバックデバイスの設定状況を確認する。<br> sudo losetup -a # 出力例 /dev/loop0: []: (<結合したディスクイメージファイル名>.img) <br> パーティションテーブルを確認する。<br> sudo fdisk -lu /dev/loop<span style="color:#C00000">X</span> # 出力例 Disk /dev/loop0: 5.6 GiB, 3054501888 bytes, 5965824 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: gpt Disk identifier: 00CF01F2-3FB1-498B-BFE9-BA5B68507014 デバイス 起動 Start 最後から セクタ Size Id タイプ /dev/loop0p1 2048 1048576 131072 511M c W95 FAT32 (LBA) /dev/loop0p2 1048576 13913020 13313020 4.1G 83 Linux ファイルシステム <br> 結合したディスクイメージファイルのパーティションを設定する。<br> sudo fdisk /dev/loop<span style="color:#C00000">X</span> # 出力例 Welcome to fdisk (util-linux 2.37.4). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. <br> まず、拡張するパーティションを削除する。<br> <code>d</code>キーを入力した後、拡張するパーティション番号を入力する。<br> コマンド (m でヘルプ): d パーティション番号 (1,2, default 2): 2 Partition 2 has been deleted. <br> 次に、拡張するパーティションの種類を選択する。<br> ここでは、プライマリとして使用するため、<code>n</code>キーを入力した後、<code>p</code>キーを入力する。<br> なお、extendedパーティション(拡張パーティション)は、主にスワップ向けに使用される。<br> コマンド (m でヘルプ): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p <br> 拡張するパーティション番号および拡張するサイズ(セクタ番号の最初と最後)を入力する。<br> デフォルトの値は、最大セクタサイズである。<br> パーティション番号 (2-4, default 2): 2 # 出力例 First sector (1048576-15913020, default 1048576): Last sector, +sectors or +size{K,M,G,T,P} (1048576-15913020, default 15913020): Created a new partition 2 of type 'Linux' and of size 7.1 GiB. <br> 拡張するパーティションタイプを指定する。<br> <code>t</code>キーを入力した後、パーティション番号およびLinuxファイルシステムを示すパーティションタイプである<code>83</code>を入力する。<br> コマンド (m でヘルプ): t パーティション番号 (1,2, default 2): 2 Partition type (type L to list all types): 83 # 出力例 Changed type of partition 'Linux' to 'Linux'. <br> 設定したパーティションを確認する。<br> <code>p</code>キーを入力する。<br> コマンド (m でヘルプ): p # 出力例 Disk /dev/loop0: 7.59 GiB, 8147483648 bytes, 14864445 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: gpt Disk identifier: 00CF01F2-3FB1-498B-BFE9-BA5B68507014 デバイス 起動 Start 最後から セクタ Size Id タイプ /dev/loop0p1 2048 1048576 1048576 511M c EFI システム /dev/loop0p2 1048576 15913020 14864445 7.1G 83 Linux ファイルシステム <br> 上記で設定したパーティションを書き込む。<br> <code>w</code>キーを入力する。<br> コマンド (m でヘルプ): w # 出力例 The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: 無効な引数です 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). <br> ループバックデバイスを削除する。<br> sudo losetup -d /dev/loop<span style="color:#C00000">X</span> <br> ディスクイメージをマウントする。<br> sudo mount -o loop,offset=<オフセット番号 (1セクタサイズ ✕ セクタの開始番号)> <結合したディスクイメージファイル名>.img <マウントするディレクトリ> <br> 拡張の設定をしたパーティションを拡大する。<br> # 設定されているループバックデバイス名を確認 sudo losetup -a # パーティションの拡大 sudo resize2fs /dev/loop<span style="color:#C00000">X</span> <br> 拡張したパーティションを確認する。<br> df # 出力例 /dev/loop0 1048576 15913020 14864445 35% /mnt <br><br> == SDカードのパーティションの拡張 == SDカードの場合は、SDカードをPCに挿入してパーティションのサイズを変更する。<br> イメージファイルをフラッシュした後にパーティションのサイズを変更する。<br> <br> パーティションのサイズを拡張するには、以下に示す2つの方法がある。<br> <br> * Growpartの使用 *# GrowPartをインストールする。 *#: <code>sudo zypper install growpart</code> *# GrowPartを実行して、パーティションのサイズを設定する。 *#: <code>sudo growpart /dev/mmcblk<span style="color:#C00000">X</span> <span style="color:#00A000">Y</span></code> # Xはストレージデバイス番号, Yはパーティション番号 *# パーティションのサイズを変更する。 *#: <code>sudo resize2fs /dev/mmcblk<span style="color:#C00000">X</span>p<span style="color:#00A000">Y</span></code> # Xはストレージデバイス番号, Yはパーティション番号 *: <br> * Partedの使用 (推奨) *# PCにSDカードを挿入する。 *# Partedを実行して、パーティションのサイズを設定する。 *#: <code>sudo parted /dev/sd<span style="color:#C00000">X</span></code> # Xはストレージデバイス番号 *#: <code>(parted) resizepart 2 100%</code> *#: <code>(parted) quit</code> *# パーティションのサイズを変更する。 *#: <code>sudo resize2fs /dev/sd<span style="color:#C00000">X</span><span style="color:#00A000">Y</span></code> # Xはストレージデバイス番号, Yはパーティション番号 <br> <u>※注意 1</u><br> <u>実機の内部からパーティションのサイズを変更することは禁止である。</u><br> <u>現在マウントされているパーティションのサイズを変更すると、奇妙な結果になることがある。</u><br> <br> <u>※注意 2 : PinePhone Beta/ProのeMMCの拡張</u><br> <u>PinePhone Beta/ProのeMMCを拡張する場合、Jumpdriveを使用して、PCとUSBケーブルで接続してeMMCに直接アクセスする。</u><br> <u>その後、eMMCのパーティションのサイズを変更する。</u><br> <br><br> == qcow2ファイルのサイズの拡張 == KVMで作成した仮想マシンのディスクファイル(qcow2ファイル)を拡張する。<br> なお、仮想マシンのセットアップが完了していることが前提となる。<br> <br> 仮想マシンのディスクファイルのリサイズは、<code>virsh</code>コマンドを使用する。<br> sudo virsh vol-resize <仮想マシン名 または 仮想マシンのパス> <ファイルサイズ> [--pool <プール名 または UUID>] [--allocate] [--delta] [--shrink] <br> ファイルサイズは、<code>50GB</code>、<code>50000MB</code>、または、<code>50GiB</code>、<code>5120MiB</code>等と記述する。<br> <br> <code>--allocate</code>オプションは、rawファイルにのみ対応しており、qcow2ファイルに対して指定するとエラーになるので注意する。 (基本的には使用しない)<br> <br> <code>--delta</code>オプションを付加しない場合、<ファイルサイズ>には変更後のサイズを指定する。<br> <code>--delta</code>オプションを付加する場合、代わりにサイズ拡張 / 縮小の差分の値を指定する。<br> <br> <code>--shrink</code>オプションを付加する場合、サイズを縮小する際に指定する。<br> 拡張の際に指定するとエラーとなることに注意する。<br> <br> ==== 拡張手順 ==== まず、プール名を確認する。<br> sudo virsh pool-list # 出力例 # Name State Autostart # ---------------------------------------------- # default active yes <br> プール名にある仮想マシン名を確認する。<br> sudo virsh vol-list --pool <プール名> # 出力例 # 名前 パス # ----------------------------------------------------- # RHEL_9 /run/media/suse/SAMSUNG860EVO/KVM/RHEL_9 <br> 現在のボリュームサイズを確認する。<br> sudo virsh vol-info --pool <プール名> <仮想マシン名 または 仮想マシンのファイルのパス> # 出力例 名前: RHEL_9.qcow2 タイプ: ファイル 容量: 40.00 GiB 割り当て: 12.19 GiB <br> 以下の例では、プール名 : defaultに存在するサイズ : 50[GiB]の仮想マシン名 : RHEL_9.qcow2を、50[GiB]に拡張している。<br> 以下に示す2種類のコマンドは、同様の結果になる。<br> <br> なお、<code>--delta</code>を使用する方が現在の容量を意識せずに済む。<br> sudo virsh vol-resize <仮想マシン名 または 仮想マシンのファイルのパス> --pool <プール名> --delta 10GiB # または sudo virsh vol-resize <仮想マシン名 または 仮想マシンのファイルのパス> --pool <プール名> 50GiB <br> 以下の例では、仮想マシンのファイルサイズを5[GiB]縮小している。<br> ファイルサイズの縮小する場合はデータを破壊するリスクがあるため、実行する前にバックアップを作成した方がよい。<br> sudo virsh vol-resize <仮想マシン名 または 仮想マシンのファイルのパス> --pool <プール名> --delta -5GiB --shrink # または sudo virsh vol-resize <仮想マシン名 または 仮想マシンのファイルのパス> --pool <プール名> 35GiB --shrink <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
Linuxその他 - ディスクイメージ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse