前部分内容为基础内容,后续培训内容包括

     A  磁盘和文件系统管理;    
     B  RAID, LVM; btrfs;    
     C  程序包管理:rpm, yum(dnf)    
     D  Linux的网络管理;    
     E  进程和作业管理:htop, glances, tsar;    
     F  sed和awk;    
     G  Linux系统的开机启动流程;    
     H  内核基础知识,内核定制编译;    
     I  系统安 装:kickstart, pxe

第一、磁盘和文件系统管理

1、Linux磁盘

  • 磁盘类型

    机械

    SSD

  • 机械式磁盘组成

   track 磁道:磁道可划分扇区,磁盘外则性能好些

   sector 扇区:用于存数据,一般一个扇区512

   cylinder:柱面 相同编号的磁道是分区的基本单位,从最外至里

       分分区:每个分区可划分独立的文件系统:分区是逻辑边界

    MBR:主引导扇区 (0磁道,0扇区)master boot record 512byte  全局,独立OS

      446:boot loader 引导某分区操作系统

      64:filesystem allocation table (每16个字节标记一个分区)

2:Magic Number 55AA(MBR标记是否有效)其它标记无效

  所有系统磁盘的划分由 MBR决定(一个磁盘受4个主分区限制、2.2TB空间限制)

  主分区+扩展小于=4个当中,取出部分为指针,指向扩展分区 (另外更大的空间)

     扩展分区只能够有一个。

 GPD:全局唯一标识分区表(GUID Partition Table,缩写:GPT)代替MBR

  • 磁盘接口类型

     IDC(ATA) 133MB/s 在centos 5 识别为 /dev/hd

     SCSI 640MB/S   /dev/sd

     SATA sata3 6Gbps /8=MB/s 要除8   /dev/sd

     SAS 6Gbps   /dev/sd

     USB 480MB/s

         

  • 识别硬盘设备

   在Linux中识别为/dev/sd 不同接口按照a-z类推

      a,b,c……来区别同一设备类型下的不同设备

   标记不同硬盘设备 /dev/sd[a-z]

   标记同一设备上的不同分区:/dev/sd[a-z][1-]

      1-4:主或扩展分区标识(或3主一扩展)

      5+逻辑分区从5以后开始标识

  • 设备文件,特殊文件

  设备文件在/dev/目录下,ls –l /dev查看

  设备号:(设备文件存主号、次号)

   major,minor   主设备号(major number   次设备号   minor number0

   major设备类型,识别设备驱动

   minor:同一类型下的不同设备

       示例:7,131/7,132等为设备号

                                       clip_p_w_picpath001

   “块” 换算单位 block ,可随机访问

   "字符" 以字符为单位,character 线性设备

       p   管道文件  FIFO

   创建设备文件利用mknod,常用是 –m

示例:

mknod devtest c 66 0  # DEVTEST为设备名称, c 表示字符设备 66号主设备号  0为次号
mknod –m 640 devtest2 c 66 1  可指定权限

             

  • 分区

  分隔存储空间为多个小的空间,每个空间可独立使用文件系统

partition、其它不同slice   创建文件系统即分区:高级分区才格式化

   (1)分区工具

       fdisk,parted,sfdisk

   (2)fdisk工具的使用:

       最多支持在一块磁盘15个分区

       命令格式:

        NAME

  fdisk - manipulate disk partition table

    SYNOPSIS

 fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device

 fdisk -l [-u] [device...]

     -l 列出所有识别的设备

 fdisk -s partition...

    fdisk -v

    fdisk -h

示例讲解:     ID应对OS linux一般的ID是83 

  fdisk –l       fdisk –l /dev/sda      

clip_p_w_picpath002

 一个硬盘最多4个主分区,使用超过4个分区,可使用最多3个主分区,加一个扩展或

逻辑分区,再通过扩展创建逻辑分区),扩展分区只是一个指针

