20201016のLinuxに関する記事は7件です。

「サイトが見れない!!!!」ってなったときの対応

タイトル見ただけで心臓がキュッってなりますが…
今までの経験からメモ書きしてみました
半分くらい自分用

原因究明に使える指標

HTTPのステータスコード

https://developer.mozilla.org/ja/docs/Web/HTTP/Status
これらのうちエラーになるのは400系と500系
ざっくりとした違いは下記

  • 400系:アクセス自体ができてない
    • 名前解決ができてない
    • 権限がない
    • サーバーが落ちてる
  • 500系:サーバー内部の処理でエラーを吐いて止まってる
    • サーバー設定が間違ってる
    • サイトを動かしているフレームワークのエラー

どっちかによって対応が変わるのでまずはここを切り分けます

ログファイル

linux系で出力のパスをいじってないなら/var/log/の中に大体のログがあると思います。

apache: /var/log/httpd/
nginx : /var/log/nginx/
nginx+phpならphp-fpmも要確認: /var/log/php-fpm/

何が動いてるのかを確認するならps aux
大量の情報が出てくるので、あたりがついてるならさらにgrepも併用

AWSモニタリング

AWSなら結構な情報がコンソールから確認できます

  • EC2:
    • CPU使用率
    • リクエスト数
  • ELB:
    • レイテンシー
    • 稼働サーバー数
  • RDS:
    • CPU使用率
    • 接続数
    • 書き込み/読み込みスループット

対応

1、 落ち着く

わりと重要です。
人間テンパるとろくなことをしません…
現状を整理するなり偉い人に相談するなりして心を落ち着かせましょう

2、 ステータスコードを確認する

上記の通りアクセスできない原因はいっぱいあるので、これから切り分けます
大概のブラウザで画面にステータスコードが出てるはず

3-1、 400系だった場合

原因によってコードが細かく分かれてるので対応はしやすいです
よく見るのは下記

  • 400 Bad Request
    • リクエストが無効です。新しい機能のリリース直後なら内部で送ってるリクエストがおかしいとか?
  • 403 Forbidden
    • 権限問題です。IP制限やファイルのパーミッションを確認します
  • 404 Not Found
    • 後述します

3-2、 500系だった場合

よく見るのは下記
ひとまずエラーログを確認するところから始まります
対応内容はログによって多岐に渡るので割愛

  • 500 Internal Server Error
    • サーバー内部で何か起きてます。下に出会ったことがあるエラーの一例を載せてます。
  • 502 Bad Gateway
    • ゲートウェイやProxyとして動作しているサーバがリクエストを実行しようとしたら不正なレスポンスを受け取ってます。

ここからは実例

404 Not Foundの対応

原因が多岐に渡るので別枠にします
あり得るのは
1、サーバーが落ちてる
2、名前解決ができてない
あたりなのでこの辺をチェックします。

pingしてみる

ping {IP/ホスト名}

で通信テストしてみます
(これはダミーとしてlocalhostにしてます)

$ ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=6.893 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.115 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.117 ms
^C
--- localhost ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.076/1.800/6.893/2.940 ms

生きてればとりあえず帰ってきます。
ポート番号を指定したいなら素のpingだとできないので別の方法を使います。
私はnping使ってます。便利
https://qiita.com/Yu-s/items/4b4f683fda374c8ddcc9

ログインしてみる

大概sshか何かでログインできるようにしてるはず
前まで出来てたはずのコマンドでログインできないなら落ちてる可能性が高いです

AWSならコンソールから確認する

EC2ダッシュボード > インスタンス > インスタンスの状態
から確認できます。stopになってたら落ちてます。
(aws-cliとかオートスケールとか使ってない場合、誰かが意図的に止めた可能性も…自動でstopにはならないはず…)
ステータスチェックが失敗してるかどうかも確認できるので、これが失敗してても落ちてます。

ただしインスタンスが自動で再起動を繰り返している場合(=実質落ちてる)でもrunningになってることがありますので注意

ここまででサーバーが生きてるのが確認できたのにドメインでアクセスできない場合おそらく名前解決ができてません

digしてみる

手っ取り早く確認するならこれ
https://www.atmarkit.co.jp/ait/articles/1711/09/news020.html

nslookupでもできます
https://www.atmarkit.co.jp/ait/articles/1710/27/news021.html

$ dig www.google.com

; <<>> DiG 9.10.6 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3344
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     89  IN  A   172.217.24.132

;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Sep 11 13:51:58 JST 2020
;; MSG SIZE  rcvd: 59

;; ANSWER SECTION:がなければ名前解決できてないです

500 Internal Server Errorの対応

エラーが起きてる可能性があるのは

  • サーバーソフトウェア
  • コードを動かしているフレームワーク

の二択なのでとりあえずその二通りのログを見ます。
対応方法はエラー内容によって色々ですが、下記に私が出会ったことのあるエラーを紹介します。

ログローテート忘れ

nginxのエラーログで下記が出てました

write() to "/var/log/nginx/access.log" was incomplete: 83 of 314 while logging request

「アクセスログを書き込めなかったよ」とのこと。
見に行くと当日のアクセスログだけめちゃくちゃなサイズになってたのでこれでストレージが枯渇したと推測しました。
該当ファイルを削除するととりあえず解消するはずですがアクセスログを削除しても解消せず…
(多分他にも重たいファイルがあったんだと思います)
探す時間が惜しい&オートスケールしてたので新しいサーバーを立ち上げて入れ替えてとりあえず対処しました。

で、その間に根本的な原因を調査するとログローテートされてないことに気づきました…
この数日前にnginxのアップデートをしたのですが、その際にログローテート周りの設定ファイルを戻し忘れたようです。
これ以外にもストレージやメモリ枯渇したらアクセスできなくなるので、それを調べるコマンドはメモっておくといいかもですね

$ df -h //ストレージ確認
$ free -m //メモリ確認

設定変更を起動設定に反映し忘れ@オートスケール

ある日サイトが急に落ちて500エラーが出てたのでエラーログをチェック
cakephp2のログを見ると、数日前に出した新機能関連のエラーが!
直したはず…?と考えてすぐ気付きましたが、その設定変更を起動設定に反映し忘れてました…
どうやら
トラフィックが上がる
=>エラーが再現するオートスケールサーバー起動
=>アクセスできない
の流れだったようです。

cakephp2のキャッシュ周りのエラーでキャッシュファイルを削除すれば直る類のものだったので、
キャッシュを再び削除
=>その状態でAMI作成
=>起動設定に指定
で対応できました

まとめ

死ぬほど焦りますが、、
・落ち着く
・原因の切り分け
・偉い人に相談
で大体なんとかなります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

フロントエンジニアがgoのAPIサーバーをサクッとsystemdで自動起動させてみた

systemdでサービス化した方がいいと言われたので、とりあえずやってみた。

①プロジェクトファイル(ここではsample)でgo build
②etc/systemd/systemにapp.serviceを作ります
③app.serviceに下記を記述

[Unit]
Description=Automatic start server demon

[Service]
ExecStart=/home/sample/sample
WorkingDirectory=/home/ec2-user/sample
Restart=always
Type=simple
User=ec2-user

[Install]
WantedBy=multi-user.target

【解説】
ExecStartで実行ファイルを指定
go buildしたらファイル名と同じバイナリが生成されるので、それを指定

WorkingDirectoryで実行するディレクトリを指定

Restart=always alwaysにすることで落ちても自動再起動してくれる

Type=simple 実行完了と判別するタイミングを指定

simple=コマンドが実行されたら
Type=forking=実行したコマンドが終了したら
Type=oneshot=コマンドが完了したら

User 実行するUser

WantedBy=multi-user.target enable時にこのユニットの.wantsディレクトリにリンクを作成する
これはよくわからなかった。

sudo systemctl deamon-reloadを実行
app.serviceの内容を更新

sudo systemctl enable /home/ec2-user/etc/systemd/system/app.serviceを実行
サービスの自動起動を有効にする
*絶対パスで指定すること

sudo systemctl start app.serviceを実行

