何回聞いても忘れる…小学校の頃に習った衆議院512名、参議院256名は一生覚えてるのに…
定数 | (小)選挙区 | 比例代表 | |
---|---|---|---|
衆議院 | 465 | 289 | 176 |
参議院 | 248 | 148 | 100 |
さくらのクラウドでdebian10を作ったのですが、サーバによってDNSが引けなくて困っていた。
現象としては、コントロールパネルからは「推奨ネームサーバ」というのがあり、そのネームサーバーとIPアドレスの上6セグメントが一致しているとダメだった。
こんな感じ。
原因を探ってみたけど、iptalbesでも向こう側のネームサーバーのダウンでもなく(他の153.120.xxx.xxxのIPアドレスのサーバーからはDNSが使える)困ってしまった。
$ telnet 133.242.0.3 53 Trying 133.242.0.3... telnet: Unable to connect to remote host: No route to host
という感じ。
結論から申し上げますと、 etc/network/interfaces の dns-nameservers 133.242.0.3 133.242.0.4 を削除したところ、通った。
DNSは、/etc/resolv.confを参照しているのでこの記述は不要だったのかもだけど、まさか悪さをしているとは思えなかった…。
このあたり、 や、 を読むと分かるのかなーと思いきや、そんな気力も沸かなくて…
これに気付いたのは、クラウドでサーバーを作成時の自動ネットワーク設定にしたところ、etc/network/interfaces にdns-nameservers の設定行が無くて気が付いたのだった。ずーっとこのファイルのnetmaskの設定あたりなのかなーって思ってた。この1行があると、他の133.242..のサーバーへのsshも通してくれなくて、ローカルスイッチ導入しちゃったよ…。まぁ、これはこれで良かったのだけど。
したいなとういうことで。
以下のcomposer.jsonでulrichsg/getopt-phpとsakura-internet/saklientをインストールしてください。
{ "name": "vagrant/sakura_cloug_api", "type": "project", "license": "MIT", "authors": [ { "name": "ITOH Takashi", "email": "" } ], "require": { "sakura-internet/saklient": "0.0.2.11", "ulrichsg/getopt-php": "^3.3" } }
あとはこっちで。
OSはdebian10
共有セグメントから2つぶら下げる感じでサーバーを立てた。1つは本番、1つはバックアップ兼緊急時用。
で、バックアップ用から本番サーバーにsshしようとしたらつながらない…No route to host…
ん~。ネットワークのことよく知らないからこの辺り「何でつながらないんだ?」となってしまった。
IPアドレスが第2セグメントまで同じなので、サブネットマスクを255.255.0.0にしたらいけるのか?と思いきやダメ。
というわけで、サーバーにそれぞれNICを1枚ずつ追加し、追加したスイッチでローカルでつないでみた。こんな感じ。
で、ネットワークIPアドレスを設定する。
本番サーバー /etc/network/interfaces に下記を追加
auto ens4 iface ens4 inet static address 192.168.0.10 netmask 255.255.255.0
全部でこんな感じ。
# more /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug ens3 auto ens3 iface ens3 inet static address 153.127.xxx.xxx gateway 153.127.xxx.1 # dns-* options are implemented by the resolvconf package, if installed # dns-nameservers 133.242.0.3 133.242.0.4 dns-nameservers 210.188.224.10 210.188.224.11 dns-search anytimefitness.co.jp iface ens3 inet6 static address 2401:2500:102:3017:153:126:162:197 netmask 64 gateway fe80::1 dns-nameservers 2401:2500::1 auto ens4 iface ens4 inet static address 192.168.0.10 netmask 255.255.255.0
バックアップ用にも同様にIPアドレスだけ変えて追加。
これで通信できるようになった。
######### #local network ######### iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT iptables -A OUTPUT -s 192.168.0.0/16 -j ACCEPT
ってやっておく。
というのがある。
というのを踏まえてホントにできるんか?というメモ。(ネタバレうすると、できなくて結局最後は強引な感じでddrescue使った) こちらの記事を参考に。
こんな感じ。
下に付いているのが移行する先のディスク
#cfdisk /dev/vdb
でこんな感じ
Disk: /dev/vdb Size: 500 GiB, 536870912000 bytes, 1048576000 sectors Label: dos, identifier: 0x874ecaad Device Boot Start End Sectors Size Id Type /dev/vdb1 * 2048 838862847 838860800 400G 83 Linux /dev/vdb2 838862848 872417279 33554432 16G 5 Extended mqFree space 838864896 872417279 33552384 16G >> /dev/vdb3 872417280 1006635007 134217728 64G 82 Linux swap / Solaris Free space 1006635008 1048575999 41940992 20G
確認
# fdisk -l /dev/vdb Disk /dev/vdb: 500 GiB, 536870912000 bytes, 1048576000 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x874ecaad Device Boot Start End Sectors Size Id Type /dev/vdb1 * 2048 838862847 838860800 400G 83 Linux /dev/vdb2 838862848 872417279 33554432 16G 5 Extended /dev/vdb3 872417280 1006635007 134217728 64G 82 Linux swap / Solaris
はい。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 254:0 0 1T 0 disk tqvda1 254:1 0 384G 0 part / tqvda2 254:2 0 1K 0 part mqvda5 254:5 0 16G 0 part [SWAP] vdb 254:16 0 500G 0 disk tqvdb1 254:17 0 400G 0 part tqvdb2 254:18 0 1K 0 part mqvdb3 254:19 0 64G 0 part
フォーマットする。
# mkfs.ext4 /dev/vdb1 mke2fs 1.43.4 (31-Jan-2017) Creating filesystem with 104857600 4k blocks and 26214400 inodes Filesystem UUID: c1080d22-de41-4042-971c-d0daaed38694 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
…で、データをコピー…と、ここまできて動いているOSの上でコピーしたらいかんやん…ということに気付く。
とりあえず、同じdebianでディスクを作成する。20Gもいらんのになぁ…
で、こんな感じにサーバーに取り付ける。
上から、
これで起動するとテンポラリ作業用のdebianが起動した。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 254:0 0 20G 0 disk |-vda1 254:1 0 1M 0 part |-vda2 254:2 0 4G 0 part [SWAP] `-vda3 254:3 0 16G 0 part / vdb 254:16 0 1T 0 disk |-vdb1 254:17 0 384G 0 part |-vdb2 254:18 0 1K 0 part `-vdb5 254:21 0 16G 0 part vdc 254:32 0 500G 0 disk |-vdc1 254:33 0 400G 0 part |-vdc2 254:34 0 1K 0 part `-vdc3 254:35 0 64G 0 part
となって、なるほど。
root@debian:~# mkdir /disk-source /disk-target root@debian:~# mount /dev/vdb1 /disk-source root@debian:~# mount /dev/vdc1 /disk-target
これで/disk-sourceディレクトリの内容を全部コピーする。なるだけファイルの属性値も含めてのオプションのpを使う。
root@debian:~# cp -frp /disk-source/* /disk-target/
このあたり、クラウドだと失敗しても最悪アーカイブからまたディスク作ればいいやっていう安心感がいいよね。
root@debian:~# umount /disk-source root@debian:~# umount /disk-target root@debian:~# e2fsck -f /dev/vdc1
# blkid /dev/vda1: PARTUUID="e79a082c-5910-4522-bf37-c7343384199d" /dev/vda2: UUID="147cd78f-e402-489d-a643-b48e7ac5d14d" TYPE="swap" PARTUUID="7efbdfc3-89bc-4812-a6e2-f3ac8fc8f177" /dev/vda3: UUID="ab071864-a09a-45fb-9d64-64b86994c5fa" TYPE="ext4" PARTUUID="97b8211b-0659-459b-9056-5a02466726f4" /dev/vdb1: UUID="248ebabe-9352-4f7f-a4d9-1d5447620931" TYPE="ext4" PARTUUID="5cc2985a-01" /dev/vdb5: UUID="03889948-427a-41dd-82cc-7e000c98255e" TYPE="swap" PARTUUID="5cc2985a-05" /dev/vdc1: UUID="c1080d22-de41-4042-971c-d0daaed38694" TYPE="ext4" PARTUUID="874ecaad-01" /dev/vdc3: PARTUUID="874ecaad-03"
/dev/vdb1 と /dev/vdc1を同じに。
root@debian:~# tune2fs -U 248ebabe-9352-4f7f-a4d9-1d5447620931 /dev/vdc1
あれ?blkidで/dev/vdc3がswapになってないじゃん…
root@debian:~# mkswap /dev/vdc3 root@debian:~# blkid|grep vdc3 /dev/vdc3: UUID="d0a8a656-e56b-4b1c-8ac9-98347a30b2a2" TYPE="swap" PARTUUID="874ecaad-03"
…が、起動しない…
んー。この辺り、Linuxの根本のところをよくわかってないからな…まじめにやらないとなー。といってもとりあえずですませたいなー。…
/etc/fstabを見てると
# / was on /dev/vda1 during installation
とか
# swap was on /dev/vda5 during installation
とかある。んー。
でさくっと。 作業用のdebianで
root@debian:~# apt install gddrescue
で、強制上書き。/dev/vdbが古い方で、/dev/vdcにコピーする。
root@debian:~# ddrescue -v --force /dev/vdb /dev/vdc
そもそもなんでこれが上手くいくかというと…、古い方のHDDは1Tだけど、パーティションとしては400Gしか切ってないのでなんか上手くいかんかな?という…
当然最後にはno space to leftっていうようなエラーが出たけど…コピー完了。blkidするとUUID・PARTUUIDまで一緒になってコピーされてる。
# blkid /dev/vda1: PARTUUID="e79a082c-5910-4522-bf37-c7343384199d" /dev/vda2: UUID="147cd78f-e402-489d-a643-b48e7ac5d14d" TYPE="swap" PARTUUID="7efbdfc3-89bc-4812-a6e2-f3ac8fc8f177" /dev/vda3: UUID="ab071864-a09a-45fb-9d64-64b86994c5fa" TYPE="ext4" PARTUUID="97b8211b-0659-459b-9056-5a02466726f4" /dev/vdb1: UUID="248ebabe-9352-4f7f-a4d9-1d5447620931" TYPE="ext4" PARTUUID="5cc2985a-01" /dev/vdb5: UUID="03889948-427a-41dd-82cc-7e000c98255e" TYPE="swap" PARTUUID="5cc2985a-05" /dev/vdc1: UUID="248ebabe-9352-4f7f-a4d9-1d5447620931" TYPE="ext4" PARTUUID="5cc2985a-01" /dev/vdc5: UUID="03889948-427a-41dd-82cc-7e000c98255e" TYPE="swap" PARTUUID="5cc2985a-05"
で、シャットダウン→ディスク外し→起動
…おぉ、起動した。