磁盘
磁盘操作
若一块磁盘需在系统中能被使用,需经过四步:
(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 | 自动使用较新的文件覆盖旧文件 |