ペグ園

ぺぐぞの

MinecraftサーバをIPv4/v6デュアルスタックにする

はじめに

ご覧いただきありがとうございます。ペグ酸です。

今回は、Minecraftサーバ(Java Edition)をIPv4/v6デュアルスタックにする方法を試したのでまとめます。

以下の方法を参考にする際は自己責任にてお願いいたします。特にIPv6はNAPTのようなものが基本的に無いので、ファイアウォールの設定はきちんと行う必要があります。

目次

構成

以下のような構成です。プロキシサーバだけIPv4/v6デュアルスタック、バックエンドはすべてIPv6のみです。

OSはすべてUbuntu 24.04です。IPアドレスsudo ip -6 addコマンドで割り当てました。

[クライアント (v4 / v6)]
     ↓
[HaProxy (192.168.0.130 / fcee::1/64, ポート25570)]
     ↓
[BungeeCord (fcee::2/64 ポート25577)]
     ↓
[PaperMC (fcee::1/64 ポート25565)]

HaProxy、BungeeCord、PaperMCはすべて別ホストに立てている想定です。

厳密にはHaProxyとPaperMCは同一ホストに立てていますが、BungeeCordが別ホストに立てているので原理的には別ホストと同じです。

設定

PaperMCの設定

一般的なBungeeCordを通すときの設定のみです。

  • server.propertiesで、online-mode=falseにします。
  • spigot.ymlで、bungeecord: trueにします。

BungeeCordの設定

IPv6で通信するようにして、HaProxyのsend-proxy-v2を受け入れるようにします。

以下、config.ymlの設定です。

  • servers.(PaperMCのサーバ).addressを、[fcee::1]:25565にします。
  • listeners.host'[::]:25577'にします。
  • proxy_protocoltrueにします。

HaProxyの設定

/etc/haproxy/haproxy.cfgを以下のように設定します。

listen minecraft
        bind [::]:25570 v4v6
        server minecraft-backend [fcee::2]:25577 send-proxy-v2 check-send-proxy

参考: HaProxyとBungeeCordを同じホストに立てるとき

server[::]:25577だと何故かうまくいきません。localhost:25577だとうまくいきます。

検証

以下の画像のように、IPv4IPv6の両方で疎通することが確認できます。

IPv6のアドレスを指定するときは、[fcee::1]:25570のように、IPアドレスを括弧で囲むのがポイントです。

IPv6アドレスがリンクローカルアドレスのとき

IPv6アドレスがユニークローカルアドレスのとき

もちろんログインもできます。

IPv4アドレスで接続したとき

IPv6アドレスで接続したとき

まとめ

HaProxyをIPv4/v6デュアルスタックにし、バックエンドのMinecraftサーバはIPv6で通信するようにしました。また、この構成の上で、IPv4/v6両方で疎通することが確認できました。

IPv4ではポート開放できないNTTのIPoE環境(特にDS-LiteなどのCGNATなもの)でも、IPv4/IPv6両対応のVPSなどを用意すれば、自宅にサーバを立てて公開できると思います(当然ファイアウォールの設定を適切に行う必要がありますが)。

以上、参考になれば幸いです。ではまた!

Uptime KumaでIPv6ホストを監視できるようにする

はじめに

ご覧いただきありがとうございます。ペグ酸です。

今回は、Docker ComposeのUptime KumaでIPv6ホストを監視できるようにする設定を、備忘録がてらまとめます。

参考にされる際は自己責任にてお願いいたします。

目次

前提・検証した環境

ホストマシンにIPv6アドレスが降ってきていることが大前提です。

その他、検証に用いた環境は以下の通りです。

項目 内容
OS Ubuntu Server 24.04 (Oracle Cloud)
Docker Version 28.3.2
Uptime Kuma Version 1.23.16

Docker側の設定

DockerデーモンでIPv6を有効化する

/etc/docker/daemon.jsonに、以下の設定を追加します。当該ファイルが無ければ新しく作成したうえで以下の内容を記述します。

{
  "ipv6": true,
  "fixed-cidr-v6": "fd00:dead:beef::/48"
}

