linux磁盘概述
1、管理磁盘的相关命令
fdisk:用于创建、修改和删除磁盘分区。可以使用 fdisk 命令对磁盘上的分区表进行操作。
parted:提供了更高级的磁盘分区管理功能。可以使用 parted 命令创建、修改和删除磁盘分区。
lsblk:列出系统上的块设备信息,包括磁盘和分区。可以显示设备的大小、挂载点等信息。
df:显示文件系统使用情况,包括文件系统的挂载点、已用空间、可用空间等信息。
du:计算目录或文件的磁盘使用情况。可以使用 du 命令查看特定目录或文件占用的磁盘空间。
mount:将文件系统挂载到指定的挂载点。可以使用 mount 命令挂载磁盘分区、移动设备等。
umount:卸载已挂载的文件系统。可以使用 umount 命令卸载磁盘分区或移动设备。
mkfs:用于创建文件系统格式化。可以使用 mkfs 命令创建 ext4、XFS、Btrfs 等不同类型的文件系统。
fsck:用于检查和修复文件系统。可以使用 fsck 命令检查和修复文件系统中的错误。
lvm:LVM(Logical Volume Manager)提供了一系列命令来管理逻辑卷和卷组。例如,创建物理卷、创建卷组、创建逻辑卷等。
2、linux 文件系统
ext系列文件系统
Linux 系统中最常用和成熟的文件系统,是扩展文件系统(extended file system)的不同版本。下面是 ext 系列文件系统的详细介绍:
ext2: ext2 是最早的 ext 文件系统版本,它是在 Linux 内核中一直使用的文件系统。它支持标准的 POSIX 文件权限、硬链接和软链接等基本功能。然而,ext2 文件系统缺乏一些高级功能,如日志记录,这使得文件系统在系统意外关机或崩溃时可能需要进行长时间的文件系统检查。 ext3: ext3 是 ext2 文件系统的一个改进版本,引入了日志记录(journaling)的功能。日志记录可以提供快速的文件系统恢复,减少了系统启动时的文件系统检查时间。与 ext2 相比,ext3 文件系统具有更好的可靠性和冗余性。 ext4: ext4 是 ext3 文件系统的下一代版本,也是当前 Linux 系统中最常用的文件系统。ext4 在 ext3 的基础上做了一系列改进和优化,提供更高的性能、更大的文件系统和更好的可靠性。ext4 支持更大的文件和磁盘容量,使用了更先进的数据结构,以提供更快速的文件访问和更好的磁盘空间管理。 ext 系列文件系统具有较高的兼容性,可以在许多 Linux 发行版中使用。它们支持标准的文件和目录访问权限、链接和软链接、硬链接、数据恢复、数据压缩等常见功能。同时,它们也支持文件系统扩展、快照功能和在线文件系统检查等高级特性。
总的来说,ext 系列文件系统是 Linux 中使用最普遍且成熟的文件系统,它们提供了可靠、高性能的文件存储解决方案,并与大多数 Linux 系统兼容。
XSF文件系统
XFS 是一个先进的高性能日志文件系统,最初由 SGI 开发。它具有高速读写能力、可靠性和可扩展性,适用于大规模存储系统。XFS 使用了一种称为“延迟分配”的技术,可提高写入操作的性能。
XFS 已成为许多常见 Linux 发行版的默认文件系统之一。通过在 Linux 系统中使用 XFS 文件系统,可以获得高性能、可靠性和可扩展性的存储解决方案。
XSF文件系统的特性:
高性能:
XFS 使用了一些优化技术,如类似延迟分配的方式,以提高数据写入操作的性能。它具有高吞吐量和低延迟,适用于需要处理大量读写操作的场景。XFS 还能有效地利用大型存储设备的性能。 可靠性:
XFS 支持元数据和日志校验和修复功能,确保数据完整性与可靠性。它具有可靠的错误检测和修复机制,可以在发生故障或损坏时对文件系统进行恢复,同时通过日志记录保护了数据的一致性。 可扩展性:
XFS 被设计为可扩展文件系统,能够处理大容量存储和大文件。它支持庞大的文件系统,可管理大量的文件和目录。XFS 还提供动态增加和减少文件系统大小的能力,使其能够适应不断变化的存储需求。 快照:
XFS 支持快照功能,允许在不中断文件系统正常运行的情况下,创建系统状态的一致副本。这对于备份和恢复操作非常有用,可以保证文件系统的数据一致性和完整性。 小文件处理:
XFS 通过 B+ 树索引和延迟分配技术,有效地处理大量小文件的存储和访问。它使用了现代化的数据结构和算法,提供了快速的文件定位和访问能力。 XFS 是一个成熟、可靠且高性能的文件系统,适用于大规模存储和高吞吐量的环境,如高性能计算、大型数据库、视频处理和图形渲染等情景。
::: 注意:
在LVM选择文件系统的时候,最好选择ext4文件系统,在ext4文件系统下我们可以无损的对逻辑卷扩容或者缩容,
而XFS文件系统,只能对逻辑卷进行无损扩容,并不能进行无损缩容,如果一定要缩容,就要重新格式化逻辑卷,这就导致存储在逻辑卷中的数据丢失。 :::
JFS系统文件系统
JFS(Journaled File System)是一个高性能的日志文件系统,最初由 IBM 开发。下面是对 JFS 文件系统的详细介绍:
高性能:
JFS 具有高速的文件访问和高吞吐量的特点,适用于大规模的存储系统和高负载环境。它通过使用高级数据结构和算法来提供快速的文件定位和读写操作。 日志记录:
JFS 采用了日志记录(journaling)技术,可以提供快速的文件系统恢复。日志记录会将文件系统的变更操作记录在一个事务日志中,确保在系统意外关机或崩溃时能够快速回滚或恢复文件系统到一个一致的状态。 可靠性:
JFS 具备良好的文件系统完整性和数据保护机制。它使用校验和修复技术来检测和修复文件系统中的错误,确保数据的完整性和一致性。JFS 还支持在线文件系统检查功能,可以检测和修复文件系统中的错误,无需卸载文件系统。 扩展性:
JFS 能够管理大量的文件和目录,并支持大型文件系统。它使用高效的文件索引和文件分配算法,使得文件访问和管理能够高效运行。JFS 还支持文件系统的在线扩展,可以动态地增加文件系统的大小、容量和性能。 大文件处理、:
JFS 对于大文件的处理非常高效,适用于存储和处理大型的媒体文件、数据库文件等。它使用了索引和缓存机制,以支持快速的随机访问和高吞吐量的顺序访问。 JFS 是一个成熟的文件系统,在 IBM AIX 系统和一些 Linux 发行版中得到了广泛应用。它适用于大型服务器、高负载环境和对性能有要求的应用场景。
3、Linux磁盘实操
查看linux系统磁盘结构
1、fdisk
fdisk
是一个命令行工具,用于对硬盘进行分区操作。它是 Linux 和其他类 Unix 操作系统中常见的磁盘管理工具之一。fdisk
工具允许用户创建、删除、调整和查看硬盘上的分区。fdisk
命令是不支持GPT分区表
#列出系统所有的磁盘和分区信息,(只能列出MBR分区表的信息)
fdisk -l
2、parted parted 是一个磁盘分区工具,具有更高级的功能和更灵活的分区操作。与基本的 fdisk 工具相比,parted 提供了更多的选项和功能,可以用于创建、删除、调整、移动和复制磁盘分区。
使用 parted,你可以操作磁盘上的分区表,包括创建新的分区、更改分区的大小和位置、删除分区以及查看分区信息。同时,parted 支持更多的分区表格式,包括 MBR(主引导记录)和 GPT(GUID 分区表)。
#和fdisk -l一样 列出系统上的磁盘和分区信息。(支撑GPT分区表的显示)
parted -l
3、lsblk
lsblk
是一个命令行工具,用于列出系统中的块设备(包括磁盘和分区)以及它们的相关信息。
lsblk
4、df
使用 df
命令,你可以查看文件系统的挂载点以及与其相关的磁盘容量、已使用空间、可用空间和使用百分比等信息。
df -h
linux进行硬盘格式化
1、mkfs
mkfs
是一个用于创建文件系统的命令行工具。它用于在指定的设备或分区上创建新的文件系统。
使用 mkfs
命令,你可以选择不同的文件系统类型,例如 ext4、NTFS、FAT32 等,根据需要来创建相应的文件系统。下面是一些常见的 mkfs
选项和用法:
创建 ext4 文件系统:
mkfs.ext4 /dev/sdxx
创建 NTFS 文件系统:
mkfs.ntfs /dev/sdxx
创建 FAT32 文件系统:
mkfs.vfat /dev/sdxx
2、parted创建分区
parted /dev/sdb
# 设置格式类型为gpt
mklabel gpt
#创建p1分区
mkpart p1 1 500G
#创建p2分区
mkpart p2 500G 1500G
#创建p3分区,使用剩余空间
mkpart p3 1500G -1
#设置分区是第3个,将它设置为LVM类型
set 3 lvm on
#打印查看分区
print
#退出
quit
parted对硬盘操作状态命令帮助列表
align-check 检查分区N的类型(min|opt)是否对齐
help 打印通用求助信息,或关于[指令]的帮助信息
mklabel 创建新的磁盘标签 (分区表)
mkpart 创建一个分区
name 给指定的分区命名
print 打印分区表,或者分区
quit 退出程序
rescue 修复丢失的分区
resizepart 调整分区大小
rm 删除分区
select 选择要编辑的设备,默认只对指定的设备操作,这里可以改变指定的设备
disk_set 更改选定设备上的标志
disk_toggle 切换选定设备上的标志状态
set 更改分区的标记
toggle 设置或取消分区的标记
unit 设置默认的单位
version 显示版本信息
3、fdisk创建分区
#fdisk -l命令,查看新增硬盘信息
fdisk -l
#使用fdisk /dev/sda 进入对硬盘的操作状态,输入m,来查看命令列表
fdisk /dev/sda
fdisk对硬盘的操作状态的命令帮助列表
a:切换引导标志 (bootable flag)。该选项允许你设置或取消设置分区的引导标志,以指示分区是否可引导。
b:编辑 BSD 磁盘标签 (BSD disklabel)。用于编辑 BSD 磁盘标签结构,该结构是某些 UNIX 系统上的分区方案。
c:切换 DOS 兼容标志 (dos compatibility flag)。该选项允许你设置或取消设置分区的 DOS 兼容标志,该标志表示分区表是否符合 DOS 兼容标准。
d:删除一个分区。通过选择该选项并输入分区号,可以删除指定的分区。
g:创建一个新的空 GPT 分区表 (GUID 分区表)。该选项用于创建一个新的 GPT 分区表,以替换当前的分区表。
G:创建一个新的 IRIX (SGI) 分区表。该选项用于创建一个新的 IRIX (SGI) 分区表,该分区表是用于 Silicon Graphics (SGI) 系统的磁盘分区方案。
l:列出已知的分区类型。该选项将显示已知的分区类型列表。
m:打印此菜单。该选项将显示 fdisk 命令的菜单,其中包含各个可用选项及其描述。
n:添加一个新分区。该选项用于添加一个新分区。
o:创建一个新的空 DOS 分区表。该选项用于创建一个新的 DOS 分区表,以替换当前的分区表。
p:打印分区表。该选项用于打印当前的分区表。
q:在不保存更改的情况下退出。该选项允许你退出 fdisk 工具而不保存对分区表的任何更改。
s:创建一个新的空 SUN 磁盘标签 (Sun disklabel)。该选项用于创建一个新的 SUN 磁盘标签结构,该结构是 Sun Microsystems 的分区方案。
t:更改分区的系统 ID (system ID)。该选项用于更改指定分区的系统 ID,以指定分区的类型。
u:更改显示/输入单位。该选项允许你更改 fdisk 列出分区大小时使用的单位,可以选择使用扇区 (sectors)、千字节 (kilobytes) 或兆字节 (megabytes)。
v:验证分区表。该选项用于验证当前分区表的完整性。
w:将分区表写入磁盘并退出。该选项会将对分区表的所有更改写入磁盘,并退出 fdisk 工具。
x:额外功能(仅限专家)。该选项提供进一步的功能以供专家使用。
在此我们需要的是新建分区,所以按选择n选择新建一个新的分区
P primary :代表主分区
e extended :代表扩展分区
磁盘分区挂载硬盘
#fdisk磁盘分区
fdisk /dev/sda
#查看磁盘xinx
lsblk
#格式化磁盘sda1
mkfs.xfs /dev/sda1
#或格式化ext4
mkfs.ext4 /dev/sda1
#验证分区格式并查看UUID
lsblk -f
#临时挂载
mount /dev/sda1 /newdir
#永久自动挂载,编辑fstab
vi /etc/fstab
#在文件末尾添加以下内容:
/dev/sda1 /newdir ext4 defaults 0 0
#或者使用UUID挂载,查看UUID的3种方式
UUID=4db9a558-6865-4145-a0c5-8771cefa1516 /newdir ext4 defaults 0 0
#立即挂载
mount -a
#卸载磁盘
umount /dev/vdb1
4、LVM管理
LVM相关概念
物理卷(Physical Volume,PV):物理卷是LVM中的基本单元,可以是硬盘、SSD或分区。使用pvcreate命令将物理磁盘或分区转换为物理卷。
卷组(Volume Group,VG):卷组是由一个或多个物理卷组成的逻辑单元,相当于一个存储池。通过使用vgcreate命令创建卷组,将物理卷添加到卷组中。
逻辑卷(Logical Volume,LV):逻辑卷是从卷组划分出来的独立存储单元,类似于硬盘上的一个分区。使用lvcreate命令创建逻辑卷,可以指定逻辑卷的大小和格式。
快照卷(Snapshot Volume):快照卷是逻辑卷的实时副本,用于数据备份、测试或还原到之前的状态。使用lvcreate命令创建逻辑卷时,可以指定为快照卷。
物理区(Physical Extent,PE):物理区是卷组中的最小分配单元,通常是4MB或更小的大小。卷组中的空间被划分为一组物理区,逻辑卷和物理卷都在物理区级别上进行分配。
扩展(Extent):扩展是逻辑卷和物理卷的分配单位,可以理解为一个逻辑层面的区块,大小通常与物理区相同。
LVM的常用管理命令:
PV(物理卷) | VG(卷组) | LV(逻辑卷) | |
---|---|---|---|
Scan 扫描 | pvscan | vgscan | lvscan |
Create 创建 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 移除 | pvremove | vgremove | lvremove |
Extend 扩展 | vgextend | lvextend | |
Reduce 减少 | vgreduce | lvreduce | |
s 简写显示 | pvs | vgs | lvs |
LVM实操
新增硬盘
#查看系统上的磁盘分区信息
lsblk
#创建物理卷(PV)
pvcreate /dev/sda
#查看物理卷信息
pvdisplay
#创建卷组(VG)
vgcreate xo_disk /dev/sda
#查看卷组信息是否成功
vgdisplay
#加入卷组,创建逻辑卷(LV)
#创建 -L卷大小 -n 逻辑卷名称 / 卷组名称
lvcreate -L 50G -n my_data xo_disk
#查看逻辑卷是否创建成功
lvdisplay
#格式化逻辑卷
#注意:在LVM选择文件系统的时候,最好选择ext4文件系统,在ext4文件系统下我们可以无损的对逻辑卷扩容或者缩容,而XFS文件系统,只能对逻辑卷进行无损扩容,并不能进行无损缩容,如果一定要缩容,就要重新格式化逻辑卷,这就导致存储在逻辑卷中的数据丢失。
mkfs.ext4 /dev/xo_disk/my_data
#挂载/建被挂载目录xo
mkdir /xo
#挂载/查看UUID
lsblk -f
#永久自动挂载,编辑fstab
vi /etc/fstab
#挂载到/xo 在文件末尾添加以下内容:
UUID=c6687d85-ff5b-41d6-972d-c9b987678bf6 /xo ext4 defaults 0 0
#或者路径挂载
/dev/xo_disk/my_data /newdir ext4 defaults 0 0
#或
/dev/mapper/xo_disk-my_data /newdir ext4 defaults 0 0
#立即挂载
mount -a
#临时挂载
mount /dev/xo_disk/my_data /xo
#临时卸载,重启机器之后又恢复到挂载状态
umount /xo
扩容硬盘
#例如扩容50G到主机cs的cs-root
#查看系统上的磁盘分区信息
lsblk
#创建物理卷(PV)
pvcreate /dev/sda4
#把新PV扩展进主机卷组cs
vgextend cs /dev/sda4
#扩展逻辑卷50G
lvextend -L+49G /dev/mapper/cs-home
#扩展文件系统以适应新的逻辑卷大小
#对于ext4文件系统:
resize2fs /dev/cs/home
#对于XFS文件系统:
xfs_growfs /dev/cs/home
#-或
xfs_growfs /home
# 查看卷组信息
vgdisplay
# 查看逻辑卷cs-root的信息
lvdisplay /dev/mapper/cs-home
#结束查看磁盘信息
df -h
LVM的改
#LVM增、缩空间,这条命令可以指定空间大小
lvresize -L <逻辑卷的大小> /dev/<卷组名称>/<逻辑卷名称>
lvresize -L 10G /dev/xo_disk/my_data
##在线调整大小ext4格式
resize2fs /dev/xo_disk/my_data
#或xfs格式
xfs_growfs /dev/xo_disk/my_data
##加上参数 --resizefs在线自动调整文件系统大小
lvresize -L 10G /dev/xo_disk/my_data --resizefs
#------------------------------------------------
#LVM增空间扩容
lvextend -L <逻辑卷的大小> /dev/<卷组名称>/<逻辑卷名称>
lvextend -L+10G /dev/mapper/cs-home
lvextend -L+10G /dev/mapper/cs-home --resizefs
#------------------------------------------------
#LVM缩减空间
lvreduce -L <逻辑卷的大小> /dev/<卷组名称>/<逻辑卷名称>
lvreduce -L-10G /dev/mapper/cs-home
lvreduce -L-10G /dev/mapper/cs-home --resizefs
注意
#显示目标忙,先结束挂载xo目录的进程
fuser -km /xo
LVM的删
要删除LVM逻辑卷,需要先卸载逻辑卷,然后使用才能以下命令来进行删除操作:
#先卸载逻辑卷 umount /<逻辑卷挂载点>
umount /xo
#删除 lvremove /dev/<卷组名>/<逻辑卷名>
lvremove /dev/xo_disk/my_data
这样就可以成功将逻辑卷删除。
删除物理卷、和卷组的命令和其类似它们分别为:
#vgremove /dev/<卷组名> # 删除卷组(VG)
vgdisplay
vgremove /dev/xo_disk
#pvremove /dev/<设备名> # 删除物理卷(PV)
pvdisplay
pvremove /dev/sdb
#注意:先删除卷组(VG)再删除物理卷(PV)
LVM的增
前面操作有,再重复下步骤
#查看系统上的磁盘分区设备信息
lsblk
#创建物理卷(PV)
pvcreate /dev/<设备名>
pvcreate /dev/sdxx
#创建卷组(VG)
vgcreate <卷组名> /dev/<设备名>
vgcreate xx /dev/sdxx
#创建逻辑卷(LV)
#创建 -L卷大小 -n 逻辑卷名称 / 卷组名称
lvcreate -L 100G -n yy xx
LVM的快照
1、创建快照逻辑卷
在这一步其实和创建逻辑卷的指令是差不多的 ,只是参数需要变为-s
快照的容量最少也要和原始逻辑卷的大小一致,可以保证原始卷所有的数据都能写入到快照中。
#物理卷(PV)和卷组(VG)和逻辑卷(LV)创建之后
#创建快照逻辑卷(LV)data_snapshot
lvcreate -L 10G --snapshot --name data_snapshot xo_disk/my_data
lvcreate -L 10G --snapshot -n data_snapshot xo_disk/my_data
lvcreate -L 10G -s -n data_snapshot xo_disk/my_data
#查询
lvs
2、快照的恢复使用
快照逻辑卷和普通的逻辑卷的增删改查方式基本都一样
快照的使用
如果只是单文件需要恢复,可以直接去快照挂载的路径去copy文件到原始文件系统当中,可以l一般文件的copy方法一致。如果原始文件系统出现逻辑错误,或者大量内容被误操作,我们可以通过lvconvert -merge命令来执行合并快照恢复操作。
#临时挂载--拷贝只用
mount /dev/xo_disk/data_snapshot /xo
#恢复快照lvconvert -merge <快照路径>
#合并前,需要把原始逻辑卷先卸载
umount /xo
#执行合并恢复快照
lvconvert --merge /dev/xo_disk/data_snapshot
#再立即挂载
mount -a
快照在合并以后,之前的快照就会消失,留下来的就是一个完整原始逻辑卷,如果有需要可以在创建一个快照
删除快照
lvremove /dev/xo_disk/data_snapshot
LVM镜像
创建一个带镜像的逻辑卷,必须是在创建逻辑卷之前就规划好,如果是想在后期再添加逻辑卷基本是不可能的。
在创建镜像逻辑卷前,要保存物理卷(PV)在2个以上,这是为了提供数据冗余和容错性,以确保数据的可用性和可靠性。因为数据卷和镜像卷都要1个物理卷,最好是两块不同的硬盘,这样才能最好保证数据的可靠性。
把之前的LVM各类卷全部remove掉,重新创建一个卷组(VG)
创建镜像
#lvcreate -L <逻辑卷大小> -m<镜像数列(冗余级别)> -n <镜像名> <物理卷路径1(数据卷和镜像卷)><物理卷路径2(数据卷和镜像卷)><物理卷路径3(日志卷)>
lvcreate -L 5G -m1 -n home_mirror my_disk /dev/sdb /dev/sdc /dev/sdd
现在已经都已经创建好了一个镜像逻辑卷。
再来把这快镜像逻辑卷格式化并挂载。
使用命令
mkfs.ext4 /dev/my_disk/mirror_home && mkdir -p /home/mirror_home && mount /dev/my_disk/mirror_home /home/mirror_home
已经成功的格式化,并挂载到/home/mirror_home 挂载点下。
破坏镜像
模拟破坏使用命令:
dd if=/dev/zero of=/dev/sdb count=10 bs=1M
#dd 是一个强大的命令行工具,可以用于复制文件、设备和数据流。在你给出的命令中,以下是各个选项的含义:会导致硬盘里的数据损坏。
if=/dev/zero:指定输入文件为 /dev/zero,该设备会产生无限个零字节。
of=/dev/sdb:指定输出文件为 /dev/sdb`,该设备将被填充为零字节。
count=10:设置要复制的块数为 10。
bs=1M:设置每个块的大小为 1MB。
通过执行这个命令,dd 将从 /dev/zero 中读取 10 个 1MB 大小的块,并将其写入 /dev/sdb,从而在 /dev/sdb 上创建一个大小为 10MB 的文件。
使用“ df -h ”和“ lsblk ” 查看,再使用命令“ lvs -a -o +devices ”对比查看此时我们发现/dev/sdb 已经处于unknown,表示设备未被正确识别或无法访问。
因为我们做了镜像卷,所以还是可以访问该卷中的数据。
现在我们把损坏的硬盘移除掉使用如下命令:
vgreduce --removemissing --force my_disk
#--removemissing:指定要移除缺失物理卷的操作。
#--force:强制执行操作,即使在某些情况下可能会导致数据丢失。
#当执行这个命令时,LVM 会从卷组 vg_test 中移除任何标记为缺失的物理卷。缺失的物理卷指的是在卷组中定义了但当前无法访问的物理卷。这可能是由于物理卷故障、设备不可用或其他原因导致的。
#移除缺失的物理卷的目的是确保卷组的正常运行,并使其仅依赖于可用的物理卷。然而,需要谨慎操作并确认执行此操作不会导致数据丢失。因为 --force 选项会强制执行操作,即使存在数据丢失的风险。
恢复镜像
把刚移除的硬盘重新加入到物理卷、卷组中
pvcreate /dev/sdb
vgextend my_disk /dev/sdb
镜像盘恢复
lvconvert --repair /dev/my_disk/mirror_home
5、挂载windows共享磁盘
mount -t cifs -o username=administrator,password=xxxx //1.2.2.9/xx /dada/ioo