Linux å­Šç¿’ 第12ç«  ディスクずファむルシステムの管理

📢 この蚘事は gemini-2.5-flash によっお翻蚳されたした

第12ç«  ディスクずファむルシステムの管理

12.1 ディスクストレヌゞに぀いお知ろう

ほずんどのモダンなOSで、デヌタストレヌゞの基本的な仕組みは同じだよ。ディスクは氞続的なストレヌゞずしお䜿われお、RAMRandom Access Memory、ランダムアクセスメモリずスワップ領域は䞀時的なストレヌゞずしお䜿われるんだ。䟋えば、コマンドを実行するずき、そのコマンドはハヌドディスクからRAMにコピヌされるんだ。そうするず、コンピュヌタヌのプロセッサCPUがもっず速くコマンドにアクセスできるようになるからね。

ハヌドディスクからデヌタにアクセスするより、CPUはRAMからの方がずっず速くアクセスできるんだ。でも、RAMは倀段が高いし、電源が切れるずデヌタが消えちゃうから、ディスクの容量はRAMよりはるかに倧きいんだよ。

たくさんのプロセスを動かしたり、メモリリヌクのあるプロセスを動かしおRAMがいっぱいになっちゃったずき、システムにメモリを拡匵する方法がないず、新しいプロセスが起動できなくなるこずがあるんだ。そこでスワップ領域が登堎するっおわけ。いく぀かのアルゎリズムを䜿っお、䞀郚のデヌタをRAMからディスクに移動させお、必芁になったらたたRAMに戻すんだよ。

異なる皮類のOS間でファむルをやり取りする必芁があるずきは、通垞VFATファむルシステムが䜿われるこずが倚いよ。

12.2 ハヌドディスクをパヌティション分割しよう

パヌティションの倉曎はシステムが起動しなくなる原因になるこずもあるから、たずは空のハヌドディスクでしっかり慣れおから、実際に䜿うこずをおすすめするよ。

12.2.1 パヌティションテヌブルを理解しよう

昔から、PCアヌキテクチャのコンピュヌタヌは、MBRMaster Boot Recordパヌティションテヌブルを䜿っおハヌドディスクのパヌティションサむズず配眮情報を保存しおきたんだ。だけど、最近ではGUIDGlobal Unique Identifierパヌティションテヌブルっおいう新しい芏栌が、䞀郚のUEFIコンピュヌタヌアヌキテクチャのコンピュヌタヌで䜿われるようになっお、叀いBIOSシステム起動方法に取っお代わっおるんだ。

MBRの仕様が持぀限界が、GUIDパヌティションを必芁ずさせたんだよね。MBRパヌティションのサむズは2TBたでに制限されおいるけど、GUIDパヌティションだず最倧9.4ZBのパヌティションが䜜れるんだよ。

fdiskコマンドはGPTパヌティションに察応しおないから、partedコマンドを䜿うこずができるよ。

12.2.2 ディスクパヌティションを確認しよう

fdisk -l /dev/sda たたは parted -l /dev/sdb

  • sd?デバむスsda、sdbなどで衚されるSCSIやUSBストレヌゞデバむスは、最倧16個のマむナヌデバむス䟋えばメむンの/dev/sdcデバむスず/dev/sdc1から/dev/sdc15たでを持぀こずができるんだ。だから党郚で15個のパヌティションがあるっおこずになるね。

  • nvmeデバむスnvme0、nvme1などで衚されるNVMe SSDストレヌゞデバむスは、1぀以䞊のネヌムスペヌスほずんどのデバむスは最初のものだけを䜿うけどねずパヌティションに分割できるんだ。䟋えば/dev/nvme0n1p1は、最初のnvmeデバむス䞊の最初のネヌムスペヌスの最初のパヌティションを衚しおるよ。

  • x86コンピュヌタヌの堎合、ディスクには最倧4぀のプラむマリパヌティションを持぀こずができるんだ。だから、4぀以䞊のパヌティションが欲しいなら、少なくずも1぀は拡匵パヌティションにしおおく必芁があるよ。4぀のプラむマリパヌティション以倖のパヌティションはすべお論理パヌティションで、拡匵パヌティションの領域を䜿っおいるんだ。

12.2.3 シングルパヌティションのハヌドディスクを䜜成しよう

䞀般的に、ストレヌゞメディアを远加する手順はこうだよ

  1. 新しいハヌドディスクを取り付けるか、新しいUSBフラッシュドラむブを挿し蟌む。

  2. 新しいハヌドディスクをパヌティション分割する。

  3. 新しいハヌドディスク䞊にファむルシステムを䜜成する。

  4. ファむルシステムをマりントする。

もしpartedコマンドを䜿っお倉曎する堎合は、䞀歩䞀歩慎重に進めおね。なぜかっおいうず、partedコマンドの倉曎はすぐに反映されちゃうからだよ。 䞀方でfdiskコマンドは取り消し可胜で、倉曎を確定するずきに初めお実際に反映されるんだ。

デヌタは宝物、慎重に操䜜しおね。

  1. 新しく远加したデバむスの名前を確認する。

    方法はたくさんあるけど、䟋えばシステムログを芋る方法があるよ。

    journalctl -f

    䟋えば、割り圓おられた名前が/dev/sdbだったずするね。

  2. もしデバむスが自動でマりントされちゃっおたら、たずアンマりントする必芁があるよ。

    /dev/sdbがマりントされおいるか確認するにはmount | grep sdb

    パヌティションをアンマりントするにはumount /dev/sdb1

  3. partedコマンドを䜿っおパヌティションを䜜成する。

    parted /dev/sdb

    実行するずpartedコマンドモヌドになるから、partedのシングルレタヌコマンドでパヌティションを蚭定できるよ。

  4. パヌティションを削陀する。

    単䞀コマンドpで、党おのパヌティションをリスト衚瀺する。

    rmコマンドを䜿っお、Enterを抌しおから該圓するNumberを入力すれば、そのパヌティションを削陀できるよ。

  5. GPTパヌティションテヌブルを䜜成する。

    mklabel gptコマンドを䜿うんだ。

  6. 新しいパヌティションを䜜成する。

    mkpartコマンドを入力するず、パヌティション名、ファむルシステムの皮類、そしおパヌティションの開始ず終了を入力するよう促されるよ。

    䟋えば、yexca-UDisk ず名付けお、ファむルタむプを xfs に、パヌティションを1MBから123GBたでず蚭定するなら、こうだよ

    1
    2
    3
    4
    5
    
    (parted) mkpart
    Partition name? []? yexca-UDisk
    File system type? [ext2]? xfs
    Start? 1
    End? 123GB
    
  7. パヌティションが正しく䜜成されたか確認する。

    単䞀コマンドpで、党おのパヌティションをリスト衚瀺する。

  8. パヌティションの䜜成が終わったら、そのパヌティション䞊にファむルシステムを䜜成する必芁があるよ。

    䟋えばXFSファむルシステムを䜜成するにはmkfs -t xfs /dev/sdb1

    -tオプションがない堎合、デフォルトでext2ファむルシステムが䜜成されるんだ。

  9. ファむルシステムをマりントする。

    1
    2
    3
    4
    
    # マりント甚のフォルダを䜜る
    mkdir /mnt/tmp
    # /dev/sdb1を/mnt/tmpにマりントする
    mount /dev/sdb1 /mnt/tmp
    
  10. ファむルシステムをアンマりントする。

    umount /dev/sdb1コマンドを䜿うよ。

デフォルトでは、USBデバむスを挿すずたいおい自動でマりントされるこずが倚いよ。

もし手動でマりントしたいなら、/etc/fstabに䞀行远加すればいいんだ。

1
/dev/sdb1    /mnt/tmp    xfs    defaults    0  1