そして、以下のコマンドでDockerを再起動します。

sudo systemctl restart docker.socket docker

Uptime Kumaのcompose.ymlに設定を追記する

Uptime Kumaのcompose.ymlを以下のように設定します。net_oに、enable_ipv6ipamの項目を入れるのがポイントです。

また、/etc/docker/daemon.jsonfixed-cidr-v6と、compose.ymlsubnetが被らないようにします。

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: always
    ports:
      - "3001:3001"
    environment:
      - DB_TYPE=postgres
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_USER=uptimeuser
      - DB_PASS=supersecurepassword
      - DB_NAME=uptimedb
    depends_on:
      - postgres
    volumes:
      - ./uptime-kuma-data:/app/data
    networks:
      - net_i
      - net_o

  postgres:
    image: postgres:15
    container_name: kuma-postgres
    restart: always
    environment:
      POSTGRES_DB: uptimedb
      POSTGRES_USER: uptimeuser
      POSTGRES_PASSWORD: supersecurepassword
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    networks:
      - net_i
    ports:
      - "5432:5432"

networks:
  net_i:
    name: net_i
    internal: true
  net_o:
    name: net_o
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: "fd80:dead:beef:1::/64"

ホストでNAT66を設定する

ホスト側で以下のコマンドを実行して、ULA→GUAのNAT66を構成します。この設定でDockerコンテナのIPv6通信が外部と出入りできます。

sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo ip6tables -t nat -A POSTROUTING -s fd00:dead:beef::/48 -j MASQUERADE

Uptime Kumaを再起動する

Uptime Kumaを再起動します。以下のコマンドを、compose.ymlがあるディレクトリで実行します。

変更前のネットワーク設定を残さないようにnetwork pruneするのがポイントです。

sudo docker compose down
sudo docker network prune
sudo docker compose up -d

補足

sudo docker network pruneで、以下のような警告が出てきたらyで応じます。

WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] 

監視を設定する

Uptime Kumaの管理UIから、IPv6の設定を追加します。

ここではPingを設定しています

以下のようにPingが通るはずです。

きちんとIPv6の通信ができるはずです

まとめ

今回はChatGPTに、設定のたたき台を教えてもらいました。

私自身はDocker周りはComposeでアプリケーションを動かす程度の知識のため、何か設定に不備があればコメントで教えていただければ大変嬉しいです。

ではまた!

【Misskey】Docker上で動作するMisskeyのバックアップ・復元方法

はじめに

ご覧いただきありがとうございます。ペグ酸です。

今回は、Docker上で動作するMisskeyのバックアップと復元の方法を、個人的な備忘録も兼ねてまとめます。

参考にされる際は自己責任にてお願いいたします。

目次

環境

以下の環境で検証しています。

  • OS: Ubuntu Server 22.04.5 LTS
  • Docker: 24.0.7 (Server, Client両方)
  • Docker Compose: v2.29.7
  • Nginx(リバースプロキシ): 1.18.0 (Ubuntu)

バックアップの流れ

1. Misskeyを停止する

Misskeyのディレクトリに移動し、以下のコマンドを実行して停止します。

$ sudo docker compose down

2. データベースだけ起動する

データベースをバックアップする下準備として、Misskeyのデータベースだけ起動します。

$ sudo docker compose up -d db

3. データベースをダンプする

以下のコマンドでデータベースをダンプします。Qiitaの記事を参考にしました。

# データベースをダンプ
$ sudo docker compose -f ./docker-compose.yml exec -T db bash -c "pg_dump -Fc -U misskey -d misskey > /var/lib/postgresql/data/misskey_db.dump"

# ダンプデータ取り出し
$ sudo mv ./db/misskey_db.dump ./

# ダンプデータの名称変更
$ sudo mv db db.old

4. 設定ファイルをバックアップする

$ cp .config/default.yml ./default.yml.old
$ cp .config/docker.env ./docker.env.old
$ cp ./compose.yml ./compose.yml.old

5. リバースプロキシの設定をバックアップする

$ cp /etc/nginx/sites-available/misskey.conf misskey.conf

