パソコン鳥のブログ

アクセスカウンタ

zoom RSS SDカードは同じ型番でもサイズが違うので、バックアップイメージの縮小が必要なことがある

<<   作成日時 : 2018/07/03 20:22   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

SDカードは同じ型番のものでも、個々でサイズが微妙に異なるようです。

pi 3 - Win32diskImager "Not enough space on disk Size: 62652416 sectors. Available: 62333952" - Raspberry Pi Stack Exchange

この容量違いが問題になるのが、SDカードのバックアップと復元です。
復元時のSDカードの容量が小さいと、復元が失敗してしまい、大問題です。

先日、この問題にあたりました。

RaspberryPI で使用しているSDカードをイメージファイルとしてバックアップしていました。
SDカードが壊れたので、同じSDカードを買ってリストアしようとしたら、容量が足りないとのエラーで失敗しました。
型番も同じSDカードだったのですが・・


さて、復元できないのは非常に困ります。
幸い、下記サイトに対応方法がありました。
バックアップしていたイメージファイルのパーティションサイズを小さくする方法です。

[RaspberryPi]ディスクイメージを縮小する | BYLOMEDIA

「fdisk でパーティションサイズを変更する」の個所で、Ubuntu16では表示が若干異なりましたので、下記に実行例を記載します。


まず、バックアップイメージの構成を確認します。
なお、下記 /dev/loop0p2 の始点、終点の値は、後の手順で参照します。


# fdisk /dev/loop0

コマンド (m でヘルプ): p

Disk /dev/loop0: 16.1 GB, 16088301568 bytes
ヘッド 255, セクタ 63, シリンダ 1955, 合計 31422464 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x3e7fd08e

デバイス ブート 始点 終点 ブロック Id システム
/dev/loop0p1 8192 131071 61440 c W95 FAT32 (LBA)
/dev/loop0p2 131072 31422463 15645696 83 Linux


/dev/loop0p2 を削除します。
削除といっても、この後の手順で /dev/loop0p2 のサイズを設定し直すので、データ自体は消えません。


コマンド (m でヘルプ): d
パーティション番号 (1-4): 2


サイズを設定し直して /dev/loop0p2 を作成します。
開始セクタには、先の /dev/loop0p2 の始点を入力します。
Last セクタには、先の終点を入力します。
なお、下記手順中、作成するパーティションのセクタ数が偶数個になるように、Last セクタを指定したほうがいいです。
開始セクタの値が奇数なら、Lastセクタは偶数にします。
開始セクタが偶数なら、Lastセクタは奇数にします。
この例では、開始セクタが偶数(131072)なので、Lastセクタは奇数(31225849)にしています。


コマンド (m でヘルプ): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
パーティション番号 (1-4, 初期値 2): 2
開始 セクタ (2048-31422463, 初期値 2048): 131072
Last セクタ, +セクタ数 or +size{K,M,G} (131072-31422463, 初期値 31422463): 31225849


/dev/loop0p2 が作成されたか確認します。


コマンド (m でヘルプ): p

Disk /dev/loop0: 16.1 GB, 16088301568 bytes
ヘッド 255, セクタ 63, シリンダ 1955, 合計 31422464 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x3e7fd08e

デバイス ブート 始点 終点 ブロック Id システム
/dev/loop0p1 8192 131071 61440 c W95 FAT32 (LBA)
/dev/loop0p2 131072 31225849 15547389 83 Linux


変更を適用します。


コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。

警告: パーティションテーブルの再読込みがエラー 22 で失敗しました: 無効な引数です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。


後は、[RaspberryPi]ディスクイメージを縮小する | BYLOMEDIA の「kpartx でパーティションをデバイスのように接続」から続けます。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
SDカードは同じ型番でもサイズが違うので、バックアップイメージの縮小が必要なことがある パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる