設定 - ストレージのフォーマットとパーティション

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

Linuxにおいて、新しいストレージを準備することは簡単である。

ここでは、以下の4つのセクションにおいて、ストレージのフォーマット手順を記載する。

  1. システム上のストレージを識別する。
  2. ストレージ全体にまたがる単一のパーティションを作成する。
  3. Ext4等のファイルシステムでパーティションをフォーマットする。
  4. ストレージを自動マウントおよび手動マウントする。



パーティションソフトウェアのインストール

Partedのインストール

ストレージのパーティションを分割する場合、partedを使用する。
このソフトウェアは、多くのLinuxディストリビューションにおいて、標準でインストールされている。

もし、インストールされていない場合は、パッケージ管理システム、または、ソースコードからインストールする。

  • パッケージ管理システムからインストールする場合
    # RHEL
    sudo dnf install parted

    # SUSE
    sudo zypper install parted

  • ソースコードからインストールする場合
    Partedのビルドに必要なライブラリをインストールする。
    sudo zypper install make gcc gcc-c++ gettext-runtime gettext-tools device-mapper-devel

    GNUの公式Webサイトにアクセスして、Partedのソースコードをダウンロードする。
    ダウンロードしたファイルを解凍する。
    tar xf parted-<バージョン>.tar.xz
    cd parted-<バージョン>

    Partedをビルドおよびインストールする。
    mkdir build && cd build

    ../configure --prefix=<Partedのインストールディレクトリ>
    make -j $(nproc)
    make install


GPartedのインストール

GUIからパーティションの分割を行う場合、GPartedをインストールする。

  • パッケージ管理システムからインストールする場合
    RHEL : sudo dnf install gparted
    SUSE : sudo zypper install gparted

  • ソースコードからインストールする場合
    GPartedのビルドに必要なライブラリをインストールする。
    sudo zypper install make gcc-c++ libuuid-devel parted-devel polkit-devel gnome-common gtkmm3-devel dmraid-devel

    GPartedの公式Webサイトにアクセスして、ソースコードをダウンロードする。
    ダウンロードしたファイルを解凍する。
    tar xf gparted-<バージョン>.tar.gz
    cd gparted-<バージョン>

    GPartedをビルドおよびインストールする。
    ../configure --prefix=<GPartedのインストールディレクトリ> \
    --enable-libparted-dmraid \ # libparted /dev/mapper dmraidをサポートする場合
    --enable-xhost-root # Waylandで表示する場合

    make -j $(nproc)
    make install


GPartedのデスクトップエントリファイルを作成する。

vi ~/.local/share/applications/GParted.desktop


# ~/.local/share/applications/GParted.desktopファイル
 [Desktop Entry]
 Type=Application
 Name=GParted
 GenericName=Partition Editor
 X-GNOME-FullName=GParted Partition Editor
 Comment=Create, reorganize, and delete partitions
 Exec=/<GPartedのインストールディレクトリ>/bin/gparted %f
 Icon=gparted
 Categories=GNOME;System;Filesystem;
 Keywords=Partition;
 Terminal=false
 StartupNotify=true


GPartedのPolKitポリシーファイルを作成する。

sudo vi /usr/share/polkit-1/actions/org.gnome.gparted.policy


 # /usr/share/polkit-1/actions/org.gnome.gparted.policy
 
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
  "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
 <policyconfig>
 
   <vendor>The GParted Project</vendor>
   <vendor_url>https://gparted.org</vendor_url>
   <icon_name>gparted</icon_name>
   <action id="org.gnome.gparted">
     <description>Run GParted as root</description>
     <message>Authentication is required to run the GParted Partition Editor as root</message>
     <defaults>
       <allow_any>no</allow_any>
       <allow_inactive>no</allow_inactive>
       <allow_active>auth_admin</allow_active>
     </defaults>
     <annotate key="org.freedesktop.policykit.exec.path">/<GPartedのインストールディレクトリ>/bin/gparted</annotate>
     <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
   </action>
 
 </policyconfig>



ストレージの識別

ストレージをフォーマットする前に、Linux上でストレージを識別する必要がある。
識別する方法は、パーティション分割スキームが無いことを確認することである。

partedコマンドを使用して、ストレージのパーティションレイアウトを一覧表示すると、
有効なパーティション構成を持たないストレージに対してエラーが発生する。
これを使用して、新しいストレージを識別できる。

