設定 - ストレージのフォーマットとパーティション
概要
Linuxにおいて、新しいストレージを準備することは簡単である。
ここでは、以下の4つのセクションにおいて、ストレージのフォーマット手順を記載する。
- システム上のストレージを識別する。
- ストレージ全体にまたがる単一のパーティションを作成する。
- Ext4等のファイルシステムでパーティションをフォーマットする。
- ストレージを自動マウントおよび手動マウントする。
パーティションソフトウェアのインストール
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
- RHEL :
- ソースコードからインストールする場合
- 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を使用してフォーマットする手順を以下に示す。
- メイン画面左から、フォーマットするストレージを選択する。
- メイン画面右にある[ボリューム]項目の歯車アイコンを選択する。
- [その他]のファイルシステムを選択して、[次へ]ボタンを押下する。
- [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ディストリビューションのインストールに使用したストレージを再利用する場合、以下に示すようなフォーマットを実行する。
- GPartedや
parted
コマンド等を使用して、新しいMS-DOSパーティションを作成する。- 以下の例では、
parted
コマンドを使用したフォーマットおよびパーティションを作成している。
- フォーマットを行うストレージを選択する。
sudo parted /dev/sdX
- 例:
sudo parted /dev/sdb
- ストレージをフォーマットする前に、
mklabel
コマンドを実行してラベルを作成する必要がある。- (parted)
mklabel gpt
- (parted)
- 次に、パーティションを作成する。
以下の例では、パーティション名を"primary"、FAT32タイプ、パーティションサイズは0%から100%までとしている。- (parted)
mkpart
- パーティションの名前? []?
primary
- ファイルシステムの種類? [ext2]?
FAT32
- 開始?
0%
- 終了?
100%
- (parted)
- パーティションの作成が完了した後、
print
コマンドを実行して、パーティションを確認する。- (parted)
print
- (parted)
- 以下の例では、
- 残存しているブートローダのデータを削除する。
この操作を行わない場合、残存しているブートローダから起動しようとすることに注意する。- # 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