6. (必要に応じて)filesディレクトリをバックアップする

オブジェクトストレージではなくローカルに保存しているデータが有るときは、filesディレクトリをバックアップします。

$ tar cvf ./files ./files.tar

バックアップからの復元の流れ

基本的には公式の手順と同じですが、sudo docker compose run --rm web pnpm run init の前にデータベースをインポートします。

1. リポジトリの取得

$ git clone -b master https://github.com/misskey-dev/misskey.git
$ cd misskey
$ git checkout master

2. 設定

バックアップしたものを使います。

$ cp ./default.yml.old .config/default.yml
$ cp ./docker.env.old .config/docker.env
$ cp ./compose.yml.old ./compose.yml

3. ビルド

ビルドします。

$ sudo docker compose build

4. データベースのインポート

データベースをインポートします。こちらもQiitaの記事を参考にしました。

# データベースを起動して初期化
$ sudo docker compose up -d db

# PostgreSQLのコンテナID取得
$ sudo docker ps

# ダンプファイルをコンテナにコピー
$ sudo docker cp misskey_db.dump [先程調べたコンテナID]:/db.dump

# データベースインポート
$ docker compose exec -T db pg_restore -U misskey -d misskey /db.dump

# データベースを停止
$ docker compose down

5. (必要に応じて)filesディレクトリを復元する

オブジェクトストレージではなくローカルに保存しているデータが有るときは、復元します。

$ tar xf ./files.tar ./files

6. 初期化

Misskeyの初期化を行います。

$ sudo docker compose run --rm web pnpm run init

7. リバースプロキシの設定ファイルをインポート

