Windows 10 だとそれなりにSSDに配慮した設定になっているとは思うが、LinuxはSSDに配慮されていないので、ちゃんと防護策を講じておく必要がある。
ネタ的には拙ブログ次の記事の応用
監視カメラとして24時間稼働で、SDカードで運用していた raspberry pi3 は 2年位でSDカードが壊れた。/var/log/syslog とか頻繁に書き込むから、1年365日動かしていれば、2年位で万単位の書き込みになるだろう。
OneMix3 はサーバー運用しないから、そんなに神経質になる必要も無いのだろうが、やるだけはやっておこうという事で、その時に使ったramdisklog というスクリプトを入れる。
だが、困った事に Ubuntu 20.04 では、SysVInit から systemd への移行が進んでいるのか、既に insserv が存在しない。
systemd の作法に基づいて、サービス化してみたのだが、起動途中で止まる。
[/etc/systemd/system/ramdisklog.service] ×ダメな例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[Unit] Use ramdisk log tmp After=local-fs.target [Service] ExecStart=/opt/bin/ramdisklog start ExecStop=/opt/bin/ramdisklog stop RemainAfterExit=yes Type=oneshot Restart=no KillMode=none [Install] WantedBy=multi-user.target |
プログラムの性質上、ramdisk OK → /var/log /var/tmp /tmpをramdisk化→rsyslogd 起動 の様になっているので、エラーがログに記録されておらず、何で躓いているのかさっぱり分からん。
grub の設定で起動時の quiet を止めたら見えるかもしれないが、(‘A`)マンドクセ
そもそも、わしは「さあ、Ubuntuを無事起動することができるのか!?」ってゲームやってんじゃなくて、ramdisk化したいだけなんだよ!
/etc/init.d/ramdisklog と配置して、
# update-rc.d ramdisklog defaults
再起動して df -h してみると、
1 2 3 |
/dev/shm 3.9G 3.9M 3.9G 1% /tmp /dev/shm 3.9G 0 3.9G 0% /var/tmp /dev/shm 3.9G 290M 3.6G 8% /var/log |
無事イケましたな 🙂
他には、ファイルシステムに noatime 追加
[/etc/fstab]
1 |
UUID=45a0be02-ab80-4034-90ac-16292f6afc2d / ext4 noatime,errors=remount-ro 0 1 |
SSDは、trim がどーたらという話を聞いた事があるが、
1 2 3 4 |
root@onemix3:~# hdparm -I /dev/nvme0 /dev/nvme0: HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device |
こんな有様なので、そしーてぼくは途方に暮れる〜♪
“hdparm -I /dev/nvme0” で検索したら、
「 NVMe ストレージの揮発性内部キャッシュ – 誰かの役に立てばいいブログ」を発見。
NVMe というのは PCIe バスに直接つないでデータを保存できるストレージの共通規格で、nvmexpress.org で仕様が公開されています。最新の仕様は rev. 1.3です。
HDD や SSD のようなものではあるんですが、hdparm コマンドで設定することはできず、ベンダが提供するツールか、NVMe 仕様に基づいてコントロールする OSS の github.com/linux-nvme/nvme-cli を使って設定します。この記事では OSS の nvme-cli を使っています。
なるほど PCIe接続だから、hdparmでは情報が取れんのか。
“nvme-cli” というキーワードを得たので、
1 2 |
root@onemix3:~# apt-cache search nvme nvme-cli - userspace tooling to control NVMe drives |
ありましたな 🙂
しかし、インストールしてもコマンドが存在せぬ???
dpkg -L nvme-cli でファイル見たら、マニュアルとかサービスとかのファイルだけで、コマンドが無い。
うーん…。大元の github に色々書いてあるので、読んでみるか。