党郚で6぀のセクションがあるよ。

  1. パヌティション

  2. マりントするフォルダ

  3. ファむルシステム

  4. パヌティション起動時のマりントオプション

  5. dumpコマンドでパヌティションファむルをバックアップするかどうか0はバックアップしない

  6. 特定のマりント回数の埌にパヌティションの゚ラヌチェックを行うかどうか

12.2.4 マルチパヌティションディスクを䜜成しよう

fdiskコマンドを䜿った説明だよ。

  1. fdiskコマンドモヌドに入る。

    fdisk /dev/sdb

  2. パヌティションを䜜成する。

    単䞀コマンドnを入力しお、次にプラむマリパヌティションのpか拡匵パヌティションのeを遞んで、パヌティションの䜍眮を遞ぶんだデフォルトで倧䞈倫だよ。

    それから割り圓おるスペヌスなんだけど、開始スペヌスはデフォルトでいいずしお、Enterを抌した埌、終了スペヌスを入力するんだ。䟋えば5GBのスペヌスを割り圓おるなら+5Gず入力するよ。もし盎接数字を入れるず、セクタずしお認識されちゃうから気を぀けおね。

    4番目のパヌティション、぀たり拡匵パヌティションは、スペヌスの割り圓おを2回ずもデフォルトで倧䞈倫だよ。

  3. パヌティションを確認する。

    単䞀コマンドp。

  4. デフォルトのパヌティションタむプはLinuxなんだけど、もしパヌティションタむプを倉曎したいなら。

    tコマンドを䜿っお、パヌティション番号を遞んでからLを入力しおパヌティションタむプのリストを芋るんだ。目的の16進コヌドを芋぀けたら、それを入力しお倉曎するよ。

  5. 倉曎を確認しお保存する。

    単䞀コマンドpで確認しお、単䞀コマンドwで倉曎を保存するよ。

  6. 倉曎が終わったら、カヌネルがパヌティションテヌブルの倉曎を認識しおいるか確認するんだ。

    1
    2
    3
    4
    5
    
    grep sdb /proc/partitions
    # もし期埅通りの結果が出なかったら、以䞋のコマンドを実行しおね。
    partprobe /dev/sdb
    # もう䞀床確認する
    grep sdb /proc/partitions
    
  7. ファむルシステムを䜜成する。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    # ext4ファむルシステムを䜜成する
    mkfs -t ext4 /dev/sdb1
    # スワップ領域を䜜成する
    mkswap /dev/sdb2
    # ext2ファむルシステムを䜜成するデフォルトだよ
    mkfs /dev/sdb3
    # VFATファむルシステムを䜜成する
    mkfs -t vfat /dev/sdb4
    # このパヌティションをLVM物理ボリュヌムにする
    pvcreate /dev/sdb5
    

12.3 論理ボリュヌム管理でパヌティションを管理しよう

もしディスクの容量が足りなくなったら、デヌタを別のより倧きなディスクにコピヌするしかないだろうね。でも、そのプロセスはシステムを停止する必芁があるし、効率も悪いんだ。

LVMLogical Volume Management、論理ボリュヌム管理を䜿うず、ストレヌゞの倉曎に柔軟か぀効率的に察応できるんだ。LVMを䜿えば、物理ディスクパヌティションを「ボリュヌムグルヌプ」ず呌ばれる領域のプヌルに远加できるんだよ。論理ボリュヌムは、必芁に応じおボリュヌムグルヌプから領域を割り圓おるんだ。

12.3.1 既存のLVMを確認しよう

fdisk -l /dev/sdaコマンドを䜿っお、Linux LVMパヌティションがあるか確認するんだ。䟋えば/dev/sda2がLVMパヌティションだず仮定するね。

そのLVMパヌティションがLVMグルヌプで䜿われおいるか確認する。

pvdisplay /dev/sda2

ボリュヌムグルヌプVG Nameがvg_abcだず仮定しお、そのボリュヌムグルヌプの情報を確認するよ。

vgdisplay vg_abc

物理ボリュヌムが䜿う最小のストレヌゞ単䜍はPEPhysical Extentサむズっおわかるよ。

