磁盘

磁盘操作

若一块磁盘需在系统中能被使用,需经过四步:

(1)分区:对磁盘进行划分,以建立可用的硬盘分区

(2)格式化:对硬盘分区进行格式化,以建立系统可用的文件系统

(3)检验:在建立好的文件系统上进行检验

(4)挂载:在Linux系统上,建立挂载点并挂载

分区

查看分区

UUID(universally unique identifier):全局唯一标识符

1)Linux会将系统内所有的设备都给与一个唯一的标识符

2)该标识符可用来挂载或使用表示的设备或文件系统

lsblk命令(list block devices):列出系统上所有设备列表(并显示依赖关系)

指令格式:lsblk 选项

选项 含义
-d 仅列出设备本身
-t 列出设备详细信息
-f 列出设备内文件系统名称、UUID和LABEL
-p 列出设备的完整文件名
-m 列出设备文件的权限
-i 以ASCII的字符输出

如:查看当前主机的所有设备列表
 

//若一个设备没有挂载点,则表明该设备就没有被系统挂载

标签 含义
Name 设备名
MAJ:MIN 主要和次要设备号 MAJ为主要设备号,MIN为次要设备号
RM 是否为可移动设备 0为不可移动设备,1为可移动设备
SIZE 设备容量大小信息
R0 设备是否为只读
TYPE 设备为只读存储器、磁盘或磁盘的一个分区
MOUNTPOINT 指出设备的挂载点

blkid命令:列出系统中所有的文件系统和其设备名称、UUID和文件系统类型

指令选项:blkid

如:查看当前主机的所有文件系统
 

parted命令:列出指定磁盘的分区表类型和分区信息

指令选项:parted 磁盘名 print

如:查看/dev/sad设备的分区表类型和分区信息
 

磁盘分区

fdisk命令:以交互界面对使用MBR分区表的磁盘进行分区

指令格式:fdisk 设备名称

1)该处的设备指的是总磁盘名称,而不是分区

操作 含义
m 列出所有操作
l 列出该磁盘所有可用的分区类型
n 在该磁盘中添加新的分区
p 查看指定分区的详细信息
t 改变指定分区的类型
d 删除指定分区
q 不执行以上操作,并退出
w 执行以上操作,并退出

如:查看fdisk命令中所有操作
 

如:查看/dev/sda磁盘中所有分区的信息
 

如:在/dev/sdb磁盘中添加一个2G主分区
 
//起始位置可直接回车,系统可自动选择最靠前的空闲扇区位

//以上操作结束后,必须“w”操作退出(否则添加失败)

gdisk命令:以交互界面对使用GTP分区表的磁盘进行分区

指令格式:gdisk 设备名称

1)该处的设备指的是总磁盘名称,而不是分区

parted命令:直接对使用各种分区表的磁盘进行分区

指令格式1:parted 设备名称 print //显示指定分区的详细信息

如:查看/dev/sda磁盘的详细信息
 

//起始/结束位代表着该分区在磁盘中的起始位置和结束位置

//Size是由“End-Start”得到

指令格式2:parted 设备名称 mkpart 选项 分区格式 开始位 结束位

1)功能:新增指定格式分区

2)分区格式:ext4、vfat、xfs等

3)由于新分区的起始点在前一个分区的后面,所以前一个分区的结束位就是新增分区的开始位(结束位和开始位代表该分区)

选项
primary 主分区
extended 扩展分区
logical 逻辑分区

指令格式3:parted 设备名称 rm //删除指定分区

partprobe命令:重读磁盘分区表以更新内核的磁盘分区表内容

指令格式:partprobe 选项

1)若文档被删除后仍占用空间,partprobe可在不重启情况下重读分区

2)系统不能自动把磁盘分区的信息同步至Linux内核时,就需通过partprobe手动将磁盘分区信息同步至内核

选项 含义
-s 显示更新相关信息(默认不显示)

格式化(mkfs)

mkfs属于Linux的综合命令,根据后缀的不同可格式化各种文件系统

1)主要使用:mkfs.xfs、mkfs.ext4和mkfs.fat

如:查看Centos7系统中支持格式化的文件系统
 

mkfs.xfs命令:格式化xfs文件系统

指令格式:mkfs.xfs 选项 设备名称

选项 含义
-b 指定区块(bsize)容量
-d 指定data section相关参数
-f 若设备已有文件系统,强制格式化
-i 指定inode相关参数
-L 指定文件系统的标头名称(Label name)
-r 指定realtime section相关参数

//通过-d、-i选项对磁盘性能进行优化

mkfs.ext4命令:格式化ext4文件系统

指令格式:mkfs.ext4 选项 设备名称

选项 含义
-b 指定区块的大小
-L 指定文件系统的标头名称

//由于ext4默认值比较好,所以格式化时大部分时使用默认值

且ext4大部分默认值记录在/etc/mke2fs.conf文件中

文件系统检验

xfs_repair命令:检验并修复xfs文件系统

指令格式:xfs_repair 选项 设备名称

1)被检验和修复时的文件系统不能被挂载

选项 含义
-f 设备为文件,而不是实体设备
-n 仅检查文件系统
-d 在单人维护模式下,对根目录进行检验与修复

fsck.ext4命令:检查并修复ext4文件系统

指令格式:fsck.ext4 选项 设备名称

选项 含义
-p 文件系统被修复时,自动回复“y”确认任何操作
-f 强制详细检查
-D 对文件系统下的目录进行最佳化配置
-b 后接超级区块,修复超级区块

通常只有身为root且文件系统出问题时,才使用xfs_repair和fsck.ext4命令

因为正常情况下调用该命令,在扫描磁盘时可能会造成部分文件系统的改变

挂载/卸载

挂载:利用一个已存在的目录为进入点,将磁盘分区的数据放置在该目录下

1)进入点就是挂载点

挂载注意事项:

1)一个文件系统不能被重复挂载到不同的挂载点中;

2)一个目录也不能重复挂载多个文件系统;

3)作为挂载点的目录,必须是空目录;

//若挂载点的目录不是空目录,在挂载了文件系统后该目录下原本的文档会在挂载时期被隐藏,卸载后再恢复

mount命令:查看/挂载主机上的设备到指定目录上

指令格式1:mount 选项

选项 含义
-a 挂载/etc/fstab记录的所有文件系统
-n 挂载设备,但不记录到/etc/mtab文件中
-l 列出所有已经挂载的文件系统

1)/etc/fstab:声明主机需要挂载的文件系统

2)/etc/mtab:声明主机中当前已挂载的文件系统(包括具体属性);

3)仅执行mount命令,则列出系统上所有已挂载设备;

//以“设备名 on 挂载点 文件系统类型(权限)”形式列出

指令格式2:mount -o 参数 设备表达式 挂载点

1)设备表达式可为:设备的LABEL、设备的UUID、设备名

2)本质是修改/etc/fstab文件(filesystem table)

参数 含义
async sync 指定文件系统异步(async)或同步(synce)内存机制
atime noatime 指定文件系统是否修改文件的读取时间(atime)
rw ro 指定文件系统为可读写(rw)或可读(ro)
auto noauto 指定文件系统能否被自动挂载(auto)
dev nodev 指定文件系统能否建立设备文件(dev)
suid nosuid 指定文件系统是否含有(SUID/SGID)的文件格式
exec noexec 指定文件系统具有可执行的二进制文件
nouser user 指定该文件系统能被谁挂载(默认仅root用户)
defaults 同时具有rw、suid、dev、exec、auto、nouser、async等参数
remount 重新挂载

1)重新挂载根目录:mount -o remount,rw,auto /

2)/etc/filesystems:系统指定的测试挂载文件系统类型的优先级

3)/proc/filesystems:Linux系统已经加载的文件系统类型

4)/lib/modules/$(unmae -r)/kernel/fs/:Linux支持的文件系统的驱动程序

//设备的源地址一般在“/dev”下(根据设备名进行查找)

//挂载地址建议选择为“/mnt”下(也可在/mnt下建目录)

umount命令:卸载已挂载的设备/文件

指令格式:umonut 选项 设备表达式

选项 含义
-a 卸载/etc/mtab记录的所有的文件系统
-n 不更新/etc/mtab的情况下卸载
-f 强制卸载文件系统

1)正在使用的设备,默认不允许卸载(可强制);

2)指定设备路径或挂载点路径,均可卸载对应设备;

/etc/fstab

/etc/fstab(filesystem table):系统启动时的自动挂载磁盘的配置文件

1)该文件出错,则Linux可能将无法完成启动

2)根目录(/)是必须挂载的,且优先级高于所有其他挂载点

3)其他挂载点也必须为已建立的目录,且要遵守系统目录架构原则(FHS)

4)所有挂载点在同一时间内,只能挂载一次

5)所有硬盘分区同一时间内,只能挂载一次

如:查看当前主机的/etc/fstab配置文件
 
内容格式:设备 挂载点 文件系统 文件系统参数 dump备份 fsck检验

字段 含义
Device 磁盘设备文件名/UUID/LABEL name
Mount point 挂载点
filesystem 磁盘分区的文件系统
parameters 文件系统功能参数
dump 开机后是否dump进行磁盘备份 (0为备份,1为不备份)
fsck 是否以fsck检验扇区 (0为不自检,1为自检)

1)文件系统参数就是“mount -o 选项”指定的各样参数

2)由于Centos7系统特性,dump和fsck两个字段建议默认使用0

3)通过修改/etc/fstab文件可实现开机自动挂载功能,但编写需要满足以上6个字段要求(否则出错导致不能启动)

4)编写完毕后使用mount -a测试语法是否正确

5)指定磁盘时,通过该磁盘的UUID(唯一性)

//因为磁盘的命名方式是根据系统识别该设备的顺序

loop挂载

功能:使文件实现类似分区的功能

1)本质是将一个大文件挂载,实现主机上类似多出一个分区

2)三步骤:建立大型文件-->格式化大型文件-->挂载

3)使用文件创建的文件系统或交换分区时,在配置对应文件时最好使用原本的文件名进行指定(不要使用UUID,否则可能导致系统查找不到对应的文件)

loop选项:将文件创建的文件系统挂载

格式:mount -o loop 格式化后的UUID 挂载点

1)卸载时和普通文件系统一样

SWAP

交换分区(swap):用磁盘来暂时放置内存中的信息

1)建立三步骤:根据文件系统分区mkswap格式化swapon启动

//交换分区的大小一般为真实物理内存的1.5~2倍

mkswap命令:格式化指定分区为swap分区

指令格式:mkswap 指定分区

swapon命令:查看/启动交换分区

指令格式1:swapon 交换分区 //启动交换分区

指令格式2:swapon 选项 //查看交换分区

选项 含义
-a 启动/etc/fstab文件中记录的所有交换分区
-s 查看所有交换分区的使用情况

//在将交换写入配置文件时,由于交换分区不是文件系统,也没有挂载点,在文件系统和挂载点对应的栏位写入“swap”即可

参数自定义

文件通过**主要设备号(major)次要设备号(minor)**实现文件代替设备

1)主要设备号:区分不同种类的设备

2)次要设备号:区分同一类型的多个设备

mknod命令:创建Linux中字符设备文件和块设备文件

指令参数:mknod 文件路径 选项 主要设备号 次要设备号

选项 含义
b 创建外接存储设备文件
c 创建外接输入设备文件
p 创建FIFO文件

xfs_admin命令:修改XFS文件系统的UUID或Label name

指令格式:xfs_admin 选项 设备文件名

选项 含义
-l 列出设备的Label name
-u 列出设备的UUID
-L 设置设备的Label name
-U 设置设备的UUID

uuidgen命令:产生一个新的UUID

指令格式:uuidgen

tune2fs命令:修改ext4文件系统的UUID或Label name

指令格式:tune2fs 选项 设备文件名

选项 含义
-L 设置设备的Label name
-U 设置设备的UUID

备份

备份分为:完整备份(full backup)、增量备份(incremental backup)

1)完整备份:将整个文件系统数据备份

2)增量备份:只备份与上一次备份有差异的数据

3)备份/还原中都不可使用绝对路径

如:实时文件系统进行完整备份和增量备份
 

//第一次备份一定是完整备份,且完整备份在xfsdump中被定义为“level0”

各个层次的level都记录在/var/lib/xfsdump/inventory文件中

xfsdump/xfsrestore

xfsdump命令:备份指定的xfs文件系统

指令格式1:xfsdump 选项 待备份数据

1)若不添加-L或-M选项,会默认进入交互模式进行指定

2)在完整备份的前提下,才能进行增量备份

选项 含义
-f 指定备份数据存放路径
-l 指定备份等级(默认为0,完整备份)
-L 指定该次备份的会话标签
-M 指定该次备份的设备标签

xfsdump命令的注意事项:

1)xfsdump只能备份已挂载的xfs文件系统;

2)xfsdump必须使用root权限才能操作;

3)xfsdump备份后的数据只能由xfsrestore解析;

4)xfsdump不能备份具有相同UUID的文件系统

//xfsdump通过文件系统的UUID辨别各个文件系统

指令格式2:xfsdump -I //列出所有xfsdump备份的数据

1)“xfsrestore -I”具有相同的作用

2)本质是到/var/lib/xfsdump/inventory文件中取数据

xfsrestore命令:解析xfsdump备份的数据

指令格式1:xfsrestore 选项 待恢复目录 //通过完整备份恢复

选项 含义
-f 指定解析的备份文件
-L 指定解析的会话标签
-s 指定仅恢复文件/目录
-i 进入交互模式

//通过-L会话标签可确定恢复的等级

//若恢复的是目录,则默认会将目录下的子文件/目录一并恢复

指令格式2:xfsrestore 选项 -i 待恢复目录 //选择性恢复

1)进入交互模式后可通过以下命令指定备份文档进行恢复:

命令 含义
pwd 查看当前目录
ls 列出文档恢复列表
cd 切换目录
add 添加文档到恢复列表
delete 从恢复列表去除该文档
extract 执行列表的恢复操作
quit 退出

其他备份

dd命令:按指定大小和个数的数据块复制/转换文件

指令格式:dd if=input of=output bs=block_size count=number

1)本质类似叠砖块,将count个bs叠在一起形成一个新文件

2)dd可读取磁盘设备的内容(几乎是直接读取扇区),然后将整个设备备份成一个文件,且默认情况是一个一个扇区去读写的(没有使用的扇区也会被写入)

选项 含义
if 指定输入文件(input file),也可是设备
of 指定出文件(output file),也可是设备
bs 指定一个block的大小(默认是512Bytes)
count 指定number个bs

//dd忽略磁盘的文件系统影响,直接进行备份和还原(消耗时间较长)

//dd也可将磁盘分区中的扇区数据整个复制过来,连同超级区块、启动扇区和元数据等,就实现了两个一模一样的磁盘分区

cpio命令:备份/还原文件/设备

指令格式1:cpio 选项 > 文件/设备 //备份

选项 含义
-o 将数据复制输出到文件/设备
-B 将默认512自己的blocks提升到5120字节(加快存储)
-v 让存储的过程中文件名称可以在屏幕上显示

//由于cpio需搭配文件名才可使用,所以一般搭配find命令

指令格式2:cpio 选项 < 文件/设备 //还原

选项 含义
-i 将数据自文件/设备复制到系统中
-d 自动建立目录(默认cpio不会建立)
-u 自动使用较新的文件覆盖旧文件