/Linuxコマンド

ファイル

ディスクとファイルシステム

mount・fdisk・mkfs・fsck・dd など、ディスクやUSBメモリ、イメージファイルを扱うコマンド。

lsblkディスクとパーティションの一覧

つながっているディスクとパーティションを木の形で一覧します。

bash
$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 388.4M  1 disk
sdc      8:32   0     1T  0 disk /
$ lsblk -f              # ファイルシステムの種類・ラベル・UUIDも表示
$ lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS

blkidUUID と種類を調べる

パーティションの UUID やファイルシステムの種類を調べます。

bash
$ sudo blkid
$ sudo blkid /dev/sdb1 -s UUID -o value     # UUID だけ

mount / umountマウントする / 外す

ディスクやイメージファイルをフォルダにつないで(マウントして)使えるようにしたり、外したりします。

bash
$ sudo mount /dev/sdb1 /mnt/usb
$ sudo mount -o ro /dev/sdb1 /mnt/usb        # 読み取り専用
$ sudo mount -o loop disk.img /mnt/img       # イメージファイルをマウント
$ sudo mount -t tmpfs -o size=1G tmpfs /mnt/ram   # メモリ上のディスク
$ sudo umount /mnt/usb
$ sudo umount -l /mnt/usb                    # 使用中でも切り離す(遅延)
$ mount | column -t                          # マウント中の一覧

findmntマウントの状態を木で見る

何がどこにマウントされているかを木の形で表示します。

bash
$ findmnt
$ findmnt /             # そこに何がマウントされているか
$ findmnt -t ext4

mountpointマウントポイントかどうか

そのフォルダがマウントポイントかどうかを確かめます。

bash
$ mountpoint -q /mnt/backup && echo "マウント済み"

/etc/fstab — 起動時の自動マウント

/etc/fstab
# <デバイス>                                <マウント先>  <種類> <オプション>        <dump> <fsck>
UUID=1b2c3d4e-...                           /data        ext4   defaults,noatime    0      2
bash
$ sudo mount -a         # fstab の内容を今すぐマウント(書き間違いの確認にもなる)

fdiskパーティションを作る(MBR / GPT)

ディスクのパーティションを表示・作成・削除します。

bash
$ sudo fdisk -l                  # すべてのディスクのパーティション
$ sudo fdisk /dev/sdb            # 対話的に編集(n 作成、d 削除、p 表示、w 書き込み、q 保存せず終了)

parted大きなディスクや GPT の編集

GPT や大きなディスクのパーティションを編集します。

bash
$ sudo parted /dev/sdb print
$ sudo parted /dev/sdb --script mklabel gpt mkpart primary ext4 0% 100%

sgdiskGPT をスクリプトで操作する

GPT のパーティションをコマンドだけで操作します。

bash
$ sudo sgdisk -p /dev/sdb
$ sudo sgdisk -Z /dev/sdb        # パーティション表を消す(注意)

mkfsファイルシステムを作る(フォーマット)

パーティションにファイルシステムを作ります(いわゆるフォーマット)。中身はすべて消えます。

bash
$ sudo mkfs.ext4 -L data /dev/sdb1       # ext4(ラベル data)
$ sudo mkfs.vfat -F 32 -n USB /dev/sdb1  # FAT32(Windows・Macとも読める)
$ sudo mkfs.ntfs -f /dev/sdb1            # NTFS(ntfs-3g)

fsckファイルシステムを検査・修復する

ファイルシステムの不整合を検査・修復します。

bash
$ sudo umount /dev/sdb1          # 先に外す
$ sudo fsck -f /dev/sdb1
$ sudo e2fsck -p /dev/sdb1       # 自動で安全な修復だけ行う

tune2fs / resize2fsext4 の設定とサイズ変更

ext4 の設定を変えたり、パーティションを広げたあとにファイルシステムも広げたりします。

bash
$ sudo tune2fs -l /dev/sdb1 | head        # 設定の確認
$ sudo tune2fs -L newlabel /dev/sdb1      # ラベルを変える
$ sudo resize2fs /dev/sdb1                # パーティションを広げたあと、ファイルシステムも広げる

ddディスクをそのまま読み書きする

ディスクやファイルをバイト単位でそのままコピーします。USB メモリに ISO を書き込むのによく使います。

bash
$ sudo dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress conv=fsync   # USBに書き込む
$ sudo dd if=/dev/sda of=disk.img bs=4M status=progress                 # ディスクをイメージに
$ dd if=/dev/zero of=test.bin bs=1M count=100                           # 100MBのファイルを作る
$ dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64                 # ランダムな文字列

fallocate大きなファイルを一瞬で作る

指定した大きさのファイルを一瞬で作ります。

bash
$ fallocate -l 2G big.img

losetupイメージファイルをデバイスとして扱う

イメージファイルをディスクのように扱えるようにします。

bash
$ sudo losetup -fP --show disk.img     # /dev/loop0 などにつなぐ(パーティションも認識)
$ sudo losetup -l                      # 一覧
$ sudo losetup -d /dev/loop0           # 外す

mkswap / swaponスワップを作る

スワップ(メモリが足りないときに使うディスク上の領域)を作って有効にします。

bash
$ sudo fallocate -l 4G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ swapon --show

sync書き込みを確定させる

USB メモリを抜く前や、dd のあとに実行します。

bash
$ sync

wipefsファイルシステムの目印を消す

ディスクからファイルシステムの目印を消します。

bash
$ sudo wipefs /dev/sdb           # 見るだけ
$ sudo wipefs -a /dev/sdb        # すべて消す(注意)