跳转到内容

使用 U 盘安装 centos7

参考:

  1. https://www.cnblogs.com/w1sh/p/18286154
  2. 制作启动盘时,要注意几点内容:
    1. 管理员启动;
    2. 格式化时,使用 u 盘的默认方式即可: kingsoft u 盘的格式为 fat32;
  3. 重启系统后按 f12 进入引导页面,选择 uefi 的方式启动;
  4. 进入启动页面后,选择 install 进行安装
  5. 遇到 timeout 问题,输入: bldik 找到 u 盘的盘符,然后重启,再在启动页面按 e 进入编辑模式,修改后按 ctrl+x 进行启动;

ip: 192.168.0.150

用户名和密码: root root1003

一些基本信息

sh
[root@home ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@home ~]# uname -a
Linux home.zeanzai 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

网络

plain
[root@home ~]# vi/etc/sysconfig/network-scripts/ifcfg-enp2s0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 设置为 静态 地址
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp2s0"
UUID="71a995f2-f595-4516-82a4-b0b3bf53cb80"
DEVICE="enp2s0"
ONBOOT="yes"
IPADDR="192.168.0.150"
PREFIX="24"
GATEWAY="192.168.0.1"
IPV6_PRIVACY="no"
DNS1=8.8.8.8	# 添加DNS
DNS2=114.114.114.114 # 添加DNS

ssh 免密码登陆

  1. 直接在客户端命令行登陆: ssh root@192.168.0.150
  2. 把客户端的公钥丢给服务端: ssh-copy-id -i id_ed25519.pub root@192.168.0.150

修改 yum 源及使用 yum 安装软件

plain
[root@home ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
[root@home ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@home ~]# yum clean all
plain
[root@home ~]# yum install -y wget
[root@home ~]# yum install -y gcc

终端显示为中文

plain

[root@home ~]# locale -a | grep 'zh_CN.utf8'
zh_CN.utf8


[root@home ~]# vi /etc/locale.conf
LANG="zh_CN.utf8"
LC_ALL="zh_CN.utf8"
LC_CTYPE="zh_CN.utf8"

[root@home ~]# source /etc/locale.conf

对 ntfs 硬盘进行分区和格式化

plain
[root@home ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sda:120.0 GB, 120034123776 字节,234441648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 8CAAF60E-CE8B-4FB1-8362-11358305ED5C


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      2508799      1G  Microsoft basic
 3      2508800    234440703  110.6G  Linux LVM

磁盘 /dev/sdb:128.0 GB, 128035676160 字节,250069680 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7eadcdcf

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   250068991   125033472    7  HPFS/NTFS/exFAT

磁盘 /dev/mapper/centos_home-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos_home-swap:12.0 GB, 12004098048 字节,23445504 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos_home-home:53.1 GB, 53053751296 字节,103620608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@home ~]# blkid
/dev/sda1: SEC_TYPE="msdos" UUID="E901-9F48" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3e464077-71bb-4591-b33a-76cbe63d2a47"
/dev/sda2: UUID="ee311bbc-3221-4f52-8e06-cee71f3f85fd" TYPE="xfs" PARTUUID="31203d97-969a-406f-90f0-d43a9aee0320"
/dev/sda3: UUID="fIheeY-D4ju-GX92-aRSg-6szE-w9ro-nUFa9R" TYPE="LVM2_member" PARTUUID="30ce5c69-4215-4f30-af60-ab1d808a015f"
/dev/sdb1: LABEL="ZEANZAI" UUID="287C36557C361E4E" TYPE="ntfs"
/dev/mapper/centos_home-root: UUID="12f8ea5d-3566-4be0-bb55-7e990a6a4512" TYPE="xfs"
/dev/mapper/centos_home-swap: UUID="72cd84a4-3e77-4e62-8805-56673ea29c4e" TYPE="swap"
/dev/mapper/centos_home-home: UUID="682c9bc6-d436-43fa-a156-c0c542faadf3" TYPE="xfs"
[root@home ~]# df -Th
文件系统                     类型      容量  已用  可用 已用% 挂载点
devtmpfs                     devtmpfs   12G     0   12G    0% /dev
tmpfs                        tmpfs      12G     0   12G    0% /dev/shm
tmpfs                        tmpfs      12G  8.9M   12G    1% /run
tmpfs                        tmpfs      12G     0   12G    0% /sys/fs/cgroup
/dev/mapper/centos_home-root xfs        50G  1.7G   49G    4% /
/dev/sda2                    xfs      1014M  144M  871M   15% /boot
/dev/sda1                    vfat      200M   12M  189M    6% /boot/efi
/dev/mapper/centos_home-home xfs        50G   33M   50G    1% /home
tmpfs                        tmpfs     2.4G     0  2.4G    0% /run/user/0
[root@home ~]# lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 111.8G  0 disk
├─sda1                 8:1    0   200M  0 part /boot/efi
├─sda2                 8:2    0     1G  0 part /boot
└─sda3                 8:3    0 110.6G  0 part
  ├─centos_home-root 253:0    0    50G  0 lvm  /
  ├─centos_home-swap 253:1    0  11.2G  0 lvm  [SWAP]
  └─centos_home-home 253:2    0  49.4G  0 lvm  /home
sdb                    8:16   0 119.2G  0 disk
└─sdb1                 8:17   0 119.2G  0 part
plain

# 使用fdisk工具进行分区和格式化
[root@home ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):n

[root@home ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-250069679,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-250069679,默认为 250069679):+50G
分区 1 已设置为 Linux 类型,大小设为 50 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (104859648-250069679,默认为 104859648):
将使用默认值 104859648
Last 扇区, +扇区 or +size{K,M,G} (104859648-250069679,默认为 250069679):
将使用默认值 250069679
分区 2 已设置为 Linux 类型,大小设为 69.2 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@home ~]# lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 111.8G  0 disk
├─sda1                 8:1    0   200M  0 part /boot/efi
├─sda2                 8:2    0     1G  0 part /boot
└─sda3                 8:3    0 110.6G  0 part
  ├─centos_home-root 253:0    0    50G  0 lvm  /
  ├─centos_home-swap 253:1    0  11.2G  0 lvm  [SWAP]
  └─centos_home-home 253:2    0  49.4G  0 lvm  /home

