1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NVMe(PCIe-SSD)を束ねて大きなストレージとして使う

Posted at

1TBのSSDが余り始めた...

最近、yoctoで自前のLinuxディストリビュージョンをビルドするときなど、広いストレージが必要になることが増えてきました。ここ最近は2TBのNVMe-SSDもかなり安価になっており、そちらを買うことが多いと思いますが、すると1TBのNVMe-SSDが余り始め...とはいえビルド環境は常に容量が必要で...

それなら、mdadmで2TBのパーティションを作ろう

mdadm はソフトウェアRAIDを構築できるLinuxの機能です。mdadmは物理パーティションを複数束ねてmdと呼ばれる論理パーティションを作成することができます。複数のNVMe-SSD上の物理パーティションを、デバイスをまたいで結合できますので、余った1TB-SSDを2本使って2TBのパーティションを作ることができます。

その他の解決方法

実はソフトウェアRAIDを使わなくても、Intelの「インテルVMD(ボリューム・マネジメント・デバイス)」を使えばチップセットでハードウェアRAIDが組めるので、より簡単に解決することができます。ただし、安価なマザーボードはVMD対応のチップセットが載っていませんので、どこにお金をかけるか悩みどころですね。

Ubuntu18.04でmdadmを使ってみた

多くの方々のQiitaを参考に1TB NVMe-SSD 2本から2TBのetx4パーティションを作成し、自身のホームディレクトリ以下/home/shino/yoctoにマウントしてみました。

mdadmのインストール

$ sudo apt update
... (パッケージが格納されているサーバ情報を更新する)
$ sudo apt upgrade
... (パッケージをすべて最新にする)
$ sudo apt install mdadm
... (mdadmパッケージをインストールする)

まとめるための物理パーティションを作成する

今回は/dev/nvme0n1/dev/nvme1n1上に物理パーティションを作成して結合しました。

$ sudo fdisk /dev/nvme0n1
p
... パーティションテーブルを表示
n
... パーティションを作成
w
... パーティションを保存

$ sudo fdisk /dev/nvme1n1
p
... パーティションテーブルを表示
n
... パーティションを作成
w
... パーティションを保存

$ ls /dev/nvme?n1*
/dev/nvme0n1  /dev/nvme0n1p1  /dev/nvme0n1p2  /dev/nvme1n1  /dev/nvme1n1p1
... 今回は「/dev/nvme0n1p2」と「/dev/nvme1n1p1」を結合します

mdadmコマンドで論理パーティションを作成する

$ mdadm --create /dev/md0 --level=raid0 --raid-devices=2 /dev/nvme0n1p2 /dev/nvme1n1p1
... 論理パーティション「/dev/md0」を作成する
$ sudo mkfs.ext4 /dev/md0
... 論理パーティションをext4でフォーマットする
$ mkdir -p /home/shino/yocto 
... マウントするディレクトリを作成する
$ sudo mount /dev/md0 /home/shino/yocto
... マウントする
$ ls /home/shino/yocto
$ mount 
/dev/md0 on /home/shino/yocto type ext4 (rw,relatime,stripe=256)

再起動後も自動でRAIDが組まれるよう設定ファイルに追記する

$ sudo mdadm --detail --scan 
ARRAY /dev/md/shino-Ubu18:0 metadata=1.2 name=shino-Ubu18:0 UUID=6b0193ab:61df0053:7f03ae60:4cb82e2b
... 現在の設定情報を確認する
$ sudo vi /etc/mdadm/mdadm.conf
# mdadm.conf
# ...
# This configuration was auto-generated on Sat, 09 Nov 2024 13:08:54 +0900 by mkconf
ARRAY /dev/md/shino-Ubu18:0 metadata=1.2 name=shino-Ubu18:0 UUID=6b0193ab:61df0053:7f03ae60:4cb82e2b
... 最後の行に設定情報を追記する

再起動してmdを確認する

$ sudo reboot
... 再起動
$ sudo mdadm --detail --scan
ARRAY /dev/md/shino-Ubu18:0 metadata=1.2 name=shino-Ubu18:0 UUID=6b0193ab:61df0053:7f03ae60:4cb82e2b
... /dev/md/shino-Ubu18:0 という論理パーティションが作られている

/etc/fstabで自動マウント

$ sudo vi /etc/fstab
... 以下を追記
/dev/md/shino-Ubu18:0 /home/shino/yocto ext4 defaults 0 0
$ sudo reboot
... 再起動
$ mount | grep "/home/shino/yocto"
/dev/md127 on /home/shino/yocto type ext4 (rw,relatime,stripe=256)
... マウントされていることを確認できます

まとめ

以上がソフトウェアRAIDを使った、物理デバイスよりも大きな論理パーティションを作る方法です。手順自体は簡単なのですがハマりやすいポイントとしては、RAIDの名前のエイリアスがたくさんできることでしょうか(/dev/md127とか/dev/md/shino-Ubu18:0とか)。少し設定したら再起動してどうなっているか調べる...と進めていくことと手戻りは少なそうですね。

またこのあたりがクリアになりましたら更新しようと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?