linux磁盘硬盘管理

一、物理磁盘管理

(一)交换分区swap

1、 创建swap分区

1
2
[root@aisyun ~]# fdisk /dev/sdb* 		#分内存1.5倍大小
[root@aisyun ~]# mkswap /dev/sdb* #格式化为swap

2、挂载、卸载swap

1
[root@aisyun ~]# swapon /dev/sdb*
1
[root@aisyun ~]# swapon -a #代表激活所有的swap分区
1
2
[root@aisyun ~]# swapoff![](https://cdn.jsdelivr.net/gh/aisyun/img/202204230159469.png)  /dev/sdb* #卸载swap 分区
[root@aisyun ~]# swapoff -a #代表卸载所有的swap分区

3、检查当前swap分区有哪些设备

1
[root@aisyun ~]# swapon -s

(二)内存泄漏问题

1、案例

解决内存泄漏

2、解决办法

image-20220423020400477

1
2
3
[root@aisyun ~]# vi /etc/sysctl.conf  # 在末尾插入 vm.swappiness = 5 数值越小优先使用内存,默认值是30
[root@aisyun ~]# sysctl -p # swappiness 配置生效
[root@aisyun ~]# cat /proc/sys/vm/swappiness # 显示修改结果是否生效

image-20220423015526245

  • 清空swap分区数据和缓存数据

image-20220423015813849

(三)常见分区方案

1、初次接触的新手或硬盘空间有限的 Desktop 用户安装建议

目录 建议大小 格式 描述
/ 可用空间-swap大小后的所有空间 Ext4 根目录
swap 物理内存两倍 swap 交换空间
1
2
3
挂载点       装置           说明
/ /dev/hda1 可用空间-swap大小后的所有空间
swap /dev/hda2 大约内存大小 建议至少512MB

2、高级 Desktop 用户的安装建议

目录 建议大小 格式 描述
/ 10G-20G ext4 根目录
/home 最大的剩余空间 ext4 工作目录
swap 物理内存1.5倍 swap 交换内存
1
2
3
4
挂载点       装置          说明
/ /dev/hda1 10~15G足矣
/home /dev/hda2 最大的剩余空间
swap /dev/hda5 大约内存大小(建议至少512MB)

或者

目录 建议大小 格式 描述
/ 10G-20G ext4 根目录
/boot 1G左右 ext4 Linux的内核及引导系统程序所需要的文件
swap 物理内存1.5倍 swap 交换内存
/home 最大的剩余空间 ext4 工作目录
1
2
3
4
5
挂载点       装置          说明
/boot /dev/hda3 100MB即可
swap /dev/hda5 大约内存大小(建议至少512MB)
/ /dev/hda1 10~15G足矣
/home /dev/hda2 最大的剩余空间

3、高级 Server 用户的安装建议

目录 建议大小 格式 描述
/ 150G-200G ext4 根目录
/home 尽量大些 ext4 工作目录
swap 物理内存1.5倍 swap 交换内存
/var 视服务器功能决定大小,至少需要1GB以上 ext4
1
2
3
4
5
6
挂载点       装置          说明
/ /dev/hda1 10~15G足矣
/home /dev/hda2 最大的剩余空间
/boot /dev/hda3 100MB即可
swap /dev/hda5 大约内存大小(建议至少512MB)
/var /dev/hda6 视服务器功能决定大小,至少需要1GB以上

或者