sdb                    8:16   0 119.2G  0 disk
├─sdb1                 8:17   0    50G  0 part
└─sdb2                 8:18   0  69.2G  0 part
[root@home ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 13107200 blocks
655360 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2162163712
400 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@home ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4538368 inodes, 18151254 blocks
907562 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2166358016
554 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

[root@home ~]# mkdir /mnt/log
[root@home ~]# mkdir /mnt/userfiles
[root@home ~]# vi /etc/fstab

添加以下两行
/dev/sdb1 /mnt/log ext4 defaults 0 0
/dev/sdb2 /mnt/userfiles ext4 defaults 0 0

[root@home ~]# reboot

参考这里:https://developer.aliyun.com/article/1633309

plain

[root@home ~]#  mount | grep sdb
/dev/sdb1 on /mnt/log type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdb2 on /mnt/userfiles type ext4 (rw,relatime,seclabel,data=ordered)

[root@home ~]# fdisk -l

磁盘 /dev/sdb:128.0 GB, 128035676160 字节,250069680 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7eadcdcf

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   104859647    52428800   83  Linux
/dev/sdb2       104859648   250069679    72605016   83  Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sda:120.0 GB, 120034123776 字节,234441648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 8CAAF60E-CE8B-4FB1-8362-11358305ED5C


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      2508799      1G  Microsoft basic
 3      2508800    234440703  110.6G  Linux LVM

磁盘 /dev/mapper/centos_home-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos_home-swap:12.0 GB, 12004098048 字节,23445504 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos_home-home:53.1 GB, 53053751296 字节,103620608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


[root@home ~]# blkid
/dev/mapper/centos_home-root: UUID="12f8ea5d-3566-4be0-bb55-7e990a6a4512" TYPE="xfs"
/dev/sda3: UUID="fIheeY-D4ju-GX92-aRSg-6szE-w9ro-nUFa9R" TYPE="LVM2_member" PARTUUID="30ce5c69-4215-4f30-af60-ab1d808a015f"
/dev/sdb1: UUID="96f4d339-a80c-40fa-a211-8d52364eefbc" TYPE="ext4"
/dev/sdb2: UUID="480ec054-9974-44c5-adb2-748dbfa1dcc5" TYPE="ext4"
/dev/sda1: SEC_TYPE="msdos" UUID="E901-9F48" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3e464077-71bb-4591-b33a-76cbe63d2a47"
/dev/sda2: UUID="ee311bbc-3221-4f52-8e06-cee71f3f85fd" TYPE="xfs" PARTUUID="31203d97-969a-406f-90f0-d43a9aee0320"
/dev/mapper/centos_home-swap: UUID="72cd84a4-3e77-4e62-8805-56673ea29c4e" TYPE="swap"
/dev/mapper/centos_home-home: UUID="682c9bc6-d436-43fa-a156-c0c542faadf3" TYPE="xfs"
[root@home ~]# df -Th
文件系统                     类型      容量  已用  可用 已用% 挂载点
devtmpfs                     devtmpfs   12G     0   12G    0% /dev
tmpfs                        tmpfs      12G     0   12G    0% /dev/shm
tmpfs                        tmpfs      12G  8.9M   12G    1% /run
tmpfs                        tmpfs      12G     0   12G    0% /sys/fs/cgroup
/dev/mapper/centos_home-root xfs        50G  1.6G   49G    4% /
/dev/sda2                    xfs      1014M  144M  871M   15% /boot
/dev/sdb1                    ext4       50G   53M   47G    1% /mnt/log
/dev/sdb2                    ext4       69G   53M   65G    1% /mnt/userfiles
/dev/sda1                    vfat      200M   12M  189M    6% /boot/efi
/dev/mapper/centos_home-home xfs        50G   33M   50G    1% /home
tmpfs                        tmpfs     2.4G     0  2.4G    0% /run/user/0
[root@home ~]# lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 111.8G  0 disk
├─sda1                 8:1    0   200M  0 part /boot/efi
├─sda2                 8:2    0     1G  0 part /boot
└─sda3                 8:3    0 110.6G  0 part
  ├─centos_home-root 253:0    0    50G  0 lvm  /
  ├─centos_home-swap 253:1    0  11.2G  0 lvm  [SWAP]
  └─centos_home-home 253:2    0  49.4G  0 lvm  /home
sdb                    8:16   0 119.2G  0 disk
├─sdb1                 8:17   0    50G  0 part /mnt/log
└─sdb2                 8:18   0  69.2G  0 part /mnt/userfiles

常用命令

bash
//---------- 服务管理
// 服务状态|关闭服务|启动服务|重启服务
systemctl status|stop|start|restart xxx
// 重新加载服务
systemctl daemon-reload
// 是否已经加入自启动
systemctl is-enabled xxx
// 开启自启动服务
systemctl enable nacos.service


//---------- 防火墙管理
// 防火墙
firewall-cmd -h
firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

// --------- 端口监听状况
netstat -tunlp
netstat -nultp |grep 8080
ifconfig # 所有网络接口属性
ethtool 网卡名 # 带宽
route -n # 路由表
netstat -antp # 所有已经建立的连接

// --------- 磁盘管理
fdisk -l
lsblk
// 查看系统磁盘空间
df -h

// 查看某一个文件夹下面所有文件的大小
du --max-depth=1 -h /mydata/nexus/data/log/


// --------- 复制到远程服务器
scp -r jdk-8u144-linux-x64.tar.gz root@192.168.1.150:/mnt/doc/package
// 下载
scp -r username@ip:remote_folder local_folder    //-r表示递归
// 复制文件夹到服务器上
scp -r local_folder remote_username@remote_ip:remote_folder
// 上传和下载,可以使用 filezilla 客户端

上传
scp -r local_folder username@ip:remote_folder
//或者
scp -r local_folder remote_ip:remote_folder
// --------- 实现 ssh 免密登陆
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.150
ssh root@192.168.1.150

// 启动server

//示例
scp -r root@ip:/apps/local/nginx-1.8.0.tar.gz /Users/gary/Documents/

// --------- docker
docker logs -f -t --tail 100   529a4d9afd8e


// ---------- 文件查找
// 删除当前目录及子文件夹下面所有的target文件夹
find ./ -name -type d "target" -exec rm -rf '{}' +

// 删除当前目录及子文件夹内所有的以.iml结尾的文件
find ./ -name '*.iml' -exec rm -rf '{}' +



// 查看linux系统的最大的线程数
$ ulimit -a | grep user

// 查看Java进程的线程数
$ ps -eLf | grep java | wc -l

// 查看 test.log 中的kafka消息
$ grep "kafka" test.log | head -1 // 最近1条数据
$ grep "kafka" test.log | tail -1 // 最后1条数据

// 统计kafka消息
$ cat adx-feed.log | grep kafka | wc -l
grep "关键词" adx-log.log | wc -l

// 统计每个小时的kafka消息
$ cat adx-baiduUtils.log | grep kafka | awk -F " " '{print $2}' | awk -F ":" '{print $1}' | sort | uniq -c

// 统计15点的视频素材数
$ cat adx-baiduUtils.log | grep "2022-07-27 15:" | grep kafka | awk -F "videoList" '{print $2}' | awk -F "," '{print $1}' | sort | uniq -c | wc -l

// 统计某一整点的每分钟的请求异常个数
$  cat adx-feedJob.log | grep "2022-07-28 15:" | grep "errorMsg" | awk -F "2022-07-28 15:" '{print $2}' | awk -F ":" '{print $1}' | uniq -c

// 统计kafka消息中视频素材数量
$ cat adx-baiduUtils.log  | grep kafka  | awk -F "videoList" '{print $2}' | awk -F "," '{print $1}' | less  | sort | uniq -c | sort -k1 -nr | wc -l

// 统计一个文档中出现过kafka的消息
$ cat xxx.log | grep kafka | tail -100
$ cat xxx.log | grep kafka | head -100


// 截断
awk -F "字符串" '{print $N}' // $N 表示把日志文件截成多个小段后,获取的第n个字段(从1开始数)

// 去重
uniq -c

// 排序,按照大小,从大到小输出
sort -rn

//
grep kafka adx-dYFeedsJobByUseIDFAZHJob.log-2022-08-10 \
adx-dYFeedsJobByUseIDFAGoodJob.log-2022-08-10 \
adx-dYFeedsJobByUseIDFAQueueJob.log-2022-08-10 \
| awk -F "productName" '{print $2}' | awk -F "," '{print $1}' | sort | uniq -c | sort -rn | head -20



// 如果一不小心在一个master分支上写了代码,也执行到了commit上,但是并没有提交到远程分支上;此时可以执行 cherry-pick 操作,在idea中执行

// 以兆为单位查看文件大小
ll -lh log.log


[root@home ~]# uname -a
Linux home.centos 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux


// --------- 服务器基本信息
uname -a
hostname


总核数 = 物理CPU个数 X 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 全部信息
cat /proc/cpuinfo

# 物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

getconf LONG_BIT # 计算机位数
env # 环境变量

cat /proc/meminfo # 内存
free -m # 空闲内存
1. 查看总内存情况使用命令`cat /proc/meminfo`即可。
2. 查看内存占用状态使用`free -m`(-m,单位是m,如果是-g,单位是g)。

# 定期清理日志: 1. 把命令日志备份到文件; 2. 清除 history

history > /mnt/d/centos/centos.log
history -c

查询日志的做法

  1. 在业务系统中复现问题,浏览器 f12 打开控制台,然后找到对应的接口
  2. 拿着接口 url 去找对应的日志文件,然后 vi 打开日志文件
  3. shift+g 直接到文档最后,在 vi 的命令模式下输入“/{要查找的 url}”进行查询
  4. 找到对应的线程名称,再次在 vi 的“命令模式”下输入“/{线程名称}”,然后使用 shift+n 向下查找,即可找到堆栈信息

yum 源管理

centos7 yum 源失效

停止维护之后,自带的 yum 源就失效了。解决过程:

  1. 备份:
    1. mkdir -p /etc/yum.repos.d/bak
    2. mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
  2. 修改:

参考这里

服务管理

bash

# 创建自启service文件
vi /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/softwares/nginx-1.12.2/sbin/nginx -c /softwares/nginx-1.12.2/conf/nginx.conf
ExecReload=/softwares/nginx-1.12.2/sbin/nginx -s reload
ExecStop=/softwares/nginx-1.12.2/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

# 设置开机自启
systemctl enable nginx.service

# 其它命令
systemctl [start | enable | disable | status | restart | stop] nginx.service

centos7.5 的防火墙

  • 样例
bash
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)

