前部分内容为基础内容,后续培训内容包括
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 �Cl /dev查看
设备号:(设备文件存主号、次号)
major,minor 主设备号(major number 次设备号 minor number0
major设备类型,识别设备驱动
minor:同一类型下的不同设备
示例:7,131/7,132等为设备号
“块” 换算单位 block ,可随机访问
"字符" 以字符为单位,character 线性设备
p 管道文件 FIFO
创建设备文件利用mknod,常用是 �Cm
示例:
mknod devtest c 66 0 # DEVTEST为设备名称, c 表示字符设备 66号主设备号 0为次号 mknod �Cm 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 �Cl fdisk �Cl /dev/sda
一个硬盘最多4个主分区,使用超过4个分区,可使用最多3个主分区,加一个扩展或
逻辑分区,再通过扩展创建逻辑分区),扩展分区只是一个指针
(3)分区管理子命令
fdisk /dev/sda 进入fdisk命令接口
p 显示当前硬件分区,包括没保存的改动
n 创建 e为扩展分区 p为主分区
d 删除一个分区
t 修改分区类型id(文件系统类型 默认linux文件系统类型)
l 列出所有支持ID
w,保存退出
q:不保存退出
m帮助
示例:
未提交w保存的情况下,将在内存中,只有w后提交到物理,其它情况下未生效
+20G空间表示在起始位置增加20G空间
虽然 fdisk -l /dev/sda
创建完成后,查看内核是否识别新分区
通过cat /proc/partitions,查看分区标号是否有效,现标记为sro说明新建磁盘
没有生效
三个命令可以让内核重新读取分区表
centos 5 parprobe
centos 6,7
partx
kpartx
Partx 让内核最新获取新分区
说明 partx可使用sda
通知内核识别分区表 partx -a -n 4:6 /dev/sda 4:6说明从4到6
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 �Ct ext3=mkfs.ext3
查看支持文件系统类型,实现通过过mkfs.*进行创建
*备注mkfs.后面tab二次补全
查看文件系统类型2:[root@centos71 ~]# cat /proc/filesystems
以上可能出现伪文件系统
mkfs -t type device 只能够格式化主分区和扩展分区,blkid /dev/sda5 查看执行结果,
mkfs会破坏数据
用法2:mkfs .ext4 /dev/sda5
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
(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 �Ct ext4 �Cb 2048 �CL test /dev/sda5 指定ext4文件系统,2M块大小
卷标test
(4)文件系统属性查看及调整工具:
e2label:用于管理卷标 带卷标是创建,不创建是查看
tun2fs 显示ext文件系统的属性或调整其属性(block size不能调整),包括超级块
信息。
-m # 预留空间百分比#默认5% reserved block count
-l list 显示文件系统属性,超级块信息,显未文件系统的属性及布局
-L 'label' 修改卷标
-j: ext2-->升级为ext3 不会影响原数据,只升不降
-O : 文件系统属性的启动或关闭
-o :文件系统默认挂载选项
启用acl
-c/C # 指定挂载# 设定多少次进行自检,0或-1表示关闭此功能
-i #:每挂载使用多少天后进行自检。0或-1表示关闭此功能
dump2fs: -h 仅显示超级块信息
显示文件系统的布局信息dump,超级块包括进行备份
磁盘分区是所有块进行分组后,进行分组管理
(5)文件系统检测工具
fsck filesystem check(系统意外关闭) blkid查看类型
注意类型不能错误,会影响数据
fsck
fsck -t type 自动调用blkid中
fsck.type
-a :自动修复错误
-I 交互修复错误
-f 强制检测
文件系统状态 非cleanv ,例如:tune2fs -l /dev/sda8
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查看
Mount_Point 挂载点(目录)
要求:@1此目录未被其它进程使用 @2目录需要先存在 @3 目录中原有文件系统将会暂时隐藏。
挂载完成需要通过挂载点进行访问
默认二个挂载点为mnt和media
常用选项:
-t type:文件系统类型 ,不指定mount会调用blkid命令获取文件系统类型
-r: 以“只读”方式挂载此文件系统 ,光盘常用些选项
-w: 以“读写”方式挂载此文件系统
-n:每个文件系统在挂载时都会自动更新/etc/mtab文件,-n用于禁止此功能;
-a: 自动挂载/etc/fstab中所有定义自动挂载的设备;
-B:绑定目录至另一个目录上; 供访问
-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 �Co ro /dev/cdrom /media 将光盘加加载到media目录同时为只读 mount �Co remount ,ro /dev/sda8 重新挂载为只读,多选项用逗号分隔, mount �Co loop /root/a.iso /media 将iso镜像文件挂到media
D: Umount 卸载命令
#umount device
#umount mount_point
正在使用的无法卸载
fuser验证进程正在使用的文件或套接字文件
查看正在访问指定挂载点的进程 #fuser -v Mount_Point
终止所有正在访问指定的挂载点的进程 #fuser -km Mount_Point
(7)swap交换分区
供交换内存使用
A:free -m 以兆显示当前物理使得状态,默认以k
-m MB单位
-G GB单位
free
fdisk
注意 :82为tmp
partx查看
B:mkswap [options] device
创建交换分区 mkswap 分区设备,之前调整分区类型为82
-L 'lable'
mkswap后要激活采用 swapon/off
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
光盘镜像
cat /dev/cdrom> /root/redhat.iso
(8)文件系统查看空间信息的工具
A:df disk free
df -h 以易读方式
df -I 多少个inode,一个inode一个文件
-P 以posix兼容的格式输出
/dev/sda3 -- ptree
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,一般建议手工检测
示例:
Mount -a 自动挂载
swap挂
(10)文件系统上的链接文件
每个文件都有inode
A:硬链接
特点:指向硬件的inode号,只能够针对文件使用
二个路径指向一个inode(每个文件的存储结构)
不能对目录进行;
不能跨分区进行
指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除;
元数据(大小、属主、属组等)inode索引节点信息,
目录也是文件
找文件 :/etc/sysconfig/network kernel-->根(存在的块)--》找到inode号,找表etc目录的block
找到sysconfig打到指向etc的inode号码,以次类推,
inode指定块,inode存元数据
删除硬链接,只删除一个访问数据,只有最后一个删除才删除,下图中的1代表是硬链接的次数
(通过ls �Cl查看),只有链接次数等于1时,再次删除才为真正的删除
B:符号链接(软链接),文件大小为字符个数
链接文件的数据指向别一个文件路径
可以对目录进行操作
可以跨分区
指向的另一个文件路径,而非inode
对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;
通过命令ls �Cli查看
C:链接
ln [-s] SRC DEST SRC是原文件,DEST是链接位置(注意路径位置)
-s:symbolic link 表示软链接
-v:verbose
创建符号链接示例,其中fstab时间前面的大小5,为字符个数
也可以通过ls �Ci 或者ls �Ci test/ 目录地址,查看inode号
du /backup 显示文件及目录大小 �Cs 表示目录 -sh表示其中h进行换算
df 磁盘空间,显示磁盘分区的使用情况, �Ch 换算 -i inode -P 表示一行显示
附加
练习:
创建一个10G文件系统,类型为ext4,要求开机可自动挂载至/mydata目录;
第一步:创建分区
1、 fdisk查看现有分区信息
以boot位标记为*的说明是主引导分区,当前磁盘供209715200个扇区,使用到130031615,说明还有未分配的空间
2、 通过fdisk /dev/sda进入交互式界面,输入m获得帮助
3、输入n创建文件
在1中已经到7,前3个主被占用,1个扩展也被占用,因此只能够为逻辑分区。
默认从130033664开始
4、 输入要新创建逻辑分区的大小10G
5、 再通过p查看分区,即为/dev/sda8
6、 确定后w
7、 通过cat /proc/partitions
sro说明新建磁盘没有生效,内核未识别
8、内核重读磁盘分区信息partprobe或 partx /dev/sda
9、 再次通过cat /proc/partitions查看,sda已经创建完成
第二步:创建文件系统
10、mkfs创建ext4文件系统
[root@centos71 ~]# mkfs -t ext4 /dev/sda8
11、查看结果blkid /dev/sda8
第三部分:挂载文件
12、创建/mydata目录
13、编辑/etc/fstab文件
14、重新启动操作系统验证
Mount查看,/dev/sda8已经挂载到/mydata目录
Mount �Ca
-a: 自动挂载/etc/fstab中所有定义自动挂载的设备;