適宜SSL証明書の設定も行ってください。(Let's Encryptのcertbotなど)

$ sudo cp misskey.conf /etc/nginx/sites-available/misskey.conf
$ ln -s /etc/nginx/sites-available/misskey.conf /etc/nginx/sites-enabled/misskey.conf

8. 起動

Misskeyとリバースプロキシを起動します。これにて完了です。

$ sudo docker compose up -d
$ sudo service nginx start

参考にしたサイト

qiita.com

misskey-hub.net

【Minecraft】Waterfall (BungeeCord) + HaProxy (DDNSあり) の設定メモ

はじめに

ご覧いただきありがとうございます。ペグ酸です。

Minecraft (Java Edition) のマルチプレイサーバーで、DDNS配下のWaterfallプロキシに、HaProxy経由でアクセスする際の設定を、備忘録としてまとめます。

環境は、プレイヤー → HaProxy 2.4.18 → Waterfall 1.19.3、というものです。サーバーのOSはUbuntu 22.04で検証しています。

なお、参考にされる際は自己責任でお願いします。もし良くない設定などあれば、コメント欄でご教示いただけると幸いです。

目次

Waterfallの設定

Waterfallのconfig.ymlにおいて、prevent_proxy_connectionsfalseに設定変更します。 これを行わないと、プロキシ経由で接続しても弾かれます。

prevent_proxy_connections: false

適宜、Waterfallのポートには、HaProxyのサーバーからしかアクセス出来ないように設定してください。 ufwiptablesで弾く、VPNで接続する方法などが考えられます。

HaProxyの設定

/etc/haproxy/haproxy.cfg を以下のように設定します。

DDNS配下のIPアドレスが変わっても、数十秒程度で反映されます。死活監視の間隔を変更したい場合は公式のドキュメントを参照してください。

# DDNSの名前解決用のDNSサーバの指定。CloudFlareのものと、Googleのものを指定しています。何でも良いです。
resolvers nameservers
    nameserver ns1 1.1.1.1:53
    nameserver ns2 1.0.0.1:53
    nameserver ns3 8.8.8.8:53
    nameserver ns4 8.8.4.4:53

# Waterfallへアクセスする設定。Waterfallは、waterfall.example.com:30000で動いているとします。
listen minecraft
        bind 0.0.0.0:25565
        server minecraft-backend waterfall.example.com:30000 send-proxy-v2 check-send-proxy resolvers nameservers init-addr last,libc,none

注意点・内容の軽い説明

3つあります。

send-proxy-v2を忘れない

忘れるとWaterfallサーバーに繋がらなくなります。

死活監視にはcheckではなく、check-send-proxyを使う

checkでも動きますが、2秒おきに来る死活監視のパケット(っぽいもの)にWaterfallが反応して、エラーでサーバーログが埋め尽くされてしまいます。

check-send-proxyを使うとサーバーログが埋め尽くされることはありません。

DDNSの名前解決として、resolvers, init-addrを使う

resolvers nameserversで、DNSサーバーを指定しています。

init-addrは、HaProxy起動時の名前解決をどうするかを指定するものです。lastは最後に名前解決したときのものを使用する、libcDNSサーバーに名前解決を問い合わせる、というものです。

おまけ: Votifierもプロキシで行う設定

Votifierは、waterfall.example.com:9000で動いているとします。

こちらは、check-send-proxyではなく、checkを使います。

listen votifier
        bind 0.0.0.0:8192
        server votifier-backend waterfall.example.com:9000 check resolvers nameservers init-addr last,libc,none

最後に

Bedrock用のプロキシであるGeyserMCを動かしている関係上(HaProxyはUDPをプロキシ出来ない)、本当はnginxで統一したいのですが、上手く動いていません。このあたりも今後検証していきたいと考えています。

また、nginxでGeyserMC用の通信を中継する設定も近いうちにまとめたいと思います。

再度になりますが、参考にされる際は自己責任でお願いします。もし良くない設定などあれば、コメント欄でご教示いただけると幸いです。

ではまた!

【Office for Mac】ファイルを最終版にする方法(MacのWord/Excel/PowerPointなど)

はじめに

ご覧いただきありがとうございます。ペグ酸です。

先日Macを購入したのですが、Officeでファイルを最終版にするボタンが無く、調べても出てきませんでした。

ファイルの情報を見てみたところ、プロパティで属性(_MarkAsFinal)を追加すれば出来るようだったので、その方法をまとめます。

目次

参考: Windowsで最終版にする方法

リボンで「ファイル」を開きます。

画面左上の「ファイル」をクリックする

出てきた画面で「情報」を開き、「文書の保護」ボタンを押すと、「最終版にする」があります。

「情報」→「文書の保護」に「最終版にする」がある

やり方

メニューバーで、「ファイル」→「プロパティ」を選びます。

メニューバーで「ファイル」→「プロパティ」を選ぶ

出てきた画面で、「ユーザ設定」タブを選び、画像のように設定(名前: _MarkAsFinal、種類: はい/いいえ、値: はい)し、属性を追加します。そして保存します。

ユーザ設定タブから属性を追加する

ファイルを保存すると、「読み取り専用」と表示されています。ですが、この時点ではまだ編集・保存が出来る場合もあります(このあたりの挙動が不明です)。

一旦ファイルを保存したときの状態。なぜか、まだ編集や保存ができる。

一旦ファイルを開き直すと、最終版の表示が出ています。編集も出来なくなっています。

ここで「編集する」をクリックすると、先程追加した属性が消えます。ですので、(当然ですが)一旦最終版を解除し、再度最終版にするときは同じ手順を繰り返す必要があります。

ファイルを開き直したときの様子。ここでは必ず最終版になっている。

最後に

Windowsだとエクスプローラーでファイルを見ても最終版という属性が付与されていますが、macOSではFinderでファイルを見ても特にそのような項目は見当たりません。

このあたりの違いが理由で、Mac版のOfficeには最終版にするボタンが無いのではないかな?と思います。

もし他の方法があればコメント欄で知らせていただけると嬉しいです。

【Ubuntu】既存の非RAIDのシステムドライブをRAID1にする方法

はじめに

ご覧いただきありがとうございます。ペグ酸です。

先日自前で運用しているUbuntuのサーバーのシステムドライブをRAID化しました。しかし、その際に日本語での情報が乏しかったことや、英語の情報でもまとまっていなかったり、まとまっているものも一部上手く動かなかったりして作業が難航したため、今回方法を記事としてまとめることとしました。(参考にしたサイトは記事の最後にまとめています)

なお、内容は十分気をつけて書いているつもりですが、もし間違っていて損害を被った場合でも私は責任を負えません。この記事を参考にされる際はバックアップをきちんと取り、自己責任で実行するようお願い致します。

目次

前提

  • 元々インストールされているドライブ: /dev/sda
    • ブートボリューム: /dev/sda1
    • ルートボリューム: /dev/sda2
  • 増設したドライブ: /dev/sdb
  • OS: Ubuntu Server 20.04
  • その他: LVMは無し、UEFIブート

やり方

バックアップを取っておく・インストーラーUSBを用意しておく

万が一操作に失敗して回復不能になっても差し支えないように、RAID化するのに関係ないストレージにデータをバックアップしておきます。

また、ブートパーティションの操作を伴うため、ブートパーティションが損壊したときに修復できるよう、UbuntuインストーラーUSB(などのコマンドラインを実行できる外部の環境)を用意しておきます。

ストレージを取り付ける

RAIDアレイを構成するハードディスクやSSDを取り付けます。ここでは具体的な手順は省略します。

増設したハードディスクにパーティションを複製する

増設した/dev/sdbに、/dev/sdaのパーティションを複製します。

$ sudo sfdisk -d /dev/sda | sudo sfdisk –force /dev/sdb

mdadmで片肺だけのRAIDを作り(missingと/dev/sdX、など)、mdadmとgrubを更新する

mdadmで片肺だけのRAIDを作ります(ここでは/dev/md0で作ります)。ルートのパーティション(/dev/sdb2)だけをRAID化します。

ここで、ブートパーティションはmdadmだとRAID化出来ないので、後述の方法で手動でデータをコピーします。

$ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb2

再起動時にmdadmのRAIDアレイが解体されない(自動で組み立てられる)ように、mdadmのRAIDアレイの設定をコマンドで更新します。

$ sudo sh -c "mdadm --detail --scan >> /etc/mdadm/mdadm.conf"

grubを更新します。参考にしたサイトだと、選択画面が出てくるようで、そこで/dev/sdaと/dev/sdbを選びます(/dev/md0は選ばない)。

しかし、特にそういったものが出てくることはなかったので、このコマンドが何らかの役目を果たしているのかは不明です。

$ sudo dpkg-reconfigure grub-pc

構築したRAIDのボリュームなどをフォーマットする

ルートボリュームをフォーマットします。

$ sudo mkfs.ext4 /dev/md0

ブートボリュームもフォーマットします。こちらはvfatでやります。

$ sudo mkfs.vfat /dev/sdb1

ルート、ブートのボリュームそれぞれの内容をrsyncなどで複製する

まずは時間がかからないブートボリュームからやります。

/dev/sdb1を、/mnt/sdb1にマウントします。

$ sudo mkdir /mnt/sdb1
$ sudo mount /dev/sdb1 /mnt/sdb1

/boot/efi/のデータを、/mnt/sdb1/にコピーします。

$ sudo rsync -vazHAX --numeric-ids /boot/efi/ /mnt/sdb1/

同様の手順でルートボリュームも複製します。

/dev/md0を、/mnt/md0にマウントします。

$ sudo mkdir /mnt/md0
$ sudo mount /dev/md0 /mnt/md0

ルート配下のデータを、一部を除いて/mnt/md0/にコピーします。このコマンドだとシンボリックリンクの中身までコピーされてしまうので、適宜工夫してください(参考にしたサイトのコマンドをほぼ変えずに記しています)。

また、時間がかかるので、screenなどを用いてやると安全かもしれません。

$ sudo rsync -vazHAX --numeric-ids --exclude="/dev/*" --exclude="/proc/*" --exclude="/sys/*" --exclude="/mnt/*" --exclude="/boot/efi/" / /mnt/md0

fstab、grubのルートボリュームをRAIDのものに切り替える

RAID側のルートパーティションのfstab(/mnt/md0/etc/fstab)に書かれているルートボリュームのマウントポイントを、RAIDのものに書き換えます。

/dev/md0 / ext4 errors=remount-ro 0 1

続いて、現在の(既存のドライブの)ブートパーティションgrub(/boot/grub/grub.cfg)を書き換えます。

本来は直接書き換えてはいけないようで、コマンドで書き換える方法があるようですが、ここでは直接書き換えます。(あまり良くない方法だと思います。不安なこととして最後でまとめます。)

まずは/boot/grub/grub.cfgを複製しておきます。

$ sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.backup

次に、/boot/grub/grub.cfgに書き込み権限を付与します。

$ sudo chmod +w /boot/grub/grub.cfg

そして、/boot/grub/grub.cfgの、

linux /boot/vmlinuz-(バージョン)-generic root=UUID=(文字列) ro

となっている部分を、

linux /boot/vmlinuz-(バージョン)-generic root=/dev/md0 ro

と書き換えます。

この際、テキストエディタの一斉置き換えで行うと起動しなくなります(万一起動しなくなった場合はブータブルUSBなどで外部からファイルを書き換え、元に戻します)。最低限の(選択肢の、Ubuntuと書かれているところのみなど)場所の該当項目のみを書き換えます。

最後に、/boot/grub/grub.cfgの書き込み権限を剥奪し、権限を元々の状態に戻しておきます。

$ sudo chmod -w /boot/grub/grub.cfg

再起動する

再起動します。

$ sudo reboot

ここで上手く起動しなければ、次の方法でブータブルUSBなどを用いて切り戻しを行います。

grubが上手く起動しなければ)grubを元に戻す

