Ubuntu22.04 でRAID1を構築

Linux

ファイルサーバーのように大容量ストレージを使う場合は、HDD突然死の対策としてRAIDを組みます。

今回、Ubuntu22.04LTS上のHDD2基をRAID1で構築する機会がありましたので、備忘録として手順を記載しておきます。

参考:産業用SSDのように書き込み寿命が予測できるデバイスを採用する場合は、RAIDを組みません。民生SSDを採用する場合は、品質にばらつきがあるため、RAIDを組むことはあるようですが、HDDにくらべてコスパが高く付くため、あまり採用はされません。

前提

システム環境などは以下の前提で解説します。

  • ZFS(RAID1)で構築されたProxmox8 VE上にゲストOSとしてUbuntu22.04を構築
  • Ubuntu22.04LTS直下に同一仕様のHDDを2基設置(Proxmox8VEはパススルー
  • Ubuntu上のHDDはすべてデータドライブとして利用(ブートはしない)

RAID1構築手順

UbuntuにHDDを増設し、システム起動します。→HDD増設の仕方はこちらの記事も参照

aptでRAIDモジュールであるmdadmをインストールします。

$ sudo apt install mdadm

lsblkコマンドでストレージシステム状態の確認を行います。

root:/mnt# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   100G  0 disk
tqsda1   8:1    0     1M  0 part
tqsda2   8:2    0   513M  0 part /boot/efi
mqsda3   8:3    0  99.5G  0 part /
sdb      8:16   0   3.6T  0 disk /mnt/share
sdc      8:32   0   3.6T  0 disk
sdd      8:48   0   3.6T  0 disk
sr0     11:0    1   3.2G  0 rom  /media/kspn/Ubuntu 22.04 ja amd64

このシステムの場合、sdcとsddが新規増設した3.6TBの空ディスクとなります。

mdadmコマンドを用いて、sdcとsddでRAID1を構築します。

root:/mnt# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdc /dev/sdd
mdadm: /dev/sdc appears to contain an ext2fs file system
       size=3907018584K  mtime=Wed Jul 24 12:05:40 2024
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: /dev/sdd appears to contain an ext2fs file system
       size=3907018584K  mtime=Wed Jul 24 12:06:13 2024
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

最後で/dev/md0 startedとなっていれば構築完了です。

cat /proc/mdstatでRAID状態を確認します。

[UU]となっていればRAIDは正常です。HDD異常時は[_U]や[U_]となります。

root:/mnt# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdd[1] sdc[0]
      3906886464 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.1% (5513792/3906886464) finish=318.4min speed=204214K/sec
      bitmap: 30/30 pages [120KB], 65536KB chunk

unused devices: <none>

構築したRAID1ドライブ(/dev/md0)をext4でフォーマットします。

root:/mnt# mkfs.ext4 /dev/md0
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 976721616 4k blocks and 244187136 inodes
Filesystem UUID: dc539a0a-0fbf-427d-964f-c863e32dbcc8
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

/mnt/share2にマウントし、通常のファイルシステムとして使えるようにします。

root:/mnt# mkdir share2
root:/mnt# mount /dev/md0 /mnt/share2
root:/mnt# chmod -R 777 share2
root:/mnt# ls
share  share2

dfでファイルシステム状態を確認します。

roo:/mnt# df -hT
Filesystem     Type     Size  Used Avail Use% Mounted on
tmpfs          tmpfs    391M  3.1M  388M   1% /run
/dev/sda3      ext4      98G  9.1G   84G  10% /
tmpfs          tmpfs    2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs    5.0M     0  5.0M   0% /run/lock
/dev/sda2      vfat     512M  6.1M  506M   2% /boot/efi
tmpfs          tmpfs    391M  4.7M  387M   2% /run/user/1000
/dev/sr0       iso9660  3.2G  3.2G     0 100% /media/kspn/Ubuntu 22.04 ja amd64
/dev/sdb       ext4     3.6T  149G  3.3T   5% /mnt/share
/dev/md0       ext4     3.6T   28K  3.4T   1% /mnt/share2

恒久マウントの手順

blkidでRAID1のUUIDを調べます。(/dev/loop*は省略しています)

root:/home/kspn# blkid
/dev/sda3: UUID="2d9f0fb3-8f8e-40ab-b000-6a27052d7170" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a4db0316-d145-4f2f-bae1-3c1405b84953"
/dev/sdd: UUID="b113ac8d-3a66-24ad-0521-ad7aeadcfb8f" UUID_SUB="1d3b524a-7b16-8810-76e6-3283d8fb0e93" LABEL="sws1200-samba:0" TYPE="linux_raid_member"
/dev/md0: UUID="dc539a0a-0fbf-427d-964f-c863e32dbcc8" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sdb: LABEL="hdd1" UUID="9bba4181-8672-40ea-8832-d5790752df06" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sr0: BLOCK_SIZE="2048" UUID="2022-05-02-03-06-06-00" LABEL="Ubuntu 22.04 ja amd64" TYPE="iso9660" PTTYPE="PMBR"
/dev/sdc: UUID="b113ac8d-3a66-24ad-0521-ad7aeadcfb8f" UUID_SUB="41171d57-5315-cf35-78be-75666316c3d6" LABEL="sws1200-samba:0" TYPE="linux_raid_member"
/dev/sda2: UUID="CD9A-5A88" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="2f97605f-5862-46a7-91a9-3b4807dd22b8"
/dev/sda1: PARTUUID="eac2c0a3-5c88-4480-a227-a46c6b342fd9"

/dev/md0の「UUID="dc539a0a-0fbf-427d-964f-c863e32dbcc8"」を/etc/fstabに記載します。

root:/home/kspn# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during installation
UUID=2d9f0fb3-8f8e-40ab-b000-6a27052d7170 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda2 during installation
UUID=CD9A-5A88  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0

#/dev/sdb 20240724 mounted
UUID=9bba4181-8672-40ea-8832-d5790752df06       /mnt/share  ext4  defaults
#/dev/md0 20240724 mounted
UUID=dc539a0a-0fbf-427d-964f-c863e32dbcc8       /mnt/share2 ext4  defaults

再起動してストレージとしてマウントされていることを確認します。

root:/home/kspn# df
Filesystem      1K-blocks       Used  Available Use% Mounted on
tmpfs              400096      14140     385956   4% /run
/dev/sda3       102106072   10912660   85960568  12% /
tmpfs             2000468          0    2000468   0% /dev/shm
tmpfs                5120          0       5120   0% /run/lock
/dev/sdb       3844551496 1914448620 1734735564  53% /mnt/share
/dev/sda2          524252       6220     518032   2% /boot/efi
/dev/md127     3844421432  334353464 3314707264  10% /mnt/share2
/dev/sr0          3347464    3347464          0 100% /media/kspn/Ubuntu 22.04 ja amd64
tmpfs              400092       2424     397668   1% /run/user/1000

ubuntuの仕様で再起動後は/dev/md0 -> /dev/md127に再付番されます。

以上でRAID1の構築は完了です。

HDD障害時の復旧方法については後日記載します。