sudo parted -l | grep error

# 出力
Error: /dev/sdb: unrecognised disk label


また、lsblkコマンドを使用して、関連付けられたパーティションが無いストレージを探すこともできる。

lsblk

# 出力
NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda     253:0    0   100G  0 disk 

└─sda1 253:1 0 100G 0 part /

sdb       8:0    0    50G  0 disk


ストレージに割り当てられた名前(sda、sdb、sdc等)が識別できると、ストレージの削除およびパーティションの分割を行うことができる。


パーティションの削除

パーティションを消去するには、ddコマンドを実行する。
ddコマンドでは、ifパラメータはデータの送信元を決定して、ofはコピー先を示す。
以下のコマンドは、ストレージのデータを全てすべて消去(ゼロに置き換える)する。

sudo dd if=/dev/zero of=/dev/sdX status=progress  # X : デバイス番号



パーティションの作成

このセクションでは、ストレージ全体にまたがる単一のパーティションを作成する。

パーティション形式(GPT / MBR)の選択

最初に、使用するパーティション形式を指定する必要がある。
特別な事情がない場合は、GPTを使用することを推奨する。

GPT形式を選択する場合は、以下のコマンドを実行する。

sudo parted /dev/sdX mklabel gpt  # X : デバイス番号


MBR形式を選択する場合は、以下のコマンドを実行する。

sudo parted /dev/sdX mklabel msdos  # X : デバイス番号


パーティションの作成

次に、ストレージ全体にまたがるパーティションを作成する。

sudo parted -a opt /dev/sdX mkpart primary ext4 0% 100%


lsblkコマンドを確認すると、利用可能な新しいパーティションが表示される。

lsblk

# 出力例
NAME     MAJ:MIN  RM   SIZE RO TYPE MOUNTPOINT
sda        8:0     0   100G  0 disk 
└─sda1   8:1     0   100G  0 part / 
sdb      253:0     0    50G  0 disk 
└─sdb1 253:1     0    50G  0 part



ファイルシステムの作成

Ext4

Ext4ファイルシステムとしてフォーマットするには、mkfs.ext4コマンドを実行する。
また、-Lオプションを付加することで、パーティションラベルを追加できる。これは、ストレージを識別するのに役立つ。

sudo mkfs.ext4 -L datapartition /dev/sdXY  # X : ストレージ番号,  Y : パーティンション番号


※注意
ストレージ全体ではなく、パーティションを渡すようにすること。(sdbではなくsdb1と入力する)
Linuxにおいて、ストレージ名はsda、sdb、hda等である。これらのパーティションの末尾には番号が付加されており、sda1等を使用する。
もし、NVMe SSDを使用している場合は、ストレージ名がnvme0n1等と表示される。

また、後でパーティションラベルを変更する場合は、e2labelコマンドを使用する。

sudo e2label /dev/sdXY <新しいラベル名>  # X : ストレージ番号,  Y : パーティンション番号


lsblk --fsコマンドを実行して、パーティションの識別を確認する。
このコマンドにより、パーティションの名前、ラベル、およびUUIDが確認できる。

lsblk --fs


バージョンに適切なフィールドが全て表示されない場合は、以下のコマンドを実行する。

lsblk -o NAME,FSTYPE,LABEL,UUID,PARTUUID,FSAVAIL,FSUSE%,MOUNTPOINT

# 出力
NAME     FSTYPE   LABEL         UUID                PARTUUID                              FSAVAIL FSUSE% MOUNTPOINT
sda                                                              
└─sda1   ext4   datapartition F2769EBE769E82D1    4b313333-a7b5-48c1-a957-d77d637e4fda  494.4M      1%
sdb                                                              
└─sdb1   ext4   DOROOT        1000CC2F00CC1E1A    050e1e34-39e6-4072-a03e-ae0bf90ba13a   16.6G     33% /


F2FS

F2FSファイルシステムとしてフォーマットするには、mkfs.f2fsコマンドを実行する。
-fオプションは、強制的にフォーマットを行うためのオプションである。
また、-lオプションを付加することで、パーティションラベルを追加できる。これは、ストレージを識別するのに役立つ。

