コンピューターシステム株式会社

技術BLOG

Windows 10 HomeEdition でのRAID1構成

環境構築 2021/06/15 大阪担当

概要

こんにちは。こんばんは。

大阪営業所の⑧②と申します。

今回は、Windows10 HomeEditionのRAIDについてです。

Windows Serverではないので、わざわざRAID構成にするのも・・・といった感じですが、できるかどうかを検証してみました。

ご存じの方もいると思いますが、Windows10 HomeEditionはRAID0のみ対応しています。

ではHomeEditionでRAID1、RAID5等の構成を組むには、と言うことで色々と調べました。

結果として、仮想環境(今回はVirtualBOX)にCentOSを導入します。このCentOS上にRAID構成及びSambaを導入しWindowsからアクセスすることでRAID構成ができるのではと思いやってみることにしました。

RAID1構成にするためにハードディスクが別途2台必要です。

以下の設定及び使用は自己責任でお願いいたします。

目次

下記の順で設定を行っていきます。

1) VirtualBoxのインストール
2) VirtualBoxへのCentOSのインストール
3) 物理パーティションの設定
4) CentOSへの仮想ディスク追加
5) ソフトウェアRAID(mdadm)のインストール
6) 追加ハードディスク設定
7) RAID1構成作成
8) Sambaの導入
9) Samba共有ディレクトリへのRAIDハードディスク割り当て
10) SELinux設定
11) Windowsからのアクセス確認
12) CentOSの自動起動の設定
13) CentOSの停止の設定
14) 参考
最後に

1) VirtualBoxのインストール

VirtualBoxのホームページ(https://www.virtualbox.org/)から対象となるファイルをダウンロードしインストールします。

VirtualBoxのインストールについては、ここでは記載いたしませんが、以後の設定で必要になる部分を下記に記載します。

検索すればかなりの方がホームページを立ち上げていますのでそちらを参考にしてください。

 ・VirtualBoxのインストール先はCドライブにインストールしてください。

  以降で自動起動の設定を行いますが、対象のドライブが起動していない場合、正常に起動しなくなる為です。

以降の対応でVirtualBoxを起動する場合、物理パーティションのアクセスが必要となりますので管理者として起動してください。

2) VirtualBoxへのCentOSのインストール

CentOSのホームページ(https://www.centos.org/download/)からファイルをダウンロードしインストールします。

今回ダウンロードするCentOSはのインストールファイルはRAID構成の為のみで使用しますので最小版の「CentOS-7-x86_64-Minimal****.iso」(****は任意)をダウンロードします。

VirtualBoxへのCentOSのインストールについても、ここでは記載しませんが、以後の設定で必要になる部分を下記に記載します。

 ・CentOSのVDIファイルの保存先はCドライブにします。

  以降で自動起動の設定を行いますが、対象のドライブが起動していない場合、正常に起動しなくなる為です。

  以下ではVDIファイルを「c:\VirtualBoxImage\」に作成したとして説明します。

 ・今回設定内容は下記の通りです。RAID以外でも使用したい場合は、検討する必要があると思います。

   メモリーサイズ:512M

   プロセッサー数:1

   ハードディスクサイズ:8GB

   ネットワーク:NAT、ホストオンリーアダプタ

 ・ネットワークの設定は、VirtualBoxのアダプター1とアダプター2をそれぞれNATとホストオンリーアダプタで設定します。

  NAT側については自動で振られるIPをそのまま使用できます。ホストオンリーアダプタ側については、VirtualBoxを複数立ち上げる場合は考慮が必要となります。以下では「192.168.56.101」を設定したとして説明しております。

3) 物理パーティションの設定

今回は下記のディスク2とディスク3のドライブをRAID1の設定にします。

VirtualBoxから物理パーティションへのアクセスは直接はできませんので、アクセスできるようにVirtualBoxに仮想のディスクを作成します。

cmdプロンプトを管理者で起動し、下記のコマンドを実行します。

$ cd %programfiles%\Oracle\VirtualBox

$ VBoxManage internalcommands createrawvmdk -filename c:\VirtualBoxImage\hdd0.vmdk -rawdisk \\.\PhysicalDrive2

$ VBoxManage internalcommands createrawvmdk -filename c:\VirtualBoxImage\hdd1.vmdk -rawdisk \\.\PhysicalDrive3

