为了能快速的创建虚拟机,通过VM创建了一个2核CPU、4G内存、40G硬盘,安装Ubuntu Server 22.04.1的虚拟机,以便在需要的时候随时克隆一个新的虚拟机出来。
在新的虚拟机克隆出来后可能会调整硬件的配置,例如将40G硬盘扩展到50G,此时在Ubuntu中是不认的,需要通过重新分配挂载来利用多出来的10G空间。
网上的资料很多是挂载到某个目录下,而我想是直接扩容 / 。因此查了很多资料,也进行了很多尝试,综合网上的各种资料,实现了目标,在此记录过程,用于查阅。同时,本文记录了Ubuntu Server 22.04.1的初步配置过程。
操作系统 Ubuntu Server 22.04.1
初始虚拟机(2核CPU、4G内存、20G硬盘、Ubuntu Server 22.04.1)已经全部准备好,在安装Ubuntu时已经将源改为 https://mirrors.aliyun.com/ubuntu 。那么,我们从VM扩容开始。
一、VM克隆
右键要克隆的虚拟机,从管理->克隆 菜单进入。
欢迎界面点击“下一页”。
勾选”虚拟机中的当前状态“,点击”下一页“。此时的虚拟机应该在停机状态。
勾选”创建完整克隆“后点击”下一页“。
输入虚拟机的名称和路径后,点击”完成“,等待克隆结束即可。
二、更改虚拟机配置
在虚拟机没有启动的情况下,可以对虚拟机的配置进行修改。选中某虚拟机,点击”编辑虚拟机设置“进行修改。
主要调整处理器、内存和硬盘。调整范围需要在本机的配置范围之内。
配置好之后,启动虚拟机,进入后进行系统的相关配置。
三、开放root账号
由于目前不是用的root账号进行登录,因此,在操作命令前需要增加sodo 。
1、编辑sshd_config文件,输入命令:sudo vi /etc/ssh/sshd_config ,在输入密码后编辑配置文件。
改成
保存退出。
2、重启sshd服务。输入命令:sudo systemctl restart sshd ,能正常重启即可。
3、设置root账号密码。
输入命令:sudo passwd root ,输入两次密码后即可。
可退出系统重新用root进行登录尝试。
注意:如果用root登录直接输入命令即可,否则,部分命令需要sudo 。
下面的操作均是通过root登录后进行,如果不更换root登录,请在命令前加 sudo 。
四、更改ssh登录端口
用root登录新的IP和端口。
1、编辑sshd_config文件,输入命令:vi /etc/ssh/sshd_config ,编辑配置文件。
放开注释,并改成需要的端口,
保存退出。
2、重启sshd服务。输入命令:sudo systemctl restart sshd ,能正常重启即可。
可退出系统重新用root和新的端口进行登录尝试。
五、设置固定IP
1、编辑 00-installer-config.yaml 文件(寻找 /etc/netplan 目录下的 0开头的文件),输入命令: vi /etc/netplan/00-installer-config.yaml,编辑配置文件。
目前默认是开启DHCP的。如图:
按照下图进行调整:
保存退出。
2、使配置生效,输入命令:netplan apply 。IP更改完后需要重新登录新的IP。
六、开启UFW
用root登录新的IP。
1、确认UFW是否已经开启。输入命令:ufw status verbose 。如下图则没有开启。
2、开启UFW,输入命令:ufw enable 。如果出现中间的确认项,则输入:y 。
3、设置默认规则,输入命令:ufw default deny 。
4、确认UFW状态,输入命令:ufw status verbose 。如下图则开启成功。
5、配置当前需要的端口,例如ssh端口。输入命令:ufw allow 20022/tcp 。
6、使设置生效,输入命令:ufw reload 。
此时,重新登录时,没有在UFW开放的端口将无法访问。
七、更新源和更新apt、apt-get
1、更新源
修改 sources.list 文件。输入命令:vi /etc/apt/sources.list ,编辑源内容,下面为阿里源。
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://mirrors.aliyun.com/ubuntu jammy main restricted
# deb-src http://mirrors.aliyun.com/ubuntu jammy main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://mirrors.aliyun.com/ubuntu jammy-updates main restricted
# deb-src http://mirrors.aliyun.com/ubuntu jammy-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://mirrors.aliyun.com/ubuntu jammy universe
# deb-src http://mirrors.aliyun.com/ubuntu jammy universe
deb http://mirrors.aliyun.com/ubuntu jammy-updates universe
# deb-src http://mirrors.aliyun.com/ubuntu jammy-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://mirrors.aliyun.com/ubuntu jammy multiverse
# deb-src http://mirrors.aliyun.com/ubuntu jammy multiverse
deb http://mirrors.aliyun.com/ubuntu jammy-updates multiverse
# deb-src http://mirrors.aliyun.com/ubuntu jammy-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://mirrors.aliyun.com/ubuntu jammy-backports main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu jammy-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu jammy-security main restricted
# deb-src http://mirrors.aliyun.com/ubuntu jammy-security main restricted
deb http://mirrors.aliyun.com/ubuntu jammy-security universe
# deb-src http://mirrors.aliyun.com/ubuntu jammy-security universe
deb http://mirrors.aliyun.com/ubuntu jammy-security multiverse
# deb-src http://mirrors.aliyun.com/ubuntu jammy-security multiverse
2、更新apt
输入命令:apt update
输入命令:apt upgrade
3、更新apt-get
输入命令:apt-get update
输入命令:apt-get upgrade
4、apt 和 apt-get 区别
apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。apt update 命令不仅更新存储库索引,还告知存储库中是否可用软件以及有多少新版本可用。
apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。
八、修改时区
1、设置时区为上海,输入命令:timedatectl set-timezone Asia/Shanghai 。
2、将当前时间写入BIOS避免重启之后失效,输入命令:hwclock --systohc 。
3、查看当前系统时间,输入命令:date -R 。
4、查看当前硬件时间,输入命令:hwclock --show 。
九、扩展磁盘到 /
物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
1、查看当前磁盘设备,输入命令:lsblk 。
/dev/sda 有60G,但实际使用只有18.2G。
2、通过 parted 进行 GPT 分区。
parted命令可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区,fdisk命令对于大于2T的分区无法划分,所以用fdisk无法看到parted划分的GPT格式的分区,一般用“fdisk -l” 查看GPT磁盘分区时,往往会出现“WARNING...”。
进入parted交互,输入命令:parted /dev/sda 。
查看parted帮助,输入命令:help 。
打印所有分区情况,输入命令:print all 。
选中要分区的磁盘,输入命令:select /dev/sda 。
打印 /dev/sda 分区的磁盘情况,输入命令:print 。
创建新的分区,输入命令:mkpart 。用ext4,从21.5GB一直分到最后,End? -1 表示分配到最后。
打印分配完成候的磁盘分区情况,输入命令:print 。
退出prated ,输入命令:quit 。
查看当前磁盘情况,可以看到 sda4 分配了 40G,输入命令:lsblk 。
对分区进行格式化,此处格式化 /dev/sda4 ,输入命令:mkfs.ext4 /dev/sda4 。
创建物理卷PV,输入命令:pvcreate /dev/sda4 。
查看PV情况,输入命令:pvscan 。
将PV加入卷组VG,首先查看VG情况,输入命令:vgdisplay 。
查看逻辑卷LV情况,输入命令:lvdisplay 。VG Name 为 ubuntu-vg 。
将物理卷 /dev/sda4 加入卷组 ubuntu-vg 中,输入命令: vgextend ubuntu-vg /dev/sda4 。
再次查看卷组情况,输入命令:vgdisplay 。发现VG Size 和 Free PE/Size 已经发生变化。
再次查看PV卷情况,输入命令:pvscan 。发现VG 值都为 ubuntu-vg 。
查看磁盘情况,输入命令:df -h 。发现 / 对应的是 /dev/mapper/ubuntu--vg-ubuntu--lv 。
对 /dev/mapper/ubuntu--vg-ubuntu--lv 进行扩容,分配所有Free的可用磁盘容量,输入命令:lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv 。
调整文件系统大小后,完成扩容。输入命令:resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 。
有时候在执行此命令时会出现 no such file or director 错误,等一会或重启ssh session甚至重启下虚拟机试试,也许就好了。
查看目前磁盘情况,输入命令:df -h 。发现 / 容量已经达到48G。