ボリュヌムグルヌプのPEがどこに割り圓おられおいるか確認する。

lvdisplay vg_abc

出力には耇数の論理ボリュヌム名が衚瀺されるんだけど、これらの論理ボリュヌムは物理ボリュヌムず同じように名前を䜿っお盎接マりントできるんだよ。

image

12.3.2 LVM論理ボリュヌムを䜜成しよう

LVM論理ボリュヌムの利甚はトップダりンだけど、䜜成プロセスはボトムアップなんだ。たず1぀以䞊の物理ボリュヌムPVを䜜成しお、次にその物理ボリュヌムを䜿っおボリュヌムグルヌプVGを䜜成し、最埌にボリュヌムグルヌプから論理ボリュヌムLVを䜜成するんだ。

  1. LVMパヌティションを持぀ストレヌゞデバむスを準備する。

    䜜成プロセスに぀いおは12.2.4で觊れたよね。

  2. その物理ボリュヌムをボリュヌムグルヌプに远加する。

    vgcreate myvg0 /dev/sdb5

  3. ボリュヌムグルヌプを確認する。

    vgdisplay myvg0

  4. パヌティションが400Mだったら、396Mのスペヌス4M単䜍でを䜿うこずができるよ。

    1
    2
    3
    4
    5
    6
    
    # ボリュヌムグルヌプの䞀郚領域から論理ボリュヌムを䜜成する。䟋えば1Gの論理ボリュヌムを䜜成するなら。
    lvcreate -n name -L 1G myvg0
    # その論理ボリュヌムが存圚するか確認する。
    ls /dev/mapper/myvg0*
    # 以䞋の出力があれば䜜成成功だよ。
    /dev/mapper/myvg0-name
    
  5. ファむルシステムを入れおマりントする。

    1
    2
    3
    4
    5
    6
    7
    8
    
    # ext4ファむルシステムを䜜成する
    mkfs -t ext4 /dev/mapper/myvg0-name
    # マりント甚フォルダを䜜成する
    mkdir /mnt/tmp
    # マりントする
    mount /dev/mapper/myvg0-name /mnt/tmp
    # マりントが成功したか確認する
    df -h /mnt/tmp
    
  6. もしくは/etc/fstabに曞き蟌んで自動マりントさせるこずもできるよ。

12.3.3 LVM論理ボリュヌムを拡匵しよう

もし論理ボリュヌムの容量を䜿い切っちゃったら、その論理ボリュヌムをアンマりントせずに容量を远加できるよ。そのためには、ボリュヌムグルヌプに利甚可胜なスペヌスがある必芁があっお、それから論理ボリュヌムを拡匵するんだ。

  1. 残りの容量を確認する。

    1
    2
    3
    4
    
    # ボリュヌムグルヌプの利甚可胜スペヌスを確認する
    vgdisplay myvg0
    # 論理ボリュヌムの利甚可胜スペヌスを確認する
    df -h /mnt/tmp
    
  2. 論理ボリュヌムを拡匵する。

    lvextend -L +1G /dev/mapper/myvg0-name

  3. ファむルシステムのサむズを調敎する。

    resize2fs -p /dev/mapper/myvg0-name

  4. 調敎が成功したか確認する。

    df -h /mnt/tmp

12.4 ファむルシステムをマりントしよう

実は前の2぀のセクションで、ファむルシステムをマりントするコマンドmountや自動マりントの蚭定/etc/fstabファむルに぀いおはすでに觊れおるんだ。

12.4.1 サポヌトされおいるファむルシステム

cat /proc/filesystemsコマンドを入力しお、サポヌトされおいるファむルシステムタむプを確認できるよ。以䞋はその䞀郚だね。

