Linux服务器搭建笔记-006:拓展/home目录容量
一、问题说明
Ubuntu服务器在使用过程中创建的新用户,每位用户会在/home目录下生成一个属于其个人的主文件夹。如果不限制各个用户的使用空间,所有的用户都会共用/home所挂载的硬盘。在这种多用户情况下,会很快的填满/home目录,导致服务器的硬盘空间不够用。
本篇博客通过添加额外的硬盘,实现对/home目录的扩容。 注意:本篇博客内容不采用换一块更大硬盘替代/home的方式,而是在保留原有/home的基础上,进一步拓展/home的空间。例如,服务器原有的/home目录大小为1TB,本博客会添加一块额外的2TB硬盘,组成一个3TB的更大的/home目录,并且不会损失原有的/home文件内容。
二、/home目录空间拓展
说明:本教程使用的系统为Ubuntu22.04。因为/home目录是Ubuntu系统日常使用过程中的系统目录,所以在当前开机状态下操作该目录是不被允许的,个人推荐使用一个Ubuntu系统的安装U盘,从U盘启动Ubuntu系统。具体从制作U盘和启动系统的过程自行百度。
1. 进入U盘系统
- 当从U盘启动Ubuntu的安装过程时,会出现如下的选项,选择试用Ubuntu就可以进入U盘内的系统。