grub.cfgをテキストエディタの一斉置き換えでやってしまうと、grubが上手く起動しなくなります。

このときは、ブータブルUSBなどから先程編集したgrub.cfgを編集前のものに戻し、一旦既存のルートボリュームから起動するようにします。そして、もう一度grub.cfgを適切に設定します。

$ sudo mkdir /mnt/sda2
$ sudo mount /dev/sda2 /mnt/sda2
$ sudo cp /mnt/sda2/boot/grub/grub.cfg.backup /mnt/sda2/boot/grub/grub.cfg

作業が終わったら再起動します。

$ sudo reboot
(UUIDが重複しているとかでinitramfsが出てきたら)update-initramfsをブータブルUSBからやる

mdadmで何度もRAIDアレイを同じ名前で作って壊すというのを繰り返すと、mdadmとinitramfsが上手く動かなくなります。

このときは、ブータブルUSBなどからmdadm.confを書き換え、update-initramfsを行います。

まずは先程構築したRAIDをマウントします。

$ sudo apt update
$ sudo apt install mdadm
$ sudo mdadm --assemble /dev/md0 /dev/sdb2
$ sudo mkdir /mnt/md0
$ sudo mount /dev/md0 /mnt/md0

次にmdadmのconfigからUUIDの重複を削除します。mdadmのconfigの末尾に同一の名前でRAIDアレイが複数組まれているのが見つかるはずです。

