[TOP] / [PRG] / [PCB] / [FONT] / [ANDR] / [MEMO]
Debian13 ストレージを直接いじる
Debianだけじゃなく、Linux含む大体のUNIX系で通用するかもしれない内容。
この辺のコマンド例は、基本root権限で実行しないと動かない。
【!!警告!!】
この種のコマンドはめちゃくちゃ危険です!!
対象デバイスや記述にミスがあると、一瞬にして大事なストレージデータが全部消えてしまうため、細心の注意を払って実行すること!!
ここに書かれている内容を下手に実行したことによる損害が発生しても、自分は何の責任も取りません。
こうかいしませんね?

自分もコマンドを打つとき、デバイスとコマンドを三度以上指差し確認するレベルです。

ストレージそのものやパーティションのデバイス名
/dev以下にストレージを含むデバイスファイルが存在。
このデバイスファイルというのは、「デバイスをいじるためのプログラムの入ったファイル」ではなく、 「ファイルのようにアクセスすることでデバイスを直接いじれるファイル」です。

ストレージを直接いじれるデバイスファイルは、IDE,SATA,USBメモリなどは「sda, sdb, sdc ...」だったり、 NVMeなSSDなら「nvme0n1」とかだったり、SDカードとかだと「mmcblk0」だったりする。
そしてそのストレージ内のパーティションは「sda1, sda2, sda3 ...」と末尾に数字が入ったり、 「nvme0n1p1, nvme0n1p2 ...」や「nvme0n1p1, nvme0n1p2 ...」などp[数字]の形式だったり、いろいろあります。

しかしこれではどれがどのストレージなのか分かりにくく、事故が起きやすいので、 /dev/disk内にある「ストレージデバイス名(by-id)」や「ストレージの接続場所(by-path)」などを見るのが良さげ。
この中のファイルはリンクとなっており、対象のデバイスファイルへそのままアクセスできます。

# ls /dev/disk/by-id -l
合計 0
lrwxrwxrwx 1 root root  9 12月 1 01:48 ata-HDT722516DLA380_VDK91GTE0J8EUR -> ../../sda
lrwxrwxrwx 1 root root 10 12月 1 01:48 ata-HDT722516DLA380_VDK91GTE0J8EUR-part1 -> ../../sda1
lrwxrwxrwx 1 root root  9 12月 1 01:48 ata-Hitachi_HDT721032SLA360_STH207MT1YLMTS -> ../../sdb
lrwxrwxrwx 1 root root 10 12月 1 01:48 ata-Hitachi_HDT721032SLA360_STH207MT1YLMTS-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  9 12月 1 01:48 usb-USB_SanDisk_3.2Gen1_00002223112324212551-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 12月 1 01:48 usb-USB_SanDisk_3.2Gen1_00002223112324212551-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 12月 1 01:48 usb-USB_SanDisk_3.2Gen1_00002223112324212551-0:0-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 10 12月 1 01:48 usb-USB_SanDisk_3.2Gen1_00002223112324212551-0:0-part3 -> ../../sdc3
lrwxrwxrwx 1 root root  9 12月 1 01:48 wwn-0x5000cca306c765a4 -> ../../sda
lrwxrwxrwx 1 root root 10 12月 1 01:48 wwn-0x5000cca306c765a4-part1 -> ../../sda1
lrwxrwxrwx 1 root root  9 12月 1 01:48 wwn-0x5000cca35fdb8c3b -> ../../sdb
lrwxrwxrwx 1 root root 10 12月 1 01:48 wwn-0x5000cca35fdb8c3b-part1 -> ../../sdb1

ちなみに↑のは、アイオーのNASにDebian突っ込んだもの。USBメモリからDebianが起動してます。
ストレージをマウントする

# mount -t ext4 /dev/sda1 /mnt

ストレージを扱う上での基本。-tオプションでフォーマット形式を指定。 「mount.ext4」とか書いても指定できたり、ものによっては省略可能だったりもする。

アンマウントは「umount ディレクトリ」で。

# umount /mnt

ストレージまるごとコピー・バックアップ・リストア
この辺から迂闊に実行すると危険な領域に入ってきます。注意!

Linux等のシェルは、コマンド末尾に「>test.txt」とか書くと、コマンドによる出力を ファイルに書き出すことが出来ます。たとえバイナリでも、デバイスファイルでも。
また、「cat」コマンドで、指定したファイルの内容を出力します。 たとえバイナリファイルでも、デバイスファイルでも。

というわけで・・・

イメージ→デバイス(インストールメディアの作成など)
# cat debian-netinst.iso >/dev/sda
デバイス→イメージ(ストレージバックアップなど)
# cat /dev/sda1 >backup.img
デバイス→デバイス(ストレージまるごとコピーなど)
# cat /dev/sda >/dev/sdb

といった感じで、かんたんにコピー・バックアップ・イメージ書き込みが行なえます。

で、これをもっとリッチにできるのが「dd」コマンドです。
ブロックサイズ指定で速度向上とか、キャッシュ無効とか、一部だけとか、特定場所に書き込みとか・・・ 多用途に使えます。

HDDの安全な消し方例
# dd if=/dev/urandom of=/dev/sda bs=64K oflag=direct
# dd if=/dev/zero of=/dev/sda bs=64K oflag=direct

圧縮してバックアップ・リストア
「cat /dev/sda1 >backup.img」みたいなコマンドで、まるごとバックアップができるわけですが、ここでひと工夫。
間にgzipコマンドとかを挟むことで、イメージファイルを圧縮して保存させることが出来ます。
(実はgzip単体で完結するのでcatは不要だったり)
「gzip -c」で圧縮内容の標準出力、「gzip -cd」「gunzip -c」「zcat」のいずれかで展開内容の標準出力です。
パイプでつなぐ場合、gzip,gunzipの-cオプションは省略できます。

バックアップ
# cat /dev/sda1 | gzip >backup.img.gz
バックアップ(gzipだけでやる方法)
# gzip -c /dev/sda1 >backup.img.gz

リストア
# cat backup.img.gz | gzip -d >/dev/sda1
  or
# cat backup.img.gz | gunzip >/dev/sda1

リストア(gzip,gunzipだけでやる方法)
# gzip -cd backup.img.gz >/dev/sda1
  or
# gunzip -c backup.img.gz >/dev/sda1

リストア(zcat)
# zcat backup.img.gz >/dev/sda1

「gzip ファイル名」「gunzip ファイル名」「gzip -d ファイル名」だと、元ファイルを消しての標準出力せずの圧縮・展開となってしまうので注意です。

ちなみに、Debianインストーラではgzipが標準では使えませんので、圧縮は出来ません。
展開なら、gunzipかzcatでできます。
インストーラ環境でgzipを使いたい場合は、インストーラを入れたメディアにgzipをどっかに仕込んだり、 initrd.gzの編集を行う必要があります。
その他メモ
パーティションのフォーマットはmkfsでやる。

# mkfs.ext4 /dev/sda1


めんどくさいからパーティション操作をGUIでやりたい場合、gparted使うと楽。

# apt install gparted


で、gpartedをリモートマシンで実行し、クライアントマシンで操作する場合、こうする。けっこう便利。

$ ssh -Y user@192.168.xxx.xxx
$ pkexec /usr/sbin/gparted


[前へ] [トップページへ]