2. LVM(逻辑卷管理)工具的使用
- 使用LVM工具可以将原有隶属不同硬盘的空间进行打包合并。例如原本的/home文件夹在/dev/sda5的分区上面,大小是1TB,现在新添加了一块2T的硬盘,装入服务器后识别为/dev/sdb。LVM工具的功能就是可以将sda5和sdb进行一个打包操作,变成一组硬盘。具体查看硬盘挂载信息可以使用命令lsblk实现。
- 安装LVM工具:
ff@EVA-01:~$ sudo apt install lvm2
3. 备份/home文件夹
- 备份现有的/home文件夹,比如使用rsync工具备份/home目录。这个过程需要你有一块足够大的硬盘可以容纳/home,比如这块硬盘挂载到了/mnt/backup文件夹下面。
- 注意:这个过程非常重要,因为后面需要把这个备份的/home信息重新拷贝回新合并的,更大的/home空间中。当然,如果是新服务器还没有用户信息不拷贝也没问题。如果不备份,整个/home文件夹会在后续被清空。
# 备份数据
ff@EVA-01:~$ sudo rsync -aAXHv --progress /home/ /mnt/backup/
4. 打包已有硬盘空间
- 创建物理卷。物理卷是组成卷组的基本单位,卷组我们可以理解为合并后的整体硬盘(1TB sda5 + 2TB sdb = 3TB),
# 创建第一个卷组
ff@EVA-01:~$ sudo pvcreate /dev/sda5
# 创建第二个卷组
ff@EVA-01:~$ sudo pvcreate /dev/sdb
- 在上述过程中可能会出现如下错误:
Cannot use /dev/sdb: device is partitioned
这个错误是因为硬盘中额外的独立分区,或者旧系统的磁盘签名,需要将其全部抹除。对于硬盘中的额外分区,可以使用fdisk(以sdb空间为例):
# 以sdb为例
ff@EVA-01:~$ sudo fdisk /dev/sdb
使用 d 命令删除分区
使用 w 命令保存更改并退出
如果删除全部分区后依然出现上述错误,那需要抹除各种签名:
# 抹除所有的硬盘信息
ff@EVA-01:~$ sudo wipefs -a /dev/sdb
- 创建物理卷成功后,使用物理卷查询命令,可以查看已经创建好的两个物理卷:
ff@EVA-01:~$ sudo pvdisplay
5. 打包物理卷,创建卷组
- 将上面创建的物理卷进行组合并,其中 cat_home 可以自定义为你自己喜欢的卷组名称:
ff@EVA-01:~$ sudo vgcreate cat_home /dev/sda5 /dev/sdb
- 创建新的逻辑卷,其中 homelv 是逻辑卷的名称,可以自己自定义:
ff@EVA-01:~$ sudo lvcreate -n homelv -l 100%VG cat_home
逻辑卷的地位和我们前面获得的 /sda5,/sdb的地位相同,可以作为硬盘的盘符了,此时的 homelv 可以简单理解为是一个已经合并好的,大小为3TB的新硬盘空间。
- 格式化上面创建好的新空间:
ff@EVA-01:~$ sudo mkfs.ext4 /dev/cat_home /homelv
- 创建逻辑卷成功后,使用逻辑卷查询命令,可以查看已经创建好的逻辑卷:
ff@EVA-01:~$ sudo lvdisplay
效果类似下图:
--- Logical volume ---LV Path /dev/cat_home/homelvLV Name homelvVG Name cat_homeLV UUID 81f8L6-fFxb-H0TR-LJXu-Ifwl-fRQO-5kxD6vLV Write Access read/writeLV Creation host, time ubuntu, 2023-12-29 14:50:52 +0800LV Status available# open 1LV Size <2.42 TiBCurrent LE 633119Segments 2Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:0
- 此时再查询物理卷,会发现物理卷上新增加了很多新信息:
ff@EVA-01:~$ sudo pvdisplay
--- Physical volume ---PV Name /dev/sda5VG Name cat_homePV Size 684.63 GiB / not usable 3.00 MiBAllocatable yes (but full)PE Size 4.00 MiBTotal PE 175265Free PE 0Allocated PE 175265PV UUID cnlg0m-8G3T-Jab4-mEwR-AnKI-Uq1t-FALf30--- Physical volume ---PV Name /dev/sdbVG Name cat_homePV Size <1.75 TiB / not usable <4.34 MiBAllocatable yes (but full)PE Size 4.00 MiBTotal PE 457854Free PE 0Allocated PE 457854PV UUID XeW7Hr-4ajr-HRKo-ezxZ-GyNX-a0lp-6Utfj5
6. 迁移/home数据到新的逻辑卷
- 挂载新逻辑卷到临时位置 /mnt/new_home:
ff@EVA-01:~$ sudo mount /dev/cat_home/homelv /mnt/new_home
- 将之前备份到 /mnt/backup/ 的内容恢复到 /mnt/new_home 中:
ff@EVA-01:~$ sudo rsync -aAXHv --progress /mnt/backup/ /mnt/new_home/
- 数据回复完毕后,将以下挂载盘卸载:
# 卸载已挂载的盘符
ff@EVA-01:~$ sudo umount /home
ff@EVA-01:~$ sudo umount /mnt/backup/
ff@EVA-01:~$ sudo umount /mnt/new_home/
7. 修改原系统的启动挂载项
- 说明:之前的所有操作我们都是在U盘上的Ubuntu系统中完成的,并没有启动原始服务器中的系统。现在我们需要修改原有服务器系统中启动过程的挂载项,使得系统启动后可以挂载我们创建的 /dev/cat_home/homelv 这个新硬盘到 /home 目录下。
- 首先需要挂载原系统重的系统文件存储路径。这个系统路径就是服务器Ubuntu系统中 /etc/fstab 文件夹的存在目录,在我的系统中是 /dev/sda1,将其挂载到/mnt/oldsys目录下面,挂载到的目标目录可以自定义:
# 挂载原系统的/etc目录所在的磁盘
ff@EVA-01:~$ sudo mount /dev/sda1 /mnt/oldsys
- 挂载完毕后修改原Ubuntu系统开机的挂载硬盘启动项:
# 挂载原系统的/etc目录所在的磁盘
ff@EVA-01:~$ sudo vim /mnt/oldsys/etc/fstab
- 对上面fstab文件进行编辑,将已经打包好的硬盘挂载到/home下面,例如,我的路径设置最终如下(重点关注/home路径的挂载内容,挂载到/home路径下的其他硬盘需要排在/home之后进行挂载):
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=26a27c3d-b23f-484a-9a2b-1cb624d834a5 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda2 during installation
UUID=7fabb7a1-c63f-407a-afb7-4272b9c51dea /boot ext4 defaults 0 2
# /boot/efi was on /dev/sda1 during installation
UUID=7576-5283 /boot/efi vfat umask=0077 0 1
# /home was on /dev/cat_home/homelv
/dev/cat_home/homelv /home ext4 defaults 0 2
# /home/A_DataSets0 was on /dev/sdc1 during installation
UUID=3632d36e-8b9a-4fc9-a202-3caddd5c3700 /home/A_DataSets0 ext4 defaults 0 2
# /home/A_DataSets1 was on /dev/sdd1 during installation
UUID=f439163a-4bd5-423b-888a-128564bc70cb /home/A_DataSets1 ext4 defaults 0 2
# swap was on /dev/sda4 during installation
UUID=3b0f58aa-e365-447a-98ba-e8ebc467985c none swap sw 0 0
/dev/disk/by-uuid/08bb9073-dd08-4689-9f3a-d71b5e9c4a0b /home/A_DataSets2 auto nosuid,nodev,nofail,x-gvfs-show 0 0
/dev/disk/by-uuid/e58b8ffb-fc27-47c6-9e41-1e9d809da14b /home/A_DataSets3 auto nosuid,nodev,nofail,x-gvfs-show 0 0
(来自一名励志用“普通话”讲技术的菜狗子~)
相关文章:
Linux服务器搭建笔记-006:拓展/home目录容量
一、问题说明 Ubuntu服务器在使用过程中创建的新用户,每位用户会在/home目录下生成一个属于其个人的主文件夹。如果不限制各个用户的使用空间,所有的用户都会共用/home所挂载的硬盘。在这种多用户情况下,会很快的填满/home目录,导…...
元宇宙与VR虚拟现实的未来如何?
从科幻小说到商业现实 自从 Facebook年更名为 Meta 以来,关于元宇宙的热议不断,人们对虚拟世界的兴趣也重新燃起,因为尽管虚拟现实 (VR) 的概念由来已久,但该技术现在才开始真正得以应用。 定义元宇宙和虚拟现实 首先是 The Met…...
微服务事务处理:CAP 定理和最终一致性的关系
CAP 定理和最终一致性 CAP 定理和最终一致性是两个密切相关的概念,但它们在范围和细节上有所不同。以下是比较: CAP 定理 **正式陈述:**在分布式系统中,最多只能同时满足以下三个保证中的两个:一致性、可用性和分区…...
【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战
🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS …...
Copilot概述:AI助手引领编程新纪元
前言: 随着人工智能(AI)技术的不断进步,编程领域也在逐渐迎来一场革命。GitHub Copilot,作为一款由 OpenAI 和 GitHub 合作开发的编程助手,引发了广泛的关注和讨论。本篇博客将全面概述 Copilot 的背景、功…...
最小覆盖子串(LeetCode 76)
文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符ÿ…...
Windows Sockets 2 笔记
文章目录 一、Winsock简介二、Windows中Winsock对网络协议支持的情况三、使用Winsock3.1 关于服务器和客户端3.2 创建基本Winsock应用程序3.3 初始化Winscok3.3.1 初始化步骤3.3.2 初始化的核心代码3.3.3 WSAStartup函数的协调3.3.4 WSACleanup函数3.3.5 初始化的完整代码 3.4 …...
13章总结
一.泛型 1.定义泛型类 泛型机制语法: 类名<T> 其中,T是泛型的名称,代表某一种类型。 【例13.6】创建带泛型的图书类 代码: 结果: 2.泛型的常规用法 (1)定义泛型类时声明多个变量 class MyClass<T1,T2>…...
(2023,3D NeRF,无图像变分分数蒸馏,单步扩散)SwiftBrush:具有变分分数蒸馏的一步文本到图像扩散模型
SwiftBrush : One-Step Text-to-Image Diffusion Model with Variational Score Distillation 公众:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 方法 1.1 基础 1.2 SwiftBrus…...
【WPF.NET开发】将路由事件标记为已处理和类处理
本文内容 先决条件何时将路由事件标记为已处理预览和浮升路由事件对实例和类路由事件处理程序复合控件中的输入事件禁止 尽管对于何时将路由事件标记为已处理没有绝对规则,但如果代码以重要方式响应事件,请考虑将事件标记为已处理。 标记为已处理的路由…...
2023年03月18日_微软office365 copilot相关介绍
文章目录 Copilot In WordCopilot In PowerpointCopilot In ExcelCopilot In OutlookCopilot In TeamsBusiness Chat1 - copilot in word2 - copilot in excel3 - copilot in powerpoint4 - copilot in outlook5 - copilot in teams6 - business chat word 1、起草草稿 2、自动…...
GBASE南大通用携手宇信科技打造“一表通”全链路解决方案
什么是“一表通”? “一表通”是国家金融监督管理总局为发挥统计监督效能、完善银行保险监管统计制度、推进监管数据标准化建设、打破数据壁垒,而制定的新型监管数据统计规范。相较于以往的报送接口,“一表通”提高了对报送时效性、校验准确…...
Python 内置高阶函数练习(Leetcode500.键盘行)
Python 内置高阶函数练习(Leetcode500.键盘行) 【一】试题 (1)地址: 500. 键盘行 - 力扣(LeetCode) (2)题目 给你一个字符串数组 words ,只返回可以使用在…...
【JavaWeb】day01-HTMLCSS
day01-HTML&CSS HTML 图片标签:<img> src:指定图像URL(绝对路径/相对路径)width:图像宽度(像素/相对于父元素的百分比)height:图像高度(像素/相对于父元素的百…...
【工具】windeployqt 在windows + vscode环境下打包
目录 0.背景简介 1.windeployqt简介 2.打包具体过程 1)用vscode编译,生成Release文件夹(也有Debug文件夹,但是发布版本一般都是用Release) 2)此时可以看下Release文件夹内,一般是.exe可执行…...
跟着LearnOpenGL学习12--光照贴图
文章目录 一、前言二、漫反射贴图三、镜面光贴图3.1、采样镜面光贴图 一、前言 在跟着LearnOpenGL学习11–材质中,我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观…...
DotNet 命令行开发
DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建 dotnet new运行 dotnet run发布应用 dotnet publish更多命令 VSCode 调试所需插件调试 CS 配置项目.csproj排除依赖关系 launch.jsontasks.json 参考资料 下载安装 下载 SDK 我们就下最新的好&am…...
hyperf console 执行
一、原理描述 hyperf中,不难发现比如自定义控制器中获取参数,hyperf.php中容器获取,传入的都是接口,而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类,框架加载的时候将其作为数组,使用的…...
第一篇 设计模式引论 - 探索软件设计的智慧结晶
1. 设计模式的定义和起源 设计模式,这个术语最初在建筑领域被广泛使用,用来描述在建筑设计中反复出现的问题及其解决方案。在软件工程中,设计模式同样指的是在软件设计过程中反复出现的、经过验证的最佳实践和解决方案。 1994年,…...
HBase基础知识(六):HBase 对接 Hive
1. HBase 与 Hive 的对比 1.Hive (1) 数据仓库 Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以 方便使用 HQL 去管理查询。 (2) 用于数据分析、清洗 Hive 适用于离线的数据分析和清洗,延迟较高。 (3) 基于…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
