网络班第七周

重要知识点回顾

1 磁盘结构

1.1 设备文件

一切皆文件:open(), read(), write(), close()
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:
主设备号:major number, 标识设备类型
次设备号:minor number, 标识同一类型下的不同设备

设备类型:
块设备:block,存取单位“块”,磁盘
字符设备:char,存取单位“字符”,键盘

磁盘设备的设备文件命名:

/dev/DEV_FILE
/dev/sdX #SCSI, SATA, SAS, IDE,USB
/dev/nvme0n# #nvme协议硬盘,如:第一个硬盘:nvme0n1,第二个硬盘:nvme0n2

虚拟磁盘:

/dev/vd
/dev/xvd

范例:创建设备文件

# 创建块设备文件,以/boot为例

[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sr0     11:0    1  4.5G  0 rom  
[root@centos7 ~]# ll /dev/sda1
brw-rw---- 1 root disk 8, 1 Jan  5 03:35 /dev/sda1
[root@centos7 ~]# mknod /data/partition-sda1 b 8 1
[root@centos7 ~]# ll /data/partition-sda1 
brw-r--r-- 1 root root 8, 1 Jan  5 04:03 /data/partition-sda1
[root@centos7 ~]# mount /data/partition-sda1  /mnt
[root@centos7 ~]# ls /boot
config-3.10.0-1127.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-918ced6947384f41add7fb2d002cd5b9.img
initramfs-3.10.0-1127.el7.x86_64.img
initramfs-3.10.0-1127.el7.x86_64kdump.img
symvers-3.10.0-1127.el7.x86_64.gz
System.map-3.10.0-1127.el7.x86_64
vmlinuz-0-rescue-918ced6947384f41add7fb2d002cd5b9
vmlinuz-3.10.0-1127.el7.x86_64
[root@centos7 ~]# ls /mnt
config-3.10.0-1127.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-918ced6947384f41add7fb2d002cd5b9.img
initramfs-3.10.0-1127.el7.x86_64.img
initramfs-3.10.0-1127.el7.x86_64kdump.img
symvers-3.10.0-1127.el7.x86_64.gz
System.map-3.10.0-1127.el7.x86_64
vmlinuz-0-rescue-918ced6947384f41add7fb2d002cd5b9
vmlinuz-3.10.0-1127.el7.x86_64
[root@centos7 ~]#

# 创建字符设备文件,以/dev/zero为例

[root@centos7 ~]# ll /dev/zero
crw-rw-rw- 1 root root 1, 5 Jan  5 03:35 /dev/zero
[root@centos7 ~]# mknod /data/zero c 1 5
[root@centos7 ~]# ll /data/zero 
crw-r--r-- 1 root root 1, 5 Jan  5 04:08 /data/zero
[root@centos7 ~]#

1.2 硬盘类型

硬盘接口类型  

IDE:133MB/s,并行接口,早期家用电脑
SCSI:640MB/s,并行接口,早期服务器
SATA:6Gbps,SATA数据端口与电源端口是分开的,即需要两条线,一条数据线,一条电源线
SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而
SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入
SAS主板上,反之不成
USB:480MB/s
M.2

注意:速度不是由单纯的接口类型决定,支持Nvme协议硬盘速度是最快的

服务器硬盘大小

LFF:3.5寸,一般见到的那种台式机硬盘的大小
SFF:Small Form Factor 小形状因数,2.5寸,注意不同于2.5寸的笔记本硬盘

L、S分别是大、小的意思,目前服务器或者盘柜采用sff规格的硬盘主要是考内虑增大单位密度内的磁盘
容量、增强散热、减小功耗

1.3 机械硬盘和固态硬盘

机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤
固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致,相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
相较于SSD,HDD在价格、容量占有绝对优势
硬盘有价,数据无价,目前SSD不能完全取代HHD

1.4 硬盘存储术语


硬盘存储术语 CHS

head:磁头 磁头数=盘面数
track:磁道 磁道=柱面数
sector:扇区,512bytes
cylinder:柱面 1柱面=512 * sector数/track*head数=512*63*255=7.84M

CentOS 5 之前版本 Linux 以柱面的整数倍划分分区,CentOS 6之后可以支持以扇区划分分区

范例:查看CHS

[root@centos6 ~]#fdisk -l /dev/sda
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006fc79
            Device Boot             Start             End                 Blocks         Id         System
/dev/sda1             *                     1             131                 1048576      83             Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2                                 131         12879             102400000  83                 Linux
/dev/sda3                                 12879      19253             51200000      83             Linux
/dev/sda4                                 19253     26109             55065600     5                 Extended
/dev/sda5                                 19254      19515              2097152         82              Linux swap / Solaris


[root@centos7 ~]# fdisk -u=cylinder -l /dev/sda

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000e4174

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         131     1048576   83  Linux
/dev/sda2             131       13185   104857600   83  Linux
/dev/sda3           13185       13708     4194304   82  Linux swap / Solaris
/dev/sda4           13708       26109    99613696    5  Extended
/dev/sda5           13708       20235    52428800   83  Linux
[root@centos7 ~]# 

范例:识别SSD和机械硬盘类型

# 1表示机械,0表示SSD
[root@centos7 ~]# lsblk -d -o name,rota
NAME ROTA
sda     1
sr0     1


[root@centos7 ~]# ls /sys/block
sda  sr0
[root@centos7 ~]# cat /sys/block/*/queue/rotational
1
1
[root@centos7 ~]# cat /sys/block/sda/queue/rotational
1
[root@centos7 ~]# cat /sys/block/sr0/queue/rotational
1
[root@centos7 ~]# 

区位记录磁盘扇区结构ZBRZoned Bit Recording

CHS
CHS采用 24 bit位寻址
其中前10位表示cylinder,中间8位表示head,后面6位表示sector
最大寻址空间 8 GB
LBAlogical block addressing
LBA是一个整数,通过转换成 CHS 格式完成磁盘具体寻址

 

ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128Petabytes

 

由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

2 管理存储

使用磁盘空间过程
1. 设备分区
2. 创建文件系统
3. 挂载新的文件系统

2.1 磁盘分区

2.1.1 为什么分区

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

采用不同文件系统

2.1.2 分区方式

两种分区方式:MBR,GPT

MBR分区

MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

划分分区的单位:

CentOS 5 之前按整柱面划分

CentOS 6 版本后可以按Sector划分

0磁道0扇区:512bytes

446bytes: boot loader

64bytes:分区表,其中每16bytes标识一个分区

2bytes: 55AA

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

MBR分区:主和扩展分区对应的1–4,/dev/sda3,逻辑分区从5开始,/dev/sda5

MBR分区结构

硬盘主引导记录MBR由4个部分组成

1).主引导程序(偏移地址0000H–0088H),它负责从活动分区中装载,并运行系统引导程序

2).出错信息数据区,偏移地址0089H–00E1H为出错信息,00E2H–01BDH全为0字节

3).分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH–01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4

4).结束标志字,偏移地址01FE–01FF的2个字节值为结束标志55AA

 

MBR中DPT结构

范例: 备份MBR的分区表,并破坏后恢复

