[Linux服务器] Linux磁盘管理

30 0
Honkers 昨天 21:36 | 显示全部楼层 |阅读模式

Linux磁盘管理

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

1. 基本分区

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

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

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

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

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

1.1 MBR分区

  1. fdisk /dev/sdb #使用fdisk对磁盘开始分区
复制代码

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

  1. d 删除一个分区
  2. g 创建一个新的GPT分区表
  3. n 添加一个新的分区
  4. o 创建一个新的MBR分区表
  5. p 打印分区表
  6. q 退出不保存
  7. w 保存并退出
复制代码

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

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

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

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

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

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

  1. mkfs.xfs /dev/sdb1
  2. mkfs.ext4 /dev/sdb1
复制代码

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

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

  1. mkdir /mnt/guazai
  2. mount /dev/sdb1 /mnt/guazai
复制代码

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

  1. /dev/sdb1 /mn/guazai   xfs     defaults   0     0
  2.   分区     挂载点   文件系统类型 文件系统属性 不备份 不检查
  3. #添加完成后使用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

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

step2

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

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

step3

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

step4

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

2.2 逻辑卷扩容

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

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

  1. vgextend vg1 /dev/sdd(xincipan) #卷组扩容
  2. lvextend -L +10G /dev/vg1/lv1       #逻辑卷扩容
复制代码

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

  1. xfs_growfs  #xfs文件系统扩容
  2. resize2fs   #ext4文件系统扩容
复制代码

3. swap交换分区

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

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

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

步骤:

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

swap分区制作成功

3.2 大文件制作交换分区

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

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

4. 注意事项

  • 当磁盘已经添加了一个MBR(GPT)分区后,又想转换为GPT(MBR)分区时

    1. 首先fdisk(gdisk)该分区,使用d参数删除分区,w参数保存退出
    2. parted -s /dev/sdb mklabel gpt #将/dev/sdb(MBR格式)转换成(GPT格式)
    3. parted -s /dev/sdb mklabel msdos #将/dev/sdb(GPT格式)转换成(MBR格式)
    4. 转换完成后重新进行分区操作
    复制代码
  • 第一个分区设置完成后未重启设置第二个分区时会报如图的错误

  1. partprobe /dev/sdb或kpartx /dev/sdb 更新磁盘分区表,手动让内核更新分区表。不需要重启
复制代码
  • 分区或逻辑卷挂载时最好是空目录,因为挂载后会将目录下的东西覆盖,卸载后才能访问

    1. mount命令挂载时可以-o指定下列参数
    2. -o         指定文件系统属性
    3. rw       读写
    4. ro       只读
    5. noexec   不允许执行二进制文件
    6. exec   允许执行二进制文件
    7. auto   mount -a 开机自动挂载
    8. remount   在线重新挂载
    复制代码

    1. lvremove #逻辑卷移除
    2. vgremove #卷组移除
    3. pvremove #物理卷移除
    复制代码

    1. umount /dev/sdb #卸载
    2. umount -l /dev/sdb #强制卸载
    复制代码

  • 从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!因为转换格式要格式化硬盘!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

特级红客

关注
  • 3280
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行