sudo mkfs.f2fs -fl <ラベル名> -O extra_attr,inode_checksum,sb_checksum /dev/sdXY  # X : ストレージ番号,  Y : パーティンション番号


  • ファイルベースの暗号化対応
    Linux 4.2以降、F2FSはファイルの暗号化をネイティブでサポートしている。
    暗号化はディレクトリレベルで行われ、ディレクトリごとに異なる暗号化キーを使用することができる。
    これは、ブロックデバイスレベルの暗号化であるdm-cryptや、スタック型暗号ファイルシステムであるeCryptfsとは異なるものである。
    F2FSのネイティブ暗号化を使用して、F2FSファイルシステムを作成する。
sudo mkfs.f2fs -fl <ラベル名> -O extra_attr,inode_checksum,sb_checksum,encrypt /dev/sdXY  # X : ストレージ番号,  Y : パーティンション番号


F2FSファイルシステムのチェックと修復を行う場合は、f2fs-toolsが提供するfsck.f2fsコマンドを実行する。

# ファイルシステムをチェックする
sudo fsck.f2fs /dev/sdXY  # X : ストレージ番号,  Y : パーティンション番号

# 結果に応じて、不整合を修復する
sudo fsck.f2fs -f /dev/sdxXY  # X : ストレージ番号,  Y : パーティンション番号


exFAT

exFATファイルシステムとしてフォーマットするには、mkfs.exfatコマンドを実行する。
また、-nオプションを付加することで、パーティションラベルを追加できる。

sudo mkfs.exfat -n <ストレージのラベル> /dev/sdXY
例. sudo mkfs.exfat -n SAMPLE_LABEL /dev/sdb1


※注意
ストレージ全体ではなく、パーティションを渡すようにすること。(例. sdbではなくsdb1と入力する)
Linuxにおいて、ストレージ名はsda、sdb、hda等である。これらのパーティションの末尾には番号が付加されており、sda1等を使用する。
もし、NVMe SSDを使用している場合は、ストレージ名がnvme0n1等と表示される。

また、後でパーティションラベルを変更する場合は、exfatlabelコマンドを使用する。

sudo exfatlabel <デバイス名> <ラベル名>
例. sudo exfatlabel /dev/sdb1 SAMPLE_LABEL


また、フォーマットが正常に行われたかどうかを確認することもできる。

sudo fsck.exfat <デバイス名>
例. sudo fsck.exfat /dev/sdb1


GNOME Disksを使用してフォーマットする手順を以下に示す。

  1. メイン画面左から、フォーマットするストレージを選択する。
  2. メイン画面右にある[ボリューム]項目の歯車アイコンを選択する。
  3. [その他]のファイルシステムを選択して、[次へ]ボタンを押下する。
  4. [exFAT]を選択して、[作成]ボタンを押下する。
    exFATのフォーマットが開始される。


NTFS

まず、NTFSのフォーマットに必要なパッケージをインストールする。

# RHEL
sudo dnf install epel-release
sudo dnf install --enablerepo=epel ntfsprogs

# SUSE
sudo zypper install ntfsprogs


NTFSとしてフォーマットするには、mkfs -t ntfsコマンドを使用する。
また、-Lオプションを付加することで、パーティションラベルを追加できる。これは、ストレージを識別するのに役立つ。
mkfs -t ntfsコマンドの代わりに、mkfs.ntfsコマンドを使用することもできる。

sudo mkfs -t ntfs -L <ストレージのラベル名> /dev/sdX


クイックフォーマットを実行する場合は、-Qオプションを付加する。

sudo mkfs -t ntfs -Q -L <ストレージのラベル名> /dev/sdX


フォーマットしたファイルシステムを確認する場合は、以下のコマンドを実行する。

sudo parted -l



特殊なフォーマット : FAT32

Windows 10

フォーマットを行う前に、FAT32ファイルシステムでフォーマットするストレージを接続する。
ストレージに割り当てられている文字を確認する。

Powershellを起動して、以下のコマンドを実行する。
ここでは、FAT32でフォーマットするストレージをFドライブとする。

format /FS:FAT32 F:


次に、[Enter]キーを押下する。
ストレージ上の全てのデータが消去されることを警告するメッセージが表示されるので、[Y]キーを押下する。
[Y]キーを押下すると、フォーマット処理が開始する。

RHEL / SUSE

