USB メモリ、HDD、SSD 等
dmesg
lsblk -f
fdisk -l
# /dev/sd[a][1]
これらはカーネルに認識された順番につけられる。
以降、sd[a][1] のような表記はそれぞれ対象としたい番号に置き換えるものとする。
パーティション操作コマンド
fdisk: MBRgdisk: GPTparted: 両方に使用可能古い方式。 BIOS 時代ではここからブートしていた。
新しい方式。 UEFI はここからブートできる。
USB メモリの場合、買ってきたものは多分 fat32 のパーティションが1つ存在する。 または extFAT とか。 他の場合もおそらく ext4 ではない。
fdisk /dev/sd[a]
# ヘルプに従って進む (p 情報表示)
# d パーティション削除
# n パーティション新規作成
# w 実際に書き込み
/dev/sda1 のようなパーティションデバイスファイルを渡さないよう注意。
fdisk はパーティションテーブル編集ツールなので、パーティションの中身ではなく
ディスク全体を渡す必要がある。
先頭の様子が怪しいという変な警告が出るので無視しないこと。
mkfs -t ext4 /dev/sd[a][1]
途中本当にいいか聞かれるのでリターンキー1回
blkid
mkdir /mnt/extssd
本運用前にパーミッションに注意する。
mount /dev/sd[a][1] /mnt/extssd
df -Th
umount /mnt/extssd
/etc/fstab に追加。 抜けている状態でブート失敗になるとよくないので nofail を付けた方がよいと思う。
デバイスは古くは /dev/sda1 のような名前で指定していたが、これは認識完了した
順番でつけられるので、同じ種類のデバイスがあると微妙な応答速度の差で入れ替わる
可能性があり非常に危険。よくこんなん使ってたな。
現代では UUID などの一意の識別子で指定できるようになっており、そうすべきである。
パーティションラベルは自分で好きな文字列をつけられるが、 被らないようにするのも自分の責任。 UUID は被らないように乱数でつけられているようた。
PARTUUID=6c586e13-01 /boot vfat defaults 0 2
PARTUUID=6c586e13-02 / ext4 defaults,noatime 0 1
PARTUUID=<uuid> /mnt/extssd ext4 defaults,noatime,nofail 0 0
...
mount --option を -- 抜きで --option のように指定する。mount -a で自動マウントしない(起動時含む)。このまま再起動した場合にブート時に死なないか以下で確認しておくこと。
mount -a
mountpoint <path>
umount /mnt/extssd
mount -a
# or
mount /mnt/extssd
df -T
バックアップは大事だが、その上でパーミッションにも気を付けよう!
BSD 系の nullfs (理解者少なそう。。)。 ファイル階層の一部を再マウントし、別のパスからも同一の内容にアクセスできるようになる。 マウントレイヤにおけるハードリンクのようなシンボリックリンクのような何か。 さすがに結構便利。
mount --bind olddir newdir
# サブマウントまで含める
mount --rbind olddir newdir
fstab での書き方は、マウントするデバイスのところに olddir のパスを、
マウント先に newdir のパスを書く。
ファイルシステムタイプは意味が無いので慣例的に none と書くらしい
(none でないといけないのかは不明)。
そしてオプションの部分に --bind から -- を剥ぎ取った bind を指定する。
olddir newdir none bind 0 0
デバイスファイルにランダムなデータを書き込んで破壊する。
shred -v /dev/sd[a]
当然のことながら大変危険なので要バックアップ。
まずパーティションを小さくする前にその中に入っているファイルシステムを 小さくする必要がある。
パーティションに対して fsck と resize fs を行う。
# 先にこれをやれと言われる
# デフラグもされるのかもしれない
e2fsck -f /dev/sda1
# 元の使用量を見ながら小さくする
resize2fs /dev/sda1 31G
e2 = ext2 だが ext3, ext4 にも対応。
サイズを変更するというよりは、パーティションを削除して同じ場所に 元より小さなパーティションを作る(普通に危険だがそういうものなので仕方がない)。
fdisk /dev/sd[a]
# 状況確認
p
# パーティションを削除
d
# パーティション新規作成 (primary/extended を聞かれるので primary)
# First sector は元のに合わせる
# Last sector は +/-size{K,M,G,T,P} のように相対指定できるので新しいサイズで入力
# うまくやると先頭に ext4 ヘッダがあるのを検出されるのでそのままにする
# Partition #1 contains a ext4 signature.
# Do you want to remove the signature?
n
p
# p で状態をよく確認して、書き込んで終了
w
# 引数なしで実行するとパーティションサイズいっぱいまで拡張してくれる
resize2fs /dev/sd[a][1]
# PARTUUID 確認
blkid
# /etc/fstab 編集