LinuxServer

Proxmox

参考サイト

最初に

概要

特徴

  1. フリー
  2. vCenterありのVMWareの機能(複数サーバでのHA, クラスタリング、仮想マシンの移動など)が可能
  3. VMWareでいうvSANのような機能をcephで実現
  4. GUIあり
  5. 対応CPUの幅が広い
    (Debianのため)
    (Intel VT-x機能があれば大抵動く。Celronでも可能)
    (VMWareはほぼXEONでしか動かない)
  6. 既存システムとの共存可能
    • Debianのため

Install, Download

Download

初回アップデート

  1. Sources list を変更
    echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
  2. gpg keyのダウンロード
    wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg 
  3. pve-enterprise.list のコメントアウト
    vi /etc/apt/sources.list.d/pve-enterprise.list
    • 変更前
      deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
    • 変更後
      #deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
  4. repository の更新とアップグレード
    apt update && apt full-upgrade

最低限のソフトのインストール

apt install vim ethtool tmux clamav iftop iotop qemu-guest-agent sudo

IPV6 の無効化

LDAP参加

tmux の設定

起動後の初期ユーザー名

クラスタの作成

  1. 「データセンター」-> 「クラスタ」(上から4つめ)
  2. 「クラスタの作成」
  3. クラスタ名を入力してそのまま作成する。

クラスタへの参加(Join)

既存ホストでの作業

  1. 既存のホストから「データセンター」を選択 -> 「クラスタ」->「Join情報」
  2. 「Join情報」をコピー

新規ホストでの作業

  1. 「データセンター」を選択 -> 「クラスタ」
  2. 「クラスタに参加」
    1. 先程のJoin情報を貼り付け
    2. rootのパスワードの入力(不要?)

クラスタから削除

ストレージ, 通常(ceph以外)

新規HDDの追加(thin diskの追加)

GPT初期化

  1. 左ツリーから個別のホストを選択
  2. ディスクを選択
  3. 新規に追加したdisk(sdbとかsdc)を選択
  4. 「GPTでディスクを初期化」ボタンを押す

LVM-Thinを作成

  1. 「LVM-Thin」を選択
  2. 「作成: Thinpool」ボタンを押す
  3. ディスクを選んで名前を適当に付ける。例) prox01SdbThin?

消す場合

  1. 左ツリーから個別のホストを選択
  2. ディスクを開く
  3. 「LVM-Thin」の中の消したい名前を選択
  4. 右上の「More」を開き「破棄」を選択

分散ファイルストレージ(ceph)を構成

概要

インストール

  1. 「データセンター」-> 「Ceph」(上から5つめ)をクリック
  2. 「Cephをインストール」をクリック
  3. 「Quincyのインストールを開始」をクリック
    1. 「Do you want to continoue」 と聞かれるので「y」 Enterを入力
    2. インストールが完了したら「次へ」を押す

設定

  1. 「Public Network IP/CIDR」は選べるのを選んでおく
  2. 「Cluster Network IP/CIDR」もとりあえず選べるのを選んでおく
  3. 「Number replicas」と「Minimum replicas」はとりあえず標準のままで「次へ」
  4. 「完了」ボタンを押す

モニタ

  1. 新規 ceph サーバを立てたら登録が必要

OBD

  1. ディスクの登録が必要

pool

  1. 仮想マシンを保存できるcephのストレージ
  2. これがないとvMotion的な「マイグレート」もストレージ移動が伴うと思う

状況確認, Status,等

  1. まず一杯になる前兆などの指標
    1. OSD_NEARFULL : もうそろそろリバランスできなくなりますよ、って警告
    2. OSD_BACKFILLFULL:既にリバランスができないよ、って警告
    3. OSD_FULL:クラスタの書き込みが実行できなよ、って警告

仮想マシンの中のディスクが[No Such File or Directory]で消せない

cephをフルに近くしてめちゃくちゃ遅くなった時

  1. とりあえずモニタサーバを順番に再起動
  2. 容量を見るのはOSD一覧(cephのサマリでは容量逼迫を検知できない)
  3. HDDの1つがやたらと遅い可能性もある。
    • OSD一覧からLatencyも確認
  4. rewaightの調整
  5. 以下、チラ裏。。。
    • 大きいディスクを消す時、めちゃくちゃ重い。
      1時間に1% 位しか進まない。。。
      そのおかげで、他のサーバに影響が出ていて、DNSやDHCP, Proxyなどインフラ周りのサーバはもちろん、
      Webサーバやデータベースサーバにも影響が出ていてしんどい。。。
      日記用のプライベートWordpressにもアクセスできないし、SKKのGoogle IMEも利用できないので、
      日本語変換もままならん。。。早く解決しないかなぁ。。。
    • 次の日には直りました(^^)

