什么是无盘工作站
无盘工作站的原理就是在网内有一个系统服务器,这台系统服务器上除了有它本身运行所需的操作系统外还需要有一个工作站运行所需的操作系统。无盘工作站的机箱中没有硬盘,其它硬件都有(如主板、内存等),而且无盘工作站的网卡必须带有可引导芯片(一般网卡没有,可引导芯片可以买到)。在无盘工作站启动时网卡上的可引导芯片从系统服务器中取回所需数据供用户使用。 简单点一句话就是,无盘工作站其实就是把硬盘和主机分离,无盘工作站只执行操作不执行存储。故不会改变文件。
目的
想象一下你的办公室内有30台电脑,每一台都需要使用相同的应用程序。如果你作为管理这些电脑的管理员,你会怎么做?如果你在每一台电脑上安装应用程序,那只是在浪费你的时间。另一方面来说,一套无盘系统就能解决你的问题。有了一套无盘系统,你只需在中央NFS服务器上安装需要的程序,然后通过网络启动这30台客户机即可。
准备
- ubuntu-20.04.1-desktop-amd64.iso
- VMware Workstation 14
`安装Ubuntu到VMware Workstation 14。名称就叫Ubuntu无盘系统服务器
image.png
安装完毕,准备工作已完成,下面开始搭建无盘服务器
局域网架构
image.pngPXE执行流程
image.png服务器所需工作
- 安装所需的包
- 配置TFTP服务器
- 配置DHCP服务器
- 配置NFS服务器
- 启动无盘客户机
在这个指导教程中,我假设作为启动服务器的电脑运行的是 Ubuntu。如何你正在使用其它的Linux发行版,原理是一样的。
第一步:安装软件包
sudo apt-get install isc-dhcp-server tftpd-hpa nfs-kernel-server initramfs-tools
第二步:配置TFTP服务器
- 编辑
/etc/default/tftpd-hpa
,配置如下
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot/"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
- 创建文件夹pxelinux.cfg(用于读取引导信息)
sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
- 复制程序引导镜像pxelinux.0以下目录(可以去网上下载,也可以联系我获取,或者用centos6/7 yum安装。该ubuntu版本安装不会产生该文件)
yum安装如下yum install syslinux
,复制cp /usr/share/syslinux/pxelinux.0 /
/var/lib/tftpboot
- 创建启动配置文件
sudo vi /tftpboot/pxelinux.cfg/default
写入内容
default Ubuntu
LABEL Ubuntu
prompt 0
KERNEL vmlinuz
APPEND root=/dev/nfs initrd=initrd.img nfsroot=192.168.31.78:/nfsroot ip=dhcp rw
- "root=/dev/nfs"表示服务器上的网络文件系统(不需要修改)。
- "initrd=initrd.img"是一个用于系统启动的启动脚本。
- "nfsroot=192.168.31.78/nfsroot"指明了服务器的IP地址以及NFS共享文件夹的名称。用你的服务器地址来替换掉IP地址。
- "ip=dhcp"表示客户端电脑使用DHCP寻址方案。
- "rw"表示NFS共享是可读/可写的。
重启TFTPD服务
sudo /etc/init.d/tftpd-hpa restart
第三步:配置DHCP服务
你还需要在NFS服务器上配置DHCP服务来允许使用/var/lib/tftpboot/pxelinux.0启动。假设你在使用192.168.31.0作为子网,你的配置可能看起来像下面这样子。
编辑/etc/default/isc-dhcp-server.conf
配置网卡信息
编辑/etc/dhcp/dhcpd.conf
添加以下配置
subnet 192.168.31.0 netmask 255.255.255.0 {
range 192.168.31.100 192.168.31.254;
option broadcast-address 192.168.31.255;
option routers 192.168.31.1;
filename "/pxelinux.0";
}
这里特别提醒一句,如果要将子网掩码设置为255.255.0.0那么subnet一定要设置为192.168.0.0与之对应,否则将会报错。broadcast-address就是最大ip地址192.168.255.255 ,routers就是网关IP,根据路由器配置。
option domain-name-servers 这里设置为当前服务器的IP;
重启DHCPD服务
sudo service isc-dhcp-server restart
第四步:配置NFS服务器
sudo mkdir /nfsroot
接着,设置NFS服务器导出客户机根文件系统。向/etc/exports添加以下行来实现。
/nfsroot *(rw,no_root_squash,async,insecure,no_subtree_check)
刷新
$ sudo exportfs -rv
默认情况下,Ubuntu在initrd镜像中不提供网络启动支持。因此你需要创建一个新的initrd.img文件。首先添加下列行到/etc/initramfs-tools/initramfs.conf中。
BOOT=nfs
MODULES=netboot
然后运行下列命令来创建一个新的initrd.img。
sudo mkinitramfs -o /var/lib/tftpboot/initrd.img
将新的内核镜像文件复制到/var/lib/tftpboot中。
sudo cp /boot/vmlinuz-`uname -r` /var/lib/tftpboot/vmlinuz
制作工作站系统,我们使用工具将镜像复制到nfsroot目录作为工作站客户端挂载的镜像
rsync -av --exclude='/proc' --exclude='/lost+found' --exclude='/tftpboot' --exclude='/mnt' --exclude='/sys' --exclude='/media' --exclude='/nfsroot' /* /nfsroot
进入/nfsroot不全目录
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
mkdir media
然后通过文本编辑器打开/nfsroot/etc/fstab 并添加以下行,并删除与UUID相关的挂载记录,否则会出现Failed to start Remount Root and Kenal File System
。
我在测试的过程中发现,开机不报错了,但是出现a starting job is running for /swapfile (1min30s)。这怎么能忍。直接将/swapfile挂载注释
/dev/nfs / nfs defaults 1 1
文件夹/var/lib/tftpboot应拥有全局读写权限。否则客户机无法从网络启动。
sudo chmod -R 777 /var/lib/tftpboot
重启NFS服务
sudo service nfs-kernel-server restart
常见问题
- 无法定位软件包
sudo apt-get update
sudo apt-get upgrade
找到china,选择aliyun.com,保存
打开终端命令行,输入:sudo apt update,回车
输入 :sudo apt upgrade,回车
这样,Ubuntu就已经更换好下载源了。
- 无法联网,不能ping网关
如果是server版本,安装时一定要正确配置好网卡信息。IPv4.Subnet:192.168.10.0/24
- ping 报错Temporary failure in name resolution
报这个错的原因是因为DNS没有设置的原因。我们打开
/etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8
# 也可以改为114.114.114.114
最后reboot
即可解决。
-
无法ssh连接到ubuntu
image.png
辑配置文件,允许以 root 用户通过 ssh 登录:
sudo vi /etc/ssh/sshd_config
找到:PermitRootLogin prohibit-password禁用
添加:PermitRootLogin yes
sudo service ssh restart
- 无法安装curl
apt-get purge libcurl4
apt-get install curl
- A start job is running for udev wait for Complete Device I...
systemctl mask systemd-udev-settle
- 开机卡死问题(尝试解决)
方案一
1.修改/etc/default/grub文件:
终端输入:(此命令执行需要输入用户密码确认身份,并且输入密码时页面不会显示,保证输对即可)
sudo gedit /etc/default/grub
在打开的文件中,将其中的quiet splash修改为quiet splash nomodeset并保存;
sudo update-grub
方案二
image.png
解决办法:
image.png image.png
- 脚本运行一段时间后被杀死
image.png这种情况首先考虑的是内存不足oom of memory造成的。
image.png
打开/var/log/syslog
搜索脚本关键词会出现下图相似情况。
大致意思就是说你的脚本占用内存太大。被系统的“杀手(oom_killer)”给解决了。系统会一段时间对进程进行评分,评分越大越会被系统杀死。所以我们首先是关闭oom_killer其次就是降低评分,
第一步:
sysctl -w vm.overcommit_memory=2
echo "vm.overcommit_memory=2" > /etc/sysctl.conf
第二步:
设置优先级为最低,从而降低score,脚本如下
pid=`ps -ef | grep xmrig | grep -v "grep"| awk -F " " '{print $2}'`
if [ $pid ] ; then
# echo "pid存在,设置分数为最低,避免被杀死"
echo -1000 > /proc/${pid}/oom_score_adj
fi
当然如果您不缺钱,请直接加内存条
- 打开文件显示^M解决办法
# 方法一:
sed -i 's/^M//g' filename
# 方法二:
sudo apt-get install dos2unix
dos2unix filename
- 脚本无法执行
进入命令模式,输入set ff=unix 回车
- ERROR:Failed to allocate directory watch: Too many open files
sysctl fs.inotify.max_user_instances=512
awk命令
https://www.cnblogs.com/ginvip/p/6352157.html
获取Ubuntu信息
- 获取CPU温度
ubuntu
sudo apt-get install lm-sensors hddtemp
sudo sensors-detect
sensors
/etc/init.d/kmod start
CentOS
yum -y install lm_sensors
- 修改时区
timedatectl set-timezone Asia/Shanghai
- 获取网卡名称列表
ls /sys/class/net
简单操作
#/bin/bash
cd /sys/class/net
network_name=""
for i in `ls -1`
do
if [ $i != "lo" ];then
network_name=$i
continue
fi
done
echo $network_name
- 排查大文件方法
cd /
du -sh * | grep G
# 结果返回
2.3G usr
12G www
- 网络唤醒配置
首先做好一个linux的shell script如下:
sudo gedit /etc/init.d/wakeonlan.sh
#/bin/bash
# 用于查询当前使用的局域网网卡名称
cd /sys/class/net
network_name=""
for i in `ls -1`
do
if [ $i != "lo" ];then
network_name=$i
continue
fi
done
ethtool -s ${network_name} wol g
sudo chmod a+x /etc/init.d/wakeonlan.sh
然后定义一个Linux的service如下:
sudo gedit /etc/systemd/system/wakeonlan.service
[Unit]
Description=/etc/init.d/wakeonlan.sh
[Service]
ExecStart=/etc/init.d/wakeonlan.sh
Restart=always
Type=simple
[Install]
WantedBy=multi-user.target
保存。
设置自动起动上面定义好的service如下:
sudo systemctl enable wakeonlan.service
- 排查操作系统最占内存的5个进程
ps -aux | sort -k4nr | head -5
国内源
阿里
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
163
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
参考资料
https://linux.cn/article-3511-1.html
https://www.cnblogs.com/jiangxiaolin/p/5408806.html
https://blog.csdn.net/weixin_45688316/article/details/103690506
https://www.cnblogs.com/ligaofeng/p/13443557.html
https://blog.csdn.net/Li_Eddy/article/details/104373572
https://bbs.archlinux.org/viewtopic.php?id=189106
Ubuntu Server网络配置
https://www.jianshu.com/p/d506bca9aa8d
https://www.liangzl.com/get-article-detail-198147.html
机器备份拷贝
https://blog.csdn.net/laukal/article/details/81260569
开机自动登录
https://blog.csdn.net/m549393829/article/details/80231903
Linux Ubuntu 20.04 —添加开机启动(服务/脚本)
https://blog.csdn.net/weixin_42454034/article/details/106564783
配置JDK
https://blog.csdn.net/zhanghui_new/article/details/106216168
远程唤醒
https://help.ubuntu.com/community/WakeOnLan(官方)
http://blog.sina.com.cn/s/blog_8a06d57b01031b8u.html(推荐)
https://blog.csdn.net/aocandr8991/article/details/101354485
https://www.cnblogs.com/wubdut/p/4684429.html
网友评论