ディスク関連コマンド
情報表示:lsblk, blkid
パーティション作成:fdisk, cfdisk, gdisk, cgdisk, sgdisk, parted
マウント:mount, umount
ファイルシステム:mkfs, fsck
ファイルシステム(ext2/3/4)用: resize2fs, dumpe2fs, tune2fs
スワップ:mkswap, swapon, swapoff
SMART情報表示:smartctl
LVM:lvmdiskscan, pvdisplay, pvscan, lvdisplay, lvscan
不良セクタ対処:badblocks, ddrescue
どのディレクトリが容量を食っているか調べる:ncdu
太字のコマンドはutil-linuxに含まれており、整合性が取れていることが期待できる(と思う)。
ディスク、パーティションの情報を調べる
fdisk -l でほぼ全ての情報が分かる
MBRかGPTのどちらかは「ディスクラベルのタイプ」を見れば分かる。
どこにマウントされているかは表示されないのでmount
コマンドを使う。
# fdisk -l -o +UUID
ディスク /dev/vda: 20 GiB, 21474836480 バイト, 41943040 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 301D27AA-0BF9-4B81-9B4A-3138251A4FD7
デバイス 開始位置 最後から セクタ サイズ タイプ UUID
/dev/vda1 2048 206847 204800 100M Linux ファイルシステム 56713D43-4900-46EB-92D5-1D09C9449B11
/dev/vda2 206848 4401151 4194304 2G Linux スワップ D156FFCF-97DE-45EB-A6B0-21A9B876129A
/dev/vda3 4401152 41943006 37541855 17.9G Linux ファイルシステム C7A19722-4C31-4646-8ED4-DD4D86EFBC50
※ここで表示されるUUIDはファイルシステムのUUIDで、これとは別にディスクのUUIDというものもある(/etc/fstab
の第1フィールドで指定するのはディスクUUID)。そちらはlsblk -O
またはls -l /dev/disk/by-uuid
でわかる。
lsblk
lsblk -O
で全てのカラムを表示できる。
NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT LABEL UUID PARTTYPE PARTLABEL PARTUUID PARTFLAGS RA RO RM HOTPLUG MODEL SERIAL SIZE STATE OWNER GROUP MODE ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE TYPE DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO WSAME WWN RAND PKNAME HCTL TRAN SUBSYSTEMS REV VENDOR
sr0 sr0 11:0 128 0 1 1 QEMU DVD-ROM QM00003 1024M running root optical brw-rw---- 0 512 0 512 512 1 cfq 128 rom 0 0B 0B 0 0B 1 1:0:0:0 ata block:scsi:pci 2.0. QEMU
vda vda 254:0 128 0 0 0 20G root disk brw-rw---- 0 512 0 512 512 1 128 disk 0 0B 0B 0 0B 0 block:virtio:pci 0x1af4
├─vda1 vda1 254:1 ext4 /boot BOOT 8758e4e2-fdf4-4ef2-b364-6774a527dfcb 0fc63daf-8483-4772-8e79-3d69d8477de4 Linux filesystem 56713d43-4900-46eb-92d5-1d09c9449b11 128 0 0 0 100M root disk brw-rw---- 0 512 0 512 512 1 128 part 0 0B 0B 0 0B 0 vda block:virtio:pci
├─vda2 vda2 254:2 swap [SWAP] 89696d46-105c-437d-ab85-de8cad63608a 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f Linux swap d156ffcf-97de-45eb-a6b0-21a9b876129a 128 0 0 0 2G root disk brw-rw---- 0 512 0 512 512 1 128 part 0 0B 0B 0 0B 0 vda block:virtio:pci
├─vda3 vda3 254:3 ext4 / ROOT b6813928-7d95-4b7d-b822-09f99172e3ce 0fc63daf-8483-4772-8e79-3d69d8477de4 Linux filesystem c7a19722-4c31-4646-8ed4-dd4d86efbc50 128 0 0 0 17.9G root disk brw-rw---- 0 512 0 512 512 1 128 part 0 0B 0B 0 0B 0 vda block:virtio:pci
└─vda4 vda4 254:4 21686148-6449-6e6f-744e-656564454649 BIOS Boot Partition dffbd921-d583-4cb9-aba3-c759eb237807 128 0 0 0 1007K root disk brw-rw---- 0 512 0 512 512 1 128 part 0 0B 0B 0 0B 0 vda block:virtio:pci
-O
が使えない場合は-o +UUID
のように指定(指定可能なカラムはlsblk -h
で出てくる)。
blkidというのもある
blkidはUUIDやラベルを表示したり、それらの条件で検索するものらしい。
# blkid
/dev/vda1: UUID="8758e4e2-fdf4-4ef2-b364-6774a527dfcb" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="56713d43-4900-46eb-92d5-1d09c9449b11"
/dev/vda2: UUID="89696d46-105c-437d-ab85-de8cad63608a" TYPE="swap" PARTLABEL="Linux swap" PARTUUID="d156ffcf-97de-45eb-a6b0-21a9b876129a"
/dev/vda3: UUID="b6813928-7d95-4b7d-b822-09f99172e3ce" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="c7a19722-4c31-4646-8ed4-dd4d86efbc50"
man blkid
にはblkidよりlsblkを推奨と書いてある。
It is recommended to use lsblk(8) command to get information about block devices rather than blkid. lsblk(8) provides more information, better control on output formatting and it does not require root permissions to get actual information.
(blkidよりlsblkを使うことを推奨する。lsblkの方が詳しい情報を出力するし、出力フォーマットも細かく制御できるし、実際の情報を取得するためにroot権限を必要としない)
パーティションを切る
コマンド | 説明 |
---|---|
fdisk | 古来からあるコマンド。対話型。バッチ処理には不向き。util-linuxに含まれている。 |
cfdisk | cursesベースのfdisk。対話型。日本語表示されるし、使いやすそう。util-linuxに含まれている。 |
gdisk | GPT版fdisk。fdiskとは開発元が別で、util-linuxには含まれていない。 |
cgdisk | cursesベースのgdisk。対話型。作者はgdiskと同じRoderick W. Smith。 |
sgdisk | スクリプトベースのgdisk。非対話型。作者はgdiskと同じRoderick W. Smith。 |
parted | GNU製。 |
🐧 parted と gdisk で GPT ディスクのパーティショニング - 😃 mattintosh note 📝
http://mattintosh.hatenablog.com/entry/20140926/1411686000
ファイルシステム作成(mkfs)
# mkfs -t ext4 /dev/デバイス
ファイルシステムを識別するにはfile -s
# file -s /dev/vda1
/dev/vda1: Linux rev 1.0 ext4 filesystem data, UUID=8758e4e2-fdf4-4ef2-b364-6774a527dfcb, volume name "BOOT" (needs journal recovery) (extents) (huge files)
マウント
マウント
# mount /dev/デバイス /mnt/マウントポイント
またはUUIDを指定して
# mount UUID=0a5536e8-485c-43b2-XXXXXXXXXX /mnt/マウントポイント
マウントオプションを指定する
# mount /dev/デバイス /mnt/マウントポイント -o rw,relatime
-
relatime
は書き込みの時だけアクセス日時(atime)を更新する -
noatime
は決してアクセス日時(atime)を更新しない - どちらもパフォーマンスを向上させるが、
noatime
にするとmutt
など正常に動作しなくなるプログラムがある。 - その他のオプションは
man mount
を参照 -
/etc/fstab
でしか設定できないオプションもある
確認
# mount
アンマウント
# umount /mnt/マウントポイント
永続化させるには
/dev/デバイス /mnt/マウントポイント ext4 defaults 0 0
またはUUIDを指定して
UUID=0a5536e8-485c-43b2-XXXXXXXXXX /mnt/マウントポイント ext4 defaults 0 0
- 5番目のフィールドは
dump
コマンドの対象とするか - 6番目のフィールドは起動時に
fsck
をかける順番。0:非対象、1:ルートファイルシステム、2:その他
LVM関連
PV(Physical Volume)=物理的なディスク(またはパーティション)のこと
VG(Volume Group)=PVをまとめたもの
LV(Logical Volume)=PVの中に作った論理ディスク。LVをmountしたりmkfsしたりできる。
情報表示コマンドはlvmdiskscan
, lvscan
, lvdisplay
など。
Linux Hacks:LVMで楽々ディスク管理 (1/3) - ITmedia エンタープライズ
http://www.itmedia.co.jp/enterprise/articles/0709/05/news008.html
ext2/ext3/ext4用のコマンド
ext2/3/4ファイルシステムをリサイズ(resize2fs)
パーティションのサイズが変わった場合にファイルシステムをリサイズする。
Amazon Linuxの場合は起動時に自動的にresize2fsが実行されるので、手動実行しなくてもいいらしい。
ext2/3/4ファイルシステムに関する情報を表示(dumpe2fs)
ext2/3/4の場合はdumpe2fs /dev/デバイス
で
- 最後にマウントしたディレクトリ
をはじめ、詳細な情報が取得できる。
ただしここで表示される使用済みinode数などはリアルタイムなデータではなく、アンマウントしている状態でしか正しくない。それを知るにはdf -i
を使う方がよい。
df
で全ての情報を取得するには:
# df --output=source,fstype,itotal,iused,iavail,ipcent,size,used,avail,pcent,file,target
ファイルシス タイプ Iノード I使用 I残り I使用% 1K-ブロック 使用 残り 使用% File マウント位置
dev devtmpfs 62541 314 62227 1% 250164 0 250164 0% - /dev
run tmpfs 63215 367 62848 1% 252860 380 252480 1% - /run
/dev/vda3 ext4 1175040 377317 797723 33% 18344808 10084412 7305468 58% - /
tmpfs tmpfs 63215 1 63214 1% 252860 0 252860 0% - /dev/shm
tmpfs tmpfs 63215 11 63204 1% 252860 0 252860 0% - /sys/fs/cgroup
tmpfs tmpfs 63215 19 63196 1% 252860 12 252848 1% - /tmp
/dev/vda1 ext4 25688 367 25321 2% 95054 48031 39855 55% - /boot
tmpfs tmpfs 63215 5 63210 1% 50572 0 50572 0% - /run/user/0
tmpfs tmpfs 63215 1 63214 1% 30720 0 30720 0% - /mnt/tmpfs
予備領域のサイズを減らして空き容量を絞りだす(tune2fs)
万一のときのための予備領域(デフォルトでは5%らしいがAmazon Linuxでは違うようだ)
まず現状を確認
# tune2fs -l /dev/xvda1 | grep Reserved
Reserved block count: 94351
予備領域を 1% に設定する。
# tune2fs -m 1 /dev/xvda1
tune2fs 1.42.12 (29-Aug-2014)
Setting reserved blocks percentage to 1% (23587 blocks)
スワップ
スワップファイル作成。dd
よりfallocate
を使う方が速い。
512MBのスワップファイルを作成する
# fallocate -l 512M /swapfile
スワップ領域作成
デバイスをスワップ領域にする場合:
# mkswap /dev/デバイス
スワップファイルを使う場合:
# mkswap /swapfile
スワップセット(--verboseは省略可)
# swapon --verbose /dev/デバイス
スワップ確認
# swapon -s
スワップ解除(--verboseは省略可)
# swapoff --verbose /dev/デバイス
ディスク丸ごとコピー
ddrescue
dd は破損ブロックの処理がうまくない。破損ブロックがなければいいが、あるときは ddrescue を使った方がよい。