ディスクエラーの消し方

リカバリ, リバランスのために仮想マシンが重い, 遅い(ceph, チューニング)

  1. 一番効果が高い方法(osd_recovery_op_priority, osd_client_op_priority 1)
    • 数字が低い方が高優先度
    • 自分は一晩放置したら反映されてました
    • 値は1〜64
      • sudo ceph config set osd osd_recovery_op_priority 63
      • sudo ceph config set osd osd_client_op_priority 1
  2. どうしても重い時はリカバリ, リバランスを停止
    • 停止
      sudo ceph osd set nobackfill
    • 再開
      sudo ceph osd unset nobackfill
  3. その他、効きそうな設定
    1. sudo ceph config set osd osd_max_backfills 1
    2. sudo ceph config set osd osd_recovery_max_active 1
    3. sudo ceph config set osd osd_max_pg_log_entries 1
    4. sudo ceph config set osd osd_memory_target 2000000000
      • これはあまり効いてる感じはしないかな。。。
    5. sudo ceph config set osd osd_backfill_full_ratio 0.3
      • 自分の環境では以下のエラーで動かなかった。。。
        Error EINVAL: unrecognized config option 'osd_backfill_full_ratio'
      • Ceph OSD のフル比率がこの値以上の場合、バックフィル要求の受け入れを拒否
    6. ceph tell 'osd.*' injectargs '--osd-max-backfills 1'
    7. sudo ceph config set osd osd_backfill_scan_max 128
    8. sudo ceph config set osd osd_op_num_threads_per_shard 0
      • これはbackfill, recoveryにあまり影響しないので、デフォルトの0推奨
        0以外だとストレージがやたらと重くなる

full ratio

その他, コマンドなど

  1. 参考サイト
    1. Red Hat Ceph Storage
    2. SUSE Enterprise Storage 6とCeph
    3. Red Hat PG数の増加
  2. sudo ceph config set mon mon_osd_down_out_interval 600
    • OSDがdownしてパフォーマンス低下した場合、outにするまでの時間(デフォルト:600秒)
  3. osd recovery threads
    • デフォルトで 1 つのスレッドでリカバリープロセスのスレッド数が制限されます
  4. sudo ceph config set osd osd_recovery_max_active 3
    • ceph OSD が送信に失敗するのを防ぐために Ceph OSD が同時に実行するリカバリー要求の数を制限します。
  5. osd_max_backfills
    • Ceph OSD から 10 への同時バックフィルの最大数を設定します
  6. ワークロードによっては、通常のリカバリーを完全に回避し、代わりにバックフィルを使用することが推奨されます。
    バックフィルはバックグラウンドで実行されるため、I/O は OSD のオブジェクトで続行できます。
    osd_min_pg_log_entries オプションを 1 に設定し、osd_max_pg_log_entries オプションを 2 に設定することで、
    リカバリーではなくバックフィルを強制できます。
  7. PG(Placement Group)の数を変更する(256へ変更)
    sudo ceph osd pool set cephPool pg_num 256
  8. scrub関連
    • scrubコマンド
      sudo ceph pg deep-scrub <PG_ID>
      • sudo ceph pg deep-scrub 6.ce
    • osd_deep_scrub_interval
      osd_deep_scrub_interval

weight, reweight関連

  1. reweight
    • 個人的にはreweightよりweightの変更がおすすめかと思いました。
      • ストレージに余裕があっても degrated が残る時があるので。。。
    • 参考サイト2.5.3. OSD の in 重みの設定(RedHat)
    • reweightコマンド
      sudo ceph osd reweight {osd id} {weight}
      • sudo ceph osd reweight 2 0.8
    1. 使用状況による OSD の重みの設定(自動, reweight)
      1. この方法は大量のBackfillを産むので注意!個別調整がお勧め
      2. 設定
        • sudo ceph osd reweight-by-utilization [threshold] [weight_change_amount] [number_of_OSDs] [--no-increasing]
          • threshold : 101〜120
          • weight_change_amount : weight を変更する値。0.01〜1.0。
            例えば 0.5 で設定すると、Max 0.5の加減でreweight値を変更する。
          • number_of_OSDs : いくつのosdを変更するか。5個のosdを変更したい場合は 5。 10個なら10
          • --no-increasing : Weightを増やさない。個人的にはこのオプションは無くても良いと思う
        • 例)
          sudo ceph osd reweight-by-utilization 101 0.5 10
      3. テスト
        sudo ceph osd test-reweight-by-utilization 101 0.1 11
    2. 手動(reweight)
  2. weight
    1. 1つずつ更新(weight)
      sudo ceph osd crush reweight name weight
      • sudo ceph osd crush reweight osd.1 0.8
    2. ceph pool バケット名による一括更新(weight)
      • sudo osd crush reweight-subtree <buckets name> <weight>
      • sudo osd crush reweight-subtree hostName 0.9
      • ceph pool bucket名は以下から参照
        • 「データセンター」-> 個別ホトト ->「Ceph」->「設定」->「Crush Map」

