RAID1構築と運用(2015/09/05現在)
インストールの時にRAID1(ミラーリング)を構築し、運用する方法です。

OS:VineLinux6.3

参考サイト
お便利サーバー(OSをRAID構成でインストール-)
think-t の晴耕雨読

OSのインストール

01.	本体にハードディスクをセットします。今回RAID1のミラーリングなので、2台セットします。
	2台は同じメーカーの同じ容量が良いです。今回はNAS用HDDの「RED」を用意しました。
	詳しい情報は下記サイトへどうぞ
	WD Red
	
02.	電源を入れて、BIOS表示をさせて、ブートCDディスクをセットします。
	PCによって(正確にはマザーボード)違いますが、「Delete」「F2」「F12」というところでしょうか?
	画面の下、もしくは右上にBIOSを呼び出すキーがよく表示されます。
	
	ブートディスクがCD-ROM/DVDにセットします。USBの方は、USBブートにしてください。
	
03.	設定を保存して再起動します。

04.	Vineのオープニングが表示されます。今回はテキストモードで設定しました。(個人的に好きなので)
	opning
	
05.	キーボードの選択は「us」が表示されているので、日本語キーボードの「jp106」を選択します。
	「j」を押せばすぐに出てきますけどね。
	opning
	
06.	今回はサーバにしたいので、「Custom」を選択しました。クライアントなら「Desktop」でOKです。
	opning
	
07.	メインの手順です。パティーションを設定するので「Disk Druid」を選択します。
	opning

08.	注意勧告をされます。簡単に言うと「この操作によってハードディスクにあるすべてのデータが削除されますけどかまいませんか?」
	と聞かれています。インストールするので、何かが残っていても困りますから、「YES」を選択します。
	opning
	
09.	現在のパティーションの状況です。「Free Space」しかありません。
	opning
	
	パティーションの内容は下記の設定で行います。
	パティーションは3つに割ります。
	---------
	/boot	100MB	Kernel等、軌道に必要なファイルが登録されます。
	swap	776MB	メモリの2倍を設定します。今回はメモリが386MBです。
	/	残り	ルートに残りすべてを割り当てます。
	
10.	現在のパティーションの状況です。「Free space」しかありません。
	「/dev/sda」のFree spaceを選択し、「NEW」ボタンを押します。
	opning
	
11.	File system typeはフォーマットのタイプです。「software RAID」を選択します。
	Allowable Drivesはハードディスクです。1つ目なので「sda」を選択します。
	Fixed Sizeはファイルサイズの固定です。サイズは「100MB」を入力します。
	force to be a primary partitionはプライマリーパティーションです。チェックをつけておきます。
	opning
	
12.	画面がパティーションの状況に戻ります。sdaに「software R」が追加されています。
	「/dev/sdb」のFree spaceを選択し、「NEW」ボタンを押します。
	opning
	
13.	[11]番の手順と同じ内容にします。ただ、ハードディスクだけ変えます。(sda -> sdb)
	Allowable Drivesはハードディスクです。1つ目なので「sdb」を選択します。
	opning

14.	画面がパティーションの状況に戻ります。sdbに「software R」が追加されています。
	2つのハードディスクに同じ内容がそろっていることを確認してください。
	opning

15.	RAID設定をします。
	Mount Pintに「/boot」を入力します。
	File System Typeは「ext4」にします。softraidの上でext4にします。通常のフォーマットに当たります。
	RAID Levelは上から2つ目の「RAID1」にします。何故かRAID1が2項目あるのですが、理由はわかりません。
	RAID Membersは「sda1」「sdb1」と共に選んでください。
	opning

16.	「RAID Device 0」が増えました。Mount Pointに「/boot」が付いています。
	これが今までの状態と同じです。softraidの上にあるという事を忘れないでください。
	次にswapを作ります。
	/dev/sdaのFree spaceを選択し、「New」ボタンを押します。
	opning

17.	次にswapを作ります。
	Mount Pointは空白で。
	File System typeは/bootと同じく「software RAID」を選択します。
	Allowable Drivesは「sda」を選択します。
	Fixed Sizeはここも固定値で入力します。メモリの2倍の容量を設定します。
	opning

18.	次に、2つ目のディスクを設定します。
	/dev/sdbのFree spaceを選択し、「New」ボタンを押します。
	opning

19.	[17]番の手順と同じ内容にします。ただ、ハードディスクだけ変えます。(sda -> sdb)
	opning

20.	「RAID」ボタンを押します。	
	opning

21.	swapの設定をします。
	File System typeは「swap」を選択します。
	RAID Levelは上から2つ目の「RAID1」を選択します。
	RAID Membersは「sda2」「sdb2」を選択してください。
	opning

22.	RAID Device1に「/boot」が移り、RAID Device0に「swap」に変更されています。
	使ってみて特に不都合は感じなかったので、このまま使ってみます。
	最後の「/(ルート)」を作ります。「/dev/sda」の「Free space」にを選択し、「New」ボタンを押します。
	opning