テキストエディタはお好みでどうぞ。マウントしたRAIDアレイのボリュームにあるmdadmのconfigの末尾にある、重複したRAIDアレイを削除して1つにします。

$ sudo vi /mnt/md0/etc/mdadm/mdadm.conf

個人的に手こずったポイントなのですが、これだけではUUIDの重複エラーは解消されません。RAIDアレイのボリュームでupdate-initramfsする必要があります。

$ chroot /mnt/md0
$ sudo update-initramfs -u -k all

作業が終わったら再起動します。

$ sudo reboot

RAIDに元々のストレージを加える

この操作で元々のストレージのデータは全て消えますので注意してください。

起動したら、lsblkコマンドなどでRAIDアレイから起動しているか調べます。上手く行っていれば、ルートディレクトリは/mnt/md0のものとなっているはずです。

上手くRAID側のルートボリュームから起動したならば、RAIDに元々のストレージを加えます。

$ sudo mdadm /dev/md0 -a /dev/sda2

データの複製が終わるまで、watchコマンドで様子を見ます。(watchコマンドから抜けるには、Ctrl+Cします。)

$ watch -n1 cat /proc/mdstat

fstabをUUIDで設定する

/dev/md0のUUIDを調べます。

$ blkid | grep md0

ここで出てきたUUIDを、/etc/fstabのルートのマウントポイントに設定します。以下のように書き換えます。

