久しぶりに家の NAS をリプレースしていますシリーズその1, 2の続きです。
その2、で無事に BIOS のアレコレをした結果、ディスクが認識できたので、OS をインストールしていきます。
家のサーバは、基本的に CentOS を使うようにしているのですが、新しいバージョンをということで、CentOS 8 を入れてみることに。
CentOS 8 のインストール
まずは ISO イメージをダウンロードします。
今回は、上記のミラーサイトあたりから、今時点の最新版である "CentOS-8.1.1911-x86_64-boot.iso" をダウンロードして使用しました。
HP Microserver は光学ドライブがないので、USBメモリ等に、USB ブートできるイメージとして ISO を焼き付けます。
インストール開始。言語・キーボードを選択します。
いくつかエラーが出ています・・・。1つずつ必要な部分を修正&設定していきます。
今回、NICを増設しているので、LANケーブルを接続したアダプタを利用すべく、選択します。
地域の設定を行います。TOKYO.
インストール先のデバイスを指定します。
今回は、USB メモリを OS のブートディスクにするので、そちらにルートパーティションの設定を行いました。
あとは、"ソフトウェアの選択" で最低限のインストールを指定。
他、Kdump を無効としたくらいでしょうか。(家庭利用なので...)
こんな感じで、設定を行った後、インストールを開始し、完了するのを待ちます。
OS インストール完了後
USBメモリを抜いて、OSが起動してくることを確認し、さらにネットワークに接続されている(インターネット接続可能である)ことを確認します。
ここから、このサーバを NAS にするためのセットアップ+αをしていきたいと思います。
まずはアップデート
パッケージ管理システムが yum => dnf になっているのですね。
詳細はこちらが参考になりました。
# dnf update メタデータの期限切れの最終確認: 0:00:27 時間前の 2020年02月24日 23時51分35秒 に実施しました。 依存関係が解決しました。 行うべきことはありません。 完了しました!
すでに最新化されておりました・・・ネットワークインストールしたから当たり前かw
SELinux の設定
家庭内 NAS なので無効で・・・。
"/etc/sysconfig/selinux" ファイルの以下行をこんな感じに修正。
SELINUX=disabled
ファイヤーウォールサービスの停止
家庭内 NAS なので、こちらも無効に・・・。
# systemctl stop firewalld.service # systemctl disable firewalld.service
この辺で、一度 OS を再起動します。
# shutdown -r now
RAID ボリュームの作成
NAS の本丸です。今回は、ハードディスク5本を RAID6 で組みます。
まず parted コマンドで /dev/sd[b,c,d,e,f] まで以下の要領でパーティションを切ります。
# parted /dev/sdb GNU Parted 3.2 /dev/sdb を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) >|| コマンドでデバイス名を指定。 >|| (parted) p エラー: /dev/sdb: ディスクラベルが認識できません。 モデル: ATA Hitachi HUA72303 (scsi) ディスク /dev/sdb: 3001GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: unknown ディスクフラグ:
まず print で中身を確認。
(parted) mkpart エラー: /dev/sdb: ディスクラベルが認識できません。
いきなり mkpart できなかったので、、、
(parted) mklabel gpt (parted) p モデル: ATA Hitachi HUA72303 (scsi) ディスク /dev/sdb: 3001GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ
mklabel でラベルを付与します。GPT を指定。
で、print で確認。
(parted) mkpart パーティションの名前? []? ファイルシステムの種類? [ext2]? xfs 開始? 0% 終了? 100% (parted) p モデル: ATA Hitachi HUA72303 (scsi) ディスク /dev/sdb: 3001GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt ディスクフラグ: 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 3001GB 3001GB xfs
mkpart できました。1パーティションに容量をフルで割り当て。
(parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。
終わったら、 quit です。これをディスク5つ分実行します。
# fdisk -l
終わったら fdisk コマンドのリストでも、全体でパーティションが構成できているか確認してみるのも良いですね。
# mdadm --create /dev/md0 --level=6 --raid-devices=5 /dev/sd[b,c,d,e,f]1 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
次は mdadm で RAID ボリュームを作ります。
↑こんな感じで、今回は基本デフォルトの設定で作りました。
create する際のオプション等は、man を参照するか、以下リンク先に色々書いてありました。
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid6 sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0] 8790398976 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/5] [UUUUU] [>....................] resync = 0.1% (3901136/2930132992) finish=403.3min speed=120902K/sec bitmap: 22/22 pages [88KB], 65536KB chunk unused devices: <none>
終わったら、MD デバイスのステータスを確認してみます。
きちんと Level 6 で sync が走っていますね。
# mdadm --detail --scan > /etc/mdadm.conf
MD デバイスの設定を、ファイルに出力しておきます。(お約束)
ファイルシステムの作成とマウント
# mkfs.xfs -f -b size=4096 -i size=512 -l size=64m /dev/md0 meta-data=/dev/md0 isize=512 agcount=32, agsize=68675072 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=2197599744, imaxpct=5 = sunit=128 swidth=384 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
次、XFS のファイルシステムを↑のような感じで、作成します。
(今回は XFS を選択しましたが、ファイルシステムはお好みで。)
# blkid /dev/md0 /dev/md0: UUID="eb3af70b-e1bf-4a94-9749-3e474afbd02c" TYPE="xfs"
デバイスの UUID を調べて、、、
UUID=eb3af70b-e1bf-4a94-9749-3e474afbd02c /data xfs noatime,logbufs=8 1 2
"/etc/fstab" に上記の行を記載します。
これで、OS のブート時に自動でマウントされるようになります。
# mount -a # df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.6M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 15G 1.8G 13G 13% / tmpfs 785M 0 785M 0% /run/user/0 /dev/md0 8.2T 59G 8.2T 1% /data
"mount -a" で、fstab 記載した分のマウントを手動で行った後、df コマンドで作成したパーティションが (今回の例だと) "/data" ディレクトリとしてマウントされたことが確認できました。
ネットワーク関連の設定
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
IPv6 を無効にするべく、"/etc/sysctl.conf" に上記を追記します。
(推奨としては "/etc/sysctl.d" 配下にファイルを作成して、そこに追記するのがよいかとは思います。)
# sysctl -p net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1
上記のパラメータを反映させます。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
上記のような感じで、"/etc/hosts" の IPv6 のループバックアドレスをコメントアウトします。
# nmcli --help 使い方: nmcli [OPTIONS] OBJECT { COMMAND | help } OPTIONS -a, --ask ask for missing parameters -c, --colors auto|yes|no whether to use colors in output -e, --escape yes|no escape columns separators in values -f, --fields <field,...>|all|common specify fields to output -g, --get-values <field,...>|all|common shortcut for -m tabular -t -f -h, --help print this help -m, --mode tabular|multiline output mode -o, --overview overview mode -p, --pretty pretty output -s, --show-secrets allow displaying passwords -t, --terse terse output -v, --version show program version -w, --wait <seconds> set timeout waiting for finishing operations OBJECT g[eneral] NetworkManager's general status and operations n[etworking] overall networking control r[adio] NetworkManager radio switches c[onnection] NetworkManager's connections d[evice] devices managed by NetworkManager a[gent] NetworkManager secret agent or polkit agent m[onitor] monitor NetworkManager changes
CentOS 8 は NetworkManager が採用されているので、CUIツールである nmcli コマンドを利用します。
まず help サブコマンドで使い方を確認...
# nmcli d DEVICE TYPE STATE CONNECTION enp3s0 ethernet 接続済み enp3s0 enp2s0f0 ethernet 切断済み -- enp2s0f1 ethernet 切断済み -- lo loopback 管理無し --
現在のデバイスのステータスを確認します。
# nmcli c add type bond ifname bond0 con-name bond0 bond.options "mode=balance-alb,miimon=100" 接続 'bond0' (ec83d793-0ac4-43d1-8e80-0f52dba8e33a) が正常に追加されました。
追加したデュアルポートの Intel NIC で bonding (冗長構成) を組みます。
上記コマンドで "bond0" というネットワークインターフェースを作成しました。
mode は、balance-alb (mode=6) です。
# nmcli c mod bond0 autoconnect yes
OS 起動時等で、自動的にインターフェースが有効となるように設定。
# nmcli c delete enp2s0f0 接続 'enp2s0f0' (4544935e-6284-4f25-babe-1a904d8c2f64) が正常に削除されました。 # nmcli c add type ethernet ifname enp2s0f0 con-name enp2s0f0 master bond0 接続 'enp2s0f0' (7176a79c-309d-4ac5-9467-423dd42acb82) が正常に追加されました。 # nmcli c delete enp2s0f1 接続 'enp2s0f1' (d68f21d1-72d5-4a6f-84c2-bce593caf37e) が正常に削除されました。 # nmcli c add type ethernet ifname enp2s0f1 con-name enp2s0f1 master bond0 接続 'enp2s0f1' (65da659b-434a-4f51-b26f-c86683babeca) が正常に追加されました。
"enp2s0f0" と "enp2s0f1" の2つのデバイスを、"bond0" デバイスに紐付けます。
# nmcli d DEVICE TYPE STATE CONNECTION enp3s0 ethernet 接続済み enp3s0 bond0 bond 接続済み bond0 enp2s0f0 ethernet 接続済み enp2s0f0 enp2s0f1 ethernet 接続済み enp2s0f1 lo loopback 管理無し --
各デバイスのステータスを再確認。
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: adaptive load balancing Primary Slave: None Currently Active Slave: enp2s0f0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: enp2s0f0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 90:e2:xx:xx:xx:xx Slave queue ID: 0 Slave Interface: enp2s0f1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 90:e2:xx:xx:xx:xx Slave queue ID: 0
bonding のステータスも確認し、問題なさそうです。
# nmcli c mod bond0 ipv4.addresses 192.168.0.xx/24 # nmcli c mod bond0 ipv4.gateway 192.168.0.1 # nmcli c mod bond0 ipv4.dns 192.168.0.1 # nmcli c mod bond0 ipv4.method manual # nmcli c mod bond0 ipv6.method ignore
IPアドレス/マスク、ゲートウェイのアドレス、DNSサーバの指定等を行います。
# nmcli c down bond0 && nmcli c up bond0 接続 'bond0' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/2) 接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/7)
ここまで来たら、一度 bond0 を無効/有効にします。
# nmcli con mod enp3s0 autoconnect no # nmcli con mod enp3s0 ipv4.method manual # nmcli c down enp3s0 && nmcli c down bond0 && nmcli c up bond0
上記は、HP Microserver のオンボード NIC なのですが、OS 起動後は利用しないので、無効とします。この辺はお好みで。
(厳密には、このポートは Wake On Lan で利用するので、LANケーブルは挿したままですが。)
# nmcli d DEVICE TYPE STATE CONNECTION bond0 bond 接続済み bond0 enp2s0f0 ethernet 接続済み enp2s0f0 enp2s0f1 ethernet 接続済み enp2s0f1 enp3s0 ethernet 切断済み -- lo loopback 管理無し --
各デバイスのステータスを再確認し、想定通りです。
Sambaのインストールと設定
# dnf install samba メタデータの期限切れの最終確認: 0:48:44 時間前の 2020年02月26日 00時48分59秒 に実施しました。 依存関係が解決しました。 ==================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ==================================================================================================== インストール: samba x86_64 4.10.4-101.el8_1 BaseOS 739 k 依存関係のインストール: samba-common-tools x86_64 4.10.4-101.el8_1 BaseOS 469 k samba-libs x86_64 4.10.4-101.el8_1 BaseOS 185 k トランザクションの概要 ==================================================================================================== インストール 3 パッケージ ダウンロードサイズの合計: 1.4 M インストール済みのサイズ: 4.1 M これでよろしいですか? [y/N]: y
まず Samba を DNF でインストールします。
# cp /etc/samba/smb.conf{,.bak}
念のため、Samba の初期設定ファイルをコピーしてバックアップ。
Samba の設定ファイルを良い感じに設定します。(この辺は好みですし、インターネット上にたくさん情報があるので割愛します。)
# systemctl start smb nmb # systemctl enable smb nmb Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service. Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service.
Samba 関連のサービスを起動&自動起動の有効化。
# smbpasswd -a nami
Samba 用のユーザ作成&パスワード設定を実施。
とまぁ、こんなところでしょうか。(ちょっと途中で力尽きてきた部分もありますが、さらに細かい部分については、また別エントリで記載します。)
他、何か書き漏れている気がしなくもないですが、大筋の流れはこういう感じなので、自分のためにも備忘録的にココに残しておきます。
今日はこの辺まで。
それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́
あわせて読みたい
その4を書きました。
CentOS8 実践ガイド [システム管理編] (impress top gear)
- 作者:古賀政純
- 発売日: 2020/03/13
- メディア: 単行本(ソフトカバー)
[改訂新版]プロのためのLinuxシステム構築・運用技術 (Software Design plus)
- 作者:中井 悦司
- 発売日: 2016/09/22
- メディア: 大型本