Linux运维相关基础知识

news2024/11/18 13:51:46

linux 开机流程

shell(bash / dash)
终端仿真器/终端仿真程序
虚拟控制台tty1(桌面环境 gnome等) | tty2 | tty3 …
Linux kernel
<LVM>
分区(分区表,GPT等)
物理磁盘

Linux系统拥有很高的灵活性和自由度,系统启动后首先进入桌面环境(例如Ubuntu默认进入gnome,用户可更换其他桌面)或者tty(虚拟终端)。当进入桌面环境后可启动终端仿真器(用户可自行更换),终端仿真器会启动默认的shell(Ubuntu默认bash,用户可自行更换)。

BIOS+MBR/GPT

CMOS是记录各项硬件参数且嵌入在主板上的存储器,BIOS则是一个写入如到主板上的一个固件(所谓固件就是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候,电脑系统主动执行的第一个程序了。接下来,BIOS会分析电脑里有哪些存储设备,以硬盘为例,BIOS会取的能够开机的硬盘,并到该硬盘读取第一个扇区的MBR位置。MBR有446字节存储引导程序,BIOS将该程序加载到内存,然后跳转到该程序执行。该程序会做相关工作。

每个分区都有自己的boot sector,可以负责启动自己的内核

UEFI(Unified Extensible Firmware Interface) BIOS+GPT
UEFI必须格式化一个vfat的文件系统,大约512MB~1GB。

文件系统

linux支持多种文件系统

  1. Linux文件系统的演进

  2. ext文件系统
    Linux最初的文件系统,限制较多,比如文件大小不能超过2G等

  3. ext2文件系统
    ext的升级。容易在系统崩溃或断电时损坏。

  4. ext3文件系统
    ext2的后续演进,支持最大2TB的文件,能够管理32TB大小的分区。默认采用有序式的日志方法,没有提供数据压缩功能

  5. ext4文件系统
    ext3的后续版本。最大支持16TB的文件,能够管理1EB大小的分区。默认采用有序日志方式。

  6. JFS文件系统
    一种比较老旧的文件系统

  7. ZFS文件系统
    一个稳定的文件系统,与Resier4、Btrfs和ext4势均力敌,拥有数据完整性验证和自动修复功能,最大支持16EB的文件,能能够管理256万亿ZB的存储空间。

  8. XFS文件系统
    日志式文件系统,适合高容量高能效的场景。几乎涵盖了ext4文件系统的所有功能

    • data section
      与ext文件系统一样,包括包括 inode/data block/superblock 等。inode 与 block是系统需要时动态分配产生,所以格式化快
    • log section
      记录文件系统的活动记录,以备恢复校验等。可指定外部存储介质作为xfs文件系统的日志区
    • realtime section
      用于支持实时数据
xfs_info /dev/sda1
# 将系统内的所有档案格式及名称都列出来
df -aT
  1. NTFS文件系统
    windows系统默认文件系统

  2. fat文件系统
    单个文件传输不能超过4G

  3. exfat文件系统
    Windows U盘文件系统的改进,取消了单个文件不超4G的限制

1.文件系统 inode block superblock

inode与block在格式化时会固定大小及数量
索引式文件系统,如ext2/3/4
在这里插入图片描述
FAT文件系统没有 inode
在这里插入图片描述

ext2文件系统的实现
将inode,block分组
在这里插入图片描述

superblock
记录整个文件系统相关信息。只在第一个组有,其他组或许有备份

  • block与inode总量
  • 未使用与已使用inode/block数量
  • block与inode大小(1,2,4k, 128B,256B)
  • 文件系统是否挂载等信息

文件系统描述说明
描述每个block group的首尾block号码,以及每个区段(superblock, bitmap, inodemap, data block)分别介于哪个block号码之间

block bitmap 区域对照表
记录block是否为空

inode bitmap
记录inode是否为空

inode 表格
inode记录文件的属性信息以及该文件在哪些block内
inode指向block的层级结构
在这里插入图片描述
dumpe2fs 命令查看文件系统相关信息

dumpe2fs [-bh] 设备名
-b:列出保留为坏道的部分
-h:仅列出superblock的信息

blkid  # 查看当前已经格式化的设备

文件与目录在OS中显示的占用与磁盘占用
目录:文件系统会分配一个inode与至少一个block给该目录
因此当用ls -l查看时目录总是block大小的整数倍数,不包含该目录的inode占用
文件:ls -l查看的是实际文件大小
文件的实际磁盘占用需要加上inode(256B/128B)加上n个block,根据文件大小可能会有用于记录block号码的block

查看Linux支持的文件系统

ls -l /lib/modules/$(uname -r)/kernel/fs

查看Linux系统当前支持的文件系统

cat /proc/filesystems

Linux VFS(Virtual filesystem switch)
在这里插入图片描述

2.与文件系统相关

硬链接

  • 每个目录或文件都会占用一个inode,其内容由inode指明
  • 想要读取文件必须经过目录记录的名称指向的inode号码才能读取

硬链接:在某个目录的block下多写入个名称和inode号
限制:1.不能跨文件系统。2.不能硬链接目录

软连接
建立一个inode与block,block的内容为连接的位置名称

mount

[root@study ~]# mount -a
[root@study ~]# mount [-l]
[root@study ~]# mount [-t 文件系统] LABEL=''  挂载点
[root@study ~]# mount [-t 文件系统] UUID=''   挂载点 
[root@study ~]# mount [-t 文件系统] 设备名  挂载点
选项参数:
-a  :按照设定档 /etc/fstab 的资料将所有未挂载的磁碟都挂载上来
-l  :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名!
-t  :可以加上文件系统种类来指定想挂载的类型。常见的 Linux 支持类型有:xfs, ext3, ext4,
      reiserfs, vfat, iso9660(光碟格式), nfs, cifs, smbfs (后三种为网络文件系统类型)
-n  :在预设的情況下,系统会将实际挂载的情况即时写入 /etc/mtab 中,以利其他程序的运行。
      但在某些情況下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选項。
-o  :后面可以接一些挂载时额外加上的参数!比如账号、密码、读写权限等:
      async, sync:   此文件系统是否使用同步写入 (sync) 或非同步 (async) 的
                     存储机制,请参考文件系统的运行方式。预设为 async。
      atime,noatime: 是否修订文件系统的读取时间(atime)。为了效能,某些时刻可使用 noatime
      ro, rw:        挂载文件系统成为只读(ro) 或可读写(rw)
      auto, noauto:  允许此 filesystem 被以 mount -a 自动挂载(auto)
      dev, nodev:    是否允许此 filesystem 上,可建立设备文件? dev 为可允许
      suid, nosuid:  是否允许此 filesystem 含有 suid/sgid 的文件格式?
      exec, noexec:  是否允许此 filesystem 上拥有可执行 binary 文件?
      user, nouser:  是否允许此 filesystem 让任何使用者执行 mount ?一般來说,
                     mount 仅有 root 可以执行,但下达 user 参数,则可让
                     一般 user 也能够对此 partition 进行 mount 。
      defaults:      预设值为:rw, suid, dev, exec, auto, nouser, and async
      remount:       重新挂载,这在系统出错,或重新更新参数时,很有用!
# 从新挂载 / ,并加入参数 rw与auto
mount -o remount,rw,auto /

内存文件系统的iNode=1
root目录的iNode=2

mount -t tmpfs -o size=32M tmpfs /mnt/tmpfs/
ls -id /mnt/tmpfs/
ls -id /

Linux已经载入的文件系统类型
cat /proc/filesystems

  • linux通过MAJOR与MINOR号识别唯一设备
    手动建立设备   mknod /dev/vda10 b 252 10

ext4修改partition的label tune2fs -L new_label /dev/vda5

磁盘/文件系统参数

设备文件MajorMinor
/dev/sda80-15
/dev/sdb816-31
/dev/loop070
/dev/loop171

3.使用文件系统

1. 首先,需要在存储设备上创建可容纳文件系统的分区

分区管理工具:

  • fdisk
    老而弥坚,可以在任何存储设备上创建和管理分区。但只能处理最大2TB的硬盘,再大就只能换工具
    不允许调整现有分区大小,只能删除现有分区然后重新创建。
  • gdisk
    如果存储设备要使用GUID(GPT)分区表就用它
    许多命令和fdisk很像
    操作分区后需要partprobe -s使之生效
  • GNU parted
    允许调整现有分区大小
    parted devicename print  # 查看硬盘信息
    

硬盘设备名称分配格式:

  • SATA驱动器和SCSI驱动器:设备命名格式为 /dev/sdx(x = a, b, c, …)
  • SSD NVMe驱动器:/dev/nvmeNn#(N = 0, 1, …; #=1,…,是分配给该驱动器的名称空间编号)
  • IDE驱动器:/dev/hdx(x = a, b, c, …)

2. 创建文件系统(格式化):

将数据存储到分区之前,必须使用某种文件系统对其进行格式化,以便Linux能够使用分区。

mkfs  # 复合指令,mkfs.ext4 / mkfs.xfs partition
mkfs -t filesystemtype partition

3. 挂载分区

为分区创建好文件系统之后,是将其挂载到虚拟目录中的某个挂载点,以便在新分区中存储数据

mkdir /home/part

# 临时挂载分区。要在Linux启动时挂载需要添加在/etc/fstab文件中
sudo mount -t ext4 /dev/sdb1 /home/part

lsblk -f /dev/sdb
  • 根目录必须挂载,且一定在其他挂载点之前
  • 其它挂载点必须为已建立的目录,可指任意指定,必须遵守FHS原则
  • 所有 挂载点/分区 在同一时间之内只能挂载一次;
  • 卸载时,须先将工作目录移到挂载点之外
cat /etc/fstab  # filesystem table
[设备/UUDI/LABEL] [挂载点] [文件系统] [文件系统参数] [dump(备份指令)] [fsck(校验)]

# <file system>   <mount point>   <type>  <options>         <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=074d9        /               ext4    errors=remount-ro 0       1
UUID=e0fa         /data/xfs       xfs     defaults          0       0

/etc/fstab是开机是的设置文档,实际文件系统的挂载是记录到/etc/mtab与/proc/mounts这两个文件中的。每次在更改文件系统的挂载时,也会同时更改这两个文件。在单人模式中通过下面的指令重新挂载根目录为可读写,更新fstab

mount -n -o remount,rw /

4. 文件系统的检查与修复

fsck options filesystem

4.逻辑卷管理

LVM(Logical Volume Manager)和文件管理系统时关于存储管理的两个不同的概念和技术。
LVM是一种逻辑卷卷管理技术,用于管理磁盘驱动器和存储设备,它实现了在物理存储设备上创建逻辑卷,并将它们合并成一个虚拟组卷组的功能。LVM可以在运行时动态地调整逻辑卷的大小,提供更高的灵活性和可扩展性,以满足存储需求的变化。
文件管理系统是用于组织和管理计算机体系中的文件的软件或子系统。它涵盖了对文件的创建、存储、访问、修改和删除等操作。文件管理系统负责将文件存储在物理存储设备上,并提供对文件的访问和保护等功能。
LVM和文件管理系统之间的联系在于,LVM可以为文件管理系统提供灵活的存储管理解决方案。通过使用LVM,文件管理系统可以更加灵活地管理磁盘空间,轻松地扩展或缩小文件系统的大小,而无需重新分区或复制数据。
当文件管理系统需要增加存储空间时,LVM可以添加新的物理卷(例如硬盘或磁盘分区)到现有的卷组中,然后将该卷组扩展到新的物理卷组上。这使得文件系统可以继续在增加的空间上存储文件,并无需重新安装操作系统。
总的来所,LVM为文件管理系统提供了更高的灵活性和可用性,使得存储空间管理更加方便和可靠。它们共同为计算机系统中的文件管理提供了更好的性能和扩展性。

LVM允许将多个分区组合在一起,作为单个分区(逻辑卷)进行格式化、在Linux虚拟目录结构上挂载、存储数据等。

  1. 物理卷 physical volume,PV
    通过LVM的pvcreate命令创建。指定一个未使用的磁盘分区(或整个驱动器)由LVM使用。该过程中,LVM结构、卷标和元数据都会被添加到该分区。
  2. 卷组
    volume group, VG 通过vgcreate创建。将PV加入存储池,存储池用于构建各种逻辑卷。即,多个PV集中在一起形成VG,由此形成了一个存储池,从中为逻辑卷(LV)分配存储空间。
    可存在多个VG, vgcreate同时也会添加卷组的元数据。
    一个磁盘可以有多个PV,一个PV同时只能属于某个VG
  3. 逻辑卷
    logical volume, LV, 由lvcreate创建。LV由VG的存储空间块(PE, physical extents)组成。可以使用文件系统格式化LV,然后将其挂载,然后像普通磁盘分区一样使用。
    LV不能跨VG创建

特殊设备loop挂载

假设有个映像文件xxx.iso
如何查看?可以读写iso的内容

mount -o loop /tmp/xxx.iso /data/iso_dvd
  • 建立大型文件
    dd if=/dev/zero of=~/loopdev bs=1M count=512
    # if: input file,输入文件,/dev/zero会一直输出0
    # of: output file, 将输入写入到后面的文件中
    # bs: 每个block大小
    # count: block的个数
    
  • 大型文件格式化
    mkfs.xfs -f ~/loopdev
    blkid ~/loopdev
    
  • 挂载
    没有权限可能会挂载失败
    sudo mount -o loop UUID=“52654417-db5a-4294-afc0-0be467713b31” /mnt
    /mnt$ df -h .
    Filesystem Size Used Avail Use% Mounted on
    /dev/loop31 488M 24K 452M 1% /mnt

swap

建立swap

  1. 获得一个分区。由于Linux的gdisk预设会将分区ID设为Linux的文件系统,所以可能还得设置一下system ID。
  2. 格式化分区: mkswap 设备名
  3. 使用:启动该swap, swapon 设备名
  4. 观察,free -h 或 swapon -s指令查看

也可以用loop设备建立swap

shell基础知识

# 先执行第一个命令然后执行第二个命令
cd ~;ls
# 当第一命令成功执行后再执行第二个命令
cd ~ && ls

variable=value  #等号两边不能有空格

shell对空格的支持并不友好,在遇到空格时需要用转义字符()或将其用引号包含

1 命令替换

将命令的输出结果赋给变量

# 用反引号将命令括起来
testing=`date`  # 创建子进程运行date命令

testing=$(date)

today=20$(date +%y%m%d)  # 同上,创建子进程运行date命令
echo container > log.$today 2$>1

参考

http://ftp.twaren.net/
http://ftp.ksu.edu.tw/
linux.vbird.org

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式(计算机算法)

目录 分布式计算 分布式​编辑 分布式和集群 分布式和集群的应用场景 分布式应用场景 集群应用场景 哪种技术更优、更快、更好呢 性能 稳定性 以下概念来源于百度百科 分布式计算 分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息…

【ArcGISProSDK】添加异步执行时进度窗口

运行结果 代码 protected override async Task InitializeAsync(){using (ProgressorSource progressorSource new ProgressorSource("初始化...")){await QueuedTask.Run(delegate{MessageBox.Show(licenseExpirationDate.ToString());}, progressorSource.Progres…

jvm调优实战操作

1.什么是jvm jvm就是lava虚拟机&#xff0c;他是java运行环境的一部分&#xff0c;它虚构出来的一台计算机&#xff0c;在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序&#xff0c;有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统 2.我们调…

代码随想录算法训练营第14天 part01 | 二叉树理论基础篇

代码随想录 二叉树理论基础篇 二叉树的种类 二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…

最新WooCommerce教程指南-如何搭建B2C外贸独立站

WooCommerce是全球最受欢迎的开源电子商务平台之一。它基于WordPress建站&#xff0c;只需一键安装即可使用。该平台提供了丰富的功能&#xff0c;包括产品发布、库存管理、支付网关和运输发货等&#xff0c;可以帮助搭建各种类型的电子商务网站。相比其他竞争对手&#xff0c;…

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法

【数字孪生】Nginx发布数字孪生三维建模模型服务及调用方法 一、需求二、实施步骤2.1 准备模型文件2.1.1 3D tiles模型2.1.2 3D Tiles标准文件格式 2.2 配置nginx server块2.2.1 Nginx能干啥 2.3 访问 三、实现效果 一、需求 利用三维渲染引擎Cesium加载3D tiles模型。 二、实…

AI实景无人自动直播间怎么搭建?三步教你轻松使用

最近很多朋友看到AI自动直播带货玩法&#xff0c;也想开启自己的自动直播间&#xff0c;但还是有些问题比较担心&#xff0c;这种自动讲解、自动回复做带货的直播间是不是很麻烦&#xff1f; 实景无人自动直播 ​ 实际上这种直播间搭建相当简单便捷&#xff01;今天跟着笔者&…

802.11 OFDM数据包结构

各层数据单元 首先&#xff0c;来了解一下传输过程中的数据单元&#xff1a; 图1 数据单元解释 也就是说PSDU包含了MAC层要发送的数据&#xff0c;在物理层根据PLCP协议将PSDU加上PLCP前导码和报头后变为PPDU&#xff0c;在物理媒介上传输&#xff0c;从发射端传到接收端。那么…

[薅羊毛]通义灵码做活动,送挺多礼品,快来薅羊毛!!!

你的编辑器装上智能ai编辑了吗&#xff0c;的确挺好用的。 最近阿里云AI编码搞活动&#xff0c;可以免费体验并且还可以抽盲盒。有日历、马克杯、代金券、等等其他数码产品。 大多数都是日历。 点击链接参与「通义灵码 体验 AI 编码&#xff0c;开 AI 盲盒」 https://develope…

爬虫神器!使用Python一键下载网页图片,省时高效!

引言 爬虫技术在当今信息时代中扮演着重要的角色&#xff0c;可以自动化获取互联网上的数据。本教程将围绕你提供的Python爬虫代码展开&#xff0c;旨在实现自动下载图片的功能。通过这个示例&#xff0c;你将学习如何利用爬虫技术批量获取网页中的图片&#xff0c;并将其保存…

redis瘦身版

线程模型 纯内存操作/非阻塞io多路复用/单线程避免多线程频繁上下文切换 基于Reactor模式开发了网络事件处理器&#xff1a;文件事件处理器&#xff0c;单线程的 io多路监听多个socket&#xff0c;据socket事件类型选择对应的处理器&#xff0c;高性能网络通信模型&#xff0c…

PMP能两周快速通过吗?

两周时间有点赶&#xff0c;一般备考要2个月左右&#xff0c;有时间尽量多准备准备。 分享一篇左羊学霸的备考总结&#xff0c;希望能帮你 前言 作为⼀名通过PMP项⽬管理认证并且拿到3A成绩 ( PMP认证最好成绩) 的 学习者&#xff0c; 来跟⼤家分享下我考取PMP证书的动机与过程…

Matplotlib数据可视化实战-1数据可视化Matplotlib基础

1.1绘图的一般过程&#xff1a; 1.导入相关库 2.生成、读入或计算得到数据&#xff1b; 3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形&#xff1b; 4.根据需要设置图形属性&#xff1b; 5.显示或保存绘图结果。 例如&…

【STL源码剖析】【2、空间配置器——allocator】

文章目录 1、什么是空间配置器&#xff1f;1.1设计一个简单的空间配置器&#xff0c;JJ::allocator 2、具备次配置力( sub-allocation)的 SGI 空间配置器2.1 什么是次配置力2.2 SGI标准的空间配置器&#xff0c;std::allocator2.2 SGI特殊的空间配置器&#xff0c;std::alloc2.…

FISCO BCOS:深入浅出FISCO BCOS区块链底层平台

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 我前面有补充相关的区块链的知识 如果没有了解的话 可能部分概念或名词会不懂哦 建议先了解一波再来看~http://t.c…

sentinel黑白名单权限控制

黑白名单权限控制 规则配置 规则创建 创建一个 AuthorityRule 规则对象三个关键要素 setStrategy: 黑白名单类型setResource: 规则和资源的绑定关系setLimitApp: 限制的来源 调用 AuthorityRuleManager.loadRules()加载规则 监听器实例化和管理 AuthorityPropertyListener…

2024年普通人的创业机会在哪里?2024热门创业项目!2024普通人想翻身的风口行业!

创业千万别冲动&#xff0c;社区团购代理创业失败案例&#xff01; 是不是一开始挺看好这个赛道&#xff0c;看别人做的风生水起&#xff0c;以为不难&#xff0c;真正开始做才发现不好做&#xff0c;没有先天优势&#xff0c;货源和客源从零开始积累&#xff0c;开始就是摸着石…

Qt学习--QT Creator使用基本介绍

话不多说&#xff0c;直接开搞&#xff0c;笔者用的是5.12.9版本 双击打开QT Creator 显示这个界面 新建工程 然后出现这样的界面 点击运行 就弹出了一个这个&#xff0c;空的&#xff0c;因为我们啥也没写

JUC并发编程(四)

1、同步模式保护性暂停 用一个线程等待另一个线程的执行结果 有一个结果需要从一个线程传递到另一个线程&#xff0c;让他们关联同一个中间类。如果有结果不断从一个线程到另一个线程那么可以使用消息队列&#xff08;见生产者/消费者&#xff09;。JDK 中&#xff0c;join 的…

人物百度百科如何创建?人物类词条编辑指南

创建人物百度百科是一项既具有挑战性的工作。下面&#xff0c;伯乐网络传媒就来给大家详细介绍如何创建人物百度百科&#xff0c;包括准备工作、创建步骤以及常见问题解答。 一、创建人物百度百科的准备工作 1. 人物百科词条创建要求 百度百科对创建人物词条有一定的要求&…