安装
1.下载proxmox 6.2镜像,基于dabain 10.5 buster(清华大学镜像站):
https://mirrors.tuna.tsinghua.edu.cn/proxmox/iso/
2.使用rufus软件写入ISO镜像到U盘,使用DD方式写入
默认LVM分区处理
pve删除lvm扩容根目录
先备份虚拟机
删除虚拟机
删除local-lvm:lvremove pve/data
查看空闲空间:vgdisplay pve | grep Free
增加分区空间:lvextend -l +100%FREE -f pve/root
fsdisk -l
执行上边的扩容操作:resize2fs /dev/mapper/pve-root
恢复已经备份的虚拟机
更改为国内软件源
更改debain apt源
cp /etc/apt/source.list /etc/apt/source.list.bak
cat > /etc/apt/source.list <<EOF
1 | deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free |
更改pve apt源
cp /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
cat > /etc/apt/sources.list.d/pve-enterprise.list<<EOF
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian buster pve-no-subscription EOF
更改pve lxc镜像源
查找设定下载源的文件:grep -rn "download.proxmox.com" /usr/share/perl5/PVE/*
sed -i.bak "s#http://download.proxmox.com/images#https://mirrors.ustc.edu.cn/proxmox/images#g" /usr/share/perl5/PVE/APLInfo.pm
wget -O /var/lib/pve-manager/apl-info/mirrors.ustc.edu.cn https://mirrors.ustc.edu.cn/proxmox/images/aplinfo.dat
备份系统
tar pczvf ./sysback.tgz --exclude=/lost+found --exclude=/mnt --exclude=/srv --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/sys --exclude=/meida --exclude=/mnt --exclude=/pve-directory /
注意目标目录要在最后,排除目录要在前面
PVE8开启直通
打开直通,并开启GVT
前提:硬件支持并在UEFI或BIOS里面开启VT-D虚拟化,GVT可以把核显直通给多个虚拟机
修改grub文件:vim /etc/default/grub
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet" |
重启宿主机:reboot
修改module文件vim /etc/module
加入
1 | vfio_iommu_type1 |
重启系统生效
win11设置显卡直通
以下截图是我的win11硬件配置:
机器选项q35+ovmf,显卡可选virgl,显卡主要是做控制台时的显示。
下载虚拟化驱动的iso,虚拟机win11的驱动靠它了:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
列出设备地址,确定显卡vendorID:lspci -nn
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 610 [8086:5902] (rev 04)
定义为GPU直通vfio设备,并防止VGA仲裁:echo "options vfio-pci ids=8086:5917 disable_vga=1" > /etc/modprobe.d/vfio.conf
禁止默认VGA驱动在启动时加载:echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
启动进入虚拟机即可
参考:https://star.us.org/Cs/win10-installation-and-gpu-passthrough-on-proxmox-6.html?replyTo=25
LXC使用
在配置的存储目录中,点击模板,可以看到里面有很多system模板和turnkey的应用模板,这样可以大大减少应用的部署时间而专注于业务上。
配置模板很简单,最后设置密码后启动即可。如果忘记密码,可以通过PVE主机进入进行修改:ptc enter 容器ID名
再使用passwd 用户名
修改
ubuntu container ssh的问题:
默认ubuntu不允许root进行ssh,可以新建一个用户,把用户添加到sudoer里面就行:useradd 用户名 -d -s /bin/bash
使用passwd更改密码
添加用户到sudoer:vim /etc/sudoer
或者:visudoer
docker使用
安装docker:apt install -y docker-ce docker-ce-cli
安装portainer:docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
linux磁盘操作
新磁盘分区
分区工具:
目前使用最多的分区工具有fdisk和parted,区别是fdisk只支持mbr分区表,parted支持mbr和GPT分区表,大于2T的磁盘则需使用parted。
工具使用
fdisk:
先选定指定磁盘fdisk /dev/sdx
按m则列出操作菜单,根据菜单操作新建分区
分区完毕后,w保存退出
使操作生效:保存退出后,fdisk需要运行partprobe生效:partprobe /dev/sdx
这样,在/dev目录下就会生成一个sdx1的文件,对应就是该磁盘的第x个分区
最后,格式化分区,创建文件系统:mkfs -t xfs /dev/sdx1
或:mkfs.xfs /dev/sdx1
parted:
parted的操作与mysql的命令行操作有点相似,而且是即使生效的,不用partprobe。
运行parted后,按”?”可以跳出操作菜单,先选择要操作的设备:select /dev/sdx
然后就可以根据菜单进行分区表类型选择和分区了
创建完毕后别忘了格式化分区来创建文件系统。
磁盘或分区的克隆
有时候遇到磁盘的smart报警,这时候需要更换磁盘了,如何克隆?
这时候使用dd命令就可以:dd if=/dev/sdb of=/dev/sdc
这样就相当于把sdb的磁盘克隆到sdc,再重新挂载就行。这个操作会把磁盘的所有信息(包括分区表)都克隆。也可以使用dd命令进行分区表的备份哦。
磁盘克隆后的扩容
克隆磁盘后,如果目标磁盘比原磁盘大,则有部分空间是没有分配的,这时需要手动扩容
这里使用sata磁盘dd命令克隆到nvme的磁盘,执行:parted /dev/nvme0n1 print free
跟直接进入parted操作是一样的
显示信息:
1 | Number Start End Size File system Name Flags |
可以看到有16G是为分配的空闲空间,因为3号分区是lvm分区,执行如下命令:parted /dev/nvme0n1 resizepart 3 100%
把剩余的空间分配给3号分区,重新执行:parted /dev/nvme0n1 print free
可以看到已经划给3号分区
分区的空间修改了,也要刷新一下pv物理卷的大小,这样pv才能识别变动的空间:pvresize /dev/nvme0n1p3
然后执行pvdisplay
查看pv中free 项中是否显示了可用的空间
1 | --- Physical volume --- |
可以看到有3816可以分配,然后执行:lvextend -l +100%FREE pve/root
Size of logical volume pve/root changed from <215.07 GiB (55057 extents) to 229.97 GiB (58873 extents).
Logical volume pve/root successfully resized.
其中pve/root是逻辑卷的目录,可以通过lvdisplay
命令查看
最后执行手动扩展命令使文件系统生效,未扩展前使用df -hT
查看/dev/mapper/pve-root大小:
1 | Filesystem Type Size Used Avail Use% Mounted on |
使用ext4格式文件系统,就通过resize2fs /dev/mapper/pve-root
进行手动生效:
resize2fs 1.46.2 (28-Feb-2021)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 27, new_desc_blocks = 29
The filesystem on /dev/mapper/pve-root is now 60285952 (4k) blocks long.
再次运行df -hT
查看是否生效:
1 | Filesystem Type Size Used Avail Use% Mounted on |
可以看到分区已经由212G扩展到227G,与上面print free的空间一致,说明扩展成功
另外如果是xfs格式的文件系统,可以使用xfs_growfs
命令执行手动生效。
xfs根目录在线扩容
从虚拟机上面增加磁盘容量后,不会马上应用到分区,需要手动设置
查看空闲空间容量:parted /dev/sda
(parted) print free
显示信息:
1 | Model: NUTANIX VDISK (scsi) |
可以看到这里增加了107G
按q退出
安装软件:yum install cloud-utils-growpart
growpart /dev/sda 5
如果有报错:
unexpected output in sfdisk —version [sfdisk,来自 util-linux 2.23.2]
则输入:export LANG=en_US.UTF-8
重新运行:growpart /dev/sda 5
CHANGED: partition=5 start=17195008 old: size=1031380992 end=1048576000 new: size=1241096159 end=1258291167
使用xfs_growfs命令扩容xfs_growfs /dev/sda5
看到输出信息:
1 | meta-data=/dev/sda5 isize=512 agcount=4, agsize=32230656 blks |
输入df -hT可以查看已经扩容
Linux 下配置samba共享
1、安装samba
apt install samba
2、建立用户并加入属组
useradd 用户名 -g 组名 -M
3、添加samba共享用户,并设置密码
smbpasswd 用户名
4、配置smb.conf创建共享目录和权限
vim /etc/samba/smb.conf
注释不必要的目录,然后新建:
1 | [share] |
然后重启smbd服务即可:
systemctl restart smb
Linux Bash及Vim界面配置
Bash配色(针对用户)
修改~/.bashrc文件:
1 | # ~/.bashrc: executed by bash(1) for non-login shells. |
修改VIM使用鼠标操作
vim ~/.vimrc
1 | source $VIMRUNTIME/defaults.vim |
注意mouse后面有一个“-”
docker下安装nextcloud
docker添加代理FQ访问docker镜像
使用systemctl方式添加:
vim /usr/lib/systemd/system/docker.service
在[service]标签下添加:
1 | # docker network proxy |
10.1.1.10主机开启FQ软件局域网访问即可
docker compose方式部署
1 | version: '3' |
执行:docker-compse -f xxx.yml(文件名) up -d
恢复数据
进入nextcloud新建用户后,拷贝要恢复的文件到data目录,然后修改属组为www-data
chown -R www-data www-data /srv/disk-wdc/container_data/nextcloud_data/data
宿主机上运行occ命令扫描文件重新建立索引即可:
docker exec --user www-data 4445a44b7918 php occ files:scan --all
格式说明:
docker exec --user www-data <nextcloud-container-name> php occ <your-command>