0


Linux磁盘管理

Linux磁盘管理

Linux在使用过程中产生的数据量不断增大,逐渐导致初始配置的磁盘空间不足,这时候就需要进行扩容,以满足业务需求。一般情况下会选择新添加磁盘,本文介绍了如何将新磁盘分区、格式化、挂载或制作LVM逻辑卷,进行磁盘空间扩容。

1. 基本分区

磁盘的分区格式一共有两种:

一种是GPT分区,GPT最多支持128个主分区,没有扩展分区和逻辑盘,支持任意容量的磁盘分区。

一种是MBR分区,做多四个主分区,可以做三个主分区加一个扩展分区,扩展分区可以做成许多逻辑分区,但分区总数量不能超过14,2T容量以下的硬盘分区一般常用MBR格式分区。

添加新磁盘后,通过lsblk(list block)命令列出所有可用的块设备,查看新磁盘是否添加成功。

图中的sdb盘是一块新添加的20G磁盘,需要通过分区、格式化、挂载来对磁盘进行处理才可以使用。

1.1 MBR分区

fdisk /dev/sdb  #使用fdisk对磁盘开始分区

命令参数如图所示,常用的有:

d   删除一个分区
g   创建一个新的GPT分区表
n   添加一个新的分区
o   创建一个新的MBR分区表
p   打印分区表
q   退出不保存
w   保存并退出

输入n,选择添加一个新的分区

选择p创建主分区,选择e创建扩展分区,回车选择默认值即可

分区号和起始扇区都回车选择默认值即可,Last扇区一步需要手动输入想要划分的分区大小+size{K,M,G}

最后一步输入w退出并保存,第一个分区设置完成

再次lsblk查看,sdb磁盘下已经分出sdb1分区,大小为10G,下一对该分区制作文件系统并挂载

  • 一般Linux的本地文件系统使用最多是xfs和ext4两种文件系统格式,根据需要选择
mkfs.xfs /dev/sdb1
mkfs.ext4 /dev/sdb1

输入mkfs.xfs /dev/sdb1,将sdb1分区制作成xfs格式的文件系统

最后一步,创建目录,将sdb1分区挂载在该目录下即可

mkdir /mnt/guazai 
mount /dev/sdb1 /mnt/guazai

此时sdb1分区已经挂载,可以开始写入,但目前只是临时挂载,更换终端或重启后需要再次手动挂载,所以最好做成开机自动挂载,在/etc/fstab文件内加上以下内容,即可开机自动挂载

/dev/sdb1 /mn/guazai    xfs         defaults    0     0
   分区      挂载点   文件系统类型 文件系统属性 不备份 不检查
#添加完成后使用mount -a命令检查,添加错误会导致系统启动出错,谨慎操作!

1.2 GPT分区

GPT分区使用gdisk命令,其他与fdisk命令操作方法基本一致,按提示进行操作即可

分区添加成功后,制作文件系统、挂载、自动挂载操作同前文

2. LVM逻辑卷分区

基本分区大小无法调整,写入数据占满时便无法继续使用,整体数据迁移又非常麻烦,而LVM逻辑卷分区的特点就是可以随意扩容,规避磁盘占满时的数据丢失风险。

  • 物理卷(Physical Volume,PV):也就是将物理磁盘分区转化为LVM可识别的值。
  • 卷组(Volume Group,VG):PV的集合
  • 逻辑卷(Logic Volume,LV):VG中画出来的一块逻辑磁盘

首先引入PV、VG、LV的概念,物理磁盘或者磁盘分区转换为物理卷,一个或多个物理卷聚集形成一个或多个卷组,而逻辑卷就是从某个卷组里面抽象出来的一块磁盘空间。

2.1 创建逻辑卷

step1

pvcreate /dev/sdc   #将新磁盘sdc制作成物理卷
创建完成后使用pvs、pvscan、pvdisplay任意一个即可查看

step2

vgcreate vg1 /dev/sdc   #创建卷组vg1并将物理卷/dev/sdc加到卷组
创建完成后使用vgs、vgscan、vgdisplay任意一个即可查看

