前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务器home分区在线转lvm

服务器home分区在线转lvm

作者头像
羽翰尘
修改2019-11-26 16:44:39
2.5K0
修改2019-11-26 16:44:39
举报
文章被收录于专栏:技术向

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/server_home_lvm_online/

前言

技术总在前进,而自己的知识也总在增长。几年前的知识可能过时,几年前装的服务器也可能早就不满足使用条件。

我们实验室的服务器大概是3、4年前买的,128G内存+GTX1080Ti x 4。性能虽说不错,但最近发现home目录空间不够。深度学习是靠数据驱动的,没有磁盘存数据自然服务器也就废了。

经过一两天的研究,我觉得服务器还可以抢救一下,于是死磨硬泡要来了sudo权限,开始大刀阔斧干一番。

注意,以下的部分截图来源于虚拟机实验,GPU实际操作和此类似。建议买按量计费的云服务器和云硬盘,比本机创建虚拟机方便快捷

必备条件

  1. home目录是单独分区
  2. 磁盘剩余空间大于home空间,或者有另一块磁盘

手头这台服务器的状态是这样的:

  1. home目录单独分区,700G的空间占满
  2. 第二块磁盘容量4T,仅一个分区,已占用300G
  3. 所有分区都是普通Linux分区

lvm简介

lvm的核心概念有以下四个:

①PE  (Physical Extend)  物理拓展

②PV  (Physical Volume)  物理卷

③VG  (Volume Group)  卷组

④LV  (Logical Volume)  逻辑卷

在使用LVM对磁盘进行动态管理以后,我们是以逻辑卷的方式呈现给上层的服务的。所以我们所有的操作目的,其实就是去创建一个LV(Logical Volume),逻辑卷就是用来取代我们之前的分区,我们通过对逻辑卷进行格式化,然后进行挂载操作就可以使用了

下图展示了他们之间的关系。

在实际操作中,格式化为PE的过程对用户不可见(至少目前的操作中我没有碰到过),需要用户进行的顺序操作有以下四个:

  1. 分区, 可以用fdisk也可以用gparted
  2. pvcreate创建pv
  3. vgcreate创建vg
  4. lvcreate创建lv

如果对lvm的概念还有不了解的地方,参考这里

新建lvm分区

新建一个lvm分区有两种方式。要么缩减第二块硬盘的现有分区,并将剩余空间格式化为lvm分区;要么新增硬盘,并直接分区为lvm格式。

新增磁盘方式(虚拟机实验)

新增磁盘方式是自己当时在虚拟机实验做的,为了不浪费这些截图,只好放到这里了。可能会让文章看起来有点乱,可以直接跳到缩减分区方式

  1. 购买一个10G的云盘

可以看到新硬盘

  1. 新建分区并设立lvm标志
代码语言:txt
复制
fdisk /dev/vdb
# 跟随提示操作

在交互命令行中选择t设立标志,8e是lvm分区的标志。

这个只是设立一个标志,方便操作人员记忆哪个盘都用来做了什么。

  1. 设立物理卷 & 设立组 & 打印组信息
代码语言:txt
复制
pvcreate /dev/vdb1
vgcreate vgdata /dev/vdb1
vgdisplay
vgs

vgs也可以打印组信息,更简洁

  1. 设立逻辑卷 & 打印逻辑卷信息
代码语言:txt
复制
lvcreate -L 9G -n home vgdata
lvs
lvdisplay
  1. 使用mkfs.ext4 制作文件系统 & 挂载到/home/home
代码语言:txt
复制
mkfs.ext4 /dev/vgdata/home
mkdir /test
mount  /dev/vgdata/home /test 

分区缩减方式(GPU服务器实操)