(3)分区管理子命令

    fdisk /dev/sda 进入fdisk命令接口

    p 显示当前硬件分区,包括没保存的改动

    n 创建     e为扩展分区      p为主分区

    d 删除一个分区

    t 修改分区类型id(文件系统类型 默认linux文件系统类型)

    l 列出所有支持ID

 p_w_picpath

    w,保存退出

    q:不保存退出

    m帮助

 示例:

  未提交w保存的情况下,将在内存中,只有w后提交到物理,其它情况下未生效

 clip_p_w_picpath003

      +20G空间表示在起始位置增加20G空间

   虽然 fdisk -l /dev/sda

     创建完成后,查看内核是否识别新分区

 通过cat /proc/partitions,查看分区标号是否有效,现标记为sro说明新建磁盘

没有生效

 clip_p_w_picpath004

  三个命令可以让内核重新读取分区表

    centos 5 parprobe

    centos 6,7

      partx

      kpartx

  Partx 让内核最新获取新分区

   说明 partx可使用sda

 clip_p_w_picpath005

  通知内核识别分区表 partx -a -n 4:6 /dev/sda 4:6说明从4到6

 clip_p_w_picpath006

   partx 命令

     partx device

     partx -a device

     partx -a -n M:N device

        M

        N

       :N

 也使用以下命令

  kpartx -af Device 例如 kpartx -af /dev/sda

    创建完分区后创建文件系统:以图书馆为例

2、Linux文件系统管理

 文件系统由内核支持:高级格式化即创建文件系统mkfs,创建文件需要客户使用的命令结合

内核的功能来完成。(低级格式化是创建磁道)

  • Linux上的文件系统:是一个管理软件便于文件查找

  将存储空间划分二个部分一个metadata存储区,一个数据存储区。数据存储区又划分多个存储单元。

   元数据区存在bitmap(位图), 每个块在bitmap有一个标记(0表示未使用)

     metadata 索引、用于检索标识

 元数据区针对使用和未使用的通过inode(索引节点)索引进行标识,每个inode 有一个全局编号,对应的一个引用文件。inode存储inode号、属主、磁盘块等信息 不存储文件信息(无文件名)。一个inode 8K 每个文件有inode,目录也是文件,inode、目录存储空间。存在文件索引、和文件名  类型进行快速查找

   VFS Virtual Files system(统一文件系统,支持多种文件系统)---Linux内核支持

   Linux:ext 2,ext3,ext 4,reiserfs xfs,btrfs(cents os技术预览版本),swap(磁盘模拟内存)

   光盘:iso9660

     Windows Fat32(vfat),ntfs

   网络:nfs,cifs

   unix文件系统:ffs,ufs,jfs,jfs2(企业授权)

      集群文件系统,ocfs2,gfs2

      分由式文件系统:ceph(linux内核),

      moosefs,mogfilefs,hdfs,gfs,glusterfs

   日志型文件(journal file system)

       非日志型文件系统:ext2

       日志型文件系统:除ext2以外的,ext3等

  *存储数据先保存元数据,再保存磁盘块存放数据前先元数据放到日志区,

保存完成后,再将保存到元数据区。当故障时先 检查日志区。

 swap交换分区

   物理不大的情况下,用磁盘作为内存临时使用。暂存使用

必免存储使用

  • 文件系统管理

创建文件系统: (文件系统在内核中 )一个分区一个文件系统,都在根目录下,这种方式要挂

载或关联。重新创建文件系统会损坏原有文件,不要对以有文件系统创建分区

1)在分区上执行格式化(高级格式化过程)

  要使用某种文件系统需要满足二个条件:

      内核中:支持此种文件系统

      用户空间:有文件系统管理工具

(2)创建工具 mkfs (make filesystem)

    mkfs,mkfs -t type - mkfs.type

    mkfs –t ext3=mkfs.ext3

 clip_p_w_picpath007

   查看支持文件系统类型,实现通过过mkfs.*进行创建

 p_w_picpath

 clip_p_w_picpath008

       *备注mkfs.后面tab二次补全

   查看文件系统类型2:[root@centos71 ~]# cat /proc/filesystems    
 p_w_picpath

   以上可能出现伪文件系统

 mkfs -t type device 只能够格式化主分区和扩展分区,blkid /dev/sda5 查看执行结果,

mkfs会破坏数据

 clip_p_w_picpath009

用法2:mkfs .ext4 /dev/sda5

 clip_p_w_picpath010

 ext系列文件系统专用管理工具 mke2fs -type {ext2|ext3|ext4} Device

     -b block size 1024,2048,4096

     -L "label" 设定卷标

     -j 为ext3  有journal

 Blkid 定位并显示块设备的属性

    -L带卷标

     blkid device

     label,uuid,type

 clip_p_w_picpath011

