linux的开机启动流程
1.开启电源
2.BIOS/UEFI 阶段:
计算机开机时,首先执行基本输入/输出系统 (BIOS) 或统一可扩展固件接口 (UEFI) 中的启动程序。
BIOS/UEFI 会进行自检 (POST),初始化硬件设备,并检测可用的启动设备。
3.Boot Loader 阶段:
主引导记录(Master Boot Record,MBR)
BIOS/UEFI 会查找并加载引导加载程序 (Boot Loader),如 GRUB (GRand Unified Bootloader)。
Boot Loader 负责加载操作系统的内核 (kernel) 和初始 RAM 文件系统 (initramfs) 到内存中。
4.内核启动阶段:
内核被加载后,会解压缩并初始化。它负责管理系统的硬件资源,并启动第一个用户空间进程 init。
内核启动时会执行一系列初始化任务,如加载设备驱动程序、挂载根文件系统等。
init 进程启动阶段:
5.init 进程是用户空间的第一个进程,它负责初始化系统的各个方面,并启动其他系统服务。
在传统的 SysVinit 系统中,init 进程可能会根据运行级别 (runlevel) 启动不同的服务和脚本。
在现代系统中,init 进程通常由 systemd 或 Upstart 等初始化系统来管理。
用户空间初始化阶段:
一旦 init 进程启动,它会启动系统中的各种服务和进程,包括网络服务、日志记录、用户登录管理等。
加载/etc/fstab 等基础配置文件
6.验证密码执行,执行开机启动程序
1./etc/profile:首先,系统会加载/etc/profile文件。该文件是系统范围的全局环境变量文件,用于设置系统范围的环境变量和配置。
2.~/.bash_profile:如果存在用户的~/.bash_profile文件,系统会加载该文件。这是用户特定的环境变量和配置文件,用于在用户登录时设置个人的环境变量和执行个人的配置。
3.~/.bashrc:如果~/.bash_profile文件不存在,系统会尝试加载~/.bashrc文件。~/.bashrc是在每次打开新的终端窗口时执行的脚本,用于设置用户特定的环境变量和配置。
4./etc/bashrc:最后,系统会加载/etc/bashrc文件。这是系统范围的全局环境变量文件,用于设置系统范围的环境变量和配置。
顺序就上1-4
开机启动
主板检查基本的硬件有没有问题
ram 可读可写
rom 只读芯片--》厂家生产就规划好了的
BIOS的基本输入输出系统--》开机启动
cmos 存放各种硬件的配置信息,时间,启动顺序-》传参给BIOS
1.
/etc/profile
2.
~/.bash_profile
3.
~/.bashrc
4.
/etc/bashrc
BOOT 引到,系统
有第一引导顺序
从上而下
磁盘的MBR 主引导程序 --》 512字节
机械盘 --》 hhd
固态盘--> ssd
dd 命令 可以查看磁盘挂载
牛批的磁盘公司
三星 西部数据 捷希 海康威视等
磁盘和分区的概念
磁道 扇区,柱面
一个硬盘有多个磁道
一个磁道划分63个扇区
一个扇区占512个字节
编号是从最里面开始编号的
分区类型
主分区4个--》最多四个
拓展分区 --》可以有可以没有--》概念上的 占一个主分区的位置
逻辑分区 编号必须从5开始
LVM(Logical Volume Manager)是一种用于在 Linux 操作系统上管理硬盘驱动器和逻辑卷的工具。通过 LVM,你可以动态地调整文件系统的大小,而不需要重新分区或重新格式化硬盘。
LVM 的核心概念包括:
Physical Volumes(物理卷,PV):这是硬盘驱动器或分区,用于创建逻辑卷组。
Volume Groups(逻辑卷组,VG):由一个或多个物理卷组成的逻辑卷组。逻辑卷组是用来创建逻辑卷的基础。
Logical Volumes(逻辑卷,LV):逻辑卷是从逻辑卷组中划分出来的虚拟分区,它们可以被挂载和用于存储数据。
dev -->device 设备
c开头的文件 是字符 character -》与字符的显示,接受相关字符的输入输出
b开头的文件 是block 块文件--》 存储数据相关文件
fdisk 用于管理磁盘的命令
fdisk -l 列出当前的磁盘分区
fdisk命令建立分区
用途:在交互式的操作环境中管理磁盘分区
格式:fdisk [磁盘设备]
交互模式中的常用指令
m:查看操作指令的帮助信息
p:列表查看分区信息 print
n:新建分区 new
d:删除分区 delete
w:保存分区设置并退出 write
q:放弃分区设置并退出 quit
-->这个支持2T以下的文件
parted --》支持大数据磁盘分区
--》超过2T的文件也支持
格式化 mkfs.格式 选项 设备名
mkfs.ext4
mkfs.xfs
磁盘挂载
mount
挂载设备 /dev/sda1 到目录 /mnt:
mount /dev/sda1 /mnt
mount -t nfs server:/path /mnt
/mnt 是本地计算机上的目录,server:/path 是远程服务器上 NFS 文件系统的路径。
umount /mnt 取消挂载
dd 备份命令--》直接从物理磁盘--》跳过文件系统
dd [选项]
常见选项:
if=input_file:指定输入文件。
of=output_file:指定输出文件。
bs=block_size:指定每次读取和写入的字节数。
count=n:指定要复制的块数或数据块的数量。
seek=n:在输出时跳过前面的 n 个块。
skip=n:在输入时跳过前面的 n 个块。
status=progress:显示操作进度。
复制整个磁盘:
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
将文件内容转换为大写:
dd if=input_file of=output_file conv=ucase
创建指定大小的空文件:
dd if=/dev/zero of=file_name bs=1M count=100
删除设备的前几个字节
dd if=/dev/sda of=/dev/sda bs=512 count=1 skip=10
lsof的使用
lsof -i:80
-p 进程被占用
/file 文件被张勇
/etc/fstab
用于定义文件系统的挂载点和挂载选项。它的全称是 "file systems table"(文件系统表)
文件系统的类型:
windows NTFS fat32
linux swap xfs ext4
vfs 虚拟文件系统
MBR
主引导记录
组成: 主引导程序 ,DPT 结束标记
swapon -a 开启分区
swapoff -a 关闭分区
查看 /etc/fstab
文件的组成:
目录项: 一个文件或者一个文件夹占一个目录项--》一个目录条目 dentry
文件名+inode(可以理解一个指向数据的指针)
inode: 存放数据的属性--》元数据:描述数据的数据
ll -i
index node 索引节点
inode-index:组成
inode-no filename
block: 存放真正的数据--》数据
##备份(dump)分区--》查看分区的元数据
[root@dhcp-clinet ~]# dump
dumpe2fs dumpkeys
[root@dhcp-clinet ~]# dumpe2fs /dev/sda1
superblock(超级块):记录此 file system 的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式
inode bitmap 记录那些inode使用了,那些没有使用
block bitmap 记录那些block使用了,那些没有使用
删的是目录项
查看block的id
xfs_info + 分区名
blkid
[root@dhcp-clinet ~]# blkid
/dev/sda1: UUID="6bc30cf4-c026-4c79-9100-623bf2f971ab" TYPE="xfs"
/dev/sda2: UUID="bYvYKG-4U55-xfIv-IuKH-nchH-ZeEd-YLkj2v" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="d9045d70-68b3-46a4-9731-0bb764d52afc" TYPE="xfs"
文件=目录项+inode+block
目录项: 文件名+ inode-no
查看inode 的命令:
ll -i 文件名
stat 文件名
软链接和硬链接的区别?
ln命令新建软和硬链接
软链接:删除原文件,链接文件不可使用 ln -s 软连接
硬链接:删除原文件,链接文件可以继续使用
常见的文件系统:
xfs nfs ext4 swap tmpfs nfts(微软自己的文件系统,fat32-->已经淘汰了的文件系统) vfs(虚拟文件系统)
删除文件背后的操作:
释放inode--》标记
标记block--》标记
更新父目录
删除了目录项--》清除原来的数据(元数据)
破坏文件系统
dd if=/dev/zero of=/dev/sdb6 bc=1024 count=1
输入的分区 输出的分区 输入块的大小(字节) 数量
修复文件系统
命令: fsck /dev/sdb6 -y file system check
修复这个分区--》一般是ext4系统
xfs_repair 修复xfs文件系统
要针对不同的文件系统需要不同的修复工具
挂载命令格式:
mount 类型 选项 设备名 挂载点
可以查看挂载的分区和权限
选项类型: ro,rw
exec
suid_nosuid
remount
umount 取消挂载
磁盘分区挂载的命令:
df -Th 查看查看挂载点
lsblk 挂载点+挂载分区名
blkid 挂载分区+uuid号+类型
分区表
GPT :128分区-->没有4个分区的限制
msdos --》MBR--》默认是4个主要分区
I/O调度算法
deadline --》有截止时间
noop --》 只处理简单的排序,本质是一个FIFQ的队列,相同的相近的IO请求,先来先处理
CFQ --》公平调度算法--》分配时间片
可以查找多队列的调度算法
mq-deadline
bfq
none
RAID 磁盘阵列
作用:1.提升速度
2.冗余、容错
raid --》硬raid ,软raid
类型:
riad 0 raid1 raid5 raid6
最少磁盘数 >=2 2 >=3 >=4
磁盘利用率 100% 50% n-1 n-2
IO读写速度 快 慢 较快 较快
容错 无 有 有 较强
raid技术在真实的服务器里是一定会使用的。
磁盘阵列: 很多块磁盘放到一起组成一个磁盘组,这个磁盘组就叫磁盘阵列
不同的组合方式背后的技术,就有不同的功能。
raid卡:硬件,安装到服务器上
常见的raid的类型:
raid0 --》条带卷 (Striping)--》读写速度快 --》至少2块以上磁盘组成 -->没有容错功能--》100%--》同时写数据
raid1--》镜像卷(mirror)--》2块磁盘组成--》有容错功能--》50% ---》系统盘、存放数据
raid5-->3块以上磁盘--》有容错功能(只能坏1块)--》速度比较快--》(n-1)/n ---》使用非常多
raid6--》4块以上磁盘--》有容错功能(最多坏2块)--》速度比较快--》(n-2)/n ---》使用非常多
raid10 --》4块以上磁盘--》有容错功能(最多坏2块)--》速度比较快--》50%
云服务器会使用raid
云服务器是虚拟机,是在真实的机器里使用虚拟化软件模拟出来的。
LVM-->逻辑卷管理
优势:动态扩容--》空间利用率高
支持在线扩容
数据备份方便
LVM 三个基本概念:
PV: 物理卷--》基本物理卷
PE 基本单元
VG: 卷组--》组合物理卷
LV:逻辑卷--》组合一个大的分区
LVM的推荐步骤:
PV -》VG-》 LV-》 格式化,挂载文件系统
pv的命令:
[root@dhcp-clinet ~]# pv
pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan
pvcreate name
-->注意可以去man 手册查看
[root@dhcp-clinet ~]# vg
vgcfgbackup vgchange vgconvert vgdisplay vgextend vgimportclone vgmknodes vgremove vgs vgsplit
vgcfgrestore vgck vgcreate vgexport vgimport vgmerge vgreduce vgrename vgscan
[root@dhcp-clinet ~]# lv
lvchange lvcreate lvextend lvmconf lvmdiskscan lvmetad lvmsadc lvreduce lvrename lvs
lvconvert lvdisplay lvm lvmconfig lvmdump lvmpolld lvmsar lvremove lvresize lvscan
扩容:lvextend +L 2G /dev/sda1
关闭LVM的顺序:
1.umount
2.lvremove
3.gvremove
4.pvremove
5.清除/etc/fstab/ 里面的记录
6.fdisk修改分区id
TFTP是一种简单而轻量的文件传输协议,适用于简单的文件传输需求,而FTP则更为强大和灵活,支持更复杂的文件操作。MTFTP则是TFTP的一种改进版本,通过使用组播技术提高了传输效率。
概念:就是利用网络带宽,进行同时大量装机--》 Kickstart:无人检查的确认装机--》他会记录装机典型的需要⼈⼯⼲预填写的
各种参数,并⽣成⼀个名为ks.cfg的⽂件
PXE客户端远程装机的流程:
1. PXE Client 从⾃⼰的PXE⽹卡启动,向本⽹络中的DHCP服务器索取IP;通过dhcp的四次握手
2. DHCP 服务器会分配给客⼾机的IP,同时告知PXE⽂件的放置位置(该⽂件⼀般是放在⼀台TFTP服务器
3. PXE Client 向本⽹络中的TFTP服务器索取pxelinux.0 ⽂件,取得⽂件后之执⾏该⽂件--》相当于一个开机引导程序
4. 根据pxelinux.0 的执⾏结果,通过TFTP服务器加载内核和⽂件系统 ;
5. 进⼊安装画⾯,客户端在向FTP服务器(vsftp服务)响应请求,共享系统安装⽂件传输给PXE客⼾机。
6. PXE客⼾机进⼊到安装提⽰界⾯,⽤⼾需要⼿动来完成系统安装的操作。--》这里可以是用kickstart来进行记录手动安装默写配置的程序
有三种安装操作系统的安装方式
HTTP、
FTP
NFS⽅式
需要安装的软件
yum install dhcp -y
vim /etc/dhcp/dhcpd.cof
#安装主引导程序的变种
输⼊:yum install syslinux -y
#查找pxelinux.0
rpm -ql syslinux |grep pxelinux.0
syslinux -> pxelinux.0
#tftp的服务配置
输⼊:yum install tftp-server -y
复制⼀份“pxelinux.0”⽂件到“/var/lib/tftpboot/”⽬录下,并查看是否复制成功
vim /etc/xinetd.d/tftp
#ftp服务的配置文件
yum install vsftpd -y