分区缩减暂时没找到好用的命令行方法,我们使用图形界面。如果是无界面的服务器,可以用Mobaxterm + x11 forwarding方式,ssh登录后键入sudo gparted,图形界面会在本地弹出。

  1. 卸载磁盘,否则无法进行缩减分区操作
  2. 拖动或者输入容量,实现分区缩减
  3. 剩余的容量重新分区,选择lvm格式 (如果没有该选项,sudo apt install lvm2安装)

(以下两张图片是事后截图,作示例用。可以看到,lvm分区与普通分区不同,即使没有用那么多空间,gparted也认为空间被占满了)

  1. 创建lvm分区并挂载

新建磁盘一节的内容很相似,简略概述。

代码语言:txt
复制
pvcreate /dev/sdb2
vgcreate vgdata /dev/sdb2
vgs
lvcreate -L 1.7T -n home vgdata
lvs
mkfs.ext4 /dev/vgdata/home
mkdir /test
mount  /dev/vgdata/home /test

迁移home目录

使用rsync可以实现带属性迁移home目录, 这里我们将/home目录的内容迁移到/test目录。

  1. 复制1sudo rsync -aXS /home/. /test/.
  1. 重命名原home & 查看uuid & 修改fstab
代码语言:txt
复制
 umount /test
 sudo mv /home /home_backup
 sudo mkdir /home
 blkid
 vim /etc/fstab 
代码语言:txt
复制
UUID=fd394f10-8c1b-4150-852a-b08cbbb81551 /home ext4 nodev,nosuid    0   2

修改后的fstab

如果要求在重启后依旧挂载/home_backup,那么把该分区也写到fstab中。

在 /etc/fstab配置文件中你可以以三种不同的方法表示文件系统:内核名称、UUID 或者 label。使用 UUID 或是 label 的好处在于它们与磁盘顺序无关。如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是因为一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 或是 label 来表示将更有效。

所有分区和设备都有唯一的 UUID。它们由文件系统生成工具 (mkfs.*) 在创建文件系统时生成。

  1. 挂载并检查

挂载所有分区

代码语言:txt
复制
mount -a
ls /home

检查磁盘使用情况

代码语言:txt
复制
df -h

其他磁盘相关命令

查看UUID

  1. 方法一:cat /etc/fstab

输出

代码语言:txt
复制
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda6 during installation
UUID=da65e0ff-f27c-47a6-98a3-e40b4683a261 /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=d4418b1b-c57f-4da5-ab80-b38a60feefc9 /boot           ext4    defaults        0       2
# /home was on /dev/sda7 during installation
UUID=944e97ca-fc2a-46aa-91f4-8b103da4ee78 /home           ext4    defaults        0       2
# /home1 was on /dev/sdb1 during installation
UUID=92eac4c2-1ca9-4809-bb88-5f0dede9facd /home1          ext4    defaults        0       2
# swap was on /dev/sda5 during installation
UUID=f0d39a25-b047-4a9e-b4e5-99985c92abf9 none            swap    sw              0       0
  1. 方法二: lsblk -f
代码语言:txt
复制
NAME                  FSTYPE      LABEL UUID                                   MOUNTPOINT
sr0
sda
├─sda2
├─sda5                LVM2_member       UUKy7M-V4cC-hP6L-ApO3-GUKk-fdWM-XelacC
│ ├─ubuntu--vg-swap_1 swap              8b7f86f8-486f-4698-8ee9-0e2fd51d6381   [SWAP]
│ └─ubuntu--vg-root   ext4              4fe81706-bfab-4c92-ad29-4cdf06c4a050   /
└─sda1                ext2              7b4bc140-3a26-4b51-9664-65875228f5ad   /boot

参考

对使用lvm的流程介绍很详细,最终参考

使用rsync迁移home,最终参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 必备条件
  • lvm简介
  • 新建lvm分区
    • 新增磁盘方式(虚拟机实验)
      • 分区缩减方式(GPU服务器实操)
      • 迁移home目录
      • 其他磁盘相关命令
        • 查看UUID
        • 参考
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档