重新载入
firewall-cmd --reload

查看
firewall-cmd --zone=public --list-ports

删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
  • firewalld 的基本使用
bash
启动:  systemctl start firewalld
查状态:systemctl status firewalld
停止:  systemctl disable firewalld
禁用:  systemctl stop firewalld
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
  • 配置 firewalld-cmd
bash
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
  • 那怎么开启一个端口呢
bash
添加
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload    ## 重新载入,更新防火墙规则
firewall-cmd --zone= public --query-port=80/tcp  ##查看
firewall-cmd --zone= public --remove-port=80/tcp --permanent  ## 删除

firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=<service>
firewall-cmd --delete-service=<service>
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
使用命令实际也是在修改文件,需要重新加载才能生效。

firewall-cmd --zone=public --query-port=80/tcp
firewall-cmd --zone=public --query-port=8080/tcp
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp
firewall-cmd --reload  ## 重新加载后才能生效
firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --query-port=8080/tcp
  • 参数解释
bash
–add-service ##添加的服务
–zone ##作用域
–add-port=80/tcp ##添加端口,格式为:端口/通讯协议
–permanent ##永久生效,没有此参数重启后失效
  • 详细使用
bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置

firewall-cmd --query-masquerade  ## 检查是否允许伪装IP
firewall-cmd --add-masquerade    ## 允许防火墙伪装IP
firewall-cmd --remove-masquerade ## 禁止防火墙伪装IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   ## 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 ## 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 ## 将80端口的流量转发至192.168.0.1的8080端口

