「ソフトウェア RAID 上で LVM」の版間の差分
(en:Software RAID and LVMへの転送ページ) |
細 (AshMyzk がページ「ソフトウェア RAID と LVM」を「ソフトウェア RAID 上で LVM」に移動しました: 英語版に追従) |
||
(3人の利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:Arch の入手とインストール]] |
||
− | #redirect[[en:Software RAID and LVM]] |
||
+ | [[Category:ファイルシステム]] |
||
+ | [[en:Software RAID and LVM]] |
||
+ | [[ru:Software RAID and LVM]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|RAID}} |
||
+ | {{Related|LVM}} |
||
+ | {{Related|Fake RAID でインストール}} |
||
+ | {{Related|シングルドライブ環境を RAID に変換}} |
||
+ | {{Related articles end}} |
||
+ | この記事ではソフトウェア RAID や論理ボリュームマネージャ (LVM) を使って Arch Linux をインストール・設定する方法を説明します。[[RAID]] と [[LVM]] を組み合わせることは RAID だけを使うときに比べて様々な利点があります。 |
||
+ | |||
+ | == イントロダクション == |
||
+ | |||
+ | {{Warning|[[RAID]] 記事の警告をよく読んで下さい。特に RAID5 を使う場合は注意が必要です。}} |
||
+ | |||
+ | [[RAID]] と [[LVM]] は似ている技術のように思えるかもしれませんが、どちらも独自の特徴があります。この記事では3つの同じような 1TB の SATA ハードディスクを用いる例を使います。ドライブは {{ic|/dev/sda}}, {{ic|/dev/sdb}}, {{ic|/dev/sdc}} としてアクセスできると仮定します。IDE ドライブを使用する場合、性能を最大限に出すために、それぞれのドライブが別々のチャンネルのマスターになるようにしてください。 |
||
+ | |||
+ | {{Tip|インストールを行うときは、インストールに関連するドライブだけを接続することを推奨します。}} |
||
+ | |||
+ | {| border="1" width="100%" style="text-align:center;" |
||
+ | |width="150px" align="left" | '''LVM 論理ボリューム''' |
||
+ | |{{ic|/}} |
||
+ | |{{ic|/var}} |
||
+ | |{{ic|/swap}} |
||
+ | |{{ic|/home}} |
||
+ | |} |
||
+ | {| border="1" width="100%" style="text-align:center;" |
||
+ | |width="150px" align="left" | '''LVM ボリュームグループ''' |
||
+ | |{{ic|/dev/VolGroupArray}} |
||
+ | |} |
||
+ | {| border="1" width="100%" style="text-align:center;" |
||
+ | |width="150px" align="left" | '''RAID アレイ''' |
||
+ | |{{ic|/dev/md0}} |
||
+ | |{{ic|/dev/md1}} |
||
+ | |} |
||
+ | {| border="1" width="100%" style="text-align:center;" |
||
+ | |width="150px" align="left" | '''物理パーティション''' |
||
+ | |{{ic|/dev/sda1}} |
||
+ | |{{ic|/dev/sdb1}} |
||
+ | |{{ic|/dev/sdc1}} |
||
+ | |{{ic|/dev/sda2}} |
||
+ | |{{ic|/dev/sdb2}} |
||
+ | |{{ic|/dev/sdc2}} |
||
+ | |} |
||
+ | {| border="1" width="100%" style="text-align:center;" |
||
+ | |width="150px" align="left" | '''ハードドライブ''' |
||
+ | |{{ic|/dev/sda}} |
||
+ | |{{ic|/dev/sdb}} |
||
+ | |{{ic|/dev/sdc}} |
||
+ | |} |
||
+ | |||
+ | === スワップ領域 === |
||
+ | |||
+ | {{note|パフォーマンスを優先したい場合は、カーネルにスワップパーティションを使わせるようにしてください。カーネルはデフォルトでストライピングを行います。}} |
||
+ | |||
+ | 別に RAID1 アレイを作成したり LVM 論理ボリュームを作成するなど、チュートリアルによってスワップ領域の扱い方は大分違います。スワップ領域を別のアレイに作成しても冗長性は高まりません。その代わり、スワップ領域が破損してシステムが操作できなくなる状態になるのを防ぐことには役立ちます。この問題はスワップ領域が root ディレクトリと同一のパーティションに存在する場合に発生することがあります。 |
||
+ | |||
+ | === MBR と GPT === |
||
+ | |||
+ | [[Wikipedia:GUID Partition Table]] を参照してください。 |
||
+ | |||
+ | 1980年台の初期から広く使われている [[Master Boot Record]] (MBR) パーティションスキームには制限があり、最近のハードウェアでの使用に影響があります。[[GUID Partition Table]] (GPT) は Intel が開発した [[Wikipedia:Unified Extensible Firmware Interface|UEFI]] の仕様に基づく、パーティションテーブルの新しい標準レイアウトです。GPT には MBR と比べて多数の改善が施されていますが、GRUB2 で使う場合、ディスクの最初にパーティションを追加で作成する必要があります (参照: [[GRUB#GUID Partition Table (GPT) 特有の手順|GPT 特有の手順]])。 |
||
+ | |||
+ | === ブートローダー === |
||
+ | |||
+ | このチュートリアルでは [[GRUB]] ではなく [[Syslinux]] を使います。[[GPT]] で GRUB を使用する場合、[[GRUB#GUID Partition Table (GPT) 特有の手順|BIOS Boot Partition]] が追加で必要になります。 |
||
+ | |||
+ | initramfs と組み合わせることで、GRUB は mdadm によって作成されるメタデータの最新デフォルトスタイル (1.2) に対応します。Arch Linux では initramfs は [[mkinitcpio]] によって置き換えられます。Syslinux はバージョン 1.0 しかサポートしていないので、{{ic|<nowiki>--metadata=1.0</nowiki>}} オプションが必要です。 |
||
+ | |||
+ | ブートローダーによっては (例: [[GRUB Legacy]], [[LILO]]) は 1.x のメタデータバージョンをサポートしておらず、旧式のバージョンの 0.90 が必要なことがあります。そのようなブートローダーを使用する場合、[[#RAID のインストール|RAID のインストール]]をするときに {{ic|/boot}} アレイに {{ic|<nowiki>--metadata=0.90</nowiki>}} オプションを追加するようにしてください。 |
||
+ | |||
+ | == インストール == |
||
+ | |||
+ | [[インストールガイド]]に書かれているとおりに、最新のインストールメディアを入手して Arch Linux インストーラーを起動してください。ガイドの指示に従ってネットワークの設定まで行なって下さい。 |
||
+ | |||
+ | ==== カーネルモジュールのロード ==== |
||
+ | |||
+ | {{ic|Alt}}+{{ic|F2}} を押して別の TTY ターミナルを開いて下さい。適切な RAID (例: {{ic|raid0}}, {{ic|raid1}}, {{ic|raid5}}, {{ic|raid6}}, {{ic|raid10}}) と LVM ({{ic|dm-mod}}) のモジュールをロードします。以下は RAID1 と RAID5 を利用する場合の例です: |
||
+ | # modprobe raid1 |
||
+ | # modprobe raid5 |
||
+ | # modprobe dm-mod |
||
+ | |||
+ | === ハードドライブの準備 === |
||
+ | |||
+ | {{note|ハードドライブの準備が既にできている場合は、[[#RAID のインストール|RAID のインストール]]まで進んで下さい。ハードドライブの準備は他のパーティショニングソフトウェアでも行えます (参照: [http://yannickloth.be/blog/2010/08/01/installing-archlinux-with-software-raid1-encrypted-filesystem-and-lvm2/ Article])。}} |
||
+ | |||
+ | ハードドライブにはそれぞれ 100MB の {{ic|/boot}} パーティションと 2048MB の {{ic|/swap}} パーティション、そして残り全部を使用する {{ic|/}} パーティションを作成します。 |
||
+ | |||
+ | ブートパーティションは RAID1 にします。ブートパーティションをストライプしたり (RAID0)、RAID5 や RAID6 などにすることはできません。GRUB に RAID ドライバーがないのはこのためです。他のレベルを使用するとシステムが起動できなくなります。どれか一つのブートパーティションに問題が起こった場合、ブートローダーは {{ic|/boot}} アレイの他の2つのパーティションから通常通りに起動できます。 |
||
+ | |||
+ | ==== gdisk のインストール ==== |
||
+ | |||
+ | ほとんどのディスクパーティショニングソフトウェア (fdisk や sfdisk) は GPT をサポートしていないため、{{Pkg|gptfdisk}} をインストールしてブートローダーのパーティションのパーティションタイプを設定する必要があります。 |
||
+ | |||
+ | [[pacman]] データベースを更新: |
||
+ | $ pacman-db-upgrade |
||
+ | |||
+ | パッケージリストを更新: |
||
+ | $ pacman -Syy |
||
+ | |||
+ | '''gptfdisk''' をインストールしてください。 |
||
+ | |||
+ | ==== ハードドライブのパーティション ==== |
||
+ | |||
+ | {{ic|gdisk}} を使って3つのハードドライブ ({{ic|/dev/sda}}, {{ic|/dev/sdb}}, {{ic|/dev/sdc}}) に3つのパーティションを作成します: |
||
+ | |||
+ | Name Flags Part Type FS Type [Label] Size (MB) |
||
+ | ------------------------------------------------------------------------------- |
||
+ | sda1 Boot Primary linux_raid_m 100.00 # /boot |
||
+ | sda2 Primary linux_raid_m 2000.00 # /swap |
||
+ | sda3 Primary linux_raid_m 97900.00 # / |
||
+ | |||
+ | 1番目のハードドライブを {{ic|gdisk}} で開いて下さい: |
||
+ | # gdisk /dev/sda |
||
+ | |||
+ | そしてプロンプトに以下のコマンドを入力: |
||
+ | # 新しいパーティションを追加: {{ic|n}} |
||
+ | # デフォルトのパーティション番号を選択: {{ic|Enter}} |
||
+ | # 最初のセクタはデフォルトを使用: {{ic|Enter}} |
||
+ | # {{ic|sda1}} と {{ic|sda2}} の容量を MB で指定 ({{ic|+100MB}} と {{ic|+2048M}})。{{ic|sda3}} は {{ic|Enter}} を押してディスクの残り全部を使用。 |
||
+ | # パーティションタイプは {{ic|Linux RAID}} を選択: {{ic|fd00}} |
||
+ | # テーブルをディスクに書き込んで終了: {{ic|w}} |
||
+ | |||
+ | 上記の手順を {{ic|/dev/sdb}} と {{ic|/dev/sdc}} で繰り返して下さい。あるいは下の {{ic|sgdisk}} を使う方法を使って下さい。新しいテーブルをカーネルに認識させるために再起動が必要です。 |
||
+ | |||
+ | {{Note|各ディスクには全く同じパーティションを作成するようにしてください。異なるサイズのパーティショングループを組み合わせて RAID パーティションを作成することも可能ですが、冗長パーティションは一番小さいパーティションの倍数単位になり、無駄な領域が出てしまいます。}} |
||
+ | |||
+ | ==== sgdisk でパーティションを複製 ==== |
||
+ | |||
+ | GPT を使用する場合、{{ic|sgdisk}} を使って {{ic|/dev/sda}} のパーティションテーブルを他の2つのハードドライブに複製することができます: |
||
+ | $ sgdisk --backup=table /dev/sda |
||
+ | $ sgdisk --load-backup=table /dev/sdb |
||
+ | $ sgdisk --load-backup=table /dev/sdc |
||
+ | |||
+ | {{Note|上記の方法を使ってドライブのパーティションテーブルを複製して、既存のシステムの置換ドライブとする場合 (例: RAID ドライブの交換)、{{ic|sgdisk -G /dev/<newDrive>}} でディスクとパーティションの UUID をランダムに作成して、UUID が一意になるようにしてください。}} |
||
+ | |||
+ | === RAID のインストール === |
||
+ | |||
+ | 物理パーティションを作成したら、{{ic|mdadm}} で '''/boot''', '''/swap''', '''/''' アレイを設定することができます。{{ic|mdadm}} は RAID を管理するための高度なツールで、{{ic|mdadm}} を使うことでインストール環境の中に {{ic|/etc/mdadm.conf}} を作成します。 |
||
+ | |||
+ | {{ic|/dev/md0}} に '''/''' アレイを作成: |
||
+ | # mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[abc]3 |
||
+ | |||
+ | {{ic|/dev/md1}} に '''/swap''' アレイを作成: |
||
+ | # mdadm --create /dev/md1 --level=1 --raid-devices=3 /dev/sd[abc]2 |
||
+ | |||
+ | {{Note| |
||
+ | * データの消失を防ぐために RAID を使用する場合 (ディスクが故障したときに実行中のアプリケーションが落ちても気にしない場合)、スワップパーティションを RAID する必要はありません。複数のスワップパーティションを別々に使うことができます。 |
||
+ | * インストールするブートローダーが RAID メタデータのバージョン 1.x をサポートしていない場合、以下のコマンドに {{ic|<nowiki>--metadata=0.90</nowiki>}} オプションを追加してください。}} |
||
+ | |||
+ | {{ic|/dev/md2}} に '''/boot''' アレイを作成: |
||
+ | # mdadm --create /dev/md2 --level=1 --raid-devices=3 --metadata=1.0 /dev/sd[abc]1 |
||
+ | |||
+ | ==== 同期 ==== |
||
+ | |||
+ | {{Tip|新しいハードドライブで最初の再同期を避けたい場合、{{ic|--assume-clean}} フラグを追加してください。}} |
||
+ | |||
+ | RAID ボリュームを作成したら、アレイの中の物理パーティションの中身が同期されます。{{ic|/proc/mdstat}} の出力を以下のように定期的に更新することで進捗を監視できます: |
||
+ | # watch -n .1 cat /proc/mdstat |
||
+ | |||
+ | {{Tip|{{ic|Alt+F3}} を打ってから上記のコマンドを実行すれば、同期作業の進捗を別の TTY ターミナルで確認できます。}} |
||
+ | |||
+ | アレイに関する詳細な情報は次のコマンドで確認できます: |
||
+ | # mdadm --misc --detail /dev/md[012] | less |
||
+ | 同期が完了したら {{ic|State}} 行が {{ic|clean}} になります。出力の一番下のテーブルの各デバイスの {{ic|State}} カラムが {{ic|spare}} または {{ic|active sync}} になるはずです。{{ic|active sync}} はアレイの各デバイスが有効になっていることを意味します。 |
||
+ | |||
+ | {{Note|RAID 同期はファイルシステムから見えないため、インストールを進めてコンピュータを再起動できます。}} |
||
+ | |||
+ | ==== スクラブ ==== |
||
+ | 定期的にデータ [https://en.wikipedia.org/wiki/Data_scrubbing スクラブ] を実行してエラーを確認・修復することを推奨します。 |
||
+ | {{Note|アレイのサイズや設定によっては、スクラブには数時間以上かかることもあります。}} |
||
+ | |||
+ | データスクラブを開始するには: |
||
+ | # echo check > /sys/block/md0/md/sync_action |
||
+ | |||
+ | mdadm に関連する他のタスク/アイテムと同じように、スクラブの状態も確認できます: |
||
+ | # cat /proc/mdstat |
||
+ | |||
+ | 例: |
||
+ | {{hc|$ cat /proc/mdstat|<nowiki> |
||
+ | Personalities : [raid6] [raid5] [raid4] [raid1] |
||
+ | md0 : active raid1 sdb1[0] sdc1[1] |
||
+ | 3906778112 blocks super 1.2 [2/2] [UU] |
||
+ | [>....................] check = 4.0% (158288320/3906778112) finish=386.5min speed=161604K/sec |
||
+ | bitmap: 0/30 pages [0KB], 65536KB chunk |
||
+ | </nowiki>}} |
||
+ | |||
+ | 実行中のデータスクラブを停止するには: |
||
+ | # echo idle > /sys/block/md0/md/sync_action |
||
+ | |||
+ | スクラブが完了したら、不良ブロックの数を確認することができます: |
||
+ | # cat /sys/block/md0/md/mismatch_cnt |
||
+ | |||
+ | check 操作は不良セクタとドライブの不一致をスキャンします。不良セクタは自動的に修復されます。不一致がみつかった場合 (良好セクタに不良データが含まれていた場合) は記録だけが取られ (下を参照)、対処は何もされません。管理者がセクタのデータを精査して、冗長情報からセクタを再構築して正しいデータを保持することができます。 |
||
+ | |||
+ | ===== スクラブに関するノート ===== |
||
+ | {{Note|{{ic|/sys/block/md0/md/sync_action}} に ''repair'' を echo することもできますが、不一致のデータが存在した場合に自動的に更新されてしまうため危険です。パリティとデータブロックのどちらが正しいのかわからないためです。不良データが正しいデータで置き換えられるかどうかは運任せになってしまいます。}} |
||
+ | |||
+ | 定期的にスクラブを root で実行する cron ジョブを設定すると良いでしょう。{{AUR|raid-check}} を見て下さい。 |
||
+ | |||
+ | ===== スクラブの RAID1 と RAID10 に関するノート ===== |
||
+ | RAID1 と RAID10 では書き込みはバッファされないので、アレイに問題がない場合でもアレイに不一致が検出されることがあります。不一致が検出されるのは一時的なデータ領域だけで、問題はありません。しかしながら、不一致がただの一時的なデータなのか、あるいは実際に問題が発生することを意味しているかの違いを明言することはできません。RAID1 と RAID10 アレイには偽陽性があります。それでも、デバイスに不良セクタが存在しないか確認するためにスクラブを行うことを推奨します。 |
||
+ | |||
+ | === LVM のインストール === |
||
+ | |||
+ | このセクションでは2つの RAID を物理ボリューム (PV) に変換します。そして PV をボリュームグループ (VG) にまとめます。VG は論理ボリューム (LV) に分割することで実際のパーティションのように扱えるようになります (例: {{ic|/}}, {{ic|/var}}, {{ic|/home}})。LVM のことをよく知らない場合は [[LVM]] の記事を読んで下さい。 |
||
+ | |||
+ | ==== 物理ボリュームの作成 ==== |
||
+ | |||
+ | 以下のコマンドを使って RAID を物理ボリューム (PV) に変換することで LVM から RAID にアクセスできるようにします。作成した RAID アレイの数だけコマンドを繰り返し実行してください: |
||
+ | # pvcreate /dev/md0 |
||
+ | |||
+ | {{Note|既存のボリュームグループに PV を作成する場合は失敗することがあります。そのような場合は {{ic|-ff}} オプションを追加すると良いでしょう。}} |
||
+ | |||
+ | LVM で PV が追加されたことを確認するには: |
||
+ | # pvdisplay |
||
+ | |||
+ | ==== ボリュームグループの作成 ==== |
||
+ | |||
+ | 次に PV にボリュームグループ (VG) を作成します。 |
||
+ | |||
+ | 1番目の PV でボリュームグループ (VG) を作成: |
||
+ | # vgcreate VolGroupArray /dev/md0 |
||
+ | |||
+ | LVM に VG が追加されたことを確認するには: |
||
+ | # vgdisplay |
||
+ | |||
+ | ==== 論理ボリュームの作成 ==== |
||
+ | |||
+ | 通常のハードドライブの準備と同じように、VG に論理ボリューム (LV) を作成する必要があります。この例では {{ic|/}}, {{ic|/var}}, {{ic|/swap}}, {{ic|/home}} の LV を作成します。LV は {{ic|/dev/mapper/VolGroupArray-<lvname>}} や {{ic|/dev/VolGroupArray/<lvname>}} でアクセスできるようになります。 |
||
+ | |||
+ | '''/''' の LV を作成: |
||
+ | # lvcreate -L 20G VolGroupArray -n lvroot |
||
+ | |||
+ | '''/var''' の LV を作成: |
||
+ | # lvcreate -L 15G VolGroupArray -n lvvar |
||
+ | |||
+ | {{Note|LVM にスワップ領域を追加したい場合、{{ic|-C y}} オプションを使って {{ic|/swap}} LV を作成してください。連続的なパーティションにすることで、複数のディスクや物理エクステントにスワップ領域がまたがってしまうことを避けることができます: {{ic|# lvcreate -C y -L 2G VolGroupArray -n lvswap}}。}} |
||
+ | |||
+ | VG の残り容量を全て使用する '''/home''' の LV を作成: |
||
+ | # lvcreate -l +100%FREE VolGroupArray -n lvhome |
||
+ | |||
+ | LVM で LV が作成されたことを確認するには: |
||
+ | # lvdisplay |
||
+ | |||
+ | {{Tip|比較的小規模な論理ボリュームから始めて後から必要に応じて拡張できます。拡張用にボリュームグループに空き領域を残しておくと良いでしょう。}} |
||
+ | |||
+ | === RAID 設定の更新 === |
||
+ | |||
+ | インストーラーは {{ic|/etc/mdadm.conf}} を使って対象のシステムに initrd を作成するので、RAID を設定するようにファイルを更新する必要があります。元のファイルは削除してかまいません。mdadm が自動的に設定します。mdadm を使って現在の構成で新しい設定ファイルを作成してください: |
||
+ | # mdadm --examine --scan > /etc/mdadm.conf |
||
+ | |||
+ | {{Note|インストーラーの中から {{ic|mdadm.conf}} ファイルが正しく書き込まれたか確認するために[[RAID#設定ファイルの更新|設定ファイルの更新]]セクションのノートを読んで下さい。}} |
||
+ | |||
+ | === ハードドライブの準備 === |
||
+ | |||
+ | ファイルシステムやマウントポイントを設定して下さい。設定するのは PV (例: {{ic|/dev/mapper/VolGroupArray-lvhome}}) だけであり実際のディスク (例: {{ic|/dev/sda1}}) は弄らないようにします。 |
||
+ | |||
+ | {{Warning|{{ic|mkfs.xfs}} はチャンクサイズやストライプサイズをアライメントしてパフォーマンスを最適化しません (参照: [http://www.linuxpromagazine.com/Issues/2009/108/RAID-Performance Optimum RAID])。}} |
||
+ | |||
+ | === システムの設定 === |
||
+ | |||
+ | {{Warning|インストールに進む前に [[LVM]] の手順に従って下さい。}} |
||
+ | |||
+ | ==== mkinitcpio.conf ==== |
||
+ | |||
+ | [[mkinitcpio]] でフックを使うことで起動時にアレイを構築することができます。詳しくは [[mkinitcpio#RAID を使う]]を見て下さい。 |
||
+ | # {{ic|/etc/mkinitcpio.conf}} の {{ic|MODULES}} リストに {{ic|dm_mod}} モジュールを追加してください。 |
||
+ | # {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} リストに {{ic|udev}} モジュールの後ろに {{ic|mdadm_udev}} と {{ic|lvm2}} フックを追加してください。 |
||
+ | |||
+ | === 再起動 === |
||
+ | |||
+ | 設定が完了したらマシンを再起動してください: |
||
+ | # reboot |
||
+ | |||
+ | === 別のブートドライブにブートローダーをインストール === |
||
+ | |||
+ | 新しいシステムが起動できるようになったら、ブートローダーを他の2つのディスクにインストールすると良いでしょう。そうすることで、ディスクが故障しても、(BIOS でブートの順番を切り替えるなどして) 他のドライブからシステムを起動できます。使用するブートローダーのシステムによって手順は異なります: |
||
+ | |||
+ | ==== Syslinux ==== |
||
+ | |||
+ | root で新しいシステムにログインして次を実行: |
||
+ | # /usr/sbin/syslinux-install_update -iam |
||
+ | {{Note|[[GPT]] を使用する場合、ブートフラグを設定するバックエンドとして {{pkg|gptfdisk}} パッケージが必要になります。}} |
||
+ | |||
+ | Syslinux は各 RAID アレイの MBR にブートローダーをインストールします: |
||
+ | Detected RAID on /boot - installing Syslinux with --raid |
||
+ | Syslinux install successful |
||
+ | |||
+ | Attribute Legacy Bios Bootable Set - /dev/sda1 |
||
+ | Attribute Legacy Bios Bootable Set - /dev/sdb1 |
||
+ | Installed MBR (/usr/lib/syslinux/gptmbr.bin) to /dev/sda |
||
+ | Installed MBR (/usr/lib/syslinux/gptmbr.bin) to /dev/sdb |
||
+ | |||
+ | ==== GRUB Legacy ==== |
||
+ | |||
+ | root で新しいシステムにログインして次を実行: |
||
+ | # grub |
||
+ | grub> device (hd0) /dev/sdb |
||
+ | grub> root (hd0,0) |
||
+ | grub> setup (hd0) |
||
+ | grub> device (hd0) /dev/sdc |
||
+ | grub> root (hd0,0) |
||
+ | grub> setup (hd0) |
||
+ | grub> quit |
||
+ | |||
+ | === ファイルシステムのパーティションスキームをバックアップ === |
||
+ | |||
+ | ブートローダーを追加したら、それぞれのドライブのパーティションの状態を保存しておくと良いでしょう。どれかのドライブが故障したときにディスクを交換・再構築するのが楽になります。<code>sfdisk</code> ツールを使って以下を実行することで保存できます: |
||
+ | # mkdir /etc/partitions |
||
+ | # sfdisk --dump /dev/sda >/etc/partitions/disc0.partitions |
||
+ | # sfdisk --dump /dev/sdb >/etc/partitions/disc1.partitions |
||
+ | # sfdisk --dump /dev/sdc >/etc/partitions/disc2.partitions |
||
+ | |||
+ | == 管理 == |
||
+ | ソフトウェア RAID や LVM を管理する方法は [[RAID]] と [[LVM]] の記事を参照してください。 |
||
+ | |||
+ | == 参照 == |
||
+ | * [http://yannickloth.be/blog/2010/08/01/installing-archlinux-with-software-raid1-encrypted-filesystem-and-lvm2/ Setup Arch Linux on top of raid, LVM2 and encrypted partitions] by Yannick Loth |
||
+ | * [https://stackoverflow.com/questions/237434/raid-verses-lvm RAID vs. LVM] on [[Wikipedia:Stack Overflow|Stack Overflow]] |
||
+ | * [http://serverfault.com/questions/217666/what-is-better-lvm-on-raid-or-raid-on-lvm What is better LVM on RAID or RAID on LVM?] on [[Wikipedia:Server Fault|Server Fault]] |
||
+ | * [http://www.gagme.com/greg/linux/raid-lvm.php Managing RAID and LVM with Linux (v0.5)] by Gregory Gulik |
||
+ | * [https://www.gentoo.org/doc/en/gentoo-x86+raid+lvm2-quickinstall.xml Gentoo Linux x86 with Software Raid and LVM2 Quick Install Guide] |
||
+ | * 2011-09-08 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=126172 LVM & RAID (1.2 metadata) + SYSLINUX] |
||
+ | * 2011-04-20 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?pid=965357 Software RAID and LVM questions] |
||
+ | * 2011-03-12 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=114965 Some newbie questions about installation, LVM, grub, RAID] |
2024年8月26日 (月) 16:42時点における最新版
この記事ではソフトウェア RAID や論理ボリュームマネージャ (LVM) を使って Arch Linux をインストール・設定する方法を説明します。RAID と LVM を組み合わせることは RAID だけを使うときに比べて様々な利点があります。
目次
イントロダクション
RAID と LVM は似ている技術のように思えるかもしれませんが、どちらも独自の特徴があります。この記事では3つの同じような 1TB の SATA ハードディスクを用いる例を使います。ドライブは /dev/sda
, /dev/sdb
, /dev/sdc
としてアクセスできると仮定します。IDE ドライブを使用する場合、性能を最大限に出すために、それぞれのドライブが別々のチャンネルのマスターになるようにしてください。
LVM 論理ボリューム | /
|
/var
|
/swap
|
/home
|
LVM ボリュームグループ | /dev/VolGroupArray
|
RAID アレイ | /dev/md0
|
/dev/md1
|
物理パーティション | /dev/sda1
|
/dev/sdb1
|
/dev/sdc1
|
/dev/sda2
|
/dev/sdb2
|
/dev/sdc2
|
ハードドライブ | /dev/sda
|
/dev/sdb
|
/dev/sdc
|
スワップ領域
別に RAID1 アレイを作成したり LVM 論理ボリュームを作成するなど、チュートリアルによってスワップ領域の扱い方は大分違います。スワップ領域を別のアレイに作成しても冗長性は高まりません。その代わり、スワップ領域が破損してシステムが操作できなくなる状態になるのを防ぐことには役立ちます。この問題はスワップ領域が root ディレクトリと同一のパーティションに存在する場合に発生することがあります。
MBR と GPT
Wikipedia:GUID Partition Table を参照してください。
1980年台の初期から広く使われている Master Boot Record (MBR) パーティションスキームには制限があり、最近のハードウェアでの使用に影響があります。GUID Partition Table (GPT) は Intel が開発した UEFI の仕様に基づく、パーティションテーブルの新しい標準レイアウトです。GPT には MBR と比べて多数の改善が施されていますが、GRUB2 で使う場合、ディスクの最初にパーティションを追加で作成する必要があります (参照: GPT 特有の手順)。
ブートローダー
このチュートリアルでは GRUB ではなく Syslinux を使います。GPT で GRUB を使用する場合、BIOS Boot Partition が追加で必要になります。
initramfs と組み合わせることで、GRUB は mdadm によって作成されるメタデータの最新デフォルトスタイル (1.2) に対応します。Arch Linux では initramfs は mkinitcpio によって置き換えられます。Syslinux はバージョン 1.0 しかサポートしていないので、--metadata=1.0
オプションが必要です。
ブートローダーによっては (例: GRUB Legacy, LILO) は 1.x のメタデータバージョンをサポートしておらず、旧式のバージョンの 0.90 が必要なことがあります。そのようなブートローダーを使用する場合、RAID のインストールをするときに /boot
アレイに --metadata=0.90
オプションを追加するようにしてください。
インストール
インストールガイドに書かれているとおりに、最新のインストールメディアを入手して Arch Linux インストーラーを起動してください。ガイドの指示に従ってネットワークの設定まで行なって下さい。
カーネルモジュールのロード
Alt
+F2
を押して別の TTY ターミナルを開いて下さい。適切な RAID (例: raid0
, raid1
, raid5
, raid6
, raid10
) と LVM (dm-mod
) のモジュールをロードします。以下は RAID1 と RAID5 を利用する場合の例です:
# modprobe raid1 # modprobe raid5 # modprobe dm-mod
ハードドライブの準備
ハードドライブにはそれぞれ 100MB の /boot
パーティションと 2048MB の /swap
パーティション、そして残り全部を使用する /
パーティションを作成します。
ブートパーティションは RAID1 にします。ブートパーティションをストライプしたり (RAID0)、RAID5 や RAID6 などにすることはできません。GRUB に RAID ドライバーがないのはこのためです。他のレベルを使用するとシステムが起動できなくなります。どれか一つのブートパーティションに問題が起こった場合、ブートローダーは /boot
アレイの他の2つのパーティションから通常通りに起動できます。
gdisk のインストール
ほとんどのディスクパーティショニングソフトウェア (fdisk や sfdisk) は GPT をサポートしていないため、gptfdisk をインストールしてブートローダーのパーティションのパーティションタイプを設定する必要があります。
pacman データベースを更新:
$ pacman-db-upgrade
パッケージリストを更新:
$ pacman -Syy
gptfdisk をインストールしてください。
ハードドライブのパーティション
gdisk
を使って3つのハードドライブ (/dev/sda
, /dev/sdb
, /dev/sdc
) に3つのパーティションを作成します:
Name Flags Part Type FS Type [Label] Size (MB) ------------------------------------------------------------------------------- sda1 Boot Primary linux_raid_m 100.00 # /boot sda2 Primary linux_raid_m 2000.00 # /swap sda3 Primary linux_raid_m 97900.00 # /
1番目のハードドライブを gdisk
で開いて下さい:
# gdisk /dev/sda
そしてプロンプトに以下のコマンドを入力:
- 新しいパーティションを追加:
n
- デフォルトのパーティション番号を選択:
Enter
- 最初のセクタはデフォルトを使用:
Enter
sda1
とsda2
の容量を MB で指定 (+100MB
と+2048M
)。sda3
はEnter
を押してディスクの残り全部を使用。- パーティションタイプは
Linux RAID
を選択:fd00
- テーブルをディスクに書き込んで終了:
w
上記の手順を /dev/sdb
と /dev/sdc
で繰り返して下さい。あるいは下の sgdisk
を使う方法を使って下さい。新しいテーブルをカーネルに認識させるために再起動が必要です。
sgdisk でパーティションを複製
GPT を使用する場合、sgdisk
を使って /dev/sda
のパーティションテーブルを他の2つのハードドライブに複製することができます:
$ sgdisk --backup=table /dev/sda $ sgdisk --load-backup=table /dev/sdb $ sgdisk --load-backup=table /dev/sdc
RAID のインストール
物理パーティションを作成したら、mdadm
で /boot, /swap, / アレイを設定することができます。mdadm
は RAID を管理するための高度なツールで、mdadm
を使うことでインストール環境の中に /etc/mdadm.conf
を作成します。
/dev/md0
に / アレイを作成:
# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[abc]3
/dev/md1
に /swap アレイを作成:
# mdadm --create /dev/md1 --level=1 --raid-devices=3 /dev/sd[abc]2
/dev/md2
に /boot アレイを作成:
# mdadm --create /dev/md2 --level=1 --raid-devices=3 --metadata=1.0 /dev/sd[abc]1
同期
RAID ボリュームを作成したら、アレイの中の物理パーティションの中身が同期されます。/proc/mdstat
の出力を以下のように定期的に更新することで進捗を監視できます:
# watch -n .1 cat /proc/mdstat
アレイに関する詳細な情報は次のコマンドで確認できます:
# mdadm --misc --detail /dev/md[012] | less
同期が完了したら State
行が clean
になります。出力の一番下のテーブルの各デバイスの State
カラムが spare
または active sync
になるはずです。active sync
はアレイの各デバイスが有効になっていることを意味します。
スクラブ
定期的にデータ スクラブ を実行してエラーを確認・修復することを推奨します。
データスクラブを開始するには:
# echo check > /sys/block/md0/md/sync_action
mdadm に関連する他のタスク/アイテムと同じように、スクラブの状態も確認できます:
# cat /proc/mdstat
例:
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1] md0 : active raid1 sdb1[0] sdc1[1] 3906778112 blocks super 1.2 [2/2] [UU] [>....................] check = 4.0% (158288320/3906778112) finish=386.5min speed=161604K/sec bitmap: 0/30 pages [0KB], 65536KB chunk
実行中のデータスクラブを停止するには:
# echo idle > /sys/block/md0/md/sync_action
スクラブが完了したら、不良ブロックの数を確認することができます:
# cat /sys/block/md0/md/mismatch_cnt
check 操作は不良セクタとドライブの不一致をスキャンします。不良セクタは自動的に修復されます。不一致がみつかった場合 (良好セクタに不良データが含まれていた場合) は記録だけが取られ (下を参照)、対処は何もされません。管理者がセクタのデータを精査して、冗長情報からセクタを再構築して正しいデータを保持することができます。
スクラブに関するノート
定期的にスクラブを root で実行する cron ジョブを設定すると良いでしょう。raid-checkAUR を見て下さい。
スクラブの RAID1 と RAID10 に関するノート
RAID1 と RAID10 では書き込みはバッファされないので、アレイに問題がない場合でもアレイに不一致が検出されることがあります。不一致が検出されるのは一時的なデータ領域だけで、問題はありません。しかしながら、不一致がただの一時的なデータなのか、あるいは実際に問題が発生することを意味しているかの違いを明言することはできません。RAID1 と RAID10 アレイには偽陽性があります。それでも、デバイスに不良セクタが存在しないか確認するためにスクラブを行うことを推奨します。
LVM のインストール
このセクションでは2つの RAID を物理ボリューム (PV) に変換します。そして PV をボリュームグループ (VG) にまとめます。VG は論理ボリューム (LV) に分割することで実際のパーティションのように扱えるようになります (例: /
, /var
, /home
)。LVM のことをよく知らない場合は LVM の記事を読んで下さい。
物理ボリュームの作成
以下のコマンドを使って RAID を物理ボリューム (PV) に変換することで LVM から RAID にアクセスできるようにします。作成した RAID アレイの数だけコマンドを繰り返し実行してください:
# pvcreate /dev/md0
LVM で PV が追加されたことを確認するには:
# pvdisplay
ボリュームグループの作成
次に PV にボリュームグループ (VG) を作成します。
1番目の PV でボリュームグループ (VG) を作成:
# vgcreate VolGroupArray /dev/md0
LVM に VG が追加されたことを確認するには:
# vgdisplay
論理ボリュームの作成
通常のハードドライブの準備と同じように、VG に論理ボリューム (LV) を作成する必要があります。この例では /
, /var
, /swap
, /home
の LV を作成します。LV は /dev/mapper/VolGroupArray-<lvname>
や /dev/VolGroupArray/<lvname>
でアクセスできるようになります。
/ の LV を作成:
# lvcreate -L 20G VolGroupArray -n lvroot
/var の LV を作成:
# lvcreate -L 15G VolGroupArray -n lvvar
VG の残り容量を全て使用する /home の LV を作成:
# lvcreate -l +100%FREE VolGroupArray -n lvhome
LVM で LV が作成されたことを確認するには:
# lvdisplay
RAID 設定の更新
インストーラーは /etc/mdadm.conf
を使って対象のシステムに initrd を作成するので、RAID を設定するようにファイルを更新する必要があります。元のファイルは削除してかまいません。mdadm が自動的に設定します。mdadm を使って現在の構成で新しい設定ファイルを作成してください:
# mdadm --examine --scan > /etc/mdadm.conf
ハードドライブの準備
ファイルシステムやマウントポイントを設定して下さい。設定するのは PV (例: /dev/mapper/VolGroupArray-lvhome
) だけであり実際のディスク (例: /dev/sda1
) は弄らないようにします。
システムの設定
mkinitcpio.conf
mkinitcpio でフックを使うことで起動時にアレイを構築することができます。詳しくは mkinitcpio#RAID を使うを見て下さい。
/etc/mkinitcpio.conf
のMODULES
リストにdm_mod
モジュールを追加してください。/etc/mkinitcpio.conf
のHOOKS
リストにudev
モジュールの後ろにmdadm_udev
とlvm2
フックを追加してください。
再起動
設定が完了したらマシンを再起動してください:
# reboot
別のブートドライブにブートローダーをインストール
新しいシステムが起動できるようになったら、ブートローダーを他の2つのディスクにインストールすると良いでしょう。そうすることで、ディスクが故障しても、(BIOS でブートの順番を切り替えるなどして) 他のドライブからシステムを起動できます。使用するブートローダーのシステムによって手順は異なります:
Syslinux
root で新しいシステムにログインして次を実行:
# /usr/sbin/syslinux-install_update -iam
Syslinux は各 RAID アレイの MBR にブートローダーをインストールします:
Detected RAID on /boot - installing Syslinux with --raid Syslinux install successful
Attribute Legacy Bios Bootable Set - /dev/sda1 Attribute Legacy Bios Bootable Set - /dev/sdb1 Installed MBR (/usr/lib/syslinux/gptmbr.bin) to /dev/sda Installed MBR (/usr/lib/syslinux/gptmbr.bin) to /dev/sdb
GRUB Legacy
root で新しいシステムにログインして次を実行:
# grub grub> device (hd0) /dev/sdb grub> root (hd0,0) grub> setup (hd0) grub> device (hd0) /dev/sdc grub> root (hd0,0) grub> setup (hd0) grub> quit
ファイルシステムのパーティションスキームをバックアップ
ブートローダーを追加したら、それぞれのドライブのパーティションの状態を保存しておくと良いでしょう。どれかのドライブが故障したときにディスクを交換・再構築するのが楽になります。sfdisk
ツールを使って以下を実行することで保存できます:
# mkdir /etc/partitions # sfdisk --dump /dev/sda >/etc/partitions/disc0.partitions # sfdisk --dump /dev/sdb >/etc/partitions/disc1.partitions # sfdisk --dump /dev/sdc >/etc/partitions/disc2.partitions
管理
ソフトウェア RAID や LVM を管理する方法は RAID と LVM の記事を参照してください。
参照
- Setup Arch Linux on top of raid, LVM2 and encrypted partitions by Yannick Loth
- RAID vs. LVM on Stack Overflow
- What is better LVM on RAID or RAID on LVM? on Server Fault
- Managing RAID and LVM with Linux (v0.5) by Gregory Gulik
- Gentoo Linux x86 with Software Raid and LVM2 Quick Install Guide
- 2011-09-08 - Arch Linux - LVM & RAID (1.2 metadata) + SYSLINUX
- 2011-04-20 - Arch Linux - Software RAID and LVM questions
- 2011-03-12 - Arch Linux - Some newbie questions about installation, LVM, grub, RAID