UUID=(先程調べたUUID) / ext4 errors=remount-ro 0 1

grub-install、update-grubを行う

grubを/dev/sdaと/dev/sdbにインストールし直します。前述のとおりこれが意味をなしているのかは不明です。

$ sudo grub-install /dev/sda
$ sudo grub-install /dev/sdb
$ sudo update-grub

rebootし、片肺で動くか確認する

再起動します。

$ sudo reboot

上手く起動しないようならば、1回目の再起動時のトラブル対処の方法で/etc/fstabなどを切り戻します。

lsblkやcat /proc/mdstatなどで、上手く動いているか(RAIDから起動しているか)調べられます。

また、片肺だけで起動したら、/proc/mdstatを見ると異常があると表示されます。それも確認しておくと良いかも知れません。

片肺だけで起動した後元通りに戻したら、もう一度リビルドを行う必要がある点に注意が必要です。(mdadm -aコマンドで行います)

作業はここまでです。お疲れ様でした。

心配なところ

ブートボリュームはRAIDになってない(できない?)

ブートボリューム(ここでは/dev/sda1)はmdadmではRAIDに出来ないようなので、RAIDを再構築したらブートボリュームは手動で(コマンドで)再構築する必要があるようです。

しかし、grub-installが自分が試した限りでは上手く動いているか微妙だったので、ここでは直にcpコマンドで/dev/sda1の中身を/dev/sdb1にそのまま複製しています。

この方法だと、アップデートなどでブートボリュームの中身が書き換わったときに/dev/sda1と/dev/sdb1で整合性が取れなくなる(/dev/sda1のみ書き換えられる)気がするので不安です。もしどなたか解決策をご存知であればコメント欄でご教示いただければ嬉しいです。

grub.cfgを直にいじってしまっているので色々調子悪くなってそう

今回、grub.cfgをviで直接編集しました。参考にしているサイトが直接編集する方法をとっていたのでこの方法としたのですが、grub.cfgを直接編集するのは避けたほうがいいようです。

コマンドで編集する方法があるようなのですが、軽く調べた限りだと具体的にどういったコマンドを実行すればよいか不明だったためこの方法で行いました。もしコマンドでの操作をご存じの方が居ましたらコメント欄でご教示いただければ嬉しいです。

また、今回はgrub.cfg内のセーフモードの項目は書き換えていません。そのため、セーフモードは恐らく起動しなくなっています。このあたりも結構不安です。

最後に

私はLinuxのブートパーティションなどを今回初めて触ったのですが、initramfsやGRUBなどの知識が不足しているなということを痛感しました。

Linuxは基本的なコマンドが使える程度なので、時間を確保して体系的に一度勉強したいと思っています。

ではまた!

参考にしたサイト

www.clouvider.com

基本的にこのサイトでの手順を踏襲しています。

以下のサイトは上のサイトで上手くいかなかった部分を調べたものです。

www.hohog.net

atmarkit.itmedia.co.jp

ex1.m-yabe.com

askubuntu.com

keiotu.blog9.fc2.com

piro791.blog.ss-blog.jp

superuser.com

superuser.com

夏休みの振り返り(2022)

はじめに

こんにちは。ペグ酸です。

今日は大学生活3回目の夏休みが終わったので、振り返りということでブログ記事を1つ作ることにします。

去年や一昨年はコロナの影響で、コレといったことが出来ていなかったのですが、今年はその分いろいろなことが出来て充実した夏休みになりました。

目次

やったこと

旅行に行った

友人に会いに、関東の方までサンライズに乗って行ってきました。

高松から乗りたかったのですが、サンライズ瀬戸が全て満席だったので、出雲の方に岡山から乗りました。それでもノビノビシートが残り3~4席程度しか残っていなかったのでギリギリ。まぁ、行った1~2週間前ぐらいに急に決まったので、予約が取れただけ十分かな。

床がカチカチと噂に聞いていたので、備え付けの掛け布団は敷布団にして、掛け布団代わりのブランケットやら枕代わりの服やらを持っていきました。重装備の甲斐あってぐっすり寝れました。