ネットワークBonding(Teaming)

Cluster network

パブリック・ネットワークを別セグメントとする

Crush map の編集

  1. crush map の出力
    sudo ceph osd getcrushmap -o /tmp/crush
  2. テキストへ変換
    sudo crushtool -d /tmp/crush -o /tmp/crush.txt
  3. cruch map の編集
    sudo vim /tmp/crush.txt
  4. テキストをバイナリへ
    sudo crushtool -c /tmp/crush.txt -o /tmp/crush.new
  5. バイナリをアップロード
    sudo ceph osd setcrushmap -i /tmp/crush.new
  6. 反映
    ceph -w

osd, monitorサーバの削除(削減)方法

osd

  1. OSDの止める
  2. OSDを選択し、「More」->「破棄」を選択

Monitor

  1. マネージャー登録がある場合は、最初にマネージャーを破棄
  2. モニターを停止
  3. 破棄

色々ミスった時(消せなくなった時)

  1. sudo vim /etc/ceph/ceph.conf
  2. crush mapの編集c#r6ae4250?
  3. sudo ceph mon remove (nodename)
    1. ceph mon remove proxve07

CephFS

特徴

  1. ファイルサーバ機能。
  2. 仮想マシンは作れない

消し方

  1. ストレージのアンマウント(データセンターから)
  2. 各ノードの「Ceph」->「CephFS」からメタバースを停止 -> 破棄
  3. 以下のコマンドを実行
    pveceph fs destroy NAME --remove-storages --remove-pools

課題と今後

課題

  1. とにかく遅い。
    • Moose File Systemの方が体感的には圧倒的に早い
  2. リバランスの負荷が実環境に影響を与える(遅いので)
    • 結果、DNS, DHCP, Proxyのようなネットワーク基幹となるシステムも止まる。
  3. ストレージの使用率がばらける(Weight調整がマニュアル指向)
    • 結果、osdがフルになり止まる
  4. ProxMox?用を起動するストレージの一部をcephへ転用できない。
    • できるのかもしれないけどやり方がわからない

今後

  1. ファイルサーバ機能はMoose File Systemを継続
  2. 仮想環境の共通ストレージのみcephとする

その他、ストレージ関連

ディスク, disk, キャッシュ関連

  1. 参考サイトからの結論
    1. キャッシュはHDDの場合、Write back
    2. キャッシュはSSDの場合、Write back(unsafe)
    3. SSDならSSD エミュレーションはON
    4. IO ThreadはON
    5. SCSIコントローラーはVirtio SCSI Single
    6. Barrier無効化は効果があるがリスク対効果を考えて設定

CentOS6ではエラー

ISOイメージ用のストレージ