由于/dev/sdc是一块20GB的新磁盘,所以vg1剩余空间为20GB

step3

lvcreate -L +10G -n lv1 /dev/vg1    #从vg1卷组拿10GB空间做成逻辑卷lv1
lvcreate -l +100%FREE -n lv1 /dev/vg1   #将vg1卷组全部剩余空间做成逻辑卷lv1
创建完成后使用lvs、lvscan、lvdisplay任意一个即可查看

step4

mkfs.xfs /dev/vg1/lv1           #制作文件系统
mkdir /mnt/lv1                  #创建挂载点目录
mount /dev/vg1/lv1 /mnt/lv1     #挂载
echo "/dev/vg1/lv1 /mnt/lv1 xfs defaults 0 0" >>/etc/fstab      #开机自动挂载

2.2 逻辑卷扩容

当卷组内空间充足时,直接从卷组内拿空间给逻辑卷扩容或创建新逻辑卷

当卷组内空间不足时,添加磁盘制作成物理卷给卷组扩容,再从卷组拿空间给逻辑卷扩容

vgextend vg1 /dev/sdd(xincipan)     #卷组扩容
lvextend -L +10G /dev/vg1/lv1       #逻辑卷扩容

逻辑卷扩容后需要给相应的文件系统扩容才可生效

xfs_growfs  #xfs文件系统扩容
resize2fs   #ext4文件系统扩容

3. swap交换分区

Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存变少。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

3.1 基本分区、LVM制作交换分区

使用free -m或swapon -s查看当前swap分区信息

步骤:

制作一个新的基本分区或逻辑卷
mkswap /dev/sdb1    或    mkswap /dev/vg1/lv1
#初始化为swap分区
echo "/dev/sdb1 swap swap defaults 0 0"
或
echo "/dev/vg1/lv1 swap swap defaults 0 0"
#制作开机挂载
swapon -a 
#激活swap分区(读取/etc/fstab)

swap分区制作成功

3.2 大文件制作交换分区

首先使用dd命令创建一个足够大而空的文件

dd if=/dev/zero of=/mnt/file bs=1000M count=20  #在/mnt下创建一个名为file大小为20G的文件
 input file  output file    block大小   数量      
   输入文件     输出文件
mkswap /mnt/file    #格式化该文件
echo "/mnt/file swap swap defaults 0 0" >>/etc/fstab    #制作开机挂载
swapon -a   #激活
swapon -s   #查询

4. 注意事项

  • 当磁盘已经添加了一个MBR(GPT)分区后,又想转换为GPT(MBR)分区时首先fdisk(gdisk)该分区,使用d参数删除分区,w参数保存退出parted -s /dev/sdb mklabel gpt #将/dev/sdb(MBR格式)转换成(GPT格式)parted -s /dev/sdb mklabel msdos #将/dev/sdb(GPT格式)转换成(MBR格式)转换完成后重新进行分区操作
  • 第一个分区设置完成后未重启设置第二个分区时会报如图的错误
partprobe /dev/sdb或kpartx /dev/sdb  更新磁盘分区表,手动让内核更新分区表。不需要重启
  • 分区或逻辑卷挂载时最好是空目录,因为挂载后会将目录下的东西覆盖,卸载后才能访问
  • mount命令挂载时可以-o指定下列参数-o 指定文件系统属性rw 读写 ro 只读 noexec 不允许执行二进制文件exec 允许执行二进制文件 auto mount -a 开机自动挂载 remount 在线重新挂载
  • lvremove #逻辑卷移除vgremove #卷组移除pvremove #物理卷移除
  • umount /dev/sdb #卸载umount -l /dev/sdb #强制卸载
  • 从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!因为转换格式要格式化硬盘!
标签: 运维 linux 服务器

本文转载自: https://blog.csdn.net/Carolless/article/details/140737462
版权归原作者 Carolless 所有, 如有侵权,请联系我们删除。

“Linux磁盘管理”的评论:

还没有评论