selinux

  • 查看
bash
getenforce /usr/sbin/sestatus -v
  • 临时关闭
bash
setenforce 0
  • 永久关闭
bash
vi /etc/selinux/config
SELINUX=disabled
  • 查看 Linux 状态
bash
sestatus
  • selinux 的知识点
bash
https://blog.csdn.net/yanjun821126/article/details/80828908

创建用户并赋权

创建新用户

shell
[root@VM_0_6_centos ~]# adduser northmeter
[root@VM_0_6_centos ~]# passwd northmeter
Changing password for user northmeter.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

# 授权

[root@VM_0_6_centos ~]# ls -l /etc/sudoers
-r--r-----. 1 root root 3938 Jun  7  2017 /etc/sudoers
[root@VM_0_6_centos ~]# chmod -v u+w /etc/sudoers
mode of ‘/etc/sudoers’ changed from 0440 (r--r-----) to 0640 (rw-r-----)
[root@VM_0_6_centos ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
northmeter      ALL=(ALL)       ALL

[root@VM_0_6_centos ~]# chmod -v u-w /etc/sudoers
mode of ‘/etc/sudoers’ changed from 0640 (rw-r-----) to 0440 (r--r-----)

登录

shell
[root@200 ~]# ssh northmeter@193.112.249.36
northmeter@193.112.249.36's password:
Last login: Tue Jun  5 12:37:45 2018 from 218.17.157.121

测试

shell
[root@VM_0_6_centos ~]# su northmeter
[northmeter@VM_0_6_centos root]$ sudo cat /etc/passwd

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for northmeter:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
syslog:x:996:994::/home/syslog:/bin/false
centos:x:1000:1000:Cloud User:/home/centos:/bin/bash
northmeter:x:1001:1001::/home/northmeter:/bin/bash

定时任务

查看服务相关信息

shell
$ systemctl status crond		// crond状态
$ systemctl is-enabled crond	// 是否开机自启

表达式概述

.---------------- minute (0 - 59):代表分钟,取值范围00-59
|  .------------- hour (0 - 23):代表小时,取值范围00-23
|  |  .---------- day of month (1 - 31):代表月份中的日期,取值范围01-31
|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...:代表月份,取值范围01-12
|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|  |  |  |  |
*  *  *  *  * user-name  command to be executed

特殊符号含义

特殊符号含义
*表示任意时间都,也是”每”的意思,举例:如 00 23 * * *cmd 表示每月每周每日的 23:00 都执行 cmd 任务
-表示分隔符,表示一个时间段范围段,如 17-19 点,每小时的 00 分执行任务,00 17-19 * * * cmd 。就是 17,18,19 点整点分别执行的意思
,表示分隔时段的意思,30 17,18,19 * * _ /bin.sh /scripts/dingjian.sh 表示每天 17,18 和 19 点的半点时刻执行/scripts/dingjian.sh 脚本。也可以和”-”结合使用,如:30 3-5,17-19 _ * * /scripts/dingjian.sh
/n即”每隔 n 单位时间”,如:每 10 分钟执行一次任务可以写成 /10 _ * * _ cmd,其中“/10”的范围是 0-59,因此也可以写成 0-59/10

命令概述

指定语法

shell
crontab [-u user] file
        crontab -u user
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)      编辑用户命令
        -l      (list user's crontab)       列表
        -r      (delete user's crontab)    删除用户任务
        -i      (prompt before deleting user's crontab)     在删除前确认
        -s      (selinux context)
参数含义示例
-l查看 crontab 文件内容,提示:l 为 list 的缩写crontab -l
-e编辑 crontab 文件内容,提示:e 可为 edit  的缩写crontab -e
-i删除 crontab 文件内容,删除前会提示确认,用得少crontab -ri
-r删除 crontab 文件内容,用得很少crontab -r
-u指定使用的用户执行任务crontab -u boy -l

-I –r 参数在生产中很少用,没什么需求必须要用-e 进去编辑即可

补充: crontab {-l|-e} 实际上就是在操作/var/spool/cron/当前用户这样的文件

相关文件

文件
/etc/cron.deny该文件中所列用户不允许使用 crontab 命令
/etc/cron.allow该文件中所列用户允许使用 crontab 命令,优先于/etc/cron.deny
/var/spool/cron/所有用户 crontab 配置文件默认都存放在此目录,文件名以用户名命名
/var/log/cron定时任务的执行日志

示例

shell
// 1. 查看当前用户的定时任务
$ crontab -l

// 2. 为当前用户编辑一个定时任务
$ crontab -e

// 3. 清空当前用户的定时任务
$ crontab -r

// 4. 每分钟打印一次自己的英文名字到 /home/test/name.txt 的文件中
方式一:
    $ mkdir /home/test // 创建文件目录
    $ crontab -e // 输入以下内容

    # print my name
    * * * * * echo "zeanzai"  >> /home/test/name.txt

    $ cat /home/test/name.txt // 查看输出
    zeanzai

方式二:
    $ mkdir /home/test // 创建文件目录
    $ vi /var/spool/cron/root // 编辑定时任务配置文件,输入以下内容
    # print my name
    * * * * * echo "zeanzai"  >> /home/test/name.txt

// 5. 查看定时任务执行的日志
	$ tail -f /var/log/cron

// 6. 查看定时任务的配置文件
方式一:
    $ ll /var/spool/cron/
    $ cat root

方式二:
    $ crontab -l

// 7. 删除定时任务
    $ crontab -ir
    yes


// 8. 每天00:01打包昨天的日志文件到tar文件,并删除昨天的日志文件
$ mkdir /home/logs/school-hydroelectricity/tar
$ vi /etc/scripts/tar.sh
cd /home/logs/school-hydroelectricity
tar zcf ./tar/$(date +'%Y-%m-%d' -d '-1 days').tar.gz ./$(date +'%Y-%m-%d' -d '-1 days')
rm -rf ./$(date +'%Y-%m-%d' -d '-1 days')

$ ./etc/scripts/tar.sh
$ crontab -e
# 每天00:01打包昨天的日志文件到tar目录中,并删除昨天的日志文件,要求打包文件以日期命名
* * * * * /bin/sh /etc/scripts/tar.sh

生产问题案例及解决过程

面试题:维护的时候,创建文件提示”No space left on device”,请问你这是什么故障:

解答:磁盘空间 block 满了或者 inode 被占满了

故障描述及说明

某年某月甘日某时,某人在工作中设置 crontab 定时任务规则保存时,提示” No space left on device”,此时用 df -h 检查磁盘,发现还有剩余空间,用 df -I  检查则显示/var 目录己占用 100%的 inode 数量,看来是 inode 数量耗尽,导致系统无法在/var 目录下创建文件,因为定时任务的配置在/var/spool/cron 下,ext3 文件系统中,每个文件需要占一个 inode。

故障原因分析

当系统中 crond 定时任务执行程序有输出内容时,输出内容会以邮件形式发给 crond 的用户(默认是 root),而 sendmail 等 mail 服务没有启动时,这些输出内容以为支在邮件队列临时目录,产生这些碎文件,导致消耗 inode 数量,一旦 inode 数量耗尽,就会导致系统无法写入文件,而报上述错误:No space left on device.

亡羊补牢解决方法

  1. 尽量将 crontab 里面的命令或脚本中的命令结尾加上>/dev/null 2>&1,或在做定时执行脚本时,把屏幕输出定向到指定文件里

  2. 当然也可以开启邮件服务,不过最好不做,因为邮件服务会带来安全问题

  3. 优化系统,加定时清理任务,如 find /var/spool/clientmqueue/ -type f -mtime +30|xargs rm -f

调试 crontab 定时任务

  1. 增加执行频率调试任务
  2. 调整系统时间调试任务
  3. 通过日志输出调试定时任务
  4. 通过定时任务日志调试定时任务

参考

  1. http://blog.51cto.com/mrxiong2017/2084803
  2. https://blog.csdn.net/andrewgb/article/details/47374963
  3. https://www.cnblogs.com/javahr/p/8318728.html

挂载 NTFS 硬盘

由于家里的电脑原来装的是 windows 系统,并且我自己扩展了两块硬盘,原来 Windows 系统时,两块硬盘可以正常读写,但是在物理机上面安装上 centos7.5 以后,由于只是格式化 c 盘,把 centos7.5 系统安装到了 c 盘,所以之前自己扩展的两块硬盘就无法正常读写了,此时,需要在 centos 系统上读写两块硬盘内容,需要怎么处理呢?下面给出解决方案。

安装依赖包

bash
yum install -y fuse ntfs-3g

挂载硬盘

bash
[root@home data]# mkdir -p /mnt/data/d /mnt/data/e

[root@home data]# lsblk -f
NAME                 FSTYPE      LABEL    UUID                                   MOUNTPOINT
sda
├─sda1               vfat                 B476-53D1                              /boot/efi
├─sda2               xfs                  cd9c42b2-dafc-40dc-a780-28e8b5ed453a   /boot
└─sda3               LVM2_member          pue3cy-Bdmo-txbs-f7vS-3Oef-78zY-ACq296
  ├─centos_home-root xfs                  a1c1e8bc-3a27-47b6-a2aa-f329e4b77e86   /
  ├─centos_home-swap swap                 4ff247c5-07b8-4143-93bc-1496ac3a7162   [SWAP]
  └─centos_home-home xfs                  2d5c8133-4174-4689-906a-62c316aa6839   /home
sdb
└─sdb1               ntfs        Software 90769AF9769ADEF2
sdc
├─sdc1
└─sdc2               ntfs        Zeanzai  D4947D40947D25E0

[root@home data]# mount /dev/sdb1 /mnt/data/d
[root@home data]# mount /dev/sdc2 /mnt/data/e

自动挂载

如果需要永久挂载,先查到该盘的 type 值:

bash

[root@home ~]# blkid
/dev/mapper/centos_home-root: UUID="a1c1e8bc-3a27-47b6-a2aa-f329e4b77e86" TYPE="xfs"
/dev/sda3: UUID="pue3cy-Bdmo-txbs-f7vS-3Oef-78zY-ACq296" TYPE="LVM2_member" PARTUUID="3f965157-bb9c-49b5-9aeb-20726f024e6f"
/dev/sdb1: LABEL="Software" UUID="90769AF9769ADEF2" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="8ba8c6a7-4a88-47d2-b94e-97d2d97a144e"
/dev/sdc1: PARTLABEL="Microsoft reserved partition" PARTUUID="6207f65b-8b11-46bd-bd4a-d14f2d5a0c6e"
/dev/sdc2: LABEL="Zeanzai" UUID="D4947D40947D25E0" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="3220d24a-a508-4dfb-af5e-ae2a749c9d9f"
/dev/sda1: SEC_TYPE="msdos" UUID="B476-53D1" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="82eac0f4-625e-4b70-80c7-221bee59c290"
/dev/sda2: UUID="cd9c42b2-dafc-40dc-a780-28e8b5ed453a" TYPE="xfs" PARTUUID="1075528c-e57e-4734-a6c9-74a798184fcb"
/dev/mapper/centos_home-swap: UUID="4ff247c5-07b8-4143-93bc-1496ac3a7162" TYPE="swap"
/dev/mapper/centos_home-home: UUID="2d5c8133-4174-4689-906a-62c316aa6839" TYPE="xfs"

在最下面添加两行

bash

#
# /etc/fstab
# Created by anaconda on Sun Jun 27 13:23:19 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos_home-root /                       xfs     defaults        0 0
UUID=cd9c42b2-dafc-40dc-a780-28e8b5ed453a /boot                   xfs     defaults        0 0
UUID=B476-53D1          /boot/efi               vfat    umask=0077,shortname=winnt 0 0
/dev/mapper/centos_home-home /home                   xfs     defaults        0 0
/dev/mapper/centos_home-swap swap                    swap    defaults        0 0

/dev/sdb1 /mnt/data/d           ntfs defaults 0 0
/dev/sdc2 /mnt/data/e           ntfs defaults 0 0

注意是 ntfs,不是其他。

如果遇到无法正常启动时,可以参考 https://blog.csdn.net/weixin_34401479/article/details/94316392

其它命令

bash
# 查看所有磁盘的分区情况
fdisk -l

# 卸载
umount /dev/sdd1

# 查看已挂载磁盘使用情况
df -h

挂载 exFat 磁盘驱动器

bash
yum install epel-release
rpm -v --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install exfat-utils fuse-exfat


[root@home data]# mount -t exfat /dev/sdd1 /mnt/data/f

磁盘扩展

场景描述

早上起来使用 jenkins 自动化部署时,发现日志中提示磁盘已满的问题,在查询解决此问题的过程中,有很多博客都建议修改构件保存天数。笔者在自动化部署的设置过程中,本身设置的保存天数就很小。然后查看一下磁盘的使用情况,发现 root 分区已使用 100%。只能使用修改分区的方式进行修改了。 在此问题出现的头一天晚上,重启了一下服务器,然后 rabbitmq 就再也启动不起来了,查看日志文件,网上也说是因为磁盘已满的问题。 早上过来发现,showdoc 也挂掉了,但是挂掉一段时间之后自动又好了。

解决过程

查看磁盘使用情况

bash
[root@dev ~]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/centos_dev-root  118G  118G   20K  100% /
devtmpfs                      32G     0   32G    0% /dev
tmpfs                         32G     0   32G    0% /dev/shm
tmpfs                         32G  9.8M   32G    1% /run
tmpfs                         32G     0   32G    0% /sys/fs/cgroup
/dev/sda1                   1014M  186M  829M   19% /boot
/dev/mapper/centos_dev-home  7.2T   26G  7.2T    1% /home
tmpfs                        6.3G     0  6.3G    0% /run/user/0

备份 home

bash
[root@dev ~]# cp -r /home/ /dev/homebak

卸载 home

bash
[root@dev ~]# umount /home

删除 home 所在的 lv

bash
[root@dev ~]# lvremove -y /dev/mapper/centos_dev-home
  Logical volume "home" successfully removed

显示 lvm 卷组信息

bash
[root@dev ~]# vgdisplay
  --- Volume group ---
  VG Name               centos_dev
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               7.27 TiB
  PE Size               4.00 MiB
  Total PE              1907041
  Alloc PE / Size       38240 / <149.38 GiB
  Free  PE / Size       1868801 / <7.13 TiB
  VG UUID               js7DO7-igaq-Si7p-lAef-PkXA-FS3W-5hnfSu

扩展 root 所在的 lv

bash
[root@dev ~]# lvextend -L +3T /dev/mapper/centos_dev-root
  Size of logical volume centos_dev/root changed from 118.00 GiB (30208 extents) to <3.12 TiB (816640 extents).
  Logical volume centos_dev/root successfully resized.

扩展 root 文件系统

bash
[root@dev ~]# xfs_growfs /dev/mapper/centos_dev-root
meta-data=/dev/mapper/centos_dev-root isize=512    agcount=4, agsize=7733248 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=30932992, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=15104, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 30932992 to 836239360

重新创建 home 的 lv

bash
[root@dev ~]# lvcreate -L 4T -n home centos_dev
  Logical volume "home" created.

创建 home 文件系统

[root@dev centos_dev]# mkfs.xfs /dev/centos_dev/home
meta-data=/dev/centos_dev/home   isize=512    agcount=4, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1073741820, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

挂载 home 并恢复备份

bash
[root@dev centos_dev]# mount /dev/centos_dev/home /home
[root@dev centos_dev]# cp -r /dev/homebak/ /home/
[root@dev ~]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/centos_dev-root  3.2T  118G  3.1T    4% /
devtmpfs                      32G   26G  6.3G   81% /dev
tmpfs                         32G     0   32G    0% /dev/shm
tmpfs                         32G  9.8M   32G    1% /run
tmpfs                         32G     0   32G    0% /sys/fs/cgroup
/dev/sda1                   1014M  186M  829M   19% /boot
tmpfs                        6.3G     0  6.3G    0% /run/user/0
/dev/mapper/centos_dev-home  4.0T   29G  4.0T    1% /home

参考链接

  1. https://blog.csdn.net/huqigang/article/details/79710201

安装 virtualbox 和 vagrant 用来安装虚拟机

安装 virtualbox

  1. 注意: virtualbox 对 centos7.9 的支持已经很弱了。
  2. 打开官网: https://www.virtualbox.org 选择系统版本: linux distributions;然后拉到最下面,找到 oracle linux/RHEL 对应的连接;
  3. 点击并下载到 /etc/yum.repos.d 文件夹内;然后修改: repo_gpgcheck=0;
  4. yum update
  5. yum install -y VirtualBox-7.0.x86_64
  6. 安装完成之后使用 systemctl status vboxdrv 查看是否能够运行

问题及处理

  1. 安装过程中可能会出现 yum update 失败的情况,这个时候需要对下载下来的 virtualbox.repo 文件进行修改,原因是: repo_gpgcheck=1 可能导致元数据签名校验失败。将其设为 0,只保留 gpgcheck=1。
  2. virtalbox 的服务名称为: vboxdrv ;
  3. 安装后可能启动不起来,查看启动过程日志发现: kernel 出现问题;解决过程:
    1. 查看 headers 版本 : rpm -qa kernel-headers ,如果发现没有安装,使用 yum install -y kernel-headers 进行安装;
    2. 查看 devel 版本: rpm -qa kernel-devel , 没有安装就使用 yum install -y kernel-devel 进行安装;
    3. 安装之后,可能需要重启;
    4. 之后再次 systemctl restart vboxdrv 重启,done!
  4. 由于是在 centos 上安装的,因此没有操作界面,但是有些时候需要修改一些配置,此时只能使用命令:
    1. 修改 vm 文件存放位置: VBoxManage setproperty machinefolder /mnt/userfiles/vms/

vagrant

  1. 官网 https://developer.hashicorp.com/vagrant/install 给的安装方式已经不支持 centos7.9 了,因此需要下载 vagrant 的安装包;
  2. 安装包地址: https://releases.hashicorp.com/vagrant/2.4.1/ ,之后直接安装: yum install ./vagrant_2.4.1_x86_64.rpm

简单实用

  1. vagrant box add centos/7 : 添加镜像;
  2. vagrant init centos/7 : 直接创建虚拟机;
  3. 其它参考: vagrant 文档;
  4. 桥接的设置方式可以直接设置: config.vm.network "public_network", ip: "192.168.0.160"

参考

  1. https://blog.csdn.net/mr__bai/article/details/129690250
  2. https://blog.csdn.net/mr__bai/article/details/129702217

make it come true