(3)创建工具mke2fs

   ext:mke2fs

创建文件系统:

   mke2fs [options] ….device

     -t {ext2|ext3|ext4|

     -b {1024|2048|4096} 指块大小   linux 标准大小 4K

     -l 'label' 可通过卷标引用设备

     -j mke2fs -t ext3

     -F  强制创建文件系统

     -E:用户指定额外的文件系统属性

     -I # ; inode 为多大空间预留inode

     -N #:保留多少inode

     -m #:预留空间百分比,为管理员后期使用(直接输入数字 10即 10%)

     -i #:用于指定为多少字节的空间创建一个inode,默认8192,为2^n倍

     -O Feature-【……】 特性

      -o ^Feature:关闭feature centos5/6/ id 83 has_journal

      -o featue 表示开启feature

示例:

 mke2fs –t ext4 –b 2048 –L test /dev/sda5 指定ext4文件系统,2M块大小

     卷标test

 clip_p_w_picpath001[4]

(4)文件系统属性查看及调整工具:

   e2label:用于管理卷标 带卷标是创建,不创建是查看

 clip_p_w_picpath002[4] 

 tun2fs 显示ext文件系统的属性或调整其属性(block size不能调整),包括超级块

信息。

     -m # 预留空间百分比#默认5% reserved block count

     -l list 显示文件系统属性,超级块信息,显未文件系统的属性及布局

     -L 'label' 修改卷标

     -j: ext2-->升级为ext3 不会影响原数据,只升不降

     -O : 文件系统属性的启动或关闭

     -o :文件系统默认挂载选项

        启用acl

 clip_p_w_picpath006[4]

     -c/C  # 指定挂载#  设定多少次进行自检,0或-1表示关闭此功能

     -i #:每挂载使用多少天后进行自检。0或-1表示关闭此功能

 clip_p_w_picpath004[5]

 clip_p_w_picpath005[4]

 

dump2fs: -h 仅显示超级块信息

  显示文件系统的布局信息dump,超级块包括进行备份

  磁盘分区是所有块进行分组后,进行分组管理

p_w_picpath

(5)文件系统检测工具

  fsck filesystem check(系统意外关闭)    blkid查看类型

    注意类型不能错误,会影响数据

    fsck

      fsck -t type  自动调用blkid中

      fsck.type

       -a :自动修复错误

       -I 交互修复错误

       -f 强制检测

clip_p_w_picpath007[5]

 文件系统状态 非cleanv  ,例如:tune2fs -l /dev/sda8

p_w_picpath

   e2fsck:ext系列文件系统专用的检测修改工具

      -y 自动回答为"yes"

      -f force

(6)文件系统的挂载和使用

A:启动过程及定义

 Linux是根开始,启动时从内核

  kernel--->rootfs(分区)

    rootfs分区拥有以下目录

     拥有bin,sbin,lib,lib64,dev,tmp,proc,sys

      /sbin/systemd centos 7

      /sbin/init centos6

启动内核后需要指定一个根,将额外文件系统与根文件某现在的目录建立关系的过程,

进而使得些目录做为其它文件系统访问入口中的行为,称为挂载,解除此关联的过程为卸载

   第一次加载启动关联 即以上二个目录

B:挂载点mount point, 设备挂载至目录;

 注意:挂载点在挂载在之后,其内部原有的文件会被暂时隐藏;建立使用空目录做为挂载点;

C:挂载方法:    
  mount:通过读取/etc/mtab文件来显示当前系统所有已经挂载的设备;当更新/etc/fstab后会更新/etc/mtab 
  mount -a:挂载/etc/fstab文件中的所有支持自动挂载的文件系统;cents os 7自动伪文件系统    
 mount [options] [-o options] DEVICE MOUNT_POINT    
    [options]:命令选项    
    [-o options]:挂载选项

     -n 不更新/etc/mtab文件

mount无参数表示当前系统以挂载设备

    DEVICE: 要挂载的设备    
   (1) 设备文件:/dev/sda5    
   (2) 卷标:-L 'LABEL'    label=””    
   (3) UUID:-U 'UUID'    UUID=””    
   (4) 伪文件系统名称

示例:

 

mount /dev/sda8  /mnt/test  将sda8挂载至test目录,

 通过UUID挂载,再通过/mnt/test查看       

                clip_p_w_picpath010[5]

  Mount_Point 挂载点(目录)

 要求:@1此目录未被其它进程使用  @2目录需要先存在 @3 目录中原有文件系统将会暂时隐藏。

   挂载完成需要通过挂载点进行访问

  默认二个挂载点为mnt和media

  常用选项:

   -t type:文件系统类型 ,不指定mount会调用blkid命令获取文件系统类型  
   -r: 以“只读”方式挂载此文件系统 ,光盘常用些选项    
   -w: 以“读写”方式挂载此文件系统    
   -n:每个文件系统在挂载时都会自动更新/etc/mtab文件,-n用于禁止此功能;    
   -a: 自动挂载/etc/fstab中所有定义自动挂载的设备;    
   -B:绑定目录至另一个目录上; 供访问    
clip_p_w_picpath012

  -o 指定额外的挂载选项,文件系统启用的属性。

     async异步,默认

     sync: 同步模式    
     atime/noatime:是否更新访问时间戳;    
     diratime/nodiratime:是否更新目录的访问时间戳;    
     auto/noauto: 是否允许此设备被自动挂载; -a选项    
     exec/noexec:是否允许执行此文件系统上应用程序;    
     dev/nodev:是否支持在此设备上使用设备文件;    
     suid/nosuid:    
     remount:重新挂载    
     ro   只读    
     rw   可读写    
     user/nouser: 是否允许普通挂载此设备;    
     acl:是否支持此设备上使用facl;

  -o loop 本地回环设备  
   defaults:rw, suid, dev, exec, auto, nouser, and async

示例
  mount –o ro /dev/cdrom /media  将光盘加加载到media目录同时为只读
 mount –o remount ,ro /dev/sda8  重新挂载为只读,多选项用逗号分隔,
 mount –o loop  /root/a.iso /media 将iso镜像文件挂到media

D: Umount 卸载命令

 #umount device

 #umount mount_point

 正在使用的无法卸载

  fuser验证进程正在使用的文件或套接字文件

 查看正在访问指定挂载点的进程 #fuser -v Mount_Point

 终止所有正在访问指定的挂载点的进程 #fuser -km Mount_Point

 clip_p_w_picpath014

(7)swap交换分区

供交换内存使用

A:free -m 以兆显示当前物理使得状态,默认以k

    -m MB单位

    -G GB单位

  free

p_w_picpath

  fdisk

clip_p_w_picpath015

     注意 :82为tmp

 partx查看

B:mkswap [options] device

 创建交换分区 mkswap 分区设备,之前调整分区类型为82

   -L 'lable'

clip_p_w_picpath016

 mkswap后要激活采用 swapon/off

clip_p_w_picpath017

C:swapon 启动交换分区 swapon [options] [device]

   -a 激活所有交换分区/etc/fstab文件中

   -p priority 设定其优先级

示例:swapon /dev/sda8

D:swapoff 禁用交换分区swapoff [options] [device]

示例:swapoff /dev/sda8

回环设备    loopback使用软件来模拟实现硬件

dd复制文件,与copy命令类似,copy以文件为单位复制,dd为底层的数据流

copy先通过vfs读内存,再复制到目标地址    dd不通过vfs,直接复制o1代码至目标

dd可复制文件的多少字节

  dd if=/etc/passwd of=/tmp/51cto

    if  =input file 数据来源

    of =数据存储目标

    bs=1  表示一次一个字节   bs=1M 

   count=2  个数

   seek=# 创建数据文件时跳过空间大小   

  dd  

 示例:复制mbr

p_w_picpath

 光盘镜像

   cat /dev/cdrom> /root/redhat.iso

(8)文件系统查看空间信息的工具

A:df disk free

   df -h 以易读方式

   df -I 多少个inode,一个inode一个文件

     -P 以posix兼容的格式输出

     /dev/sda3 -- ptree

clip_p_w_picpath018

B:du disk usage(评估文件使用情况)

   -h human readable

   -s summary

(9)文件系统相关挂载配置文件 /etc/fstab

 (os启动读取该文件,后挂载到相应的挂载点,每行定义,开机启动自动加载)

每行格式定义(6个字段)

要挂载的设备或伪文件系统   挂载点 文件系统类型 挂载类型 转储频繁 自检测次顺

     1:要挂载的设备:4种

        设备文件,label= 、UUID= 伪文件系统名称

     2、mount点

     4、挂载选项 -o 选项 defaults

     5、转储频率 备份频率

         0:不转储

         1:每天转储

         2:每隔一天转储

      6、自检次序 :修复错误,掉电等情况

        先检测根 0:不自检

         1:首先自检,通常只有根 / 为1

         2、其它可为2,一般建议手工检测

示例:

p_w_picpath

clip_p_w_picpath021

Mount -a 自动挂载

   swap挂

clip_p_w_picpath022

(10)文件系统上的链接文件

  每个文件都有inode

A:硬链接

  特点:指向硬件的inode号,只能够针对文件使用

   二个路径指向一个inode(每个文件的存储结构)

    不能对目录进行;    
    不能跨分区进行    
  指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除;

    

   元数据(大小、属主、属组等)inode索引节点信息,

目录也是文件

 找文件 :/etc/sysconfig/network   kernel-->根(存在的块)--》找到inode号,找表etc目录的block

找到sysconfig打到指向etc的inode号码,以次类推,

    inode指定块,inode存元数据

     clip_p_w_picpath023

  删除硬链接,只删除一个访问数据,只有最后一个删除才删除,下图中的1代表是硬链接的次数

(通过ls –l查看),只有链接次数等于1时,再次删除才为真正的删除

clip_p_w_picpath025

B:符号链接(软链接),文件大小为字符个数

链接文件的数据指向别一个文件路径

    可以对目录进行操作

    可以跨分区

    指向的另一个文件路径,而非inode

   对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;

 通过命令ls –li查看

clip_p_w_picpath027

C:链接

ln [-s] SRC DEST    SRC是原文件,DEST是链接位置(注意路径位置)    
    -s:symbolic link    表示软链接    
    -v:verbose

创建符号链接示例,其中fstab时间前面的大小5,为字符个数

clip_p_w_picpath028

  也可以通过ls –i 或者ls –i test/  目录地址,查看inode号

du  /backup 显示文件及目录大小    –s 表示目录  -sh表示其中h进行换算

df 磁盘空间,显示磁盘分区的使用情况, –h 换算   -i inode   -P  表示一行显示

 

附加

练习:

创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录;

第一步:创建分区

1、 fdisk查看现有分区信息

clip_p_w_picpath001[1]

以boot位标记为*的说明是主引导分区,当前磁盘供209715200个扇区,使用到130031615,说明还有未分配的空间

2、 通过fdisk /dev/sda进入交互式界面,输入m获得帮助

clip_p_w_picpath002[1]

3、输入n创建文件

clip_p_w_picpath003[1]

在1中已经到7,前3个主被占用,1个扩展也被占用,因此只能够为逻辑分区。

默认从130033664开始

4、 输入要新创建逻辑分区的大小10G

clip_p_w_picpath005

5、 再通过p查看分区,即为/dev/sda8

clip_p_w_picpath006[1]

6、 确定后w

clip_p_w_picpath008

7、 通过cat /proc/partitions

clip_p_w_picpath009[1]

sro说明新建磁盘没有生效,内核未识别

8、内核重读磁盘分区信息partprobe或 partx /dev/sda

9、 再次通过cat /proc/partitions查看,sda已经创建完成

clip_p_w_picpath010[1]

第二步:创建文件系统

10、mkfs创建ext4文件系统

[root@centos71 ~]# mkfs -t ext4 /dev/sda8

clip_p_w_picpath012

11、查看结果blkid /dev/sda8

clip_p_w_picpath013

第三部分:挂载文件

12、创建/mydata目录

clip_p_w_picpath014[1]

13、编辑/etc/fstab文件

clip_p_w_picpath016

14、重新启动操作系统验证

Mount查看,/dev/sda8已经挂载到/mydata目录

Mount –a

-a: 自动挂载/etc/fstab中所有定义自动挂载的设备;