4) CentOSへの仮想ディスク追加

VirtualBoxにインストールしたCentOSに仮想ディスクを追加する。

「Oracle VM VirtualBox マネージャー」のインストールしたCentOSを右クリックし、「設定」を選択します。

左タブの「ストレージ」を選択し、「コントローラー:SATA」を選択すると右に「ハードディスクの追加」が表示されるので選択し、「物理パーティションの設定」で作成した仮想ディスク「hdd0.vmdk」を指定しハードディスクを作成します。

同様に「hdd1.vmdk」についても作成します。

5) ソフトウェアRAID(mdadm)のインストール

RAID構成を行うためにソフトウェアRAID(mdadm)をインストールします。

VirtualBoxのCentOSを起動し、ルートでログインします。

CentOS-7 login: root

Password: **********

下記コマンドでソフトウェアRAIDをインストールします。

# yum install mdadm

6) 追加ハードディスク設定

下記のコマンドにより、現在接続されているハードディスクを確認する。

# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors

     (中略)

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors

     (中略)

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors

     (中略)

デバイス ブート 始点 終点 ブロック Id システム

今回の2台分のハードディスクは/dev/sdbと/dev/sdcで認識されています。

まずは/dev/sdbを設定します。下記での太文字は入力の意味を表しています。以後も同様の記載としております。

# parted /dev/sdb

(parted) mklabel gpt

警告: いま存在している /dev/sdb のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?

はい(Y)/Yes/いいえ(N)/No? Y

(parted) mkpart

パーティションの名前? []? md1-1

ファイルシステムの種類? [ext2]? ext4

開始? 0%

終了? 100%

(parted) set 1 raid on

(parted) q

設定内容を確認します。

# parted /dev/sdb

(parted) p

     (中略)

番号 開始 終了 サイズ ファイルシステム 名前 フラグ

1 1049kB 1000GB 1000GB ntfs md1-1 raid

同様に/dev/sdcを設定します。設定内容のみ表示します。

# parted /dev/sdc

(parted) p

     (中略)

番号 開始 終了 サイズ ファイルシステム 名前 フラグ

1 1049kB 1000GB 1000GB ntfs md1-2 raid

7) RAID1構成作成

いよいよRAID1の作成を行っていきます。

まずは下記のコマンドでRAID1構成を作成します。

# sudo mdadm --create --auto=yes /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

mdadm: partition table exists on /dev/sdb1

mdadm: partition table exists on /dev/sdb1 but will be lost or

     meaningless after creating array

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: partition table exists on /dev/sdc1

mdadm: partition table exists on /dev/sdc1 but will be lost or

    meaningless after creating array

Continue creating array? yes

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md1 started.

mdadm: timeout waiting for /dev/md1

 

プロンプトが返ってきましたので終了。と思いきや実は裏で処理が実行されています。

# cat /proc/mdstat

Personalities : [raid1]

md1 : active raid1 sdc1[1] sdb1[0]

    976628736 blocks super 1.2 [2/2] [UU]

    [>....................] resync = 0.6% (6219648/976628736) finish=222.0min speed=72844K/sec

    bitmap: 8/8 pages [32KB], 65536KB chunk

unused devices:

 

上記の通り0.6%完了していることがわかります。完了した場合は下記の出力になります。

# cat /proc/mdstat

Personalities : [raid1]

md1 : active raid1 sdc1[1] sdb1[0]

    976628736 blocks super 1.2 [2/2] [UU]

    bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices:

定義ファイル/etc/mdadm.confを作成します。

下記コマンドを実行すれば、定義ファイルが作成されます。

# mdadm --examine --brief --scan --config=partitions > /etc/mdadm.conf

# cat /etc/mdadm.conf

ARRAY /dev/md/1 metadata=1.2 UUID=0f08315c:ba897a24:b3e3604a:7df97f32 name=CentOS-7.6.localdomain:1

8) Sambaの導入

RAIDを構成しているのがLinuxの為、ハードディスクへのアクセスはSamba経由でのアクセスとなりますのでSambaを導入します。

# yum install -y samba samba-common

     (中略)

完了しました!

 

下記でインストールされたかどうかを確認します。

# yum list installed samba*

読み込んだプラグイン:fastestmirror

Loading mirror speeds from cached hostfile

* base: ftp.riken.jp