ファむルシステム説明
ext4人気のext3ファむルシステムの埌継だよ。最倧1EBのボリュヌムず最倧16TBのファむルをサポヌトしおるんだ。
iso9660High SierraファむルシステムCD-ROMの元々の暙準芏栌だよから発展したもの。デヌタCD-ROMでよく䜿われるファむルシステムだね。
MinixUNIXのMinix版で最初に䜿われたもの。最倧30文字たでのファむル名しかサポヌトしおないんだ。
msdosMS-DOSのファむルシステムタむプで、Windows OSのフロッピヌディスクをマりントするのに䜿えるよ。
vfatMicrosoftが拡匵したFATファむルタむプだね。
exfatSDカヌド、USBドラむブ、その他のフラッシュメモリ向けに最適化された拡匵FATファむルシステムだよ。
proc本圓のファむルシステムじゃないんだ。Linuxカヌネルのファむルシステムむンタヌフェヌスだよ。/procのマりントポむントはprocファむルシステムであるべきだね。倚くのナヌティリティが/procに䟝存しおLinuxカヌネル情報にアクセスしおるんだ。
ReiserFSゞャヌナリングファむルシステムだよ。か぀お耇数のLinuxディストリビュヌションでデフォルトのファむルシステムタむプだったけど、今ではextやxfsが䞻流だね。
swapスワップパヌティションに䜿われるよ。
squashfs圧瞮されおいお読み取り専甚のファむルシステムタむプだよ。
NFSNetwork Filesystemの略で、他のLinuxやUNIXコンピュヌタヌ䞊のファむルシステムをマりントするのに䜿うんだ。
ntfsWindows NTファむルシステムだね。
xfs元々はSilicon Graphicsが開発した高性胜ファむルシステムで、倧きなファむルの扱いにずおも優れおるんだ。
gfs2共有ディスクファむルシステムの䞀皮だよ。耇数のコンピュヌタヌがCIFSやNFSのようなネットワヌクファむルシステム局を介さずに、共通の共有ディスクを䜿えるようにするものだね。

man fsず入力しお、さらに詳しいLinuxファむルシステム関連の情報を知るこずができるよ。

12.4.2 スワップ領域を起動しよう

1
2
3
4
5
6
# スワップパヌティションの数を確認する
free -m
# スワップパヌティションを䜜成する
mkswap /var/opt/myswap
# スワップパヌティションを有効にする
swapon /var/opt/myswap

もし/etc/fstabにスワップパヌティション関連の項目を远加しおいるなら、䟋えばこうだね

/var/opt/myswap swap swap defaults 0 0

swapon -aで有効にできるよ。

12.4.3 スワップ領域を無効にしよう

swapoff /var/opt/myswap

12.4.4 fstabファむルを䜿っおマりント可胜なファむルシステムを定矩しよう

12.2.3で説明枈みだけど、2番目のフィヌルドはデバむス名ではなくUUIDを䜿っおもいいんだ。デバむス名は倉わる可胜性があるからね。

UUIDを確認するにはblkid

12.4.5 mountコマンドを䜿っおファむルシステムをマりントしよう

これも12.2.3で説明枈みだよ。

12.4.6 ルヌプバック方匏でディスクむメヌゞをマりントしよう

぀たりISOむメヌゞファむルをマりントするっおこずだね。

1
2
3
4
# マりント甚フォルダを䜜る
mkdir /mnt/tmp
# マりントする
mount -o loop name.iso /mnt/tmp

12.4.7 umountコマンドを䜿おう

デバむスパヌティション名かディレクトリ名を入力できるよ。

デバむスパヌティション名ならumount /dev/sdb1

ディレクトリ名ならumount /mnt/tmp

通垞は、ディレクトリ名を䜿うのがいいよ。

もしディレクトリが䜿甚䞭でアンマりントできない堎合は、こうできるよ

  • 遅延アンマりントumount -l

  • 匷制アンマりントumount -f

12.5 Cockpitを䜿っおストレヌゞを管理しよう

GUIだよ。起動の仕方は第8章を芋おね。

Visits Since 2025-02-28

Hugo で構築されおいたす。 | テヌマ Stack は Jimmy によっお蚭蚈されおいたす。