まず、ストレージをFAT32ファイルシステムでフォーマットするため、以下のパッケージをインストールする。

# RHEL
sudo yum install dosfstools

# SUSE
sudo zypper install dosfstools


次に、フォーマットを行うストレージ名を確認する。
ここでは、/dev/sdcとする。

sudo fdisk -l


最後に、以下のコマンドを実行して、フォーマットを行う。
フォーマットを行う前に、ストレージ上にパーティションを作成しておく必要があるので注意すること。

sudo mkdosfs -F 32 -I /dev/sdc1



特殊なフォーマット : Linuxのインストールに使用したストレージ

もし、Linuxディストリビューションのインストールに使用したストレージを再利用する場合、以下に示すようなフォーマットを実行する。

  1. GPartedやpartedコマンド等を使用して、新しいMS-DOSパーティションを作成する。
    以下の例では、partedコマンドを使用したフォーマットおよびパーティションを作成している。
    1. フォーマットを行うストレージを選択する。
      sudo parted /dev/sdX
      例: sudo parted /dev/sdb

    2. ストレージをフォーマットする前に、mklabelコマンドを実行してラベルを作成する必要がある。
      (parted) mklabel gpt

    3. 次に、パーティションを作成する。
      以下の例では、パーティション名を"primary"、FAT32タイプ、パーティションサイズは0%から100%までとしている。
      (parted) mkpart
      パーティションの名前? []? primary
      ファイルシステムの種類? [ext2]? FAT32
      開始? 0%
      終了? 100%

    4. パーティションの作成が完了した後、printコマンドを実行して、パーティションを確認する。
      (parted) print

  2. 残存しているブートローダのデータを削除する。
    この操作を行わない場合、残存しているブートローダから起動しようとすることに注意する。
    # MBRパーティションの場合
    sudo dd if=/dev/zero of=/dev/sdX bs=8k seek=1 count=4

    # GPTパーティションの場合 (GPTパーティションテーブルの場合は、8[KB]ではなく128[KB]のオフセットでインストールされる)
    sudo dd if=/dev/zero of=/dev/sdX bs=32k seek=4 count=1



ファイルシステムのマウント

パーティションの作成が完了すると、ファイルシステムをマウントして使用できるようになる。

Filesystem Hierarchy Standardでは、一時的にマウントされたファイルシステムは/mntディレクトリまたはその直下のサブディレクトリを使用することを推奨している。
このセクションでは、ストレージを/mnt/dataディレクトリ下にマウントする。

sudo mkdir -p /mnt/data


ファイルシステムの一時的なマウント

以下のコマンドを実行して、ファイルシステムを一時的にマウントできる。

sudo mount -o defaults /dev/sda1 /mnt/data


ファイルシステムの自動マウント

Linuxの起動時にファイルシステムを自動的にマウントする場合は、/etc/fstabファイルを変更する。
UUIDまたはPARTUUIDで記述することを推奨する。

sudo vi /etc/fstab

# /etc/fstabファイル
/dev/sdb1       /mnt/data  ext4  defaults  0  2
または
UUID=9811-2A4E  /mnt/data  ext4  defaults  0  2


以前にファイルシステムをマウントしていなかった場合は、以下のコマンドを実行してマウントできる。

sudo mount -a


マウントしたストレージの確認

ファイルシステムのマウント後、ストレージにアクセスできることを確認する必要がある。
dfコマンドを実行して、ストレージが使用可能かどうかを確認する。

df -h -x tmpfs -x devtmpfs

# 出力
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   10G   90G  10% /
/dev/sdb1        50G    0M   50G   0% /mnt/data


/mnt/dataディレクトリ内のlost + foundディレクトリが表示できるはずである。これは通常、Ext2/3/4ファイルシステムのルートを示している。

ls -l /mnt/data

# 出力
total 16
drwx------ 2 root root 16384 Jun  6 11:10 lost+found


テストファイルに作成することで、ファイルが読み込みおよび書き込み機能でマウントされていることを確認することができる。

echo "success" | sudo tee /mnt/data/test_file


ファイルを読み紺で、書き込みが正しく実行されたことを確認する。

cat /mnt/data/test_file


マウントしたファイルシステムが正しく機能していることを確認したら、ファイルを削除する。

sudo rm -rf /mnt/data/test_file