* epel: ftp.riken.jp

* extras: ftp.riken.jp

* updates: ftp.riken.jp

インストール済みパッケージ

samba.x86_64            4.10.4-11.el7_8 @updates

samba-client-libs.x86_64     4.10.4-11.el7_8 @updates

samba-common.noarch        4.10.4-11.el7_8 @updates

samba-common-libs.x86_64     4.10.4-11.el7_8 @updates

samba-common-tools.x86_64     4.10.4-11.el7_8 @updates

samba-libs.x86_64          4.10.4-11.el7_8 @updates

 

Sambaの定義ファイル(/etc/samba/smb.conf)に下記の定義を追加します。下記は参考ですので、任意に設定をお願いします。

[Contents]

     comment = Contents Folder

     path = /home/samba1/Contents

     writable = yes

     force group = samba

     acl map full control = no

     store dos attributes = yes

 

日本語の文字化け等が発生する場合は[Global]のエリアに「dos charset = CP932」の定義を追加すれば改善されると思います。

smb.confを修正後、下記によりエラーが無いか確認しておく。

# testparm -s

Load smb config files from /etc/samba/smb.conf

Loaded services file OK.

 

下記のコマンドでSambaのユーザーおよびグループを作成します。グループID及びユーザーIDは現在登録されている番号とぶつからないように設定します。

# groupadd -g 1003 samba

# useradd -g samba -u 1002 samba

 

Sambaのユーザーテーブルに情報を登録します。

下記ではユーザー名を「samba」として作成しています。途中パスワードの設定があります。

# pdbedit -a -u samba -f "Samba user"

new password:

retype new password:

     (以下略)

# pdbedit -L

samba:1002:Samba user

 

Sambaの共有で使用する領域を作成します。

これはSambaの定義で作成した[Contens]で定義した、「path」のフォルダーの作成になります。

# cd /home

# mkdir samba1

# mkdir samba1/Contens

# chmod -R 0777 samba1

# chown -R samba:samba samba1

# ls -al

合計 0

drwxr-xr-x. 5   root   root   49 7月 15 03:05 .

dr-xr-xr-x. 17  root   root   224 7月 12 23:43 ..

drwxrwxrwx. 4   samba  samba   6 7月 15 03:05 samba1

 

現在の状態では外部からCentOSに対してアクセスができない為、Sambaに対応するポートの解放のfirewallの設定を行います。

# firewall-cmd --zone=public --add-port=137/udp --permanent

# firewall-cmd --zone=public --add-port=138/udp --permanent

# firewall-cmd --zone=public --add-port=139/tcp --permanent

# firewall-cmd --zone=public --add-port=445/tcp --permanent

# firewall-cmd --list-all

public (active)

     (中略)

ports: 137/udp 138/udp 139/tcp 445/tcp

 

Sambaの起動の登録及び起動します。

# systemctl enable smb.service

Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

# systemctl enable nmb.service

Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.

# systemctl start smb

# systemctl start nmb

 

Sambaが起動しているかどうか確認します。

smbdとnmbdが出力されていれば大丈夫です。

# ps -ef | grep mb

root   2464   1 1 03:13 ?   00:00:00 /usr/sbin/smbd --foreground --no-process-group

root   2466 2464 0 03:13 ?   00:00:00 /usr/sbin/smbd --foreground --no-process-group

root   2467 2464 0 03:13 ?   00:00:00 /usr/sbin/smbd --foreground --no-process-group

root   2484   1 1 03:13 ?   00:00:00 /usr/sbin/nmbd --foreground --no-process-group

root   2485 2484 0 03:13 ?   00:00:00 /usr/sbin/nmbd --foreground --no-process-group

 

9) Samba共有ディレクトリへのRAIDハードディスク割り当て

作成したRAIDハードディスクをフォーマット

# ls -al /dev/md*

brw-rw----. 1 root disk 9, 1 5月 5 10:52 /dev/md1

# mkfs -t ext4 /dev/md1

起動時にRAIDハードディスクを認識するようする為、/etc/fstab 定義を登録します。

# ls -l /dev/disk/by-uuid | grep md1

lrwxrwxrwx. 1 root root 9 5月 8 01:03 c9ce8a1f-282e-4d70-b80c-08709491b227 -> ../../md1

# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Sun Jul 12 23:39:19 2020

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root / xfs defaults 0 0