目录 建议大小 格式 描述
/ 150G-200G ext4 根目录
/home 最大的剩余空间的一半 ext4 工作目录
/boot 1G左右 ext4 空间起始位置 分区格式为ext4 /boot
建议:应该大于400MB或1GB Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。
swap 物理内存1.5倍 swap 交换内存
/var 视服务器功能决定大小,至少需要1GB以上 ext4
/usr 最大的剩余空间的一半 ext4
1
2
3
4
5
6
7
挂载点       装置          说明
/ /dev/hda1 10~15G足矣
/home /dev/hda2 最大的剩余空间的一半
/boot /dev/hda3 100MB即可
swap /dev/hda5 大约内存大小(建议至少512MB)
/var /dev/hda6 视服务器功能决定大小,至少需要1GB以上
/usr /dev/hda7 最大的剩余空间的一半
目录 建议大小 格式 描述
/ 150G-200G ext4 根目录
swap 物理内存两倍 swap 交换空间:交换分区相当于Windows中的“虚拟内存”,如果内存低的话(1-4G),物理内存的两倍,高点的话(8-16G)要么等于物理内存,要么物理内存+2g左右,
/boot 1G左右 ext4 空间起始位置 分区格式为ext4 /boot 建议:应该大于400MB或1GB Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动撞在文件存放位置,如kernels,initrd,grub。
/tmp 5G左右 ext4 系统的临时文件,一般系统重启不会被保存。(建立服务器需要?)
/home 尽量大些 ext4 用户工作目录;个人配置文件,如个人环境变量等;所有账号分配一个工作目录。

4、常规服务器分区

image-20220424021720369

要注意的事项

一、Linux 下没有分区,只有挂载点,类似于 Window 下的分区。

二、Swap 的大小约等同你的内存大小,或稍大即可,建议至少设置512MB

三、关于文件系统,在 Windows 下,我们常见到的文件系统有 FAT、 FAT32、 NTFS、exFAT,而在 Linux 下,文件系统如下:
Ext2:早期的格式,不支持日志功能。
Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了。
Ext4:针对ext3系统的扩展日志式文件系统,是ext3文件系统的后继版本。
ReiserFS:也有日志功能,其特点是处理小档案时速度快。
XFS:稳定与高效,在大小档案混合的系统里有优越的表现。
JFS:特色是最不占用CPU资源,如果你的电脑老旧那么这是最好的选择。

二、LVM逻辑卷磁盘管理

在Ubuntu系统上使用LVM调整硬盘分区的示例

在这里插入图片描述

(一)LVM 逻辑卷基本概念

1、LVM构成

image-20220422163256696

image-20220422163410719

(二)LVM逻辑卷基本管理

1、查看LVM 信息

  • 查看物理卷信息:
1
2
3
pvdisplay (详细信息)

pvs 简洁信息
  • 查看卷组信息
1
2
vgdisplay (详细)
vgs
  • 查看逻辑卷信息:
1
2
lvdisplay (详细)
lvs

image-20220422174304072

2、创建LVM

image-20220422173116532

2.1创建PV

将sdb sdc 两个磁盘格式化为PV

1
pvcreate /dev/sdb/ dev/sdc

2.2创建VG

创建VG(my-vg),并将两个PV 添加到VG池中。

1
vgcreate my-vg /dev/sdb/ dev/sdc

2.3创建LV

在my-vg池中创建一个大小为2G的new-lv

  • 第一种方法
1
lvreate -n my--lv -L 2G my--vg
  • 第二种方法
1
lvcreate --size 2G -n my--lv my--vg

2.4格式化文件系统为ext4

1
mkfs.ext4 /dev/my--vg/my--lv

2.5挂载my-lv到/mnt(也可不操作)

1
mount /dev/my--vg/my--lv /mnt

3、删除LVM

image-20220422174349955

3.1删除LV

1
lvremove /dev/my--vg/my--lv

3.2删除VG

1
vgremove my-vg

3.3删除PV

1
pvremove /dev/sdb

(三)LVM逻辑卷的拉伸与缩小

1、拉伸一个逻辑卷

image-20220422180413848

1
lvextend -L(大写) +1G /dev/my--vg/my--lv

将vg中所有剩余空间扩容给lv

1
2
# lvextend -l +100%VG /lv路径
lvextend -l +100%VG /dev/vg1/lv
1
2
3
# 将vg中是所有剩余空间扩容给lv
# lvextend -l +100%FREE /lv路径
lvextend -l +100%FREE /dev/disk-vg/disk-lv
1
resize2fs /dev/my--vg/my--lv

2、拉伸一个卷组

image-20220422182000440

将新的PV(sdd)添加到指定卷组my-vg中

1
vgextend my--vg /dev/sdd

3、缩小逻辑卷

image-20220422182752941

4、缩小卷组