# 备份MBR分区表
[root@centos8 ~]#dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446
[root@centos8 ~]#scp /data/dpt.img 10.0.0.102:
# 破坏MBR分区表
[root@centos8 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
# 无法启动
[root@centos8 ~]#reboot
# 用光盘启动,进入rescue mode,选第3项skip to shell
# 配置网络
# ifconfig ens160 10.0.0.8/24
# ip a a 10.0.0.8/24 dev/ens160
# scp 10.0.0.102:/root/dpt.img .
# 恢复MBR分区表
# dd if=dpt.img of=/dev/sda bs=1 seek=446
# exit

GPT分区

GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动

 

GPT分区结构分为4个区域:
GPT头
分区表
GPT分区
备份区域

 

2.1.3 BIOS和UEFI

BIOS是固化在电脑主板上的程序,主要用于开机系统自检和引导操作系统。目前新式的电脑基本上都是UEFI启动

 

BIOS(Basic Input Output System 基本输入输出系统)主要完成系统硬件自检和引导操作系统,操作系统开始启动之后,BIOS的任务就完成了。系统硬件自检:如果系统硬件有故障,主板上的扬声器就会发出长短不同的“滴滴”音,可以简单的判断硬件故障,比如“1长1短”通常表示内存故障,“1长3短”通常表示显卡故障

 

BIOS在1975年就诞生了,使用汇编语言编写,当初只有16位,因此只能访问1M的内存,其中前640K称为基本内存,后384K内存留给开机和各类BIOS本身使用。BIOS只能识别到主引导记录(MBR)初始化的硬盘,最大支持2T的硬盘,4个主分区(逻辑分区中的扩展分区除外),而目前普遍实现了64位系统,传统的BIOS已经无法满足需求了,这时英特尔主导的EFI就诞生了

 

EFI(Extensible Firmware Interface)可扩展固件接口,是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是BIOS 的继任者,或者理解为新版BIOS。UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织

 

UEFI(Unified Extensible Firmware Interface)统一的可扩展固件接口, 是一种详细描述类型接口的标准。UEFI 相当于一个轻量化的操作系统,提供了硬件和操作系统之间的一个接口,提供了图形化的操作界面。最关键的是引入了GPT分区表,支持2T以上的硬盘,硬盘分区不受限制

 

BIOS和UEFI区别

BIOS采用了16位汇编语言编写,只能运行在实模式(内存寻址方式由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物理地址)下,可访问的内存空间为1MB,只支持字符操作界面

 

UEFI采用32位或者64位的C语言编写,突破了实模式的限制,可以达到最大的寻址空间,支持图形操作

2.1.4 管理分区

列出块设备

lsblk

创建分区命令

fdisk 管理MBR分区
gdisk 管理GPT分区
parted 高级分区操作,可以是交互或非交互方式

重新设置内存中的内核分区表版本,适合于除了CentOS 6 以外的其它版本 5,7,8

partprobe

分区工具fdiskgdisk

gdisk [device...] 类fdisk 的GPT分区工具
fdisk -l [-u] [device...] 查看分区
fdisk [device...] 管理MBR分区

子命令

p     分区列表
t     更改分区类型
n     创建新分区
d     删除分区
v     校验分区
u     转换单位
w     保存并退出
q     不保存并退出

Centos6 通知内核重新读取硬盘分区表
新增分区用

partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
# 示例:
[root@centos6 ~]#partx -a /dev/sda

删除分区用

partx -d --nr M-N /dev/DEVICE
# 示例:
[root@centos6 ~]#partx -d --nr 6-8 /dev/sda

2.2 文件系统

2.2.1 文件系统概念

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
支持的文件系统:

[root@centos7 ~]# ls /lib/modules/`uname -r`/kernel/fs
binfmt_misc.ko.xz  ceph    dlm    fat      gfs2   lockd          nfs_common  overlayfs  udf
btrfs              cifs    exofs  fscache  isofs  mbcache.ko.xz  nfsd        pstore     xfs
cachefiles         cramfs  ext4   fuse     jbd2   nfs            nls         squashfs
[root@centos7 ~]# 

各种文件系统:https://en.wikipedia.org/wiki/Comparison_of_file_systems
帮助:man 5 fs

2.2.2 文件系统类型

Linux 常用文件系统

ext2:Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区
ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复
ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
xfs:SGI,支持最大8EB的文件系统
swap
iso9660 光盘
btrfs(Oracle)
reiserfs

Windows 常用文件系统

FAT32
NTFS
exFAT

Unix

FFS(fast)
UFS(unix)
JFS2

网络文件系统

NFS
CIFS

集群文件系统:

GFS2
OCFS2(oracle)

分布式文件系统:

fastdfs
ceph
moosefs
mogilefs
glusterfs
Lustre

RAW

未经处理或者未经格式化产生的文件系统

常用的文件系统特性:

FAT32    最多只能支持16TB的文件系统和4GB的文件

NTFS     最多只能支持16EB的文件系统和16EB的文件

EXT3     最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
Ext3目前只支持32000个子目录
Ext3文件系统使用32位空间记录块数量和 inode数量
当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块

EXT4   EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本
Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB
理论上支持无限数量的子目录
Ext4文件系统使用64位空间记录块数量和 inode数量
Ext4的多块分配器支持一次调用分配多个数据块
修复速度更快

XFS    根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
用优化算法,日志记录对整体文件操作影响非常小
是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB
能以接近裸设备I/O的性能存储数据
查前支持的文件系统:

cat /proc/filesystems
[root@centos7 ~]# cat /proc/filesystems 
nodev    sysfs
nodev    rootfs
nodev    ramfs
nodev    bdev
nodev    proc
nodev    cgroup
nodev    cpuset
nodev    tmpfs
nodev    devtmpfs
nodev    debugfs
nodev    securityfs
nodev    sockfs
nodev    dax
nodev    bpf
nodev    pipefs
nodev    configfs
nodev    devpts
nodev    hugetlbfs
nodev    autofs
nodev    pstore
nodev    mqueue
            xfs
nodev    rpc_pipefs
[root@centos7 ~]# 

2.2.3 文件系统的组成部分

内核中的模块:ext4, xfs, vfat
Linux的虚拟文件系统:VFS
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

2.2.4 文件系统选择管理

2.2.4.1 创建文件系统

创建文件管理工具

# mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L \'LABEL\' 设定卷标
mke2fs:ext系列文件系统专用管理工具

常用选项

-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-b {1024|2048|4096} 指定块 block 大小
-L ‘LABEL’ 设置卷标
-j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N # 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] 启用指定特性
-O ^FEATURE 关闭指定特性

2.2.4.2 查看和管理分区信息

blkid 可以查看块设备属性信息
格式:

blkid [OPTION]... [DEVICE]

语法:

blkid -L | -U
blkid [-c ] [-ghlLv] [-o] [-s ][-t ] -[w ] [ ...]
blkid -p [-s ] [-O ] [-S ][-o] ...
blkid -i [-s ] [-o] ...

选项:

-c <file>   指定cache文件(default: /etc/blkid.tab, /dev/null = none)
-d          don\'t encode non-printing characters
-h          显示帮助信息
-g          garbage collect the blkid cache
-o <format> 指定输出格式
-k          list all known filesystems/RAIDs and exit
-s <tag>    显示指定信息,默认显示所有信息
-t <token>  find device with a specific token (NAME=value pair)
-l          look up only first device with token specified by -t
-L <label>  convert LABEL to device name
-U <uuid>   convert UUID to device name
-v          显示版本信息
-w <file>   write cache to different file (/dev/null = no write)
<dev>       specify device(s) to probe (default: all devices)
Low-level probing options:
-p          low-level superblocks probing (bypass cache)
-i          gather information about I/O limits
-S <size>   overwrite device size
-O <offset> probe at the given offset
-u <list>   filter by "usage" (e.g. -u filesystem,raid)
-n <list>   filter by filesystem type (e.g. -n vfat,ext3)

常用选项:

 

-U UUID 根据指定的UUID来查找对应的设备
-L LABEL 根据指定的LABEL来查找对应的设备

范例:blkid 的常见用法

[root@centos7 ~]# blkid
/dev/sda1: UUID="5bbea95b-2d3f-49c8-be91-2d83143b83a9" TYPE="xfs" 
/dev/sda2: UUID="340dc09a-63ab-44af-8b95-78284eef123d" TYPE="xfs" 
/dev/sda3: UUID="158f78b4-f449-4e0d-8eca-5f4c8afa7d7e" TYPE="swap" 
/dev/sda5: UUID="d5965256-1676-4e28-a12a-eb409335ff66" TYPE="xfs" 
/dev/sr0: UUID="2020-04-22-00-54-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
[root@centos7 ~]# blkid -s UUID
/dev/sda1: UUID="5bbea95b-2d3f-49c8-be91-2d83143b83a9" 
/dev/sda2: UUID="340dc09a-63ab-44af-8b95-78284eef123d" 
/dev/sda3: UUID="158f78b4-f449-4e0d-8eca-5f4c8afa7d7e" 
/dev/sda5: UUID="d5965256-1676-4e28-a12a-eb409335ff66" 
/dev/sr0: UUID="2020-04-22-00-54-00-00" 
[root@centos7 ~]# blkid -o list
device            fs_type  label     mount point           UUID
------------------------------------------------------------------------------------------------
/dev/sda1         xfs                /boot                 5bbea95b-2d3f-49c8-be91-2d83143b83a9
/dev/sda2         xfs                /                     340dc09a-63ab-44af-8b95-78284eef123d
/dev/sda3         swap               <swap>                158f78b4-f449-4e0d-8eca-5f4c8afa7d7e
/dev/sda5         xfs                /data                 d5965256-1676-4e28-a12a-eb409335ff66
/dev/sr0          iso9660  CentOS 7 x86_64 (not mounted)   2020-04-22-00-54-00-00
[root@centos7 ~]# 

e2label:管理ext系列文件系统的LABEL

e2label DEVICE [LABEL]

findfs :查找分区

findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>

tune2fs:重新设定ext系列文件系统可调整参数的值

-l 查看指定文件系统超级块信息;super block
-L \'LABEL’ 修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2升级为ext3
-O 文件系统属性启用或禁用, –O ^has_journal
-o 调整文件系统的默认挂载选项,–o ^acl
-U UUID 修改UUID号

dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
-h:查看超级块信息,不显示分组信息

备注:CentOS7,根分区默认使用的文件系统类型是xfs,而7以前的版本使用的是ext4类型。

xfs_info:显示示挂载或已挂载的 xfs 文件系统信息

xfs_info mountpoint|devname

范例:显示文件系统的超级快信息

[ root@centos8 ~]#lsblk -f
NAME   FSTYPE  LABEL                      UUID                                 MOUNTPOINT
sda                                                                            
├─sda1 ext4                               6323f8cd-f68a-4944-a26c-fec05b2dc8ff /boot
├─sda2 xfs                                5095934c-8ea6-4756-97d9-e60fccfaf5cb /
├─sda3 swap                               5f9d390f-d65f-4ab6-bbdc-2862a3c6e066 [SWAP]
├─sda4                                                                         
└─sda5 xfs                                60c4498f-02ab-439c-a4f7-595ca795c44f /data
sr0    iso9660 CentOS-8-2-2004-x86_64-dvd 2020-06-08-22-08-25-00               
[ root@centos8 ~]#dumpe2fs /dev/sda1 -h
dumpe2fs 1.45.4 (23-Sep-2019)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          6323f8cd-f68a-4944-a26c-fec05b2dc8ff
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65536
Block count:              262144
Reserved block count:     13107
Free blocks:              22120
Free inodes:              65164
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      127
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Wed Oct 28 13:23:12 2020
Last mount time:          Tue Jan  5 03:35:35 2021
Last write time:          Tue Jan  5 03:35:35 2021
Mount count:              109
Maximum mount count:      -1
Last checked:             Wed Oct 28 13:23:12 2020
Check interval:           0 (<none>)
Lifetime writes:          3521 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      979f6ac0-0f52-4c63-95c9-2a3883134819
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x98ff6a15
Journal features:         journal_incompat_revoke journal_64bit journal_checksum_v3
Journal size:             32M
Journal length:           8192
Journal sequence:         0x0000030a
Journal start:            1
Journal checksum type:    crc32c
Journal checksum:         0x49833cb5

[ root@centos8 ~]#

  [root@centos7 ~]# lsblk -f
NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINT
sda                                                                 
├─sda1 xfs                     5bbea95b-2d3f-49c8-be91-2d83143b83a9 /boot
├─sda2 xfs                     340dc09a-63ab-44af-8b95-78284eef123d /
├─sda3 swap                    158f78b4-f449-4e0d-8eca-5f4c8afa7d7e [SWAP]
├─sda4                                                              
└─sda5 xfs                     d5965256-1676-4e28-a12a-eb409335ff66 /data
sr0    iso9660 CentOS 7 x86_64 2020-04-22-00-54-00-00               
[root@centos7 ~]# xfs_info  /dev/sda1 
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@centos7 ~]#

df命令

1.简介:

df命令作用是列出文件系统的整体磁盘空间使用情况。可以用来查看磁盘已被使用多少空间和还剩余多少空间。

df命令显示系统中包含每个文件名参数的磁盘使用情况,如果没有文件名参数,则显示所有当前已挂载文件系统的磁盘空间使用情况。

2.df命令语法:

df    [选项]    [文件名]

3.参数:

-a:–all,显示所有的文件系统,包括虚拟文件系统。

-B:–block-size,指定单位大小。比如1k,1m等。

-h:–human-readable,以人们易读的GB、MB、KB等格式显示。

-H:–si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。

-i:–inodes,不用硬盘容量,而是以inode的数量来显示。

-k:以KB的容量显示各文件系统,相当于–block-size=1k。

-m:以KB的容量显示各文件系统,相当于–block-size=1m。

-l:–local,只显示本地文件系统。

–no-sync:在统计使用信息之前不调用sync命令(默认)。

-sync:在统计使用信息之前调用sync命令。

-P:–portability,使用POSIX格式显示。

-t:–type=TYPE,只显示指定类型的文件系统。

-T:–print-type,显示文件系统类型。

-x:–exclude-type=TYPE,不显示指定类型的文件系统。

–help:显示帮助信息。

–version:显示版本信息

4.应用示例:

[root@centos8min ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          905112       0    905112   0% /dev
tmpfs             921932       0    921932   0% /dev/shm
tmpfs             921932    8860    913072   1% /run
tmpfs             921932       0    921932   0% /sys/fs/cgroup
/dev/sda2      104806400 2909948 101896452   3% /
/dev/sda5       52403200  412228  51990972   1% /data
/dev/sda1         999320  137812    792696  15% /boot
tmpfs             184384       0    184384   0% /run/user/0
[root@centos8min ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        884M     0  884M   0% /dev
tmpfs           901M     0  901M   0% /dev/shm
tmpfs           901M  8.7M  892M   1% /run
tmpfs           901M     0  901M   0% /sys/fs/cgroup
/dev/sda2       100G  2.8G   98G   3% /
/dev/sda5        50G  403M   50G   1% /data
/dev/sda1       976M  135M  775M  15% /boot
tmpfs           181M     0  181M   0% /run/user/0
[root@centos8min ~]# df -H
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        927M     0  927M   0% /dev
tmpfs           945M     0  945M   0% /dev/shm
tmpfs           945M  9.1M  935M   1% /run
tmpfs           945M     0  945M   0% /sys/fs/cgroup
/dev/sda2       108G  3.0G  105G   3% /
/dev/sda5        54G  423M   54G   1% /data
/dev/sda1       1.1G  142M  812M  15% /boot
tmpfs           189M     0  189M   0% /run/user/0
[root@centos8min ~]# df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
devtmpfs       devtmpfs    905112       0    905112   0% /dev
tmpfs          tmpfs       921932       0    921932   0% /dev/shm
tmpfs          tmpfs       921932    8860    913072   1% /run
tmpfs          tmpfs       921932       0    921932   0% /sys/fs/cgroup
/dev/sda2      xfs      104806400 2909948 101896452   3% /
/dev/sda5      xfs       52403200  412228  51990972   1% /data
/dev/sda1      ext4        999320  137812    792696  15% /boot
tmpfs          tmpfs       184384       0    184384   0% /run/user/0
[root@centos8min ~]# df  --exclude-type=tmpfs --exclude-type=devtmpfs
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 2909948 101896452   3% /
/dev/sda5       52403200  412228  51990972   1% /data
/dev/sda1         999320  137812    792696  15% /boot
[root@centos8min ~]# 
[root@centos8min ~]# 
[root@centos8min ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  884M     0  884M   0% /dev
tmpfs          tmpfs     901M     0  901M   0% /dev/shm
tmpfs          tmpfs     901M  8.7M  892M   1% /run
tmpfs          tmpfs     901M     0  901M   0% /sys/fs/cgroup
/dev/sda2      xfs       100G  2.8G   98G   3% /
/dev/sda5      xfs        50G  403M   50G   1% /data
/dev/sda1      ext4      976M  135M  775M  15% /boot
tmpfs          tmpfs     181M     0  181M   0% /run/user/0
[root@centos8min ~]# df -Th  --exclude-type=tmpfs --exclude-type=devtmpfs
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda2      xfs   100G  2.8G   98G   3% /
/dev/sda5      xfs    50G  403M   50G   1% /data
/dev/sda1      ext4  976M  135M  775M  15% /boot
[root@centos8min ~]# df  --type=xfs -hT
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda2      xfs   100G  2.8G   98G   3% /
/dev/sda5      xfs    50G  403M   50G   1% /data
[root@centos8min ~]# 

lsblk命令

功能:列出块设备信息

lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。

选项:

-a, --all            显示所有设备。
-b, --bytes          以bytes方式显示设备大小。
-d, --nodeps         不显示 slaves 或 holders。
-D, --discard        print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs             显示文件系统信息。
-h, --help           显示帮助信息。
-i, --ascii          use ascii characters only。
-m, --perms          显示权限信息。
-l, --list           使用列表格式显示。
-n, --noheadings     不显示标题。
-o, --output <list>  输出列。
-P, --pairs          使用key="value"格式显示。
-r, --raw            使用原始格式显示。
-t, --topology       显示拓扑结构信息。

lsblk命令默认情况下将以树状列出所有块设备。打开终端,并输入以下命令:

[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sr0     11:0    1  4.5G  0 rom  
[root@centos7 ~]# 

7个栏目名称如下:

  1. NAME :这是块设备名。
  2. MAJ:MIN :本栏显示主要和次要设备号。
  3. RM :本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
  4. SIZE :本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
  5. RO :该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
  6. TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
  7. MOUNTPOINT :本栏指出设备挂载的挂载点。

默认选项不会列出所有空设备。要查看这些空设备,请使用以下命令:

lsblk -a

常见用法组合

[root@centos7 ~]# lsblk -a
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sr0     11:0    1  4.5G  0 rom  
[root@centos7 ~]# lsblk -f
NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINT
sda                                                                 
├─sda1 xfs                     5bbea95b-2d3f-49c8-be91-2d83143b83a9 /boot
├─sda2 xfs                     340dc09a-63ab-44af-8b95-78284eef123d /
├─sda3 swap                    158f78b4-f449-4e0d-8eca-5f4c8afa7d7e [SWAP]
├─sda4                                                              
└─sda5 xfs                     d5965256-1676-4e28-a12a-eb409335ff66 /data
sr0    iso9660 CentOS 7 x86_64 2020-04-22-00-54-00-00               
[root@centos7 ~]# lsblk -l
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0  200G  0 disk 
sda1   8:1    0    1G  0 part /boot
sda2   8:2    0  100G  0 part /
sda3   8:3    0    4G  0 part [SWAP]
sda4   8:4    0    1K  0 part 
sda5   8:5    0   50G  0 part /data
sr0   11:0    1  4.5G  0 rom  
[root@centos7 ~]# lsblk -S
NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda  2:0:0:0    disk VMware,  VMware Virtual S 1.0  spi
sr0  1:0:0:0    rom  NECVMWar VMware IDE CDR10 1.00 ata
[root@centos7 ~]# lsblk -m
NAME    SIZE OWNER GROUP MODE
sda     200G root  disk  brw-rw----
├─sda1    1G root  disk  brw-rw----
├─sda2  100G root  disk  brw-rw----
├─sda3    4G root  disk  brw-rw----
├─sda4    1K root  disk  brw-rw----
└─sda5   50G root  disk  brw-rw----
sr0     4.5G root  cdrom brw-rw----
[root@centos7 ~]# 

2.2.4.3 文件系统检测和修复

文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下执行下面命令修复
fsck: File System Check

fsck.FS_TYPE
fsck -t FS_TYPE

注意:FS_TYPE 一定要与分区上已经文件类型相同

常用选项:

-a 自动修复
-r 交互式修复错误

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

-y 自动回答为yes
-f 强制修复
-p 自动进行安全的修复文件系统问题

xfs_repair:xfs文件系统专用检测修复工具

-f 修复文件,而设备
-n 只检查
-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

2.3 挂载

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程
把设备关联挂载点:mount Point
挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空
进程正在使用中的设备无法被卸载

2.3.1 挂载文件系统mount

格式:

mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint

device:指明要挂载的设备

设备文件:例如:/dev/sda5
卷标:-L \'LABEL\', 例如 -L \'MYDATA\'
UUID: -U \'UUID\':例如 -U \'0c50523c-43f1-45e7-85c0-a126711d406e\'
伪文件系统名称:proc, sysfs, devtmpfs, configfs

mountpoint挂载点目录必须事先存在,建议使用空目录
mount常用命令选项

-t vsftype 指定要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L \'LABEL\' 以卷标指定挂载设备
-U \'UUID\' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
            async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
      sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下
      atime/noatime 包含目录和文件
      diratime/nodiratime 目录的访问时间戳
      auto/noauto 是否支持开机自动挂载,是否支持-a选项
      exec/noexec 是否支持将文件系统上运行应用程序
      dev/nodev 是否支持在此文件系统上使用设备文件
      suid/nosuid 是否支持suid和sgid权限
      remount 重新挂载
      ro/rw 只读、读写
      user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
      acl/noacl 启用此文件系统上的acl功能
      loop 使用loop设备
      _netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统
      defaults 相当于rw, suid, dev, exec, auto, nouser, async

挂载规则

一个挂载点同一时间只能挂载一个设备

一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏

一个设备可以同时挂载到多个挂载点

通常挂载点一般是已存在空的目录

2.3.2 卸载文件系统 umount

卸载时:可使用设备,也可以使用挂载点

umount 设备名|挂载点

2.3.3 查看挂载情况

查看挂载

# 通过查看/etc/mtab文件显示当前已挂载的所有设备
mount
# 查看内核追踪到的已挂载的所有设备
cat /proc/mounts

查看挂载点情况

findmnt MOUNT_POINT|device

查看正在访问指定文件系统的进程

lsof MOUNT_POINT
fuser -v MOUNT_POINT

终止所有在正访问指定的文件系统的进程 (要取消挂载是需要执行此命令)

fuser -km MOUNT_POINT

范例:挂载点的常见用法

[root@centos8min ~]# mount /dev/sda1 /mnt
[root@centos8min ~]# cd /mnt
[root@centos8min mnt]# ls
lost+found
[root@centos8min mnt]# findmnt /mnt
TARGET SOURCE    FSTYPE OPTIONS
/mnt   /dev/sda1 ext4   rw,relatime
[root@centos8min mnt]# lsof /mnt
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash     1384 root  cwd    DIR    8,1     4096    2 /mnt
lsof    10251 root  cwd    DIR    8,1     4096    2 /mnt
lsof    10252 root  cwd    DIR    8,1     4096    2 /mnt
[root@centos8min mnt]# fuser -v /mnt
                     USER        PID ACCESS COMMAND
/mnt:                root     kernel mount /boot
                     root       1384 ..c.. bash
[root@centos8min mnt]# fuser -km /mnt
/mnt:                 1384c
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(centos8-nmu1) at 19:35:25.

Type `help\' to learn how to use Xshell prompt.
[C:\~]$ reconnect


Connecting to 10.0.0.55:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Tue Jan  5 18:26:41 2021 from 10.0.0.1
[root@centos8min ~]# umount /mnt
[root@centos8min ~]# 

2.3.4 持久挂载

将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载

每行定义一个要挂载的文件系统,,其中包括共 6 项

# 要挂载的设备或伪文件系统
  设备文件
       LABEL:LABEL=""
       UUID:UUID=""
       伪文件系统名称:proc, sysfs
# 挂载点:必须是事先存在的目录
# 文件系统类型:ext4,xfs,iso9660,nfs,none
# 挂载选项:defaults ,acl,bind
# 转储频率:0:不做备份 1:每天转储 2:每隔一天转储
# fsck检查的文件系统的顺序:允许的数字是0 1 2
    0:不自检 ,1:首先自检;一般只有rootfs才用 2:非rootfs使用

添加新的挂载项,需要执行下面命令生效

mount -a

范例:centos7, 8 /etc/fstab 的分区UUID错误,无法启动

自动进入emergency mode,输入root 密码
# cat /proc/mounts 可以查看到/ 以rw方式挂载
# vim /etc/fstab
# reboot

范例:centos 6 /etc/fstab 的分区UUID错误,无法启动

如果/etc/fstab 的挂载设备出错,比如文件系统故障,并且文件系统检测项(即第6项为非0),将导致无法启动
自动进入emergency mode,输入root 密码
# cat /proc/mounts 可以查看到/ 以ro方式挂载,无法直接修改配置文件
# mount -o remount,rw /
# vim /etc/fstab
将故障行的最后1项,即第6项修改为0,开机不检测此项挂载设备的健康性,从而忽略错误,能实现启动

2.4 处理交换文件和分区

free命令

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。

在Linux系统监控的工具中,free命令是最经常使用的命令之一。

1.命令格式:free [参数]

2.命令功能:free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

3.命令参数:

-b  以Byte为单位显示内存使用情况。  

-k  以KB为单位显示内存使用情况。  

-m  以MB为单位显示内存使用情况。

-g   以GB为单位显示内存使用情况。  

-o  不显示缓冲区调节列。  

-s<间隔秒数>  持续观察内存使用状况。  

-t  显示内存总和列。  

-V  显示版本信息。

4./proc/meminfo 文件

其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:

范例:持续的观察内存的状况

[root@centos7 ~]# free -h -s 2 -c 5
              total        used        free      shared  buff/cache   available
Mem:           1.8G        118M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           1.8G        118M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           1.8G        118M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           1.8G        118M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G

              total        used        free      shared  buff/cache   available
Mem:           1.8G        118M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G
[root@centos7 ~]#

2.4.1 swap 介绍

swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存泄露
注意:为优化性能,可以将swap 分布存放,或高性能磁盘存放

官方推荐推荐系统 swap 空间
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_gui
de/sect-disk-partitioning-setup-ppc#sect-recommended-partitioning-scheme-ppc

系统中的 RAM 量 推荐的 swap 空间 允许休眠的建议 swap 空间大小
低于 2 GB RAM 量的2倍数 RAM 容量的三倍
2 GB – 8 GB 等于 RAM 量 RAM 量的倍数
8 GB – 64 GB 4 GB 到 RAM 容量的 0.5 倍 RAM 容量的 1.5 倍
超过 64 GB 独立负载(至少 4GB) 不建议使用休眠功能

范例:检查系统的swap是否合理

[root@centos7 ~]# free -h 
              total        used        free      shared  buff/cache   available
Mem:           1.8G        117M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G
[root@centos7 ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              1           0           1           0           0           1
Swap:             3           0           3
[root@centos7 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         117        1585           9         115        1565
Swap:          4095           0        4095
[root@centos7 ~]#

2.4.2 交换分区实现过程

1. 创建交换分区或者文件

2. 使用mkswap写入特殊签名

3. 在/etc/fstab文件中添加适当的条目

4. 使用swapon -a 激活交换空间

启用swap分区

swapon [OPTION]... [DEVICE]

选项:
-a:激活所有的交换分区
-p PRIORITY:指定优先级,也可在/etc/fstab 在第4列指定:pri=value
范例:创建swap分区

[root@centos8 ~]#echo -e \'n\np\n\n\n+2G\nt\n82\nw\n\' | fdisk /dev/sdc
[root@centos8 ~]#mkswap /dev/sdc1
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f
[root@centos8 ~]#blkid /dev/sdc1
/dev/sdc1: UUID="d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f" TYPE="swap"
PARTUUID="b094d43d-01
[root@centos8 ~]#vim /etc/fstab
UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f swap swap defaults 0 0
[root@centos8 ~]#swapon -a
[root@centos8 ~]#free -h
                total         used         free         shared         buff/cache         available
Mem:         3.7Gi           264Mi        3.2Gi       9.0Mi          261Mi              3.2Gi
Swap:       4.0Gi           0B           4.0Gi
[root@centos8 ~]#cat /proc/swaps
Filename         Type         Size         Used         Priority
/dev/sda5                                     partition 2097148 0 -2
/dev/sdc1                                     partition 2097148 0 -3

禁用swap分区:

swapoff [OPTION]... [DEVICE]

范例:禁用swap分区

[root@centos8 ~]#sed -i.bak \'/swap/d\' /etc/fstab
[root@centos8 ~]#swapoff -a

SWAP的优先级

可以指定swap分区0到32767的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)

2.4.3 swap的使用策略

/proc/sys/vm/swappiness 的值决定了当内存占用达到一定的百分比时,会启用swap分区的空间
范例: 修改swap值,充分利用内存

[root@centos7 ~]# cat /proc/sys/vm/swappiness
30
[root@centos7 ~]# echo 0 > /proc/sys/vm/swappiness
[root@centos7 ~]# cat /proc/sys/vm/swappiness
0
[root@centos7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        117M        1.5G        9.5M        115M        1.5G
Swap:          4.0G          0B        4.0G
[root@centos7 ~]#

说明:内存在使用到100-30=70%的时候,就开始出现有交换分区的使用。简单地说这个参数定义了系统对swap的使用倾向,默认值为30,值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性

2.5 移动介质

挂载意味着使外来的文件系统看起来如同是主目录树的一部分,所有移动介质也需要挂载,挂载点通常在/media 或/mnt下
访问前,介质必须被挂载
摘除时,介质必须被卸载
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)

2.5.1 使用光盘

操作光盘

eject 弹出光盘
eject -t 弹入光盘

2.5.2 USB介质

查看USB设备是否识别

lsusb

被内核探测为SCSI设备
/dev/sdaX、/dev/sdbX或类似的设备文件
在图形环境中自动挂载在/run/media//
手动挂载

mount /dev/sdX# /mnt

范例:插入U盘后可以看到日志信息

[root@centos8 ~]#tail /var/log/messages -f
Apr 15 14:25:06 centos8 kernel: usb 4-1: new SuperSpeed Gen 1 USB device number
2 using xhci_hcd
Apr 15 14:25:06 centos8 kernel: usb 4-1: New USB device found, idVendor=0951,
idProduct=1666, bcdDevice= 1.10
Apr 15 14:25:06 centos8 kernel: usb 4-1: New USB device strings: Mfr=1,
Product=2, SerialNumber=3
Apr 15 14:25:06 centos8 kernel: usb 4-1: Product: DataTraveler 3.0
Apr 15 14:25:06 centos8 kernel: usb 4-1: Manufacturer: Kingston
Apr 15 14:25:06 centos8 kernel: usb 4-1: SerialNumber: AC220B280A43B03189723CA0
Apr 15 14:25:06 centos8 kernel: usb-storage 4-1:1.0: USB Mass Storage device
detected^C


[root@centos8 ~]#dmesg
[ 1861.537401] usb 4-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd
[ 1861.551660] usb 4-1: New USB device found, idVendor=0951, idProduct=1666,
bcdDevice= 1.10
[ 1861.551663] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1861.551664] usb 4-1: Product: DataTraveler 3.0
[ 1861.551665] usb 4-1: Manufacturer: Kingston
[ 1861.551666] usb 4-1: SerialNumber: AC220B280A43B03189723CA0
[ 1861.568499] usb-storage 4-1:1.0: USB Mass Storage device detected
[ 1862.650723] sdd: sdd1
[ 1862.656289] sd 3:0:0:0: [sdd] Attached SCSI removable disk

范例:格式化U盘为 FAT32 文件系统

[root@centos8 ~]#dnf -y install dosfstools
[root@centos8 ~]#mkfs.vfat /dev/sdd1
mkfs.fat 4.1 (2017-01-24)
[root@centos8 ~]#mount /dev/sdd1 /mnt

范例:查看USB设备

[root@centos8 ~]#yum -y install usbutils
[root@centos8 ~]#lsusb
Bus 004 Device 002: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9
G2
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

2.6 磁盘常见工具

2.6.1 文件系统空间占用等信息的查看工具df

2.6.2 查看某目录总体空间占用状态du

2.6.3 工具dd

dd 命令:convert and copy a file
格式:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#

常用选项

if=file                                                             从所命名文件读取而不是从标准输入
of=file                                                             写到所命名的文件而不是到标准输出
ibs=size                                                            一次读size个byte
obs=size                                                            一次写size个byte
bs=size                                                             block size, 指定块大小(既是是ibs也是obs)
cbs=size                                                            一次转化size个byte
skip=blocks                                                       从开头忽略blocks个ibs大小的块
seek=blocks                                                       从开头忽略blocks个obs大小的块
count=n                                                            复制n个bs
conv=conversion[,conversion...]                           用指定的参数转换文件

conversion                                                         转换参数:
ascii                                                              转换 EBCDIC 为 ASCII
ebcdic                                                             转换 ASCII 为 EBCDIC
lcase                                                              把大写字符转换为小写字符
ucase                                                              把小写字符转换为大写字符
nocreat                                                            不创建输出文件
noerror                                                            出错时不停止
notrunc                                                            不截短输出文件
sync                                                               把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
fdatasync                                                          写完成前,物理写入输出文件

范例:

[root@centos7 abc]# pwd
/data/abc
[root@centos7 abc]# ls
[root@centos7 abc]# echo abcdef > f1.txt
[root@centos7 abc]# echo 123456789  > f2.txt
[root@centos7 abc]# cat f1.txt 
abcdef
[root@centos7 abc]# cat f2.txt 
123456789
[root@centos7 abc]# dd if=f1.txt of=f2.txt  bs=1 count=2 skip=3 seek=4
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.000302274 s, 6.6 kB/s
[root@centos7 abc]# cat f1.txt 
abcdef
[root@centos7 abc]# cat f2.txt 
1234de[root@centos7 abc]# echo 123456789 > f2.txt 
[root@centos7 abc]# cat f2.txt 
123456789
[root@centos7 abc]# dd if=f1.txt of=f2.txt  bs=1 count=2 skip=3 seek=4 conv=notrunc
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.000164956 s, 12.1 kB/s
[root@centos7 abc]# cat f1.txt 
abcdef
[root@centos7 abc]# cat f2.txt 
1234de789
[root@centos7 abc]#

3 RAID

什么是RAID

RAID:Redundant Arrays of Inexpensive(Independent) Disks 廉价(独立)磁盘冗余阵列

1988年由加利福尼亚大学伯克利分校(University of California-Berkeley) “A Case for Redundant
Arrays of Inexpensive Disks”,多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

RAID功能实现

提高IO能力,磁盘并行读写
提高耐用性,磁盘冗余算法来实现

RAID实现的方式

外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
软件RAID:通过OS实现,比如:群晖的NAS

RAID级别

级别:多块磁盘组织在一起的工作方式有所不同
RAID-0:条带卷,strip
RAID-1:镜像卷,mirror
RAID-2
..
RAID-5
RAID-6
RAID-10 (生产中常用技术)

读、写性能提升
可用空间:N*min(S1,S2,…)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
RAID-01
RAID级别

实现软RAID

4 逻辑卷管理器(LVM)

4.1LVM介绍

LVM: Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,
允许在多个物理设备间重新组织文件系统
LVM可以弹性的更改LVM的容量

 

通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备
中的PE加到LV中以加大容量

实现过程

# 将设备指定为物理卷
# 用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
# 在物理卷上创建的逻辑卷, 是由物理区域(PE)组成
# 可以在逻辑卷上创建文件系统并挂载

4.2实现逻辑卷

相关工具来自于 lvm2 包

4.2.1pv管理工具

显示pv信息

pvs:简要pv信息显示
pvdisplay

创建pv

pvcreate /dev/DEVICE

删除pv

pvremove /dev/DEVICE

4.2.2vg管理工具

显示卷组

vgs
vgdisplay

创建卷组

vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath
[PhysicalDevicePath...]

管理卷组

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

删除卷组

先做pvmove
再做vgremove

4.2.3lv管理工具

显示逻辑卷

lvs
Lvdisplay

创建逻辑卷

lvcreate -L #[mMgGtT] -n NAME VolumeGroup

删除逻辑卷

lvremove /dev/VG_NAME/LV_NAME

重设文件系统大小

fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
xfs_growfs /mountpoint

范例:

# 创建物理卷
pvcreate /dev/sda3
# 为卷组分配物理卷
vgcreate vg0 /dev/sda3
# 从卷组创建逻辑卷
lvcreate -L 256M -n data vg0
# mkfs.xfs /dev/vg0/data
# 挂载
mount /dev/vg0/data /mnt/data#

4.2.4扩展和缩减逻辑卷

4.2.4.1在线扩展逻辑卷

lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
#针对ext
resize2fs /dev/VG_NAME/LV_NAME
#针对xfs
xfs_growfs MOUNTPOINT
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME

4.2.4.2缩减逻辑卷

注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减

umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount

4.3逻辑卷快照

4.3.1逻辑卷快照原理

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝,对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择,快照只有在它们和原来的逻辑卷不同时才会消耗空间,建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照

 

逻辑卷管理器快照

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享

 

逻辑卷快照工作原理

 

1).在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间

2).当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中

3).快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

 

由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量

 

快照特点

备份速度快,瞬间完

应用场景是测试环境,不能完成代替备份

快照后,逻辑卷的修改速度会一定有影响

4.3.2实现逻辑卷快照

范例:

mkfs.xfs /dev/vg0/data
mount /dev/vg0/data/ /mnt/data

# 为现有逻辑卷创建快照
lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data
# 挂载快照
mkdir -p /mnt/snap
mount -o ro /dev/vg0/data-snapshot /mnt/snap
# 恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot
# 删除快照
umount /mnt/databackup
lvremove /dev/vg0/databackup

练习

第七周

1、破坏mbr表并修复

2、总结RAID的各个级别及其组合方式和性能的不同。

3、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统 ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项

4、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

练习一:破坏mbr表并修复

[root@centos7 ~]# dd if=/dev/sda of=/data/dpt.ing bs=1 count=64 skip=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.00037933 s, 169 kB/s
[root@centos7 ~]# ll /data/dpt.ing 
-rw-r--r-- 1 root root 64 Jan  6 06:14 /data/dpt.ing
[root@centos7 ~]# file !*
file /data/dpt.ing
/data/dpt.ing: 8086 relocatable (Microsoft)
[root@centos7 ~]# file /data/dpt.ing 
/data/dpt.ing: 8086 relocatable (Microsoft)
[root@centos7 ~]# hexdump -C /data/dpt.ing 
00000000  80 20 21 00 83 aa 28 82  00 08 00 00 00 00 20 00  |. !...(....... .|
00000010  00 aa 29 82 83 fe ff ff  00 08 20 00 00 00 80 0c  |..)....... .....|
00000020  00 fe ff ff 82 fe ff ff  00 08 a0 0c 00 00 80 00  |................|
00000030  00 fe ff ff 05 fe ff ff  00 08 20 0d 00 f8 df 0b  |.......... .....|
00000040
[root@centos7 ~]# scp /data/dpt.ing  10.0.0.88:/data
The authenticity of host \'10.0.0.88 (10.0.0.88)\' can\'t be established.
ECDSA key fingerprint is SHA256:DD8fOjuPmIf1uiXKO/Va5eoKEJCQcyLIcwYUa/OID3M.
ECDSA key fingerprint is MD5:5c:d0:9e:4d:fb:49:06:ea:7e:86:1a:e8:03:ad:d5:a8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added \'10.0.0.88\' (ECDSA) to the list of known hosts.
root@10.0.0.88\'s password: 
dpt.ing                                100%   64     8.8KB/s   00:00    
[root@centos7 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446

# 用光盘启动,进入rescue mode,选第3项skip to shell
# 配置网络
# ifconfig ens33 10.0.0.7/24
# scp 10.0.0.88:/root/dpt.ing
# 恢复MBR分区表
# dd if=dpt.img of=/dev/sda bs=1 seek=446
# reboot

 







练习二:总结RAID的各个级别及其组合方式和性能的不同

1)raid0:

也称为条带模式(striped),即把连续的数据分散到多个磁盘上存取。当系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。因为读取和写入是在设备上并行完成的,读取和写入性能将会增加,这通常是运行 RAID 0 的主要原因。但RAID 0没有数据冗余,如果驱动器出现故障,那么将无法恢复任何数据。

 

       条带卷,读写性能提升

       可用空间: N*min (最少那块硬盘)

       磁盘数:2的倍数n

      容错能力:无

2)radi1:

RAID 1 又称为镜像(Mirroring),一个具有全冗余的模式。RAID 1可以用于两个或2xN个磁盘,并使用0块或更多的备用磁盘,每次写数据时会同时写入镜像盘。这种阵列可靠性很高,但其有效容量减小到总容量的一半,同时这些磁盘的大小应该相等,否则总容量只具有最小磁盘的大小。

 

       镜像卷,读性能提升,写性能略有下降,同一份数据要存两份;

       可用空间:n/2*min

       最少磁盘数:2的倍数

       容错能力:可以坏一个硬盘

3)raid5:

在希望结合大量物理磁盘并且仍然保留一些冗余时,RAID 5 可能是最有用的 RAID 模式。RAID 5可以用在三块或更多的磁盘上,并使用0块或更多的备用磁盘。就像 RAID 4一样,得到的 RAID5 设备的大小是(N-1)*S。

RAID 5其中一块磁盘出现故障,那么由于有校验信息,所以所有数据仍然可以保持不变。如果可以使用备用磁盘,那么在设备出现故障之后,将立即开始同步数据。如果两块磁盘同时出现故障,那么所有数据都会丢失。RAID5 可以经受一块磁盘故障,但不能经受两块或多块磁盘故障。

RAID 5也是采取独立存取模式,但是其Parity Data 则是分散写入到各个成员磁盘驱动器,因此,除了具备Overlapped I/O 多任务性能之外,同时也脱离如RAID 4单一专属Parity Disk的写入瓶颈。但是,RAID 5在座资料写入时,仍然稍微受到”读、改、写过程”的拖累。

 

       每个盘都放数据,同时还放校验数据;

       可用空间:(n-1)*min

       磁盘数:最少3块硬盘

4)raid10  生产中常用技术)

RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的***组合,然后将这两组各自视为RAID 1运作。

RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的***组合,而将两组硬盘各自视为RAID 0运作。

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜射再用三个建RAID 0,那么坏一个硬盘便会有三个硬盘脱机。因此,RAID 10较RAID 01常用,零售主板大部份支持RAID 0/1/5/10,但不支持RAID 01。  

       先做镜像raid1,再做raid0

       容错能力:

       可用空间:n/2

       磁盘数:最少4块硬盘

练习三

要求:创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统 ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项

[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sr0     11:0    1  4.5G  0 rom  
# 在虚拟机上添加两块新硬盘,大小分别为200G,20G
[root@centos7 ~]# echo "- - -" >  /sys/class/scsi_host/host0/scan
[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sdb      8:16   0  200G  0 disk 
sdc      8:32   0   20G  0 disk 
sr0     11:0    1  4.5G  0 rom  
[root@centos7 ~]# 
# sdb磁盘作为操作目标
# 在sdb磁盘上创建大小为2G的分区
[root@centos7 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8cfa81b7.

Command (m for help): N
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): P
Partition number (1-4, default 1): 
First sector (2048-419430399, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): +2G
Partition 1 of type Linux and of size 2 GiB is set

Command (m for help): p

Disk /dev/sdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x8cfa81b7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos7 ~]# 
# 在sdb1分区上创建文件系统,并查看超级块信息和基本信息
[root@centos7 ~]# mkfs.ext
mkfs.ext2  mkfs.ext3  mkfs.ext4  
[root@centos7 ~]# mkfs.ext4 -b 2048 -m 1 -L TEST /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=TEST
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 1048576 blocks
10485 blocks (1.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=269484032
64 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
    16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

[root@centos7 ~]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   TEST
Last mounted on:          <not available>
Filesystem UUID:          1359c61d-3530-47e0-b5b2-dd7a4b0ba792
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              131072
Block count:              1048576
Reserved block count:     10485
Free blocks:              994651
Free inodes:              131061
First block:              0
Block size:               2048
Fragment size:            2048
Group descriptor size:    64
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Wed Jan  6 07:33:49 2021
Last mount time:          n/a
Last write time:          Wed Jan  6 07:33:49 2021
Mount count:              0
Maximum mount count:      -1
Last checked:             Wed Jan  6 07:33:49 2021
Check interval:           0 (<none>)
Lifetime writes:          65 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      4430c23d-7a06-441e-a9d1-59eb5b7045e6
Journal backup:           inode blocks
[root@centos7 ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="TEST" UUID="1359c61d-3530-47e0-b5b2-dd7a4b0ba792" TYPE="ext4" 
[root@centos7 ~]# 
# 将分区挂载到指定文件夹
[root@centos7 ~]# mkdir /test
[root@centos7 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Nov 25 06:31:52 2020
#
# 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
#
UUID=340dc09a-63ab-44af-8b95-78284eef123d /                       xfs     defaults        0 0
UUID=5bbea95b-2d3f-49c8-be91-2d83143b83a9 /boot                   xfs     defaults        0 0
UUID=d5965256-1676-4e28-a12a-eb409335ff66 /data                   xfs     defaults        0 0
UUID=158f78b4-f449-4e0d-8eca-5f4c8afa7d7e swap                    swap    defaults        0 0
[root@centos7 ~]# vim /etc/fstab
[root@centos7 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Nov 25 06:31:52 2020
#
# 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
#
UUID=340dc09a-63ab-44af-8b95-78284eef123d /                       xfs     defaults        0 0
UUID=5bbea95b-2d3f-49c8-be91-2d83143b83a9 /boot                   xfs     defaults        0 0
UUID=d5965256-1676-4e28-a12a-eb409335ff66 /data                   xfs     defaults        0 0
UUID=158f78b4-f449-4e0d-8eca-5f4c8afa7d7e swap                    swap    defaults        0 0
UUID=1359c61d-3530-47e0-b5b2-dd7a4b0ba792  /test                  ext4    acl             0 0 
[root@centos7 ~]# 
# 创建目标文件夹,使配置文件生效
[root@centos7 ~]# mkdir /test
[root@centos7 ~]# mount -a
[root@centos7 ~]# lsblk -f
NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINT
sda                                                                 
├─sda1 xfs                     5bbea95b-2d3f-49c8-be91-2d83143b83a9 /boot
├─sda2 xfs                     340dc09a-63ab-44af-8b95-78284eef123d /
├─sda3 swap                    158f78b4-f449-4e0d-8eca-5f4c8afa7d7e [SWAP]
├─sda4                                                              
└─sda5 xfs                     d5965256-1676-4e28-a12a-eb409335ff66 /data
sdb                                                                 
└─sdb1 ext4    TEST            1359c61d-3530-47e0-b5b2-dd7a4b0ba792 /test
sdc                                                                 
sr0    iso9660 CentOS 7 x86_64 2020-04-22-00-54-00-00               
[root@centos7 ~]#

练习四

要求:创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

# 准备至少有两个PV组成的大小为20G,本次规划各10G盘。
[root@centos7 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sdb      8:16   0  200G  0 disk 
└─sdb1   8:17   0    2G  0 part /test
sdc      8:32   0   20G  0 disk 
└─sdc1   8:33   0   10G  0 part 
sr0     11:0    1  4.5G  0 rom  
[root@centos7 ~]#
# 重新设置内存中的内核分区表版本,适合于除了CentOS 6 以外的其它版本 578
[root@centos7 ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@centos7 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0  512B  0 part 
└─sda5   8:5    0   50G  0 part /data
sdb      8:16   0  200G  0 disk 
├─sdb1   8:17   0    2G  0 part /test
└─sdb2   8:18   0   10G  0 part 
sdc      8:32   0   20G  0 disk 
└─sdc1   8:33   0   10G  0 part 
sr0     11:0    1  4.5G  0 rom  
[root@centos7 ~]#
# 创建pv
[root@centos7 ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
[root@centos7 ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
[root@centos7 ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb2     lvm2 ---  10.00g 10.00g
  /dev/sdc1     lvm2 ---  10.00g 10.00g
[root@centos7 ~]#
# 创建名为testvg的VG;要求PE大小 为16MB.
[root@centos7 ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
[root@centos7 ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
[root@centos7 ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb2     lvm2 ---  10.00g 10.00g
  /dev/sdc1     lvm2 ---  10.00g 10.00g
[root@centos7 ~]# 
[root@centos7 ~]# 
[root@centos7 ~]# vgcreate testvg -s 16M /dev/sdb2 /dev/sdc1
  Volume group "testvg" successfully created
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  testvg   2   0   0 wz--n- <19.97g <19.97g
[root@centos7 ~]# vgdisplay testvg
  --- Volume group ---
  VG Name               testvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <19.97 GiB
  PE Size               16.00 MiB
  Total PE              1278
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1278 / <19.97 GiB
  VG UUID               ZbkP7X-S3cc-N4wd-N6wL-wQdE-C9Bo-CQYibb
   
[root@centos7 ~]#
# 建大小为5G的逻辑卷testlv;挂载至/users目录
[root@centos7 ~]# lvcreate -L 5G -n testlv testvg
  Logical volume "testlv" created.
[root@centos7 ~]# lvs
  LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  testlv testvg -wi-a----- 5.00g                                                    
[root@centos7 ~]# lvdisplay /dev/testvg/testlv 
  --- Logical volume ---
  LV Path                /dev/testvg/testlv
  LV Name                testlv
  VG Name                testvg
  LV UUID                Pc2dZS-L4ZO-flpj-RllA-6Btr-Ce5B-yPcGzA
  LV Write Access        read/write
  LV Creation host, time centos7, 2021-01-06 09:05:23 +0800
  LV Status              available
  # open                 0
  LV Size                5.00 GiB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
       
[root@centos7 ~]# mkfs.ext4 /dev/testvg/testlv 
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 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

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

[root@centos7 ~]# mkdir /users
[root@centos7 ~]# mount /dev/testvg/testlv  /users/              
[root@centos7 ~]# lsblk -fl
NAME          FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                              
sda1          xfs                         5bbea95b-2d3f-49c8-be91-2d83143b83a9   /boot
sda2          xfs                         340dc09a-63ab-44af-8b95-78284eef123d   /
sda3          swap                        158f78b4-f449-4e0d-8eca-5f4c8afa7d7e   [SWAP]
sda4                                                                             
sda5          xfs                         d5965256-1676-4e28-a12a-eb409335ff66   /data
sdb                                                                              
sdb1          ext4        TEST            1359c61d-3530-47e0-b5b2-dd7a4b0ba792   /test
sdb2          LVM2_member                 TOEX4V-ynfg-3QUI-mAxT-w4KT-aBjH-NBo6lx 
testvg-testlv ext4                        0877784f-15b8-436a-837c-4a5dfa45784a   /users
sdc                                                                              
sdc1          LVM2_member                 MVlU5P-09PP-bAcn-aJNA-o8fy-v3Rw-2377zV 
sr0           iso9660     CentOS 7 x86_64 2020-04-22-00-54-00-00                 
[root@centos7 ~]# 



版权声明:本文为linux1305803172原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/linux1305803172/p/14241844.html