一、Linux系统中查看磁盘及挂载情况的命令
1.1 df命令
df -h
可以显示磁盘挂载情况,并以可读的方式展示各分区的使用情况、剩余空间等信息。
1.2 mount命令
mount
可以显示已挂载的文件系统及其挂载点。
1.3 cat命令
cat /proc/mounts
可以查看已挂载的文件系统信息,包括文件系统类型、挂载设备、挂载点等。
1.4 lsblk命令
lsblk
可以显示系统的块设备信息,包括磁盘、分区、挂载点等。
1.5 blkid命令
blkid
可以显示块设备的UUID等信息,包括已挂载的和未挂载的设备。
1.6 fdisk命令
fdisk -l
可以列出系统中的磁盘和分区信息。
1.7 parted命令
parted -l
可以显示磁盘的分区信息,同时还可以进行更多的磁盘操作,如创建分区、调整分区大小等。
以上命令中,df和mount是最常用的两个命令,可以较为直观地查看磁盘挂载情况。而cat、lsblk、blkid和fdisk命令则提供了更详细的信息,适合用于特定的需要。可以根据实际需求选择合适的命令来查看磁盘挂载情况。
二、调整 Linux 系统 swap/home/root等分区 大小
2.1 Linux 系统 swap/home/root等分区简介
在安装 Linux 操作系统(CentOS、Ubuntu、Debian 等)时,如果采用分区向导提供的各类标准分区方案对系统盘进行分区,基本上给 home 的分区分配的磁盘空间都很大(占比能达到 80% 左右),其它分区(/ 跟分区、/var 分区、swap分区等)却很小。可在实际生产应用中,home 分区并不需要那么大,大部分数据是放在 / 目录下,因此安装好系统后就需要调整这些分区大小,不然在生产环境当中,容易导致硬盘分区写满溢出,没有写入权限。
Tips: 安装 Linux 系统时建议对系统盘分区采用 “使用整个磁盘并配置LVM” 向导 进行分区,并且 将 /home、/var 和 /tmp 分别放在单独分区。在对磁盘进行分区时,推荐设置分区向导使用部分(40% - 50%)系统盘卷组,这样安装好 Linux 系统后,就可以使用逻辑卷管理(LVM)增加逻辑卷(分区)容量,所以安装时使用一部分系统盘空间 可以提高系统灵活性。
如下图为安装 debian 12.6 时,“使用整个磁盘并配置LVM” 向导 进行分区,并将 /home、/var 和 /tmp 分别放在单独分区,然后 设置分区向导使用 50% 的系统盘卷组(保留50% 的系统盘空间带安装好后做动态分配)。
安装好系统后, 上踹 df -h
命令可以查看各分区的信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
root@debian-5:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 63G 0 63G 0% /dev
tmpfs 13G 2.1M 13G 1% /run
/dev/mapper/debian--vg-root 122G 7.6G 109G 7% /
tmpfs 120G 0 120G 0% /dev/shm
tmpfs 5.0M 12K 5.0M 1% /run/lock
/dev/nvme0n1p2 456M 150M 282M 35% /boot
/dev/mapper/debian--vg-tmp 101G 48K 97G 1% /tmp
/dev/mapper/debian--vg-var 108G 364M 103G 1% /var
/dev/mapper/debian--vg-home 331G 36M 314G 1% /home
/dev/nvme0n1p1 511M 5.9M 506M 2% /boot/efi
/dev/md127 22T 24K 21T 1% /data
tmpfs 13G 44K 13G 1% /run/user/1000
|
2.2 vgdisplay 命令查看LVM的信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
root@debian-5:~# vgdisplay
--- Volume group ---
VG Name debian-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 5
Open LV 5
Max PV 0
Cur PV 1
Act PV 1
VG Size 930.53 GiB
PE Size 4.00 MiB
Total PE 238216
Alloc PE / Size 172084 / 672.20 GiB
Free PE / Size 66132 / <258.33 GiB
VG UUID hLHdz3-ntzI-vlHI-SoSO-yE4e-ydnJ-clvsBw
|
这里可以看到,系统盘总共有 930.53G(VG Size),已经分配(Alloc PE / Size) 672.2G,未分配(Free PE / Size) 258.33G。
未分配(Free PE / Size)的 258.33G 空闲空间就可以使用 LVM 进行手动分配给各分区或创建新分区。
2.3 减少 home 分区大小
Step 1:设置(减少)/home 分区大小
1
2
3
|
umount /home
resize2fs -p /dev/mapper/debian--vg-home 100G
mount /home
|
正常情况下,只需要三条命令就可以把 home 分区大小 100G 了。
如果是新系统,执行 umount /home
这条命令是没问题,如果是非全新系统,可能就会出现其他程序在占用 home,那么就得先执行 fuser -m /home
释放一下占用。
一般情况下,执行 resize2fs -p /dev/mapper/debian--vg-home 100G
这条命令都会提示 运行e2fsck -f /dev/mapper/debian--vg-home
命令,这时按提示先执行提命令(e2fsck命令)再重新执行 resize2fs 命令。
重新 mount /home
后,使用 df -h
命令就可以看到 /home 分区被设置成了 100G 大小了。
Step 2:缩小(减少)home 逻辑卷组大小
第一步 中的命令减少的是 系统 home 分区的大小,并不是 home 分区所在的逻辑卷组(LV)的大小,使用下面的 lvreduce 将缩小 home 分区所在的逻辑卷组(LV)的大小(多余的空间将释放到 Free PE / Size 池中)。
1
|
lvreduce -L 100G /dev/mapper/debian--vg-home
|
使用 lvreduce
指令用于减少LVM逻辑卷占用的空间大小。可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。建议在新系统下进行调整,如果项目在投入使用阶段了,需要做好数据备份。
2.4 对交换分区 swap 空间进行扩大
swap 交换分区就是内存的交换,一般建议设置成硬件内存的2倍。
1
2
3
4
5
6
7
8
9
10
11
|
free -m # 查看 Swap 分区大小
swapoff /dev/mapper/debian--vg-swap_1 # 关闭 swap
# 扩展 /dev/mapper/mapper/debian--vg-swap_1,增加48G
lvextend -L +48G /dev/mapper/debian--vg-swap_1
# 将 /dev/mapper/mapper/debian--vg-swap_1 设置为swap分区
mkswap /dev/mapper/debian--vg-swap_1
swapon /dev/mapper/debian--vg-swap_1 # 打开 swap
|
2.5 对 / 分区空间进行扩大
1
2
3
4
5
6
7
8
9
|
vgdisplay # 查看空闲空间大小(Free PE / Size)
# 将 root 逻辑分区卷组 扩大(添加)300G 空间(New Size = Source Size + Add Size)
lvextend -L +300G /dev/mapper/debian--vg-root
# 将系统 root 分区设置为 逻辑分区卷组 大小
resize2fs -p /dev/mapper/debian--vg-root
df -h # 查看修改后的分区情况
|
2.6 设置 tmpfs 大小
编辑 /etc/fstab 文件,在其中添加 tmpfs 配置项后
1
2
3
|
echo "tmpfs /dev/shm tmpfs defaults,size=120G 0 0" >> /etc/fstab
systemctl daemon-reload # 使 修改生效
|
三、RAID磁盘阵列的原理与搭建
3.1 RAID磁盘阵列的原理简介
磁盘阵列(Redundant Arrays of Independent Disks,RAID) 是由 “多个独立磁盘构成的具有冗余能力的阵列”之意(其中一块盘坏了,数据不丢失)。 磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。 磁盘阵列还能利用同位检查(Parity Check)的观念,在阵列中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中(也就是坏了一块盘,拔掉,插入新盘,数据还能恢复到新盘,利用奇偶校验)
Tips: RAID可以预防数据丢失,但是它并不能完全保证数据不会丢失,所以大家使用RAID的同时还是注意备份重要的数据。
RAID的创建有两种方式:
- 软RAID:通过操作系统软件(mdadm)来实现;
- 硬RAID:使用硬件阵列卡;
RAID几种常见的类型:
RAID类型 |
RAID0 |
RAID1 |
RAID10 |
RAID5 |
RAID6 |
别名 |
条带 |
镜像 |
分布式奇偶校验条带 |
双重奇偶校验条带 |
镜像加条带 |
最少磁盘数 |
2 |
2 |
4 |
3 |
4 |
最大容错磁盘数 |
无 |
n-1 |
n/2 |
1 |
2 |
数据安全性 |
完全没有 |
最佳 |
最佳 |
好 |
比 RAID5 好 |
理论写入性能 |
n |
1 |
n/2 |
<n-1 |
<n-2 |
理论读出性能 |
n |
n |
n |
<n-1 |
<n-2 |
可用容量 |
100% |
50% |
50% |
(n-1)/n |
(n-2)/n |
一般应用 |
强调性能但数据不重要的环境 |
数据与备份 |
服务器、云系统常用 |
数据与备份 |
数据与备份 |
在企业中用的最多的是:raid1、raid5和raid10。不过随着云的高速发展,阿里云,腾讯云等供应商一般可以把硬件问题解决掉。(你在用云的时候,会关注供应商底层是用什么raid类型吗)
3.2 使用4块SSD盘做 软Raid5
创建 软Raid5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# 查看磁盘信息
lsblk -l
fdisk -l
# 安装 mdadm
apt install -y mdadm
# 创建 软 raid5 盘
mdadm -Cv /dev/md0 -n4 -l5 /dev/sd[a-d] # 创建配置raid5
mdadm /dev/md0 -a /dev/sdf # 创建热备盘(可选)
# 等效于上述两条命令
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{a,b,c,d}
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd[a-d]
# 参数解释
# -C 创建的意思
# /dev/md0 创建的raid5 磁盘名字
# -C 下的 -a yes|no 是否自动创建目标RAID设备的设备文件
# -l Raid的等级
# -n 使用多少块硬盘来创建当前Raid
# -x 空闲盘,也就是热备盘,当正常的盘出问题,这块盘就能从 share状态 转换到 spare rebuilding状态
# /dev/sd{a,b,c,d} 硬盘块名字,也可以写长名字 或 /dev/sd[a-d]
# 扩展命令
mdadm -D /dev/md0 # (查看创建的raid)
mdadm /dev/md0 -f /dev/sdb # (停用磁盘)
mdadm /dev/md0 -r /dev/sdb # (移除磁盘)
# 格式化磁盘,格式方式为ext4
mkfs.ext4 /dev/md0
# 挂载磁盘
mkdir /data
mount /dev/md0 /data
df -h # 查看磁盘挂载情况
# 查看磁盘的 UUID 等信息
blkid /dev/md0
# 在 /etc/fstab 中添加开机自动挂载磁盘
echo "UUID=$(blkid /dev/md0 | awk -F'"' '{print $2}') /data ext4 defaults,nofail 0 0" >> /etc/fstab
# 或
echo "UUID=$(blkid /dev/md0 | awk -F'"' '{print $2}') /data ext4 defaults,noatime 0 0" >> /etc/fstab
|
删除raid5
1
2
3
4
5
6
7
8
9
10
|
mdadm --stop /dev/md0 # 停止RAID阵列,并确保数据已经同步到磁盘:
rm /etc/mdadm/mdadm.conf # 删除RAID配置文件,以确保系统不会在启动时自动重建RAID:
# 从/proc/mdstat和/etc/mdadm/mdadm.conf中删除任何关于RAID的记录。
mdadm --misc --zero-superblock /dev/sdX1 从/dev/中删除RAID设备
# 其中/dev/sdX1是RAID的一个成员,例如/dev/sdb1。
# 请注意,执行这些操作会导致RAID阵列中的所有数据丢失,所以在执行之前请确保你已经备份了所有重要数据。如果你不确定,请咨询专业的数据恢复专家
|