仮想マシンの追加

  1. ProxMox?のWeb管理コンソール、右上「VMを作成」ボタンを押す
    (コンテナはceph poolでは作れないので注意)
  2. 全般
    1. 「ノード」(ProxMox?のホスト)を選択
    2. 「VM ID」:適当にダブらない3桁の数字 例) 123
    3. 「名前」:仮想コンピュータの名前
    4. 「リソースプール」:空白
    5. ネットワーク(NIC)の「ファイアウォール」チェックボックスはオフにしといたほうが良いかも
  3. OS
    1. ISOイメージの選択(ISOが格納できるファイルシステムは->Proxmox VE#g52994f9)

仮想マシンの初期設定(お好みで)

  1. apt install vim tmux clamav iftop iotop qemu-guest-agent ntp
  2. ntpの設定
    sudo vim /etc/ntp.conf
  3. lxde化
    sudo apt install lxde

Windows10

仮想マシン

Windows Guest Agent, VirtIO

  1. Windows10
    • 参考サイト:
    1. ダウンロードサイト(ProxMox)
      • 以下から落とす
    2. ViirtIO serial
      1. デバイス・マネージャー
      2. 他のデイバイス
      3. PCIシンプル通信コントローラー
      4. ダブルククリック
      5. 「コンピューターを参照して...」
      6. d:\vioserial\w10\adm64
      7. 次へ
    3. その他
      • 種類
        • NetKVM
        • viostor
        • vioscsi
        • qxldod
        • Balloon
      • インストール
        1. デバイスマネージャ
        2. 操作
        3. 「レガシー...追加」
        4. 「一覧から選択...」
        5. 「全てのデバイス...」
        6. 「ディスク使用」
        7. 「参照」
        8. DVDから適宜選択
  2. Windows 2008 Server
    1. I had a similar problem and I fixed it with old virtio driver version 137.
      You can find old version of virtio here:
      https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
    2. [Control Panel]->[Device Manager]->Add device(Legacy)
      • 64bit
        vioscsi\2k8\amd64\vioscsi
      • 32bit
        vioscsi\2k8\x86\vioscsi
    3. guest-agent のインストール
      • d:\guest-agent\qemu-ga-x86_64.msi

バックアップとリストア

バックアップ

  1. 「データセンター」 -> ホスト -> 仮想マシン -> バックアップを選択
  2. 「今すぐバックアップ」を押す
  3. バックアップ先やモードを選択
  4. 「バックアップ」ボタンを押す

cephのバックアップ

ストレージ・レプリケーション

リストア

  1. 「データセンター」 -> ホスト -> 仮想マシン -> バックアップを選択
  2. リストアするイメージを選択 -> 「リストア」ボタンを押す
  3. ターゲットのストレージを選択して「リストア」ボタンを押す

vMotion的な(マイグレート)

WOL(参考)

  1. BIOS(UEFI)で設定しておくこと。
  2. proxmox側での設定
    1. ProxMox?サーバへrootでログイン
    2. 以下のコマンドでネットワーク・アダプタを確認
      ip addr show
    3. 自分の場合のNIC名は「enp2s0」
    4. ethtoolのインストール
      apt install ethtool
    5. 対応状況の確認
      ethtool enp2s0
    6. Wake-on: のあとの文字を確認
      • Wake-on: dなら次へ
      • Wake-on: gならWOLの設定はできてる
    7. ethtoolでWOLを設定
      ethtool -s enp2s0 wol g
    8. 元に戻ってしまうので自動で設定
      crontab -e
      • 以下を追加
        @reboot /usr/sbin/ethtool -s enp2s0 wol g
    9. ProxMox? サーバへWOL用のIPを登録(マックアドレスは例)
      pvenode config set -wakeonlan 12:34:56:78:90:ab

ASROCK マザーボードのUEFI設定

VMwareからの移行

移行手順

  1. VMwareの仮想マシンをシャットダウンする
  2. 「エクスポート」を選択(イメージは不要)
  3. 一旦PCへファイルを落とす
  4. ProxMox? VEのホストへファイル転送(自分はSCPで送りこみました)
  5. ProxMox? VEのホストで以下のコマンドを実行
    • qm importovf (仮想マシンNo) (ovfファイルpath) (ストレージ)
      sudo qm importovf 200 /tmp/exported-vm.ovf cephPool

CentOS 6

  1. ネットワークカードの追加
  2. eth0 -> eth1へ変更
    1. CentOS6(ネットワークマネージャーを使用しない場合)
      1. cd /etc/sysconfig/network-scripts/
      2. cp ifcfg-eth0 ifcfg-eth1
      3. vi ifcfg-eth1
        DEVICE=eth1
        #HWADDR=00:0C:29:FD:61:33
        NAME="System eth1"
  3. qemu-guest-agent のインストール
    apt install qemu-guest-agent

CentOS 7

  1. 起動エラーの回復
    1. エラー内容
      Starting Dracut Emergency Shell...
      Warning: /dev/centos/root does not exist
      Warning: /dev/centos/swap does not exist
      Warning: /dev/mapper/centos-root does not exist
      
      Generating "/run/initramfs/rdsosreport.txt"
      
      
      Entering emergency mode. Exit the shell to continue.
      Type "journalctl" to view system logs.
      You might want to save "/run/initramfs/rdsosreport.txt" to USB stick or /boot
      after mounting them and attach it to a bug report.
      
      
      dracut:/
    • このエラー、本当に調べるのに時間かかった。。。6時間位調べてようやくわかりました。。。
    • 結論:HDDをIDEに変更する
    • 手順
      1. import先(proxmox)の対象のバーチャル・マシンを開く
      2. ハードウェア
      3. ハードディスクを1回「デタッチ」する
      4. 再度ハードディスクをダブルクリックしてIDEとして実装する
      5. 通常通りバーチャル・マシンを起動する
  2. fstabからネットワークドライブを一時的にコメントアウトする
  3. Network Manager の設定
    nmtui

VMWareへの移行

ctrl + alt + f1 などの押し方

「モニタ」機能を使う方法

  1. ProxMox?のコンソールで対象の仮想マシンを開く
  2. 「モニタ」を選択(コンソールではない)
  3. 以下のコマンド(例)を入力、送信
    sendkey ctrl-alt-f1

noVNCの左側にある四角の中にAが書いてあるボタン

  1. 例) Ctrl + Alt + F1
    • Ctrl と Alt を押し反転させる
    • 「F1」を押す