23.	Mount Pointは空白のままです。
	File System Typeは「software RAID」を選択します。
	Allowable Drivesは「sda」を選択します。
	「Fill all available space」を選択し、すべてをRAID化します。
	「Force to be a primary partition」を選択します。
	opning

24.	2台目のハードディスクを選びます。「/dev/sdb」を選択し、「New」ボタンを押します。
	opning

25.	Mount Pointは空白のままにします。
	File System typeは「software RAID」を選択します。
	Allowable Drivesは「sdb」を選択します。
	「Fill all available space」を選択し、すべてのディスクをRAID化します。
	「Force to be a primary partition」を選択し、「OK」ボタンを押します。
	opning

26.	「RAID」ボタンを押します。
	opning

27.	Mount Pointは「/」にします。
	File System typeは「ext4」を選択します。
	RAID Levelは上から2つ目の「RAID1」を選択します。
	RAID Membersは「sda3」「sdb3」を選択し、「OK」ボタンを押します。
	opning

28.	RAID Device0は「swap」のままですが、「/」がDevice1に。「/boot」がDevice2に変更されました。
	これでRAIDの準備はできましたので、これ以降は通常のインストールを行なってください。
	opning

29.	以下、インストールのサンプルです。
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning
	opning

再起動して完了です。

起動ディスクの追加 RAID1はミラーリングです。たとえ片方が停止しても、残りの片方で処理を進めることができるのですが、 残念ながら起動は /dev/sda からしかできません。よって、/dev/sdaが故障した場合は起動ができないことに なります。こうなると、電源を切ってハードディスクを入れ替えてから起動ができない為、データが救えない という状況になります。 そこで、もう片方の /dev/sdb からも起動できるように設定を変更します。 起動については「grub」というソフトが管理しています。保存場所は /boot/grubです。 設定ファイルは grub.conf ですが、シンボリックが張られており実態は menu.lstです。 groub.confを確認します。 ---- grub.conf(menu.lst) ---- # cat /etc/grub.conf # menu.lst generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/md1 # initrd /initrd-version.img #boot=/dev/md2 default=0 timeout=5 title Vine Linux (Current kernel) root (hd0,0) kernel /vmlinuz ro root=/dev/md1 resume=swap:/dev/md0 vga=0x314 splash=silent quiet initrd /initrd.img title Vine Linux (Previous kernel) root (hd0,0) kernel /vmlinuz.old ro root=/dev/md1 resume=swap:/dev/md0 vga=0x314 splash=silent quiet initrd /initrd.old.img ---- EOF ---- 起動は「root(hd0,0)」設定されています。2種類ありますが、通常モードとセーフモードの為、2種類あります。 ここで、2本目の設定を行います。命令コマンドは「grub」です。 2本目なので「root(hd1,0)」を指定します。 # grub Probing devices to guess BIOS drives. This may take a long time. GNU GRUB version 0.97-4vl6 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> root(hd1,0) root (hd1,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd1) setup (hd1) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded Done. grub> quit quit 設定はできましたので、あとは呼び出しに登録するだけです。 今回はミラーリングの為、起動の呼び出しは同じです。1本目の設定をまるまるコピーしてくるのですが、 名称を変えないとわかりにくいので「-disk2」を追加します。 ---- grub.conf(追加した状態) ---- # cat /etc/grub.conf # menu.lst generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/md1 # initrd /initrd-version.img #boot=/dev/md2 default=0 timeout=5 title Vine Linux (Current kernel) root (hd0,0) kernel /vmlinuz ro root=/dev/md1 resume=swap:/dev/md0 vga=0x314 splash=silent quiet initrd /initrd.img title Vine Linux (Previous kernel) root (hd0,0) kernel /vmlinuz.old ro root=/dev/md1 resume=swap:/dev/md0 vga=0x314 splash=silent quiet initrd /initrd.old.img # root (hd1,0) title Vine Linux (Current kernel)-disk2 root (hd1,0) kernel /vmlinuz ro root=/dev/md1 resume=swap:/dev/md0 vga=0x314 splash=silent quiet initrd /initrd.img title Vine Linux (Previous kernel)-disk2 root (hd1,0) kernel /vmlinuz.old ro root=/dev/md1 resume=swap:/dev/md0 vga=0x314 splash=silent quiet initrd /initrd.old.img ---- EOF ---- 後は、電源を切ってハードディスクのコネクタを意図的に外してちゃんとRAIDの機能が働くか確認してからサーバの設定を 行ってください。テスト項目は4項目です。 1:/dev/sda のコネクタを外して起動するか? 2:外したコネクタを戻してRAIDに再組込みできるか? 3:/dev/sdb のコネクタを外して起動するか? 4:外したコネクタを戻してRAIDに再組込みできるか? 以上、問題がなければ運営を開始してください。 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= raid1復活 デバイスの状態を確認します。 生きているハードディスク # fdisk /dev/sda The device presents a logical sector size that is smaller than the physical sector size. Aligning to a physical sector (or optimal I/O) size boundary is recommended, or performance may be impacted. コマンド (m でヘルプ): p Disk /dev/sda: 1000.2 GB, 1000204886016 bytes ヘッド 255, セクタ 63, シリンダ 121601, 合計 1953525168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト ディスク識別子: 0x000f059e デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 63 610469 305203+ fd Linux raid 自動検出 パーティション 1 は物理セクタ境界で始まっていません: /dev/sda2 610470 16996769 8193150 fd Linux raid 自動検出 パーティション 2 は物理セクタ境界で始まっていません: /dev/sda3 16996770 1953520064 968261647+ fd Linux raid 自動検出 パーティション 3 は物理セクタ境界で始まっていません: 追加したディスク(/dev/sdb)が認識されているか確認します。 # dmesg |grep sdb sd 1:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 1:0:0:0: [sdb] 4096-byte physical blocks sd 1:0:0:0: [sdb] Write Protect is off sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00 sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sdb: sdb1 sdb2 sdb3 sd 1:0:0:0: [sdb] Attached SCSI disk md: bind md: kicking non-fresh sdb3 from array! md: unbind md: export_rdev(sdb3) md: bind md: kicking non-fresh sdb2 from array! md: unbind md: export_rdev(sdb2) md: bind md: kicking non-fresh sdb1 from array! md: unbind md: export_rdev(sdb1) 表示されなければ認識されていません。 生きているハードディスクのヘッドが「255」になっています。 新しいディスクもこれに合わせてください。容量を合わせないとRAIDがうまく設定できません。 --- ヘッド設定例 --- ヘッドの値を確認します。 # fdisk /dev/sdb The device presents a logical sector size that is smaller than the physical sector size. Aligning to a physical sector (or optimal I/O) size boundary is recommended, or performance may be impacted. コマンド (m でヘルプ): p Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes ヘッド 240, セクタ 63, シリンダ 121601, 合計 1953525168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト ディスク識別子: 0x000f059e ※ヘッド数が「240」なので生きているディスクの「255」に合わせます。なお、論理値の調整なので容量に変更はありません。 コマンド (m でヘルプ): x 上級者コマンド (m でヘルプ): h ヘッド数 (1-256, 初期値 255): 255 上級者コマンド (m でヘルプ): r コマンド (m でヘルプ): p Disk /dev/sda: 1000.2 GB, 1000204886016 bytes ヘッド 255, セクタ 63, シリンダ 121601, 合計 1953525168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト ディスク識別子: 0x000f059e ※ヘッドが255になりました。 ---- EOF ---- パーティションを設定します。 ---- パーティションの設定例---- RAID1の場合は生きているディスクを確認して容量と内容を設定してください。 /boot swap /(ルート) ---- EOF ---- RAIDに割り当てます。 どのデバイスがどのハードディスクを管理しているか確認します。 $su - root パスワード # cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda1[0] 305088 blocks [2/1] [U_] md0 : active raid1 sda2[0] 8193024 blocks [2/1] [U_] md1 : active raid1 sda3[0] 968261568 blocks [2/1] [U_] この場合、 md0 sda2 <--- swap md1 sda3 <--- / (ルート) md2 sda1 <--- /boot となっています。 そこで、容量を合わせたデバイスを設定します。 swap割り当て #mdadm --manage /dev/md0 --add /dev/sdb2 mdadm: added /dev/sda2 /(ルート)割り当て #mdadm --manage /dev/md1 --add /dev/sdb3 mdadm: added /dev/sda3 /boot割り当て #mdadm --manage /dev/md2 --add /dev/sdb1 mdadm: added /dev/sda1 割り当てを行うと自動的に同期をとりに行きます。 <<更新中画面>> # cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb1[1] sda1[0] 305088 blocks [2/2] [UU] md0 : active raid1 sda2[0] sdb2[1] 8193024 blocks [2/2] [UU] md1 : active raid1 sdb3[2] sda3[0] 968261568 blocks [2/1] [U_] [==========>..........] recovery = 52.8% (512092480/968261568) finish=74.3min speed=102300K/sec unused devices: ※同期を取り終えると※ # cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb1[1] sda1[0] 305088 blocks [2/2] [UU] md0 : active raid1 sda2[0] sdb2[1] 8193024 blocks [2/2] [UU] md1 : active raid1 sdb3[1] sda3[0] 968261568 blocks [2/2] [UU] unused devices: となります。
サーバの入替えの場合、ユーザ情報は必要となります。 以下は参考にご覧ください。 コピーするファイル /etc -rw-r--r-- 1 root root 1364 8月 10 12:57 group -r-------- 1 root root 1110 8月 10 12:57 gshadow -rw-r--r-- 1 root root 3448 8月 10 12:57 passwd drwxr-xr-x 7 usi usi 4096 8月 7 17:13 rpm/ -r-------- 1 root root 3541 8月 10 12:57 shadow /homeのコピー データを圧縮 # cd /home # tar cvf homeback.tar . データをコピーする #scp homeback.tar ユーザ@RAIDサーバ: (例) #scp homeback.tar hoge@raidserver.co.jp: データを解凍 #tar zxvf /home/usi/home.tar.gz .

Let's PC の Topに戻る
ホームページのTopに戻る