LiteServer Project Minecraft 主站
LiteServer Project Minecraft 国际站
友链: 白天的小站
Ava Max - Salt (Lyrics) oh, oh oh oh oh oh↑ I’m all out of salt, I’m not gonna cry
Kelly Clarkson - Stronger (What Doesn’t Kill You) [Official Video]
突然的自我 伍佰AndChinaBlue ♫「等不完守候,如果仅有此生 又何用待从头」♫ 動態歌詞Lyrics Music ♫ White_Lyric
谭咏麟 - 卡拉永远Ok『不想归去挂念你 对影只得我自己』【動態歌詞Lyrics】
最近在阿里轻量云买了一些机器, 同样都是1C/0.5G, Ubuntu 20.04 的机器运行非常正常, Ubuntu 22.04 的机器却隔一段时间就没有响应了. 具体表现为能ping通, 但是ssh登录会超时失败, 宿主机监控CPU/磁盘IO大涨. 登录VNC能看到类似这样的提示:
1 | [44211.553196] Out of memory: Killed process 95466(apt-check) ... shmem-rss:0KB, UID:0 pgtables:300KB dom_score_adj:0 |
而这台机器已经关闭了apt自动更新, 一番搜索之后发现snapd可能会引起这个问题:
snap list
1 | Name Version Rev Tracking Publisher Notes |
1 | sudo snap remove --purge lxd |
1 | sudo apt remove snapd |
sudo vim /etc/apt/preferences.d/nosnap.pref
1 | Package: snapd |
sudo apt clean && sudo apt update
在完全删除掉snapd之后, 目前机器已经正常运行了两三天…
后来发现还是不太行, 解决方案是给这个内存超级小的机器加上Swap. 因为阿里云没创建swap, 而且还把swappiness设置成了0! 为防止奇怪的事情发生, 弄成crontab脚本每分钟跑一下好了.
创建并启用swap
1 | dd if=/dev/zero of=/swap.img bs=1M count=1024 |
添加分钟级任务 sudo crontab -e
1 | @reboot swapon -s | grep -q swap || swapon /swap.img |
Terminate unattended-upgrades or whatever is using apt in ubuntu 18.04 or later editions
How to Remove Snap Packages in Ubuntu Linux
How do I configure swappiness?
How to read oom-killer syslog messages?
How can I check if swap is active from the command line?
Linux Partition HOWTO: 9. Setting Up Swap Space
How to Clear RAM Memory Cache, Buffer and Swap Space on Linux
设备是HP Ultrium 6-SCSI, 使用LTO-6磁带进行备份, 磁带空间大约为2TB
安装 mt-st
工具管理磁带
1 | sudo mt -f /dev/nst0 status |
返回大概是这样的
1 | SCSI 2 tape drive: |
tar工具备份出来的tar包没有对文件顺序有明确的要求, 最终顺序由 readdir 决定, 某些情况下可能不符合要求, 可以提前生成一个文件列表提供给tar.
1 | find tobackupdirname -print0 | sort -z > /tmp/filelist.txt |
如果等待tar打包的文件总大小超过了磁带总大小, 需要启用MultiVolume支持 (建议在tmux内执行保证复制不会中断)
1 | sudo tar -cvf /dev/nst0 -M --no-recursion --null -T /tmp/filelist.txt |
这样tar就会在空间写满的时候提示换盘:
1 | ... |
更换磁盘后回车, tar就会继续进行备份了
当然也可以尝试使用LTFS进行数据的备份, 此处不再赘述.
有一台很久之前创建的Windows VM, 使用OVMF UEFI作为引导, 但是主盘是通过IDE挂载的, 而且因为系统没有安装Virtio驱动所以直接改为SCSI挂载会报错 INACCESSABLE_BOOT_DEVICE. 换成SATA也是一样的.
一番搜索后找到了一个靠谱的答案:
dir C:\
, dir D:\
之类的命令确定当前系统盘和Virtio驱动盘.dism /image:C:\ /add-driver /driver:E:\vioscsi\w10\amd64
wpeutil shutdown -s
整个流程走下来之后VM顺利更换掉了IDE磁盘. 同时我还升级了Machine的定义, 目前暂时没看到什么异常.
Change disk type (IDE/SATA to SCSI) for existing Windows machine
PVE 8.2.4 ISO安装, 由于同一台机器上其他的磁盘上原来已经安装了 PVE 7.4 所以安装过程中提示是否要rename到pve-OLD
而且不能跳过.
安装之后原来磁盘上的PVE会被保留, 但这也造成了我们没法把原来的磁盘用作其他用途 (Disk Manage会报错占用了, 没法Wipe Disk
)
参考以下步骤删除掉 pve-OLD
删除lv
1 | lvdisplay |
删除vg
1 | vgdisplay |
删除pv
1 | pvdisplay |
这样原来的磁盘就可以用作其他用途了.
PVE 8.2.4 版本iso安装之后 syslog里一直报错:
1 | ... |
如果直接操作 ipset
, iptables -vnL
命令会提示:
1 | ipset v7.10: Cannot open session to kernel. |
看起来是因为新版本启用了ebtables
但是某些地方还是有问题, 没找到特别好的解决方案, 目前的解决办法是 Datacenter -> Firewall -> Options, 设置 ebtables
为 No
. 重启后错误日志就消失了.
另外还有个奇怪的问题, 默认安装启用 ebtables
的情况下, CIFS mount会失败, 但是 dmesg 和 journalctl 里看不到错误. 目前也没有找到比较可靠的解决方案, 关闭 ebtables 之后正常了.
WebUI 上只有添加 Storage 的地方, 没有删除的方式, 需要手动进入Node Shell 进行删除
这里假设要删除的存储是 localssd
1 | systemctl status mnt-pve-localssd.mount |
1 | ls -al /mnt/pve/localssd |
1 | rm /etc/systemd/system/mnt-pve-localssd.mount |
1 | nano /etc/pve/storage.cfg |
找到localssd
这一段并删除
1 | dir: localssd |
[SOLVED] Removing old Storage from GUI
Proper way to remove old kernels from PVE 8.0.4 & which are safe to remove
制作一个Ubuntu Desktop启动盘, 使用这个U盘启动系统
备份全盘内容
1 | dd if=/dev/nvme1n1 of=/mnt/download/diskbackup/diskc.raw bs=4M |
其中 of
参数指定的输出文件位置可以在网络上, 例如SMB共享. 需要提前通过类似这样的命令 mount
1 | sudo mkdir /mnt/download |
如果中间不小心中断了的话, 也可以重新引导进入Ubuntu Desktop, 使用如下命令继续备份
1 | dd if=/dev/nvme1n1 of=/mnt/download/diskbackup/diskc.raw bs=4M seek=123456789 skip=123456789 iflag=skip_bytes oflag=seek_bytes |
其中 123456789
是已经备份生成出来的文件的长度, 建议稍微减小一些数值, 比如已经备份了157GiB (168577466368), 那就可以选择 150GiB作为继续点 (161061273600)
skip_bytes
, seek_bytes
表示skip
和seek
的数值是字节, 而不是bs
的数量. 否则实际上跳过的字节会变成 123456789 * 4M
. iflag
, oflag
不要写反了
1 | qemu-img convert -O qcow2 diskc.raw diskc.qcow2 |
因为源物理机是Windows系统, 此处按照Windows系统创建.
不挂载ISO, BIOS选择OVMF (UEFI), EFI Disk 正常创建即可.
把文件放到Proxmox指定路径下. 如果该路径在SMB上则需要保证磁盘文件的owner正确, 而且权限正确, 否则vm无法启动报错Permission denied
(此处跟stackexchange上遇到的情况不太一样, 我只需要chown+chmod 644就可以让vm正常启动了)
虽然不知道是什么原因导致的, 但是可以通过在Grub下输入这些来引导windows. 其中 (hd0,gpt1)
是通过grub下 ls
命令得到的.
1 | insmod part_gpt |
Translating bash to python; “dd” command “iflag=skip_bytes” how can be converted?
Determine the size of a block device
Resuming a DD of an entire disk
How to output file from the specified offset, but not “dd bs=1 skip=N”?
2.4. Converting Between RAW and QCOW2
How to use QEMU/KVM virtual machine disk image on SMB/CIFS network share: Permission denied
只讨论Linux VM
在PVE界面上操作Clone之后, 检查一下网卡MAC是不是不一样. 老版本PVE似乎有bug, clone VM的时候会把mac也复制. IP一样没问题, 只要都是DHCP等下重启就可以了.
sudo vim /etc/hostname
sudo vim /etc/hosts
1 | echo -n | sudo tee /etc/machine-id |
1 | sudo rm -rf /etc/ssh/ssh_host* |
sudo reboot