これで自動起動されます

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux kernel version の確認

git から clone してきた linux kernel のソースコードのカーネルバージョンがなんだっけ?ってなった時に確認する手順のメモ。

git clone した kernel code の ディレクトリ直下にある Makefile の先頭(SPDX License の記述があるので 2 行目から)の VERSION, PATCHLEVEL, SEBLEVEL を確認する。

$ cd linux
$ cat Makefile
#SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 8
SEBLEVEL = 0
EXTRAVERSION =
:
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

viコマンドの備忘録

とりあえずこれだけ知ってれば使えるやつ。
(ってかこれしか使いこなせてない

コマンド 操作
i 挿入モード
:w 書込
:q 終了
:wq 書込 +終了
:w !sudo tee % 読取専用ファイル書込
:q! 強制終了
u 変更取消
/文字列 検索
dd 行削除
ctrl + f 次ページ
ctrl + b 前ページ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Arch on lvm on luksの構築と初期設定

概要

本記事では、luks(dm-crypt)で暗号化したパーティションにlvmで論理ボリュームを作り、その上にArchLinuxのデスクトップ環境を構築していきます

+--------------+--------------+-----------------+-----------------+
|              |              | Logical volume1 | Logical volume2 |
|     Grub     |     Boot     |     lv_root     |     lv_home     |
|   partition  |   pattition  |_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|
|              |              |    LUKS encrypted partition       |
|   /dev/sda1  |   /dev/sda2  |           /dev/sda3               |
+--------------+--------------+-----------------------------------+
|                           /dev/sda                              |
+-----------------------------------------------------------------+

この方式だとブートローダーと/boot以外の全てのシステムを1つの大きなボリュームに入れて暗号化することができるため、パーティションの構造を隠すことができたり一つのキーで全体のロックを解除することができます
モバイルノートPCを暗号化するにあたって調べたことと構築した手順を備忘録も兼ねて書いておきます

dm-crypt・・linux上で用いられる透過的なディスク暗号化サブシステム
luks・・オープンソースの暗号化仕様
lvm・・ストレージを論理的なボリュームに束ねて利用するシステム

環境

・uefi-gpt
・cpu: intel i5 x86_64
・メモリ: 8G
・ディスク: 64G

注意

・暗号化するとどんな方式であっても必ずオーバーヘッドが発生します。この方式だと僕の環境ではRWとも30%くらいは遅くなっているので、予め仮想マシン等で許容できるか検証をお願いします
・ディスクの故障時やパスワードの紛失時にデータを取り出すことはできません
・ディスクの暗号化で防ぐことができるのは物理的な攻撃のみです

・説明すっ飛ばしてるところも多いのでArchを触ったことがないと厳しいと思います
 基本的なインストール手順はこちら->ArchWiki インストールガイド
・vimが嫌だとかよくわからない場合nanoを使ってください
・ディスク名が/dev/sdaでない場合もあるのでlsblkで確認して適宜書き換えてください

  例:/dev/nvme0n1の場合 /dev/sdaを/dev/nvme0n1、/dev/sda1を/dev/nvme0n1p1

構築

1. 準備

まずはダウンロードしたisoをBalenaEtcherやrufusでUSBに焼き、インストールするPCのEFIから起動

ip aでインターネットに接続されていることを確認
・有線で接続していない場合はiwctlで指示に従ってwifiに接続
/etc/pacman.d/mirrorlistで日本のサーバーを一番上に追加し、pacman -Syyで更新
loadkeys jp106で日本語配列のキーボードを追加
timedatectl set-ntp trueで時刻を合わせる

2. ディスクの消去

まずはshredコマンドでディスク内のデータを完全に消去する
どうせ暗号化するし寿命が縮まるので多重上書きは必要ないと思う
lsblk -lでディスクの構成を確認し、インストール先を確認する
ここで間違えると必要なデータが消えてしまうので慎重に
この場合だと/dev/sdaがインストール先

shred -n 0 -v -z /dev/sda

Screen Capture_konsole_20201015125532.jpg

3. 物理パーティションの作成

完成形がこちら
Screen Capture_konsole_20201015125645.jpg
パーティション1が Grub(ブートローダー)
パーティション2が /boot
パーティション3が /

parted /dev/sda

Command (): g

Command (): n
Partition number(): 1
First sector(----): Enter
Last sector(----) : +500M 

Command (): n
Partition number(): 2
First sector(----): Enter
Last sector(----) : +500M 

Command (): n
Partition number(): 3
First sector(----): Enter
Last sector(----) : Enter

Command (): t
Partition number(): 1
Partition type () : 1

Command (): t
Partition number(): 3
Partition type () : 30

4. パーティションのフォーマットと暗号化

grub用パーティションはfat32に、/bootはext4にフォーマット

mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2

rootパーティションを暗号化
大文字でYESと入力した後、パスワードを設定
lvmという名前で開き直し、読み書き可能な状態にする

cryptsetup -v luksFormat /dev/sda3
cryptsetup open --type luks /dev/sda3 lvm

Screen Capture_konsole_20201015125846.jpg

5. 暗号化されたブロックをlvmで分割する

物理ボリューム(pv)を初期化し、その上にボリュームグループ(vg)を作成
ボリュームグループから20GBをrootとして、残りの100%をhomeとして論理ボリューム(lv)を生成
この値は使用するディスクのサイズと好みによって変更する
推奨は2:3くらい

pvcreate --dataalignment 1m /dev/mapper/lvm
vgcreate vol /dev/mapper/lvm
lvcreate -L 20G vol -n lv_root
lvcreate -l 100%FREE vol -n lv_home

Untitled.jpg
論理ボリュームをxfsにフォーマット
ext4やbtrfsでも大丈夫

mkfs.xfs /dev/vol/lv_root
mkfs.xfs /dev/vol/lv_home

Screen Capture_konsole_20201015130120.jpg

6. ドライブのマウントとfstabの生成

必要なディレクトリの生成とマウント

mount /dev/vol/lv_root /mnt
mkdir /mnt/home
mount /dev/vol/lv_home /mnt/home
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot
mkdir /mnt/etc

fstabの生成

genfstab -U -p /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab

Untitled.png

7. ベースシステムのインストール

pacstrap -i /mnt base 

Untitled.png
ルートディレクトリを変更

arch-chroot /mnt

ベースシステム、ネットワークマネージャ、必須パッケージをインストール
linux-ltsやlinux-zenを使用する場合はheadersも書き換える
intel-ucodeはintel製cpuを使用している場合のみインストール

pacman -S base-devel linux linux-headers linux-firmware \
          networkmanager wpa_supplicant wireless_tools wireless_tools netctl \
          lvm2 xfsprogs zsh vim openssh intel-ucode;

sshとネットワークマネージャをPC起動時に自動的に起動させる

systemctl enable sshd
systemctl enable NetworkManager

Untitled.png

8.フックを追加

起動時に復号化とlvmボリュームの有効化に必要なカーネルモジュールとツールを読み込むフックを追加

vim /etc/mkinitcpio.conf

mkinitcpio.confのHOOKの、blockとfilesystemsの間に追加
usb接続の場合keyboard、日本語配列のキーボードを使っている場合keymapが必要になる
前から順番に読み込まれるので正しい順番か確認すること

mkinitcpio.conf
keyboard keymap encrypt lvm2

Untitled.png
initramfsイメージの再生成

mkinitcpio -p linux

Untitled.png

9. ロケール、時刻、言語の設定

/etc/locale.gen内のja_JP.UTF-8en_US.UTF-8の先頭の#を消す

vim /etc/locale.gen

locale-genで適用

locale-gen

時刻を東京に設定

ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc --utc
export LANG=ja_JP.UTF-8

Untitled.png

10. ユーザーの追加とパスワード設定

ユーザ名は書き換える
ここではzshをデフォルトシェルとしているが、bashやfish等に変更可能

passwd
useradd -m -G wheel -s /bin/zsh ユーザー名
passwd ユーザー名

Untitled.png
sudoを有効化

EDITOR=vim visudo

# wheel ALL=(ALL) ALLの先頭の#を消す

Untitled.png

11. GRUBブートローダーのインストール

grub関連をインストール
/etc/default/grubを編集

GRUB_ENABLE_CRYPTODISK="~"の先頭の#を外す
GRUB_CMDLINE_LINUX_DEFAULTのloglevel=3とquietの間に追加↓
cryptdevice=/dev/暗号化されたパーティション:lvmのボリューム名:allow-discards

ここでタイポするとめんどくさいことになる

pacman -S grub efibootmgr dosfstools os-prober mtools
vim /etc/default/grub
/etc/default/grub
-# GRUB_ENABLE_CRYPTODISK=
cryptdevice=/dev/sda3:vol:allow-discards

Untitled.png
grubパーティションのマウントと読み込み

mkdir /boot/EFI
mount /dev/sda1 /boot/EFI
grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck

cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
grub-mkconfig -o /boot/grub/grub.cfg

Untitled.png

12. 再起動

exit
umount -a
reboot -h now

Untitled.png
再起動後に一般ユーザーでログインし直す

13. AURヘルパー(yay)のインストール

sudo pacman -S go git 
git clone https://aur.archlinux.org/yay.git
cd yay; makepkg -si; cd ..; rm -rf yay

以降はpacmanの代わりにyayを使う
Untitled.png

14. deepin desktop環境(DDE)のインストール

ここではDDEを使用しているが、当然別の環境に置き換えたり追加することもできる

X Window Systemとグラフィックドライバーのインストール
nvidia製グラボで1000番台以降の場合、nvidia nvidia-settings nvidia-utilsを追加インストール
AMD1000番より古いグラボを使っている場合は必要なパッケージを調べてインストールする

yay -S xorg-server xorg-apps xorg-xinit xorg-twm xorg-xclock xterm mesa

DDEとログインマネージャのインストール

10/16現在、deepin-extraグループに競合があり正常にインストールできない問題があるため、deepin-extraグループは数字でインストールするパッケージを選択すること

yay -S lightdm deepin deepin-extra 

lightdmログインマネージャの設定
/etc/lightdm/lightdm.confgreeter-sessionの先頭の#を外し=以降をlightdm-deepin-greeterに書き換える

sudo vim /etc/lightdm/lightdm.conf 
greeter-session=lightdm-deepin-greeter

Untitled.png

sudo systemctl enable lightdm 
sudo systemctl start lightdm

これでDDEが立ち上がれば構築は完了

Untitled.png

14. 初期設定

zshのテーマをインストール

touch ~/.zshrc
yay -S --noconfirm zsh-theme-powerlevel10k-git
echo 'source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme' >>! ~/.zshrc

日本語フォントのダウンロード

源ノ角ゴシックと白源 (はくげん/HackGen)をダウンロード
ちなみにこの記事のコンソール画面は全部、Hackgen35Nerd Console

yay -S adobe-source-han-sans-jp-fonts ttf-hackgen

日本語入力の設定

fcitxとmozcを使って日本語入力

yay -S fcitx-im fcitx-configtool fcitx-mozc
vim ~/.xprofile

~/.xprofileを作成し下の3行を追加
再起動後にfcitx Configrationを開きmozcを一番上に追加

.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”

その他パッケージのインストール

google-chrome、vscode、virtualbox等のソフトフェアをyayで入れていく

終了

以上で終了です
間違いや質問があればコメント欄にお願いします

参考

インストールガイド
dm-crypt/システム全体の暗号化
How to install Arch linux on encrypted lvm

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS8をVirtualBoxでインストールしたあと、再起動するとエラーが出る件

CentOS8をインストールするまで

こんにちは。プログラミングを始めて半月ほどのSayaです。
右も左も分からないのですが、エンジニアのOSはLinuxが当たり前?という噂を聞き、
Progateで満足している場合じゃない!と焦って、CentOS8をMacbookairにVirtualBoxを使ってダウンロードとインストールを行いました。

これまでYoutube等でたくさんあったプログラミングの情報がCentOSと検索した瞬間にほとんど何も出てこなくなるのはなぜなのでしょうか?
Linuxと検索すれば良かったのでしょうか?

私は何か間違えているのか?と不安になりながらも、先輩方がお勧めしている、Linux標準教科書を読み、CentOSをダウンロードすることを決意しました。

Linux標準教科書

しかし、全て見様見真似で行うことしかできない私には大きな壁が...
何と最近CentOS8というのにバージョンアップしたらしく、上記の教科書にはバージョン8については書いてありませんでした...
もう何もかも分からないけど、とりあえずバージョン変わったくらいでどうってことないだろうと、腹をくくり、ダウンロードをすることを決意しました!

わかりやすく手順がまとまっているサイトがないか探しました。
いくつかあったのですが、参考にさせていただいたものをご紹介します。

【ISOイメージ】CentOS【GUI】をVirtualBoxで起動さしてみた!!!
Mac上でVirtualBoxにCentOS 8をインストールして学習環境を構築する

無事ダウンロードを終えて(後述しますが実は終えていなかった)、VirtualBoxで仮想マシンを立ち上げていこうと思ったのですが...

CentOSダウンロード後にVirtualBoxで仮想マシンを作成し起動ハードディスクを選択するのですが、起動ハードディスクが無いという問題にぶつかりました。

何でだろうと思って、ダウンロードファイルを開いてみようと思ったら、それが空でした...
まずダウンロードがちゃんとできていませんでした。
ダウンロードに30分弱かかることを今回初めて知りました...
しかもダウンロード途中で「失敗」と出てくるのですが、それを再開と自分で押さないと、そのままダウンロードしないまま終わってしまうんですね。
パソコンの仕様の問題でしょうか?

それでも何とかインストールまでたどり着き、やっと終わりだと一安心しかけた時に...
インストール後再起動するのですが、そうすると下記のエラーメッセージが出ました。

「You must specify a machine to start, using the command line.

Usage: VirtualBoxVM --startvm
Starts the VirtualBox virtual machine with the given name or unique identifier (UUID).」

いろいろ調べたのですが、解決方法分からず...
ちなみに下記のページに行き着いたのですが、回答を見ても、どうすればいいのか私には分かりませんでした(泣)

virtualboxが起動できません。。。

解決方法

それでも諦めず、検索しまくっていたところ、下記ページを見つけました!!!!

MacでVirtualboxの仮想マシンが作成できない。

こちらの回答どおり、
VM設定でオーディオを無効にする
ということを行った結果、無事CentOSを使うことができました!!!

質問された方、回答された方、ありがとうございます!!!!!!

なぜこの記事を書いたのか

上記の解決に至った記事もCentOSではなくUbuntuを使われているんですよね。
あまり大差無いのかもしれないですけど、これだけ情報が溢れているのに、答えまでたどり着くの難しいなと思いました。

こんなに答えにたどり着くまで苦労するんだなということを、初学者の私は初めて体験したので、同じ悩みで苦労されている初学者の方を一人でも救えたらという思いで、この記事を書きました。
先輩方からするとレベル低すぎるかもしれませんが(笑)
もっと成長して、技術をアウトプットしていこうと思います!!!

ちなみにこのQiita記事書くのも少し苦労しました(笑)
文字サイズを変える方法ありますよね?
普通に検索しても出てこないのは私だけでしょうか?
文字サイズを変えるというのは次の課題にしようと思います...

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

イメージマウント時NBD socketのセッティングが失敗

事象

イメージマウント時にNBD socketのセッティングが失敗した旨、メッセージが出力。

[root@XXXX ~]# sudo qemu-nbd -c /dev/sda2 CentOS-7-XXXXXXX.qcow2
qemu-nbd: Failed to set NBD socket
qemu-nbd: Disconnect client, due to: Failed to read request: Unexpected end-of-file before all bytes were read
[root@XXXX ~]# 

原因

イメージのマウント前にカーネルモジュールの読み込みが必要。
※参照URL↓
https://docs.openstack.org/ja/image-guide/modify-images.html

解決策

以下のコマンドでモジュールを読み込み

[root@XXXX ~]# modprobe nbd max_part=16
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む