UUID=e07ea50a-b012-4ecc-867b-951d61bf0c4f /boot xfs defaults 0 0

/dev/mapper/centos-swap swap swap defaults 0 0

UUID=c9ce8a1f-282e-4d70-b80c-08709491b227 /home/samba1 ext4 defaults,nofail 0 0

10) SELinux設定

ログインは成功するのですがファイルアクセスできないのでSELinuxの設定を行います。

# getsebool -a | grep samba

     (中略)

samba_enable_home_dirs --> off

# setsebool -P samba_enable_home_dirs on

# restorecon -R /home/samba1

# getsebool -a | grep samba

     (中略)

samba_enable_home_dirs --> on

11) Windowsからのアクセス確認

上記の状態で既にVirtualBoxのSambaが起動しておりますので、Explorerを起動し、フォルダーの部分に

「\\192.168.56.101」を入力しエンターを押下します。

認証画面が表示されるので、「8) Sambaの導入」で登録したユーザー及びパスワードを入力し「OK」とします。

「Contents1」が表示され、中に入っていければVirtualBoxの設定は完了です。

12) CentOSの自動起動の設定

タスクスケジューラーを起動し、システム起動時にVirtualBoxのCentOSが起動するように設定します。

左タブの「タスク スケジューラーライブラリ」を選択し、右クリックより「タスクの作成」を選択します。以下が設定内容となります。

タブ 項目名 設定値
全般 名前 任意で設定してください
説明 必要に応じて記載ください
セキュリティ オプション 「ユーザーがログインしているかどうかにかかわらず実行する」を選択
「最上位の権限で実行する」をチェック
トリガー タスクの開始 「スタートアップ時」を選択
操作 操作 「プログラムの開始」を選択
プログラム/スクリプト 「C:¥VirtualBoxImage¥Startup.bat」を設定
開始(オプション) 「C:¥VirtualBoxImage」を設定

起動用バッチファイルを作成します。

ファイル:C:\VirtualBoxImage\Startup.bat

CD C:\VirtualBoxImage\

C:\Program Files\Oracle\VirtualBox\VBoxManage.exe startvm "CentOS-7.6_64_Minimal" --type headless

13) CentOSの停止の設定

Windows10の停止とともにCentOSを停止しようと色々と検討しましたが、Shutdown用のコマンドを作成し、これを実行することによりWindows10を停止する方法が一番確かだと言う結果となりました。

ファイル:C:\VirtualBoxImage\Shutdown.bat

C:\Program Files\Oracle\VirtualBox\VBoxManage.exe controlvm "CentOS-7.6_64_Minimal" savestate

SHUTDOWN /s /t 0 /f

パソコンを停止する場合は、このバッチを実行して停止するようにします。

CentOSを停止せずいきなり停止してしまうと、RAIDの状況により次回起動時に認識しない等の不備が発生する場合がありました。

14) 参考

「CentOS-7.6_64_Minimal」が、「Oracle VM VitualBox マネージャー」からなくなっているとき

・管理者権限で「Oracle VM VitualBox マネージャー」を起動

・「新規(N)」ボタンを押下し、「仮想マシンの作成」を起動

 →「名前(N)」に「CentOS-7.6_64_Minimal」を指定

 →「ハードディスク」で「すでにある仮想ハードディスクを使用する(U)」を選択し、右のフォルダーマークをクリックし下記を指定し、「作成」ボタンを押下し作成

   C:¥VirtualBoxImage¥CentOS-7.6_64_Minimal.vdi

・作成した「CentOS-7.6_64_Minimal」を選択し、「設定」ボタンを押下

 →「ストレージ」タブを選択し、「コントローラー:SATA」を選択し、右の「ハードディスクの作成」を選択

  下記のファイルを指定する。

    C:¥VirtualBoxImage¥hdd0.vmdk

    C:¥VirtualBoxImage¥hdd1.vmdk

 →「ネットワーク」タブを選択し、「アダプター2」を選択し、「ネットワークアダプタを有効化(E)」をチェック

以上の設定後タスクスケジューラーより「CentOS-7.6_64_Minimal」を起動

最後に

上記はRAID1の構成について検証しましたが、この方法ですとRAID5、RAID10も設定が可能ではと思います。

⑧②にはその構成を行う為に資源がありません。資源ができたら挑戦するかもしれません。