USB

参考サイト

  1. https://pve.proxmox.com/wiki/USB_Devices_in_Virtual_Machines

設定

  1. ProxMox? VEへSSH
  2. USB一覧の取得
    lsusb
    • 注目するのは以下のID(例)
      • Bus 001 Device 037: ID 0511:083f N'Able (DataBook?) Technologies, Inc. PXW3U4
  3. 追加したい仮想マシンの番号を指定し以下のコマンドを実行して追加
    • sudo qm set (仮想マシンのID) -usb(USB番号任意) host=(上記USBのID)
    • 例)
      sudo qm set 804 -usb0 host=0511:083f

その他

ロックの解除方法

仮想マシン一覧の表示方法

ProxMox? Webタブを複数開いた状態でブラウザを起動した時の認証

  1. どこかのタブで1回認証する
  2. 隣のタブでももう一度認証する
  3. 再度、元のタブに戻る
  4. 上記2つ以外のタブを再読み込みする

クラスター内のホストのIPアドレスを変更しようとして失敗した話

前提

  1. IPを変更しようとしたホスト名をAとする。
  2. その他のホスト名をBとする。

やってしまった事と現象

  1. ホストAのIPを変更したらホストB経由で確認したクラスター内で×が付きクラスターから閉めされてしまった
  2. ホストAのIPを戻してもホストB経由で確認したクラスター内で復帰しなかった

ホストAをクラスタへ再参画させる

  1. 再参画準備
    1. 上記 Remove a Cluster Node のコマンド
      1. sudo pvecm nodes
      2. sudo pvecm delnode (Name)
        • 例) sudo pvecm delnode hp4
      3. sudo systemctl stop pve-cluster
      4. sudo systemctl stop corosync
      5. sudo pmxcfs -l
      6. sudo rm /etc/pve/corosync.conf
      7. sudo rm -r /etc/corosync/*
      8. sudo killall pmxcfs
      9. sudo systemctl start pve-cluster
      10. sudo pvecm delnode oldnode
      11. sudo pvecm expected 1
      12. sudo rm /var/lib/corosync/*
    2. その他(再参画するホスト上で実行)
      1. sudo cp -fr /etc/pve/nodes /etc/pve/nodes.bak
      2. sudo rm -fr /etc/pve/nodes
  2. あとは普通に再参画

仮想マシンが重たい現象について

** ファイルサーバ機能(ceph pool)

どうやってファイルサーバ機能を実現するか

swapの使用率がやたらと多い

  1. 以下のファイルを編集
    sudo vim /etc/sysctl.conf
  2. 以下を追加
    vm.swappiness = 10
  3. 反映
    sudo sysctl -p

調査、設定中

Win11(調査中)

Zabbix(調査中)

参考サイト

ProxMox7(Debian 11)へインストール

wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-4%2Bdebian11_all.deb
sudo dpkg -i zabbix-release_4.0-4+debian11_all.deb
sudo apt update
sudo apt install zabbix-agent

耐障害性

ディスクの容量減らし方

SPICE(画面共有)

noVNCで画面が更新されない場合

  1. noVNCを使っても「ハードウェア」の「ディスプレイ」を「SPICE(qxl)」へ変更する。

調査完了

Moose File System との共存

個人メモ

VM migration

  1. 基本設定
    1. ホスト
    2. 仮想マシン

SATA2つ追加

backup

Window managerのlxde化

不要となったProxMox?ホストを売る

LANケーブル、タグ付け

Windowsの設定, ライセンス認証, バージョンアップ

録画サーバの向き先変更

ディスクに関する今後メモ

  1. 録画サーバのディスクを2TB -> 500GBへ
  2. USBでディスク追加
    • 2TB, 500GB, 4TB,
    • 2号機
    • 4号機

Zabbix 6.0

(おまけ) テスト環境PCについて

HP ProDesk? 400 G2.5 Small Form Factor Business PC

BIOS(UEFI) 設定


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS