Linux操作系统磁盘管理
文章目录
一、硬盘介绍
文件最终是存储在磁盘上,文件的存取,最终是读写磁盘。
1、硬盘的物理结构
1.1、硬盘结构
- 磁头数: 每个盘面都有一个磁头,因此磁头数 = 盘面数。
- 磁道: 上以盘片轴心为圆心,不同半径的同心圆称为磁道,磁道不是真正肉眼可看见的一道一道“坑”,而是被磁盘上被磁化的区域,磁道之间有一定的间隙,以免磁道之间磁介质相互影响。
- 扇区: 每个磁道被等分为若干个弧段(扇区),每个扇区可以存放512个字节的数据。扇区是磁盘驱动器向磁盘读写数据的最小单元。
- 柱面: 不同盘片半径相同的磁道组成的一个“柱面”。
2、CHS编号编号
所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区)。每个柱面、磁头、扇区都有自己的编号。
2.1、磁道编号规则
- 磁头编号: 从上到下,分别为磁头0号,磁头1号…
- 柱面编号: 最外圈的柱面编号为0,往里依次递增1,2,3…
2.2、通过CHS计算硬盘容量
硬盘存储容量=磁头数×柱面数×每个磁道扇区数×每个扇区字节数
3、磁盘存储划分
3.1第一个扇区存储的数据
硬盘的第一个扇区(逻辑编号为0)可以说是整个硬盘最重要扇区了,它主要存储两大信息:
- 主引导分区(Master Boot Record,MBR): 存放引导加载程序,大小为446字节。
- 分区表(partition table): 记录整块硬盘分区的状态,占64字节,每一个分区信息占16个字节。
3.2硬盘分区
分区的最小单位为柱面(Cylinder),也就是说,分区其实就是指定从第几个柱面到第几个柱面属于哪个区。
假设硬盘有400个柱面,平均分为4个区(C、D、E、F盘),则第四个分区F的柱面范围是第301号到第400号柱面。
4、开机流程
-
加载BIOS: BIOS(Base Input Output System,基本输入输出系统,读做/'baious/)是硬件厂商写入到主板ROM里的一个程序,电脑开机时,会最先执行BIOS。
-
MBR: BIOS在执行的过程中,会根据用户设置(即在BIOS的Boot界面选择的优先启动项,U盘/硬盘/光驱),如果硬盘的优先级最高,则计算机会从硬盘的第一个扇区的MBR中的读取引导加载程序(Boot Loader)。和BIOS一样,主引导分区MBR是硬件本身会支持的东西。
-
**引导加载程序:**引导加载程序(Boot Loader)是用于读取操作系统内核文件的一个小软件,不同的操作系统有各自的引导加载程序。每个分区都可以有自己的文件系统,有自己的引导扇区,在启动的过程中,用户可以选择是直接加载引导程序所在分区的操作系统,还是将引导加载功能交给各分区引导扇区中的加载程序。boot loader的功能主要有:
- 提供菜单:让用户选择不同的开机选项,是多重引导的重要功能。
- 载入内核文件:直接指向可开机的程序区段,开始操作系统。
- 转交其他loader: 将引导加载功能转交给其他loader负责。
-
**操作系统内核文件:**最后,引导加载程序加载操作系统的内核文件,启动操作系统!
磁盘以二进制的形式存储数据。
二、Linux文件系统
一种方便管理、组织、访问数据的软件。
1、根文件系统
根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
2、虚拟文件系统
虚拟文件系统VFS软件抽象层为用户屏蔽了底层文件系统的差异,向上层提供了统一地访问接口。
3、真文件系统
真文件系统其实是实际存储设备的文件系统,挂载于EEPROM、 Nor FLASH、 NAND FLASH、 eMMC 等存储器中。
3.1、ext4
EXT4是第四代扩展文件系统(Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,使用64位空间记录块数量和i-节点数量。
3.2、xfs
XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前CentOS 7将XFS+LVM作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。
4、伪文件系统
Linux内核提供了sysfs、procfs、devtmpfs等伪文件系统,**伪文件系统存在于内存,不占用硬盘。**以文件地形式向用户提供一些系统信息,用户读写这些文件就可以读取、修改系统的一些信息。
4.1、procfs
procfs是 进程文件系统的缩写,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。
由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存。
4.2、devtmpfs
devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,令一般启动程序不用等待 udev(udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。),缩短 GNU/Linux 的开机时间。
如果将一个设备连接到Linux系统时,通常需要一个设备驱动程序才能正常工作。此时通过设备文件或设备节点与设备驱动程序交互,这些是看起来像普通文件的特殊文件。由于这些设备文件就像普通文件一样,所以可以使用ls、cat等程序与它们交互。这些设备文件一般存放在/dev目录下。
4.3、sysfs
sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。sysfs 文件系统被挂载在 /sys 挂载点上。
Sysfs的目的是更好地管理系统上的设备,相比/dev目录无法做到这一点。Sysfs是一个虚拟文件系统,通常挂载在/sys目录下。它为我们提供了比在/dev目录中能够看到的更详细的信息。目录/sys和/dev在某些方面看起来非常相似,但它们确实有很大的不同。基本上,/dev目录很简单,它允许其他程序访问设备本身,而/sys文件系统用于查看信息和管理设备。
/sys文件系统基本上包含了系统中所有设备的所有信息,比如制造商和型号、设备插入的位置、设备的状态、设备的层次结构等等。在这里看到的文件不是设备节点,因此实际上并不是在/sys目录下与设备交互,而是在管理设备。
三、磁盘分区与挂载
先添加一个磁盘
磁盘热扫描:
[root@bogon ~]# cd /sys/class/scsi_host
[root@bogon scsi_host]# 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 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 147G 0 lvm /home
sr0 11:0 1 1024M 0 rom
[root@bogon ~]# for i in `ls /sys/class/scsi_host`;do echo "- - -" > /sys/class/scsi_host/$i/scan;done
[root@bogon ~]# 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 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 147G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
1、磁盘分区方式
MBR
主引导记录,支持四个主分区或三主一扩展多个逻辑,每分区最大2TB,兼容性好。
GPT
是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。
分区:
/dev/sda1:第一个分区
/dev/sda2:第二个分区
假如使用MBR分区方式: 四个主分区,分别是:sda1,sda2,sda3,sda4;扩展分区:有且只能有一个,并且会占用主分区编号;
逻辑分区:基于扩展分区之上;/dev/sda5
2、分区命令
2.1、fdisk命令
fdisk - Linux分区表操作工具软件
-l :显示系统中已安装的分区表
语法:
fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)
案例:
新建sdb1分区,大小为5G
[root@bogon ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xea53670f 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
#解析
a 切换可引导标志
b 编辑 bsd 磁盘标签
c 切换 dos 兼容性标志
d 删除分区
g 创建新的空 GPT 分区表
G 创建 IRIX(SGI)分区表
l 列出已知分区类型
m 打印此菜单
n 添加新分区
o 创建新的空 DOS 分区表
p 打印分区表
q 不保存更改退出
s 创建新的空 Sun 磁盘标签
t 更改分区的系统 ID
u 更改显示/输入单位
v 验证分区表
w 将表写入磁盘并退出
x 额外功能(仅限专家
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xea53670f
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@bogon ~]# 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 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 147G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
sr0 11:0 1 1024M 0 rom
格式化分区:
[root@bogon ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=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: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
手动挂载:注意重启失效
[root@bogon ~]# mkdir /sdb1
[root@bogon ~]# mount /dev/sdb1 /sdb1/
[root@bogon ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 893M 0 893M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 5.5G 45G 11% /
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
/dev/sda1 xfs 1014M 185M 830M 19% /boot
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 ext4 4.8G 20M 4.6G 1% /sdb1
永久挂载:vim /etc/fstab
添加 /dev/sdb1 /sdb1 ext4 defaults 0 0 保存并退出
/dev/mapper/centos-root / xfs defaults 0 0
UUID=60332cad-027d-4b45-9ad6-4fe95965c253 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /sdb1 ext4 defaults 0 0
卸载挂载源sdb1
[root@bogon ~]# umount /dev/sdb1
[root@bogon ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 893M 0 893M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 5.5G 45G 11% /
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
/dev/sda1 xfs 1014M 185M 830M 19% /boot
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
自动挂载:mount
[root@bogon ~]# mount -a
[root@bogon ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 893M 0 893M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 5.5G 45G 11% /
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
/dev/sda1 xfs 1014M 185M 830M 19% /boot
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 ext4 4.8G 20M 4.6G 1% /sdb1
挂载源故障和解决方法
重启reboot,之后按“ESC”输入root密码进入终端,输入“journalctl -xb” 查看故障信息
根据故障信息vim /etc/fstab 修改挂载源之后重启“reboot”
2.2 parted命令
语法:
parted [options] [device [command [options...]...]]
选项:
选项 | 作用 |
---|---|
-l,–list | 列出所有块设备上的分区布局 |
-h,–help | 显示此帮助信息 |
案例:
parted /dev/sdb
#对/dev/sdb进行分区或管理操作
(parted) mklabel gpt
#定义分区表格式
#(常用的有msdos和gpt分区表格式,msdos不支持2TB以上容量的磁盘,所以大于2TB的磁盘选gpt分
区表格式)
(parted) mkpart p1
#创建第一个分区,名称为p1
#(p1只是第一个分区的名称,用别的名称也可以,如part1)
File system type? [ext2]? ext3
#定义分区格式
#(不支持ext4,想分ext4格式的分区,可以通过mkfs.ext4格式化成ext4格式)
Start? 1
#定义分区的起始位置
#(单位支持K,M,G,T)百分比
End? 5T
#定义分区的结束位置
#(单位支持K,M,G,T)百分比
(parted) print
Number Start End Size File system Name 标志
#查看当前分区情况
(parted) rm
#rm删除命令
#(删除之前必须确保分区没有被挂载)
Partition number? 1
#删除第一个分区
Number
3、查看与识别命令
3.1、lsblk命令
lsblk - list block devices
语法:
lsblk [options] [device...]
案例:
[root@bogon ~]# 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 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 147G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
sr0 11:0 1 1024M 0 rom
3.2、partprobe命令
partprobe - inform the OS of partition table changes
语法:
partprobe [-d] [-s] [devices...]
案例:
[root@c2407 ~]# partprobe /dev/sdb
3.3、blkid命令
查看磁盘分区的UUID
[root@bogon ~]# blkid
/dev/mapper/centos-root: UUID="d6636de4-d141-4761-932a-e560b5bf5023" TYPE="xfs"
/dev/sda2: UUID="kLV19b-oMZa-YAj4-Ccrt-wI8Y-OCW3-kRDjz7" TYPE="LVM2_member"
/dev/sda1: UUID="60332cad-027d-4b45-9ad6-4fe95965c253" TYPE="xfs"
/dev/sdb1: UUID="bdb1dfca-5ca4-41b3-abbd-56bc6cf7c188" TYPE="ext4"
/dev/sdb5: UUID="67d5c19f-8f7d-45d2-b07c-737fcd476567" TYPE="ext4"
/dev/mapper/centos-swap: UUID="677358a1-3914-4ec5-90d8-fcebc65a61ae" TYPE="swap"
/dev/mapper/centos-home: UUID="8ba148bb-049e-4d2d-8420-36d4d0b5300d" TYPE="xfs"
4、格式化命令
mkfs命令
用于格式化磁盘分区,生成指定的文件系统。格式化后分区中的数据将丢失!!!
语法:
mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ]
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
选项:
选项 | 作用 |
---|---|
-t | 文件系统类型 |
-v | 产生冗长输出信息。帮助信息 |
案例:
1)普通文件系统格式化
[root@bogon ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=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: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
2)swap文件系统格式化
[root@c2407 ~]# mkswap /dev/sdb3
正在设置交换空间版本 1,大小 = 5242876 KiB
无标签,UUID=a33e9ee4-2d50-4e73-86c6-07f12bac0387
5、挂载命令
挂载源: 磁盘分区或者文件系统
挂载点: 文件系统访问的入口,通常是目录。
5.1、mount命令&swapon命令
mount - mount a filesystem,挂载一个文件系统;临时挂载,重启失效!
swapon:挂载swap文件系统
语法:
mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...] device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项:
选项 | 作用 |
---|---|
-t | 指定要挂载的文件系统类型,常见的文件系统类型有ext4、ntfs、vfat等。 |
-o | 指定挂载选项,比如可以指定只读挂载(ro)、允许所有用户挂载(user)、允许执行程序挂载(exec)等。 |
-r | 以只读模式挂载文件系统。 |
-w | 以读写模式挂载文件系统 |
-a | 挂载/etc/fstab文件中定义的所有文件系统。 |
-n | 不重新挂载/etc/fstab文件中定义的文件系统。 |
-o remount | 重新挂载一个已经挂载的文件系统,可以改变挂载选项。 |
-o loop | 挂载一个loop设备上的文件系统。 |
案例:
1)普通文件系统挂载
#临时挂载文件系统
[root@c2407 ~]# mkdir /sdb1 /sdb2
[root@c2407 ~]# mount /dev/sdb1 /sdb1
[root@c2407 ~]# mount /dev/sdb2 /sdb2
[root@c2407 ~]# 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 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 147G 0 lvm /home
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part /sdb1
├─sdb2 8:18 0 5G 0 part /sdb2
├─sdb3 8:19 0 5G 0 part
└─sdb4 8:20 0 5G 0 part
sr0 11:0 1 1024M 0 rom
##文件系统没有生成或者损坏;文件系统类型不被操作系统识别。
[root@c2407 ~]# mount /dev/sdb3 /sdb3
mount: /dev/sdb3 写保护,将以只读方式挂载
mount: 文件系统类型错误、选项错误、/dev/sdb3 上有坏超级块、
缺少代码页或助手程序,或其他错误
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
#永久挂载文件系统 :写入/etc/fstab
#挂载源 挂载点 文件系统类型 挂载参数 是否备份 是否自检
[root@c2407 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jul 29 19:04:52 2024
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=93d6db3e-561a-4e35-8b4d-7e8d3c9d0e91 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /sdb1 xfs defaults 0 0
[root@c2407 ~]# mount -a #测试fstab中文件系统是否进行正藏挂载
[root@c2407 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 5.1G 45G 11% /
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /sdb1
#注意:文件系统找不到,影响系统的启动。导致的故障;无法进入操作系统。
2)swap文件系统挂载
[root@c2407 ~]# swapon /dev/sdb3
[root@c2407 ~]# free -m
total used free shared buff/cache available
Mem: 1819 475 954 10 388 1186
Swap: 7167 0 7167
[root@c2407 ~]# swapon -a #读取fstab文件中的swap文件系统进行挂载
3)挂载本地文件,如:iso镜像文件
[root@c2407 ~]# mount -o loop deepin-desktop-community-20.9-amd64.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@c2407 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 8.7G 42G 18% /
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /sdb1
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/loop0 iso9660 3.6G 3.6G 0 100% /mnt
4)挂载模拟的块设备文件
[root@c2407 ~]# dd if=/dev/zero of=./2.txt bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,0.325804 秒,322 MB/秒
##格式化
[root@c2407 ~]# mkfs.ext4 2.txt
mke2fs 1.42.9 (28-Dec-2013)
2.txt is not a block special device.
无论如何也要继续? (y,n) y
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
##挂载
[root@c2407 ~]# mkdir /2.txt
[root@c2407 ~]# mount /root/2.txt /2.txt/
[root@c2407 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 0 910M 0% /dev/shm
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 8.7G 42G 18% /
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /sdb1
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
tmpfs tmpfs 182M 0 182M 0% /run/user/0
/dev/loop0 iso9660 3.6G 3.6G 0 100% /mnt
/dev/loop1 ext4 93M 1.6M 85M 2% /2.txt
**注意:**在Rocky操作系统中,模拟的磁盘文件无法作为swap使用!!
5.2、umount命令&swapoff命令
umount - 卸载文件系统
swapoff-卸载swap文件系统
语法:
umount -a [-nrv] [-t vfstype]
umount 挂资源或者挂载点
选项:
选项 | 作用 |
---|---|
-a | 卸载所有可卸载文件系统 |
案例:
1)卸载普通文件系统
[root@c2407 ~]# umount /dev/sdb1
[root@c2407 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 8.8G 42G 18% /
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
2)swap文件系统卸载
[root@c2407 ~]# swapoff /dev/sdb3
[root@c2407 ~]# free -m
total used free shared buff/cache available
Mem: 1819 472 957 10 388 1190
Swap: 2047 0 2047
#卸载所有swap文件系统
[root@c2407 ~]# swapoff -a
[root@c2407 ~]# free -m
total used free shared buff/cache available
Mem: 1819 471 960 10 387 1191
Swap: 0 0 0
四、LVM逻辑卷
1、概括
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是 Linux 环境下对磁盘分区进行管理的⼀种机制;随着 Linux 的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小,即动态调整磁盘容量,从而提高磁盘管理的灵活性。
1.1、LVM 相关概念:
1.PV(Physical Volume):物理卷
处于 LVM 最底层,可以是物理硬盘或者分区,整个硬盘,或使用fdisk 等⼯具建⽴的普通分区,包许多默认 4MB 大小的 PE(Physical Extent,基本单元)。
2.PE(Physical Extend):物理区域
PV 中可以用于分配的最小存储单元,可以在创建 PV 的时候制定(默认为 4MB),如 1M, 2M, 4M, 8M, 32M, 64M… 组成同⼀VG 中所有 PV 的 PE大小应该相同。
3.VG(Volume Group):卷组
建立在 PV 之上,可以含有一个到多个 PV,一个或多个物理卷组合而成的整体。
4.LV(Logical Volume):逻辑卷
建立在 VG 之上,相当于原来分区的概念,不过大小可以动态改变。从卷组中分割出的一块空间,用于建立文件 系统。
2、管理命令
功能 | PV物理卷命令 | VG卷组命令 | LV逻辑卷命令 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
查询 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩容 | vgextend | lvextend | |
缩容 | vgreduce | lvreduce |
3、配置案例
3.1、构建LVM逻辑卷
#创建分区
fdisk /dev/sdb
#创建物理卷
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
#创建卷组
vgcreate testvg /dev/sdb1 /dev/sdb2 /dev/sdb3
#创建逻辑卷
lvcreate -n tstlv testvg -L 2G
[root@c2407 mapper]# mkfs.xfs /dev/mapper/testvg-testlv
meta-data=/dev/mapper/testvg-testlv isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@c2407 mapper]# mkdir /testlv
[root@c2407 mapper]# mount /dev/mapper/testvg-testlv /testlv/
[root@c2407 mapper]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 8.8G 42G 18% /
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
/dev/mapper/testvg-testlv xfs 2.0G 33M 2.0G 2% /testlv
3.2、扩容LVM逻辑卷
#基于XFS文件系统的lv扩容
[root@c2407 ~]# lvextend /dev/testvg/testlv -L +2G
Size of logical volume testvg/testlv changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
Logical volume testvg/testlv successfully resized.
[root@c2407 ~]# xfs_growfs /dev/testvg/testlv
meta-data=/dev/mapper/testvg-testlv isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, 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
data blocks changed from 524288 to 1048576
[root@c2407 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 8.8G 42G 18% /
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
/dev/mapper/testvg-testlv xfs 4.0G 33M 4.0G 1% /testlv
##基于EXT文件系统的lv扩容
[root@c2407 ~]# lvextend /dev/testvg2/testlv2 -L +2G
[root@c2407 ~]# e2fsck -f /dev/testvg2/testlv2
e2fsck 1.42.9 (28-Dec-2013)
/dev/testvg2/testlv2 is mounted.
e2fsck: 无法继续, 中止.
[root@c2407 ~]# umount /testlv2
[root@c2407 ~]# e2fsck -f /dev/testvg2/testlv2
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/testvg2/testlv2: 11/131072 files (0.0% non-contiguous), 26156/524288 blocks
[root@c2407 ~]# res
rescan-scsi-bus.sh resize2fs resizepart
reset resizecons restorecon
[root@c2407 ~]# resize2fs /dev/testvg2/testlv2
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/testvg2/testlv2 to 1048576 (4k) blocks.
The filesystem on /dev/testvg2/testlv2 is now 1048576 blocks long.
[root@c2407 ~]# mount /dev/testvg2/testlv2 /testlv2/
[root@c2407 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 894M 0 894M 0% /dev
tmpfs tmpfs 910M 11M 900M 2% /run
tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 8.8G 42G 18% /
tmpfs tmpfs 182M 12K 182M 1% /run/user/42
/dev/sda1 xfs 1014M 185M 830M 19% /boot
/dev/mapper/centos-home xfs 147G 38M 147G 1% /home
/dev/mapper/testvg-testlv xfs 4.0G 33M 4.0G 1% /testlv
/dev/mapper/testvg2-testlv2 ext4 3.9G 8.0M 3.7G 1% /testlv2
3.3、缩容LVM逻辑卷(不建议)
五、磁盘配额
1、概述
针对用户和组,用于配置用户和组在该磁盘的使用容量限制。
配额类型:
- usrquota:支持对用户的磁盘配额
- grpquota:支持对组的磁盘配额
限制类型:
- 软限制:指定一个软性的配额数据值,用户超过这个数据时,系统给出警告信息,可以打破数据值。
- 硬限制:指定一个硬性的配额值,禁止用户超过这个限制。
2、配置命令
2.1、quota命令(只有ext4)
语法:
quota [ -guv | q ]
quota [ -uv | q ] user
quota [ -gv | q ] group
选项:
选项 | 作用 |
---|---|
-g | 显示 用户所在组 的 组限额. 可选项(optional). |
-u | 和 缺省情况 一样 |
-v | 显示 文件系统上 的 限额, 即使 没有 占用 空间. |
-q | 简洁的 信息, 只 显示 超出 限额 的 文件系统. |
案例:
查看磁盘配额:
quota -v -u zhao
2.2、xfs_quota命令
语法:
xfs_quota [ -x ] [ -p prog ] [ -c cmd ] ... [ -d project ] ... [ path ... ]
xfs_quota -V
选项:
选项 | 作用 |
---|---|
-x | 启用专家模式。所有允许对配额系统进行修改的管理命令(请参阅下面的“管理员命令”部分)仅在专家模式下可用。 |
-c | cmd xfs_quota命令可以交互式运行(默认情况),也可以作为命令行参数运行。可以给出多个-c参数。命令按照给定的顺序运行,然后程序退出。 |
名称
xfs_quota - 管理XFS文件系统上的配额使用
概要
xfs_quota [ -x ] [ -p prog ] [ -c cmd ]... [ -d project ]... [ 路径... ]
xfs_quota -V
描述
xfs_quota是一个用于报告和编辑文件系统配额各个方面的实用工具。
xfs_quota的选项包括:
-c cmd xfs_quota命令可以交互式运行(默认情况),也可以作为命令行参数运行。可以给出多个-c参数。命令按照给定的顺序运行,然后程序退出。
-p prog 为提示和一些错误消息设置程序名称,默认值是xfs_quota。
-x 启用专家模式。所有允许对配额系统进行修改的管理命令(请参阅下面的“管理员命令”部分)仅在专家模式下可用。
-d project
可以使用此选项指定项目名称或数字标识符,这将单个xfs_quota命令的输出限制为指定的项目集。可以给出多个-d参数。
-V 打印版本号并退出。
#####用户命令
print 列出带有设备/项目标识符的所有路径。路径列表可以来自多个地方 - 命令行、挂载表和/etc/projects文件。
df 请参阅free命令。
quota [ -g | -p | -u ] [ -bir ] [ -hnNv ] [ -f file ] [ ID | 名称 ]...
显示单个用户名或数字用户ID的个人使用情况和限制。-h选项以类似于df(1)命令的“人类可读”格式报告。-n选项报告数字ID而不是名称。-N选项省略标题。-v选项输出详细信息。-f选项将输出发送到文件而不是标准输出。
free [ -bir ] [ -hN ] [ -f file ]
报告文件系统使用情况,非常类似于df(1)实用程序。它可以显示块、索引节点和/或实时块空间的使用情况,并显示已使用、空闲和总可用空间。如果正在使用项目配额(请参阅下面的“目录树配额”部分),它还将报告这些项目(目录树)的利用率。-h选项以“人类可读”格式报告。-N选项省略标题。-f选项将报告输出到文件而不是标准输出。
help [ 命令 ]
为所有命令或一个特定命令提供在线帮助。
quit 退出xfs_quota。
q 请参阅quit命令。
#####配额管理
XFS配额系统在许多方面与其他文件系统不同。最重要的是,XFS将配额信息视为文件系统元数据,并使用日志记录来提供更高层次的一致性保证。因此,它的管理方式不同,特别是:
quotacheck命令对XFS文件系统没有影响。在首次打开配额核算(在挂载时)时,XFS会在内部自动进行quotacheck;此后,在手动关闭配额之前,配额系统将始终保持完全一致。
XFS文件系统的根目录中不需要配额文件。
XFS区分配额核算和限制执行。在挂载XFS文件系统时必须打开配额核算。但是,可以在任何时候打开或关闭限制执行,只要配额核算已打开。mount命令的“quota”选项同时打开(用户)配额核算和执行。必须使用“uqnoenforce”选项来打开用户核算并禁用限制执行。
在根文件系统上打开配额略有不同。对于IRIX XFS,请参阅quotaon(1M)。对于Linux XFS,配额挂载标志必须通过“rootflags =”引导参数传递。
使用state来监视XFS配额子系统在各个阶段的情况是很有用的 - 它可以用于查看配额是否已打开,以及监视配额系统本身占用的空间。
xfsdump中内置了一种机制,允许在需要时备份配额限制信息以供以后恢复。
在打开配额之前,不能设置配额限制。
XFS文件系统对超级用户(用户ID为零)进行配额核算,并且该工具将显示超级用户的使用信息。但是,永远不会对超级用户执行限制(也不会对组和项目ID为零执行限制)。
XFS文件系统无论用户是否有配额限制都会进行配额核算。
XFS支持项目配额的概念,可用于实现一种目录树配额的形式(即限制目录树只能使用文件系统可用空间的一部分;或简单地跟踪树内使用的空间量或索引节点数量)。
#####管理员命令
path [ N ]
列出所有带有设备/项目标识符的路径,或将当前路径设置为列表中的第N个条目(这里描述的许多命令都使用当前路径,它标识命令指向的文件系统)。路径列表可以来自多个地方 - 命令行、挂载表和/etc/projects文件。
report [ -gpu ] [ -bir ] [ -ahntlLNU ] [ -f file ]
报告文件系统配额信息。这将报告文件系统的所有配额使用情况,对于指定的配额类型(u / g / p和/或块/索引节点/实时)。默认情况下,它以1KB为单位报告块。-h选项以类似于df(1)命令的“人类可读”格式报告。-f选项将报告输出到文件而不是标准输出。-a选项报告所有文件系统的信息。默认情况下,输出用户/组/项目的名称。如果为给定的ID未定义名称,则输出数字ID。-n选项输出数字ID而不是名称。-L和-U选项指定要报告的上下ID边界。如果指定了上/下边界,则默认情况下仅在输出中显示ID;使用-l选项,将执行查找以将这些ID转换为名称。-N选项报告信息时不包含标题行。-t选项进行简洁报告。
state [ -gpu ] [ -av ] [ -f file ]
报告总体配额状态信息。这将报告配额核算、配额执行的状态以及文件系统内配额元数据使用的范围数量。-f选项将状态信息输出到文件而不是标准输出。-a选项报告所有文件系统的状态,而不仅仅是当前路径。
limit [ -g | -p | -u ] bsoft = N | bhard = N | isoft = N | ihard = N | rtbsoft = N | rtbhard = N -d | id | 名称
设置配额块限制(bhard / bsoft)、索引节点计数限制(ihard / isoft)和/或实时块限制(rtbhard / rtbsoft)。-d选项(默认值)可用于设置将使用的默认值,否则必须指定特定的用户/组/项目名称或数字标识符。
timer [ -g | -p | -u ] [ -bir ] 值
允许修改配额执行超时(即允许在软限制被强制作为硬限制之前经过的时间量)。当前超时设置可以使用state命令显示。值参数是秒数,但也可以理解为“分钟”、“小时”、“天”和“周”的单位(以及它们的缩写“m”、“h”、“d”和“w”)。
warn [ -g | -p | -u ] [ -bir ] 值 -d | id | 名称
允许查看和修改配额警告限制(即向超配额的人发送警告的次数)。-d选项(默认值)可用于设置将使用的默认时间,否则必须指定特定的用户/组/项目名称或数字标识符。
注意:此功能当前未实现。
enable [ -gpu ] [ -v ]
为当前路径标识的文件系统打开配额执行。这要求文件系统在挂载时启用配额,并且当前活动的核算。-v选项(详细)在操作完成后显示状态。
disable [ -gpu ] [ -v ]
禁用配额执行,同时保持配额核算活动。-v选项(详细)在操作完成后显示状态。
off [ -gpu ] [ -v ]
永久关闭当前路径标识的文件系统的配额。此后只能通过卸载并重新挂载来重新打开配额。
remove [ -gpu ] [ -v ]
从当前路径标识的文件系统中删除分配给配额元数据的任何空间。文件系统上不得启用配额,否则此操作将报告错误。
dump [ -g | -p | -u ] [ -f file ]
为备份实用程序转储配额限制信息,要么输出到标准输出(默认),要么输出到文件。当然,这只是限制,而不是使用信息。
restore [ -g | -p | -u ] [ -f file ]
从备份文件恢复配额限制。文件必须采用dump命令生成的格式。
quot [ -g | -p | -u ] [ -bir ] [ -acnv ] [ -f file ]
按用户、组或项目汇总文件系统所有权。此命令使用特殊的XFS“批量统计”接口快速扫描整个文件系统并报告使用信息。即使文件系统配额未启用,也可以使用此命令,因为它是全文件系统扫描(可能也需要很长时间...)。-a选项显示所有文件系统的信息。-c选项显示直方图而不是报告。-n选项显示数字ID而不是名称。-v选项显示详细信息。-f选项将输出发送到文件而不是标准输出。
project [ -cCs [ -d depth ] [ -p path ] id | 名称 ]
-c、-C和-s选项允许维护目录树配额机制。-d允许在处理项目目录时限制递归级别,-p允许在命令行中指定项目路径(而不是/etc/projects)。所有选项将在下面详细讨论。
目录树配额
案例:
查看磁盘配额:
[root@c2407 ~]# xfs_quota -x -c 'report' /testlv
3、配置案例
#针对用户和组,用于配置用户和组在该磁盘的使用容量限制。
#实现支持磁盘配额的挂载:
mount -o ursquota,grpquota /dev/test_vg/test_lv /testlvm
#查看是否支持磁盘配额:
mount
#XFS文件系统的磁盘配额命令:
xfs_quota -x -c 'limit -u bsoft=10M bhard=50M isoft=10 ihard=20 lisi' /testlvm/
#-u:用户配额
#-g:组配额
#(b/i)soft:容量/文件数软限制,用于监视
#(b/i)hard:容量/文件数硬限制,不能超出设置的值
#查看容量配额:
xfs_quota -x -c 'report -b -u ' /testlvm/
#查看文件数量配额:
xfs_quota -x -c 'report -i -u ' /testlvm/
#在终端中切换用户的命令:
su - username
#验证:
#dd if=/dev/zero of=./test.txt bs=10M count=60
#mkdir dir{1..30}
[zhao@c2407 testlv]$ touch {1..51}.txt
touch: 无法创建"51.txt": 超出磁盘限额
[zhao@c2407 testlv]$ dd if=/dev/zero of=./1.txt bs=11M count=1
记录了1+0 的读入
记录了1+0 的写出
11534336字节(12 MB)已复制,0.0551349 秒,209 MB/秒
[zhao@c2407 testlv]$ dd if=/dev/zero of=./1.txt bs=51M count=1
dd: 写入"./1.txt" 出错: 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
50135040字节(50 MB)已复制,0.278001 秒,180 MB/秒
3.1、xfs配额
1、挂载并启用配额
mount -o usrquota,grpquota /挂载磁盘 /挂载点
永久挂载参数如下:
/dev/sdb1 /mail xfs defaults,usrquota,grpquota 0 0
2、编辑用户配额
xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isoft:3 ihard:5 用户名' /挂载目录
3、也可以针对组编辑配额
xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isoft:3 ihard:5 组名' /挂载目录
3.2、ext4配额(了解)
1、挂载
mount -o defaults,usrquota,grpquota /挂载磁盘 /挂载点
永久挂载参数如下:
/dev/sdb1 /mail ext4 defaults,usrquota,grpquota,defaults 0 0
2、生成配额文件
quotacheck /挂载点
3、启用配额;关闭配额命令用quotaoff
quotaon -ugv /挂载点
4、针对用户配额
edquota -u 用户名
也可以针对组做配额: edquota -g 组名
5、修改配置文件格式如下:
/dev/sdd1 0 30M 50M 0 8 10
六、磁盘检测与修复
1、fsck命令
fsck - 检查并修复Linux文件系统
语法:
fsck [ -sACVRTNP ] [ -t fstype ] [filesys ... ] [--] [ fs-specific-options ]
选项:
选项 | 作用 |
---|---|
-y | 检查文件系统并进行尝试修复 |
案例:
fsck.ext4 -y /dev/sdb4
2、xfs_repair命令
语法:
xfs_repair [options] device
案例:
xfs_repair -n -v /dev/sdb1
3、badblocks命令
badblocks - 查询设备的坏区块
语法:
badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] device [ blocks-count ] [ start-block
案例:
#模拟故障
[root@c2407 ~]# dd if=/dev/zero of=/dev/mapper/testvg-testlv bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000827944 秒,618 kB/秒
[root@c2407 ~]# mount /dev/mapper/testvg-testlv /testlv
mount: /dev/mapper/testvg-testlv 写保护,将以只读方式挂载
mount: 文件系统类型错误、选项错误、/dev/mapper/testvg-testlv 上有坏超级块、
缺少代码页或助手程序,或其他错误
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
badblocks /dev/mapper/testvg-testlv
七、文件系统备份与恢复
1、xfsdump命令
备份等级:
0 --完全备份(文件系统默认备份等级)
1—9 --增量备份
语法:
xfsdump -h
xfsdump [ options ] -f dest [ -f dest ... ] filesystem
xfsdump [ options ] - filesystem
xfsdump -I [ subopt=value ... ]
选项:
选项 | 作用 |
---|---|
-f | 指定备份到哪个目录 |
-L | 指定会话标签 |
-M | 指定设备标签 |
-s | 指定分区中文件或目录的相对路径 |
案例:
1)备份整个分区:
#交互式:xfsdump -f [备份存放路径] [要备份的的设备或挂载点]
xfsdump -f /opt/dump_sdb1 /dev/sda1
#非交互式:xfsdump -f [备份存放路径] [要备份的的设备或挂载点] -L [会话标签名] -M [设备标
签名]
xfsdump -f /opt/dump_sdb1_0 /dev/sdb1 -L dump_sdb1_0 -M sdb1_0
2)备份分区中某个目录或文件:
#xfsdump -f [备份存放路径] -s [要备份的目录或文件的相对路径] -L [会话标签名] -M [设
备标签名]
xfsdump -f /optdump_sda1_0 -s grub2/grub.cfg /boot -L dump_sda1_0 -M sda1_0
3)查看已备份的文件系统:
#每次备份成功后,都会在/var/lib/xfsdump/inventory 目录下生成档案信息,详细记录备份的信
息,如挂载点、挂载设备、会话标签、设备标签、备份目录等相关信息。
cd /var/lib/xfsdump/inventory
xfsdump -I
注意:
- xfsdump不支持没有挂载的文件系统备份,所以只能备份已挂载的文件系统;
- xfsdump必须使用root的权限才能操作;
- xfsdump只能备份xfs文件系统;
- xfsdump备份下来的数据只能让xfsrestore来解析;
- xfsdump是通过文件系统的UUID来分辨备份档案的,因此不能备份两个具有相同UUID的文件系统
2、xfsrestore命令
语法:
语法:xfsrestore -f [已备份文件路径] [恢复后的文件路径]
选项:
选项 | 作用 |
---|---|
-f | 指定需要恢复的备份文件 |
案例:
#先删除挂载点下的内容
#恢复文件系统数据
xfsrestore -f /opt/dump_sdb1 /sdb1
附录:xfs常用命令
xfs_admin: 调整 xfs 文件系统的各种参数
xfs_copy: 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
xfs_db: 调试或检测 xfs 文件系统(查看文件系统碎片等)
xfs_check: 检测 xfs 文件系统的完整性
xfs_bmap: 查看一个文件的块映射
xfs_repair: 尝试修复受损的 xfs 文件系统
xfs_fsr: 碎片整理
xfs_quota: 管理 xfs 文件系统的磁盘配额
xfs_metadump: 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
xfs_mdrestore: 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
xfs_growfs: 调整一个 xfs 文件系统大小(只能扩展)
xfs_logprint: print the log of an XFS filesystem
xfs_mkfile: create an XFS file
xfs_info: expand an XFS filesystem
xfs_ncheck: generate pathnames from i-numbers for XFS
xfs_rtcp: XFS realtime copy command
xfs_freeze: suspend access to an XFS filesystem
xfs_io: debug the I/O path of an XFS filesystem
总结
在本地环境下要先做好快照,测试时出现问题可以快速回复;
在生成环境下,一定要慎之又慎。