实验linux操作系统版本为:CentOS-7.6-x86_64-DVD-1810.iso
注意:此文档为讨论性材料,均为个人实验截图及网络收集资源,非终版。
建议安装操作系统的磁盘与存放数据的磁盘分开
系统盘本次配置:50G 生产推荐:100-150G以上
数据盘本次:100G+120G 生产推荐:300-500G以上
一 系统安装(以图形化安装演示)
镜像获取:Download Linux | Linux.org
在中国境内有许多镜像网站提供各种操作系统和软件的ISO镜像下载服务,以下是一些常用的国内镜像网站,您可以从这些网站获取ISO镜像:
1. **清华大学开源软件镜像站:** https://mirrors.tuna.tsinghua.edu.cn/
2. **上海交通大学开源软件镜像站:** https://mirrors.sjtug.sjtu.edu.cn/
3. **阿里云开源镜像站:** https://developer.aliyun.com/mirror/
4. **中科大开源镜像站:** https://mirrors.ustc.edu.cn/
5. **华为开发者镜像站:** https://mirrors.huaweicloud.com/
6. **网易开源镜像站:** http://mirrors.163.com/
7. **中国科技大学开源镜像站:** https://mirrors.ustc.edu.cn/
8. **兰州大学开源镜像站:** https://mirror.lzu.edu.cn/
9. **北京交通大学开源镜像站:** https://mirror.bjtu.edu.cn/
10. **南京大学开源镜像站:** https://mirrors.nju.edu.cn/
下载ISO镜像使用国内的为最快 使用距离你所在地越近速度越快(数据的传输路径更短)
使用ISO引导安装操作如下:
上下健,选择:Install CentOS 7 回车
下面进入图形化安装模式!
安装语言选择“简体中文”--继续
点击“语言支持”
选择添加English(United State)
点击“软件选择”:(选择带GUI的服务器及其配置)
注意,模板机推荐最小化安装
为什么使用最小化安装:
节省资源: 虚拟化环境中的模板机是用作创建新虚拟机的基础。使用最小化安装可以减少模板机的占用空间和资源消耗,从而节省存储空间和计算资源。这样,您可以在虚拟环境中创建更多的虚拟机,而不会过多消耗硬件资源。
安全性: 使用最小化安装的模板机可以减少潜在的安全风险。由于只安装了核心组件,攻击面更小,减少了潜在的漏洞和安全隐患。
选择“带GUI(图形化界面)的服务器”,选择右边的常规工具:KDE、性能工具、系统工具等。
KDE(桌面环境)
性能工具(监视和分析系统性能)
兼容性程序库(确保应用程序在特定环境中正常运行的软件库)
开发工具(软件开发的工具集合,包括编译器、调试器、集成开发环境(IDE))
系统管理工具(用于管理和维护服务器的工具。)
点击安装位置(系统安装位置选择几块磁盘中的一块)
如下图:
1 操作系统将安装的位置
2 我要配置分区
创建根分区、交换分区、用户数据分区。自行划分每个分区的大小、位置和文件系统类型
这里如果选择自动分区:
根分区:用于容纳操作系统和文件系统,一般20G到30G
交换分区:一般为系统内存的一倍到两倍
用户数据分区(/home):剩余空间全部在这里
其他分区(/var(系统日志)、/tmp(临时文件)等)
3 完成
如下图
1 选择LVM
2 点击“+”手动分区
接上图:点击 完成 ,点击下图中 接受更改!
接上图:点击 完成 ,点击下图中 接受更改!
点击开始安装
账户和密码设置 :
设置root 用户密码,如果不符合复杂要求,需要点击2次完成。
系统安装完成,点击 Reboot 重新启动 操作系统安装完毕!
点击 LICENSING,并接受许可证
点击 完成配置进入系统
由于安装的是带GUI的服务器,所以首次必须创建一个用户,不能直接用root登录(如果是最小化安装无图形界面则不需要)
新建一个用户:user,密码:Qwe123!@#
该处设置密码有很复杂的要求,建议多试几次就明白了
密码复杂度:
一个复杂的密码可能是一个混合了大小写字母、数字和特殊字符的长密码,避免常见单词,避免个人信息,不使用连续字符。例如,一个符合要求的密码可以是 "P@ssw0rd2023!"。
虚拟机同步时间
如果需要让虚拟机同步时间,可以让虚机同步主机,主机同步ntp的方式,设置方法:右击编辑该linux虚拟机,在虚拟机选项中勾选如下图所示:
系统安装完毕
二 做模板机方便以后克隆使用
需要从原始系统中删除与唯一性和安全性相关的信息,以便在使用镜像创建新的虚拟机时避免冲突和潜在的安全问题。
1.首先删除SSH主机密钥
root账户下执行:rm -rf /etc/ssh/ssh_host_*
2. 在 /etc/sysconfig/network 中添加:(这里本来可以不用设置的,但鉴于标准化还是设置了一个主机名)
HOSTNAME=localhost.localdomain
3. 从 /etc/sysconfig/network-scripts/ifcfg-ens* 中
删除 HWADDR 行和 UUID 行。(如果有的话)
删除后如下图所示:
4.删除/var/log中所有的日志
5.最后运行以下命令:# sys-unconfig虚拟机被关机。它已被封装,并可用来创建模板。
sys-unconfig
命令时,系统将重置为类似于首次启动时的状态,您需要重新配置一些基本系统设置,如主机名、网络配置等。
新克隆的虚拟机:可以选择更改root密码,创建新用户,也可以直接进入。
直接进入后,仍然有user用户,密码与之前的一样,需要注意,最小化安装则不需要
三 网络配置(命名规范化配置)
登录操作系统,用户名:root 密码:12345
首先需要查看网络接口名称:
nmcli d stat
网络设备名称为:ens192 --这是系统分配标识数字,你的环境可能不同,如果网卡多起来,分辨困难,建议采取命名规范化配置,这样日后维护看到名字就知道是哪块网卡
以配置连接名称为 public的网络为例
nmcli c add con-name public ifname ens192 type ethernet ip4 192.168.X.X/24 gw4 192.168.X.1
`nmcli c add` 是 NetworkManager 命令行工具中用于添加新连接的命令。它允许你创建新的网络连接配置。以下是 `nmcli c add` 命令的语法和参数说明:
```
nmcli c add con-name <连接名> ifname <设备名> type <连接类型> [连接参数]
```
- `<连接名>`: 要创建的连接的名称。
- `<设备名>`: 要将连接绑定到的网络设备的名称。
- `<连接类型>`: 连接的类型,例如 `ethernet`(以太网连接)、`wifi`(无线连接)等。
除了上述基本参数,你还可以根据连接类型提供其他特定的参数。例如,对于以太网连接,你可以指定 IP 地址、网关等。以下是一些可能的连接类型和相关参数:
1. **以太网连接**(Ethernet Connection):
```
nmcli c add con-name <连接名> ifname <设备名> type ethernet ip4 <IP地址/子网掩码> gw4 <网关>
```
- `<IP地址/子网掩码>`: 你要设置的 IP 地址和子网掩码,例如 `192.168.1.2/24`。
- `<网关>`: 网关的 IP 地址,例如 `192.168.1.1`。
2. **Wi-Fi 连接**(Wireless Connection):
```
nmcli c add con-name <连接名> ifname <设备名> type wifi ssid <SSID> [-- wifi-sec.key-mgmt <加密方式> -- wifi-sec.psk <密码>]
```
- `<SSID>`: 无线网络的名称。
- `<加密方式>`: 加密类型,例如 `wpa-psk`。
- `<密码>`: 无线网络密码。
这只是两种连接类型的示例,实际上还有许多其他类型和相关参数可以使用。要详细了解每种连接类型的参数和选项,你可以在终端中键入 `nmcli c add help` 或者查阅 NetworkManager 的文档。在使用 `nmcli c add` 命令时,你应该根据实际情况提供正确的参数值以配置连接。
nmcli c up public (启动配置public网卡)
nmcli c (显示配置)
nmcli d stat (显示接口状态)
ip a (显示IP信息)
# cat /etc/sysconfig/network-scripts/ifcfg-public (检查配置)
查看这条“onboot=yes” ----确认开机启动为yes即可
指令nmcli解读:
`nmcli` 是 NetworkManager 的命令行界面工具,它允许你在命令行中管理网络连接和网络配置。以下是一些常用的 `nmcli` 命令和它们的解释:
1. **nmcli c**: 这个命令用于管理连接(connections)。你可以使用不同的子命令来添加、修改、删除和列出连接。
- `nmcli c add`: 添加新连接。
- `nmcli c modify`: 修改现有连接的设置。
- `nmcli c delete`: 删除连接。
- `nmcli c show`: 列出所有连接及其详细信息。
2. **nmcli d**: 这个命令用于管理设备(devices)。你可以使用不同的子命令来显示设备信息、启用或禁用设备等。
- `nmcli d show`: 显示设备信息。
- `nmcli d connect`: 连接设备。
- `nmcli d disconnect`: 断开设备连接。
3. **nmcli g**: 这个命令用于显示全局设置(global settings)。
- `nmcli g hostname`: 显示主机名设置。
- `nmcli g permissions`: 显示权限设置。
4. **nmcli radio**: 这个命令用于管理无线电(radio)设备状态。
- `nmcli radio all on`: 打开所有无线电设备。
- `nmcli radio wifi off`: 关闭 Wi-Fi 设备。
5. **nmcli networking**: 用于管理网络功能。
- `nmcli networking on`: 打开网络功能。
- `nmcli networking off`: 关闭网络功能。
6. **其他命令**:
- `nmcli general`: 显示 NetworkManager 的一般信息。
- `nmcli device`: 显示设备的详细信息。
四 挂载系统ISO作为yum源(必会)
1. 新建/home/ISO/ 上传CentOS-7.6-x86_64-DVD-1810.iso文件到ISO目录
一定要确保这个ISO文件上传完毕后再进行下面的操作。
2. 创建挂载目录
mkdir /media/CentOS7
3. 挂载iso文件
mount -t iso9660 -o loop /home/ISO/CentOS-7.6-x86_64-DVD-1810.iso /media/CentOS7
mount -t 挂载的文件类型 循环设备允许将一个文件作为块设备来访问。
mount -o loop 指定挂载ISO镜像的循环设备
`-o` 是用来指定挂载选项(mount options)的参数。
通过 `-o` 参数,你可以指定一系列的选项来控制挂载的行为。
以下是一些常见的挂载选项和示例:
- `-o ro`: 以只读(read-only)模式挂载文件系统。
- `-o rw`: 以读写(read-write)模式挂载文件系统(默认模式)。
- `-o remount`: 对一个已挂载的文件系统进行重新挂载,可以用来修改挂载选项。
- `-o noexec`: 禁止在该文件系统中执行可执行文件。
- `-o nodev`: 禁止在该文件系统中创建设备文件。
- `-o nosuid`: 禁止在该文件系统中执行 SUID/SGID 程序。
- `-o uid=xxx,gid=xxx`: 指定挂载的文件系统中文件和目录的用户和组身份。
- `-o defaults`: 使用默认的挂载选项。
df -TH 查看挂载情况(显示磁盘分区或文件系统的使用情况)
4. 设置开机自动挂载光盘镜像
执行 vi /etc/fstab
(fstab 输入错误会使主机无法正常启动而进入emergency mode紧急状态,)
在最后一行添加(按 i进入编辑模式,按 ESC退出编辑模式,再输入 :wq! 再回车,保存后退出)
/home/ISO/CentOS-7.6-x86_64-DVD-1810.iso /media/CentOS7 iso9660 defaults,ro,loop 0 0
5. 配置源
首先备份原始repo文件
cd /etc/yum.repos.d/
ls
mkdir ./bak
mv ./*.repo ./bak/
执行 vi /etc/yum.repos.d/CentOS7-Localsource.repo #打开repo文件,如果这一文件不存在则被创建
按i 进入编辑模式,输入以下内容:
[CentOS7-Localsource]
name=CentOS7
baseurl=file:///media/CentOS7
enabled=1
gpgcheck=0 (相当于后面gpgkey密钥的一个开关 设置为0不开启 为1开启检验)
gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- `[CentOS7-Localsource]`:这是仓库的名称,用方括号括起来。
- `name=CentOS7`:这是仓库的名称,可以自定义。在这个示例中,它被命名为"CentOS7"。
- `baseurl=file:///media/CentOS7`:这是仓库的基本URL,指向本地路径。在这个示例中,它指向一个挂载在`/media/CentOS7`目录下的目录,表示本地的CentOS 7安装介质。
- `enabled=1`:这表示启用该仓库。如果设置为0,仓库将被禁用。
- `gpgcheck=0`:这是GPG检查的设置,用于验证软件包的真实性。在这个示例中,GPG检查被禁用,设置为0。
- `gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7`:这是GPG密钥的路径,用于对软件包进行数字签名验证。在这个示例中,GPG密钥的路径是`/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7`。
总之,这个配置文件指定了一个本地的CentOS 7软件仓库,允许你从本地路径挂载的介质中安装和更新软件包。请注意,禁用GPG检查可能会降低软件包的安全性,建议在生产环境中仅在安全的情况下禁用。
按ESC退出编辑 输入 :wq 再回车 保存后退出
6. 生成 本地yum 缓存 执行
yum clean all
yum makecache
五 磁盘(LVM)的各种折腾
查看磁盘信息执行命令:
lsblk (快速了解系统中的存储设备布局)
显示设备的层次结构,展示设备之间的父子关系,并提供了设备的大小、挂载点等信息
全新的磁盘 sdb 100G 和sdc 120G未做任何的分区
下面将以创建卷组 test_vg 逻辑卷 test_lv 并挂载到 /test下为例演示!
第一阶段完成:分别用sdb物理盘直接创建pv和sdc 分区后创建pv共同组建lvm卷,挂载给/test,实现容量叠加。
主要演示两个方案:直接PV和分区PV
CentOS7系统中支持直接创建物理卷(PV)和先进行分区后再创建物理卷。
sdb直接创建pv,而sdc进行fdisk分区后再创建pv:
方案一:直接创建物理卷(直接PV)
将设备 /dev/sdb 加入到物理卷;显示物理卷 pvs----物理磁盘到物理卷
pvcreate /dev/sdb
pvs
其次,创建 test_vg 卷组并将物理卷指派给 test_vg;显示卷组 vgs
---创建组虚拟卷,加入虚拟卷,可加多个
vgcreate test_vg /dev/sdb
vgs
最后,创建 test_lv 逻辑卷并分配磁盘空间;显示逻辑卷 lvs
---逻辑卷套虚拟卷组,可加多个虚拟卷组,对外服务
lvcreate -L 50G -n test_lv test_vg ---创建50G的逻辑卷
或者也可全分配,此次演示采取全部分配方式:
lvcreate -l +100%FREE -n test_lv test_vg
lvs
接下来需要格式化逻辑卷,并挂载到 /test目录下
mkfs.xfs /dev/test_vg/test_lv
mkdir -p /test
echo '/dev/test_vg/test_lv /test xfs defaults 0 0' >> /etc/fstab
-----开机启动
mount -a
df -h
方案二:将sdc采取分区方式创建pv(分区PV),并扩容给/test (此时/test为100G)
fdisk /dev/sdc (gdisk使用的是 GPT 分区表功能更强大,fdisk使用的是MBR 分区表(传统)简单)
依次输入 n --新建分区 p --主分区 默认回车两次 t --改变分区ID
8e --创建为lvm分区 w --保存并退出
partprobe /dev/sdc(是在对磁盘进行分区操作后,通知操作系统重新读取分区表,以便在运行时更新分区信息)
为sdc1创建pv
pvcreate /dev/sdc1
扩容vg;查看vgs
vgextend test_vg /dev/sdc1
为test_lv扩容
lvextend -l +100%free /dev/test_vg/test_lv -r
-l +100%free :将逻辑卷扩展到卷组中的所有可用空闲空间。
-r
表示在扩容后自动调整文件系统的大小,确保文件系统能够利用新增的空间。
可以看到/test此时变为了220G,等于sdb 100G + sdc 120G
下面进行第二阶段:分别为sdb和sdc扩容后,再扩容到/test
编辑配置虚拟机,将100G和120G分别改为200G和300G
注意:如果虚拟机有快照,则不支持扩容磁盘,需删除所有快照。
lsblk查看当前磁盘大小,发现并未识别到新增容量
sdb和sdc仍然为100和120,
此时需要重新扫描SCSI设备
有两个办法: 在vsphere上测试用第一种有效,首选第一种
第一种:手动查找总线ID,执行扫描:
- 检查 scsi 设备的名称。先查看当前磁盘挂载在哪条总线上:
ls -l /sys/block/sda ---host32表示在32总线
ls /sys/class/scsi_device/ ---检查ID号,此次显示的是32
2. 然后重新扫描 scsi 总线。用上一步找到的总线名称替换“0:0:0:0”:
echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
本案例实际命令为:
echo 1 > /sys/class/scsi_device/32\:0\:1\:0/device/rescan ---重扫sdb
echo 1 > /sys/class/scsi_device/32\:0\:2\:0/device/rescan ---重扫sdc
再次执行lsblk,可以看到容量已经识别
第二种:利用通配符轮询总线并扫描:
for i in $(ls /sys/class/scsi_host/); do echo "- - -" > /sys/class/scsi_host/$i/scan; done
第一种不奏效或者磁盘较多的时候可以用第二种。
此时sdb和sdc都以识别到空间,接下来给分区扩容,最终目的是让/test容量到达500G总和
首先是sdb直接创建pv的扩容方式:
pvresize /dev/sdb
pvs ----查看pv扩容情况
直接扩容lv,由于之前已经将test_lv挂载给了/test,因此lv扩容后便直接给/test扩容。执行如下
lvextend -l +100%free /dev/test_vg/test_lv -r
lvs ----查看lv扩容后容量
df -h ----查看/test容量
此时/test已经拿到sdb的200G,变成320G,接下来还有sdc的
sdc跟之前一样,首先执行分区格式化
fdisk /dev/sdc
依次输入 n --新建分区 p --主分区 默认回车两次 t --改变分区ID
2 --此处为sdc2更改分区 8e --创建为lvm分区 w --保存并退出
partprobe /dev/sdc
为sdc2创建pv
pvcreate /dev/sdc2
扩容vg;查看vgs
vgextend test_vg /dev/sdc2
为test_lv扩容
lvextend -l +100%free /dev/test_vg/test_lv -r
可以看到/test此时变为了500G,等于sdb 200G + sdc 300G
总结:第五章演示了同时由两块磁盘提供一个lvm分区的容量:由不同的分区方式(物理盘直接创建pv与分区后创建pv),并且还为两块盘都修改了容量进行扩容,同时演示了两种不同创建pv方式后的扩容办法,最终实现lvm分区的扩容。