はじめに
格安サーバーというほど安くはありませんが、Xeon E2234を搭載したTX1320 M4を数台入手したので、AutoInstallでUbuntu 20.04.1を導入した時のメモを残します。K8sクラスターを構築する目的なので、AutoInstall+Ansibleを利用して最低限の構成は合わせたいと思っています。
これまで準備してきた環境がPreseedに最適化されていて満足していたので、20.04からAutoInstallを採用するのにはまだ難しさがあるように感じています。
基本スペック
ベースモデルとなる、DVDドライブ付き、8GBメモリ、HDDレスという構成で、HDDを装着するためのネジ、ケーブルなどはケース内に配線されていました。M.2 SSDを固定するためのネジは添付されておらず、手持ちのネジ(M2 3mm 皿ネジ)を利用しています。
3.5inch HDDを2台つけられるモデルなので、SATAケーブルは2つ配線されています。
- /dev/sda - 内蔵HDD Slot#1 (SATA, 4TB HGST HDN726040AL)
- /dev/sdb - 内蔵HDD Slot#2 (SATA, 4TB HGST HDN726040AL)
- /dev/sdc - 内蔵M.2 SSD Slot#1 (SATA, 512GB WDC WDS500G1R0B)
OSをインストールしたいSSDはHDDが1台の場合は、M.2 SSDが /dev/sdb と認識される点が、少し気をつけるところかなと思われます。後からHDDを追加して起動ドライブが/dev/sdbから/dev/sdcに変更になっても、UEFIはEFIパーティションを認識し、GRUB(ブートローダー),/etc/fstab(OS)ではUUIDで認識されるので起動しないといった問題は発生しないはずです。
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Xeon(R) E-2234 CPU @ 3.60GHz
stepping : 10
microcode : 0xde
cpu MHz : 814.865
cache size : 8192 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx
fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16
xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dn
owprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_a
d fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveop
t xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit srbds
bogomips : 7200.00
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
...
E-2234 CPUはpassmarkで9000台のスコアを持ち、SATAとはいえSSDを起動ドライブにしているので、全体的なパフォーマンスには期待ができそうです。
基本操作
- F2キー - UEFIメニュー (最初にSATAメニューでRAIDからAHCIモードに変更)
- F12キー - Bootデバイスを選択
操作についてはUSBキーボードを接続して、キーを連打した場合には、他のサーバーと同じように操作しても、キーの押下が認識されない場合があったので、F2, F12キーについてはAmerican Megatrendsのロゴが表示されるまで、押し続けています。
Ubuntuのインストール方法
基本はUbuntu 20.04.1のAutoInstallを利用する方法を利用しています。
自動化の前に手動でのインストール
参考となるuser-dataを取得するため、通常の ubuntu-20.04.1-live-server-amd64.iso を利用してインストールしています。
/var/log/installer/のログは次のようになりました。
#cloud-config
autoinstall:
apt:
geoip: true
preserve_sources_list: false
primary:
- arches: [amd64, i386]
uri: http://jp.archive.ubuntu.com/ubuntu
- arches: [default]
uri: http://ports.ubuntu.com/ubuntu-ports
identity: {hostname: xxxxxxxx, password: xxxxxxxx,
realname: xxxxxxxx, username: xxxxxxxx}
keyboard: {layout: us, toggle: null, variant: ''}
locale: en_US
network:
ethernets:
eno2: {dhcp4: true}
version: 2
ssh:
allow-pw: true
authorized-keys: []
install-server: true
storage:
config:
- {ptable: gpt, serial: WDC_WDS500G1R0B-68A4Z0_2005B5801482, wwn: '0x5001b448b1d75b60',
path: /dev/sdc, wipe: superblock-recursive, preserve: false, name: '', grub_device: false,
type: disk, id: disk-sdc}
- {device: disk-sdc, size: 536870912, wipe: superblock, flag: boot, number: 1,
preserve: false, grub_device: true, type: partition, id: partition-0}
- {fstype: fat32, volume: partition-0, preserve: false, type: format, id: format-0}
- {device: disk-sdc, size: 499568869376, wipe: superblock, flag: '', number: 2,
preserve: false, type: partition, id: partition-1}
- {fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-1}
- {device: format-1, path: /, type: mount, id: mount-1}
- {device: format-0, path: /boot/efi, type: mount, id: mount-0}
version: 1
この情報を元に、AutoInstall用の user-data ファイルを作成していきます。
以前にも利用した作業用リポジトリをforkしてTX1320 M4向けにuser-dataを作成しました。
利用しているuser-dataは一部の情報をマスクしていますが、次のようになっています。
#cloud-config
autoinstall:
version: 1
identity:
hostname: tx1320m4
password: "$B6xxxxxxxxxxxxxxxxxxxxxx"
username: xxxxxxx
shutdown: poweroff
early-commands:
- dd if=/dev/zero of=/dev/sda bs=512 count=34
- dd if=/dev/zero of=/dev/sdb bs=512 count=34
- dd if=/dev/zero of=/dev/sdc bs=512 count=34
storage:
swap:
size: 0
grub:
install_devices:
- partition-0
config:
- id: disk-sdc
type: disk
ptable: gpt
path: /dev/sdc
wipe: superblock-recursive
preserve: False
name: ''
grub_device: False
- id: partition-0
type: partition
size: 536870912
number: 1
device: disk-sdc
wipe: superblock
flag: boot
preserve: False
grub_device: True
- id: format-0
fstype: fat32
volume: partition-0
preserve: False
type: format
- id: partition-1
type: partition
size: -1
number: 2
device: disk-sdc
wipe: superblock
flag: ""
preserve: False
- id: format-1
fstype: ext4
volume: partition-1
preserve: False
type: format
- id: format-1-root
type: mount
path: /
device: format-1
options: 'noatime,errors=remount-ro'
- id: format-0-boot
type: mount
path: /boot/efi
device: format-0
options: 'defaults'
ssh:
install-server: true
allow-pw: false
authorized-keys:
- "ssh-ed25519 AAAAC3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsr7wu9s for ansible"
TX1320 M4固有の課題
作業中に気になった点や遭遇した課題についてメモしていきます。
USBメモリを接続したまま再起動すると、再びインストールプロセスが開始される場合がある
自動インストール後にUSBメモリを抜かないと、再び自動でインストールプロセスが開始されてしまう場合があります。
DVDメディアを使えば物理的にディスクが排出されるので、再起動してもインストールプロセスが開始されることはありませんが、USBメモリを使った場合には、このような現象が発生する可能性があります。
箱から取り出し、以下のような手順でインストールした場合には、少なくとも1回は再現しませんでした。
- 電源を入れ、F2キーでUEFIに移動し、F3キーからLoad Optimized Defaultsを実行する (SATAがAHCIモードに変更される)
- UEFIを保存し抜けると、Fujitsuロゴが表示され、F12キーから起動デバイスの選択画面を表示し、先頭のUEFI OS(USBメモリ)を選択する (F12キーを押さないと画面が黒いまま電源が入り続ける。この状態になったら電源ボタンを軽く押し、電源を落とす。そして再び電源を入れ、Fujitsuロゴ画面でF12キーを押し続けること)
- インストーラーが自動的に再起動し、放置すると画面が黒くなったまま、電源が入った状態で停止する。
この段階でUSBメモリを取り外さずに、F12キーから"ubuntu"を選択した状態で、efibootmgrコマンドの出力を確認すると次のようになりました。
$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0001,0000,0002,0003,0004,0005,0006
Boot0000* ubuntu HD(1,GPT,5248bf34-5aea-49fd-a909-57394b535323,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64
.EFI)
Boot0001* UEFI OS HD(2,MBR,0x4cd3d19f,0x208,0x1f00)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0002* UEFI: PXE IP4 Intel(R) I210 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0
)/MAC(4c52625c645f,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0003* UEFI: PXE IP6 Intel(R) I210 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x1)/Pci(0x0,0x0
)/MAC(4c52625c645f,1)/IPv6([::]:<->[::]:,0,0)..BO
Boot0004* UEFI: PXE IP4 Intel(R) I210 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0
)/MAC(4c52625c6460,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0005* UEFI: PXE IP6 Intel(R) I210 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0
)/MAC(4c52625c6460,1)/IPv6([::]:<->[::]:,0,0)..BO
Boot0006* UEFI: I-O DATAUSB Flash Disk 1100 PciRoot(0x0)/Pci(0x14,0x0)/USB(19,0)/CDROM(1,0x208,0x7c00)..BO
この状態では問題は発生せず、shutdown -h nowで停止し、USBメモリを外し、電源を入れたところ自動的にSSDからubuntuが起動しています。
原因がAutoInstall側にあるのか、前提となるUEFIの状態やuser-dataの設定に依るものかは分かっていません。
この問題はAutoInstall側のuser-dataでOS導入後にshutdownすることで解決しています。
この変更は前述のuser-dataの中に含まれています。
デフォルトのSATA設定が、RAIDモードである点
前述のとおり、まず利用を開始する前に、UEFIからF3キーを押し、Optimized Defaultsを適用しています。
これでAHCIモードに切り替わるようですが、SATAコントローラの設定を確認しています。
USBメモリからブートしない & 起動デバイスリストが表示されない
F2, F12キーについて書いたセクションにも書いていますが、キーを連打した場合の認識率は非常に低く、私の環境では押下し続ける必要がありました。
また、OSからshutdown -r nowで再起動した場合には起動時のFujitsuロゴが2回表示されます(一度ロゴが表示されてから電源が落ち、また入る)。
初期化処理を確実にするためなのだと思いますが、F2, F12キーは2回目のFujitsuロゴが表示されている時に押下しなければいけないので、最初に画面が切り替わって安心していると期待した動作をせず戸惑うと思います。
American Megatrendsのロゴが表示されるまでは、F2, F12キーは押し続けましょう。
SATAケーブルの配線に注意が必要
ケースを開けると未接続分のSATAケーブルがDVDドライブから伸びているSATAケーブルの下敷になっていて、M.2 SSDと干渉するかと思い、SATAの上を通したのですが、ケースを閉じる際に干渉する可能性のあることが分かりました。もう少しで断線させてしまうところでした。
再びDVDドライブからのSATAケーブルをマザーボードのコネクタから外し、HDDと接続するSATAケーブルを下に通して、再びDVDドライブのSATAケーブルをマザーボードに接続しました。
気をつけるべき点はあるものの、富士通のHalf Heightなコンパクト筐体は、TX120 S3の経験しかないので、HDDの取り付けや配線は劇的に改善されていると感動しました。
起動ドライブのサイズが違う場合には利用が難しい
サーバーによって、ドライブ数、MBR(BIOS)/GPT(UEFI)の違いなどの特徴が異なるので、タイプによって複数のISOイメージを作成する必要があります。
もしディスクサイズだけが問題であれば、あらかじめ十分かつ最小限のサイズでpartition-1を準備して、後から拡張する方法もあります。
今回利用した user-data のパーティションサイズを半分の 249784434688 にしたISOイメージを作成し、これを拡張する方法は次のようになります。
Step#1. パーティションの拡張
$ sudo parted /dev/sdc
(parted) print
Model: ATA WDC WDS500G1R0B (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot, esp
2 538MB 250GB 250GB ext4
(parted) resizepart 2
Warning: Partition /dev/sdc2 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [250GB]? 500GB
(parted) print
Model: ATA WDC WDS500G1R0B (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 boot, esp
2 538MB 500GB 499GB ext4
Step#2. ファイルシステムの拡張
## パーティションを拡張したが、ファイルシステムは拡張されていない
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/sdc2 239051404 2473928 224364588 2% /
...
## ext4の場合
$ sudo resize2fs /dev/sdc2
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sdc2 is mounted on /; on-line resizing required
old_desc_blocks = 30, new_desc_blocks = 59
The filesystem on /dev/sdc2 is now 121938984 (4k) blocks long.
## 倍のサイズになっていることを確認
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/sdc2 479050608 2484128 454605840 1% /
...
この方法で比較的汎用的なISOイメージは作成可能ですが、搭載するドライブ数によってデバイスの指定(/dev/sd*)が変化する点には注意が必要そうです。
最新のcurtinでは最後に指定するpartitionのsize値に-1を指定することで残りの最大サイズが指定できます。
HDDの劣化について
最初に利用していたHDDはHGSTのDeskstar NASシリーズの4TBドライブでした。
これはKubernetesのrook-ceph用のbluestoreとして利用していますが、3年ほど経過した時点から故障する現象に遭遇しています。
症状としては突然認識されなくなるというもので、同時に発生しない限りはrook-cephの冗長性によって問題なく対応できています。
これは筐体の狭さからくる熱による劣化というよりは、用途そのものがドライブの基本性能と合っていなかったのだと反省しています。現在はSeagateのExosシリーズかWD GoldシリーズのニアラインHDDを利用するようにしています。
他のk8sクラスターで稼動しているものを含めてニアラインクラスのHDDを利用しているところで問題は発生していません。
以上