image-20220422184145673

(四)LVM 卷重命名

  • vg卷组重命名
1
vgrename ubuntu-vg dzz-vg
  • lv逻辑卷重命名
1
lvrename /dev/ubuntu-vg/ubuntu-lv /dev/ubuntu-vg/dzz-lv
  • 刷新分区大小
1
resize2fs /dev/debian--vb/debian--lv

三、硬盘扩容实例:

逻辑卷LV扩容步骤:

第一步:

1
df -h  查看磁盘情况

第二步:

1
lvdisplay(查看逻辑卷)

第三步:

1
vgdisplay(查看逻辑组)

第四步:

1
pvdisplay(查看物理卷)

第五步:

1
fdisk /dev/ 磁盘名

第六步:

1
mkfs -t ext4 /dev/sdb1

第七步:

1
vgextend debian--vg /dev/sdb1

其中centos是nv的名字,在第三步查看,sdb1是磁盘名,可以lsblk查看
第八步:

1
再用pvscan查看一下

第九步:lv扩容:

1.按固定增加大小:

1
lvextend -L +10G /dev/my--vg/my--lv

2.按百分比增加:

将vg中是所有剩余空间扩容给lv,有两种表达:

1
2
## lvextend -l +100%FREE /lv路径
lvextend -l 100%free /dev/my--vg/my--lv
1
2
## lvextend -l +100%VG /lv路径
lvextend -l +100%VG /dev/my--vg/my--lv

其中/dev/my–vg/my–lv是lv的path,在第二步查看
第十步:刷新分区大小

1
resize2fs /dev/debian--vb/debian--lv

主分区与LVM组合:

image-20230316155440445

四、大硬盘分区工具

gdisk

parted

【附录Lvm命令】

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
46
47
48
49
50
51
52
53
54
55
56
57
config          Display and manipulate configuration information
devtypes Display recognised built-in block device types
dumpconfig Display and manipulate configuration information
formats List available metadata formats
help Display help for commands
fullreport Display full report
lastlog Display last command's log report
lvchange Change the attributes of logical volume(s)
lvconvert Change logical volume layout
lvcreate Create a logical volume
lvdisplay Display information about a logical volume
lvextend Add space to a logical volume
lvmchange With the device mapper, this is obsolete and does nothing.
lvmconfig Display and manipulate configuration information
lvmdiskscan List devices that may be used as physical volumes
lvmsadc Collect activity data
lvmsar Create activity report
lvreduce Reduce the size of a logical volume
lvremove Remove logical volume(s) from the system
lvrename Rename a logical volume
lvresize Resize a logical volume
lvs Display information about logical volumes
lvscan List all logical volumes in all volume groups
pvchange Change attributes of physical volume(s)
pvresize Resize physical volume(s)
pvck Check metadata on physical volumes
pvcreate Initialize physical volume(s) for use by LVM
pvdata Display the on-disk metadata for physical volume(s)
pvdisplay Display various attributes of physical volume(s)
pvmove Move extents from one physical volume to another
lvpoll Continue already initiated poll operation on a logical volume
pvremove Remove LVM label(s) from physical volume(s)
pvs Display information about physical volumes
pvscan List all physical volumes
segtypes List available segment types
systemid Display the system ID, if any, currently set on this host
tags List tags defined on this host
vgcfgbackup Backup volume group configuration(s)
vgcfgrestore Restore volume group configuration
vgchange Change volume group attributes
vgck Check the consistency of volume group(s)
vgconvert Change volume group metadata format
vgcreate Create a volume group
vgdisplay Display volume group information
vgexport Unregister volume group(s) from the system
vgextend Add physical volumes to a volume group
vgimport Register exported volume group with system
vgimportclone Import a VG from cloned PVs
vgmerge Merge volume groups
vgmknodes Create the special files for volume group devices in /dev
vgreduce Remove physical volume(s) from a volume group
vgremove Remove volume group(s)
vgrename Rename a volume group
vgs Display information about volume groups
vgscan Search for all volume groups
vgsplit Move physical volumes into a new or existing volume group
version Display software and driver version information