関東の方、と言ってますが、行ったのは山梨です。乗り換えで横浜や東京の端っこの方を通っていますが。

河口湖や山中湖などに行きました。見晴らしも良くてそれほど混雑していなくて、とても快適でした。山中湖では富士山のてっぺんが綺麗に見えました。

インターンに行った

インターンに行ってきました。アルバイトもあまり人と関わる業種ではないので、社会経験も兼ねてトライしてみました。

多々ご迷惑をおかけしてしまいましたが、しっかりと指導していただき良い経験になりました。

一日中外出して人と関わるのが数年ぶりなので、体力と精神が思いの外削られてしまった...

YouTubeに動画投稿をした

スマホを新しくしたので、開封と1ヶ月ぐらいの使用レビューを動画にしてみました。

再生数1万回超え、チャンネル登録者が100人突破などと、かなりの反響があってビックリしてます。

折角なので収益化の条件になっている登録者1000人を目指してみようかな。収益化しても収益は度外視で自分が見たい動画を作るスタンスで行きたいけど。

麻雀をやってみた

雀魂で麻雀を始めてみました。夏休みいっぱいで雀士1までいって、今は雀士3です。ようやく銀の間で放銃しないと打てるようになってきました。

四暗刻を一度役満で出しました。最初は四暗刻役満と知らず、役満演出が始まった時は始めてから一ヶ月足らずで役満を出したことが衝撃でした(役満演出そのものは前に目撃していました)。

夏休みが終わってから数え役満を出しました...!

できていないこと(これからやりたいこと)

プログラミングの勉強

PHP(などWebサービス開発に使えるもの)、Androidアプリ、Windowsソフトウェアの開発の勉強をしたいなーとずっと思っているのですが、書籍一冊やり遂げるのがなかなか難しく時間がかかっています。

卒業研究が夏休み明けから始まっていくので、それとの時間の兼ね合いで厳しいかなーと思っていたのですが、単位がある程度順調に取れていることもあって、10月はある程度まとまった時間が取れそうです。そこで今までできていなかったことを進めたい。

今までの勉強の復習

大学に入ってからの勉強がテストが終わると頭から抜けていってしまってます。やっぱり使う頻度が多くないことは忘れてしまうなと。

入学後すぐにやった線形代数微積分が結構抜けてしまっているので、そのあたりを復習しないといけないなーと思ってます。

また、電磁気やベクトル解析、そして出来たら高校の内容ももう一回復習したいなーとか思っています。大学の内容ある程度知っている上で高校の内容見てみたら大分簡単に見えてきます。高校になって中学の内容見ても同じこと思ったけど。

英語の勉強

TOEIC受ける時は、TOEICの点を800点台に載せたい(2年前にTOEICを受けた時の点は一歩及ばず795点でした)と思っています。

ただ、ブランクが長いので今は700点台すら維持できるか微妙です。問題演習してみないと。そして800点台に載せたいなら単語を覚え込まないといけないです。高校時代はシステム英単語の例文ほぼ暗記していたので、それくらいまでやりこまないと...

メールの整理

大学のメールと、プライベートのメールを要らないやつアーカイブしないといけないなーと思ってます。

やろうと思えば1時間足らずで終わると思うのですが、中々やる気が出ない。日にちを決めて取り組まないと。

レジュメのPDF化

大学の授業のレジュメや過去問をPDF化したいなーと思ってずっと出来てません。プリンターのスキャナーが傷みそうなのと、クラウドストレージの無料枠に収まりきらないので踏み切れずにいます。

NASを買ってRAIDで数TBのプライベートストレージを組みたい。初期投資が数万円するので中々踏み切れないけど。

最後に

中々頭の中だけで考えているだけじゃ動けないので、こうやって文字に起こしてみると少し考えがまとまる気がします。

できるだけ文字に起こす習慣をつけていきたいな、と思う今日この頃です。

ブログの下書きや書きたいことも20個ぐらいあるので、ぼちぼち書いていきたいと思います。

ではまた!