当前位置: 首页 > news >正文

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服务器在使用过程中创建的新用户&#xff0c;每位用户会在/home目录下生成一个属于其个人的主文件夹。如果不限制各个用户的使用空间&#xff0c;所有的用户都会共用/home所挂载的硬盘。在这种多用户情况下&#xff0c;会很快的填满/home目录&#xff0c;导…...

元宇宙与VR虚拟现实的未来如何?

从科幻小说到商业现实 自从 Facebook年更名为 Meta 以来&#xff0c;关于元宇宙的热议不断&#xff0c;人们对虚拟世界的兴趣也重新燃起&#xff0c;因为尽管虚拟现实 (VR) 的概念由来已久&#xff0c;但该技术现在才开始真正得以应用。 定义元宇宙和虚拟现实 首先是 The Met…...

微服务事务处理:CAP 定理和最终一致性的关系

CAP 定理和最终一致性 CAP 定理和最终一致性是两个密切相关的概念&#xff0c;但它们在范围和细节上有所不同。以下是比较&#xff1a; CAP 定理 **正式陈述&#xff1a;**在分布式系统中&#xff0c;最多只能同时满足以下三个保证中的两个&#xff1a;一致性、可用性和分区…...

【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS …...

Copilot概述:AI助手引领编程新纪元

前言&#xff1a; 随着人工智能&#xff08;AI&#xff09;技术的不断进步&#xff0c;编程领域也在逐渐迎来一场革命。GitHub Copilot&#xff0c;作为一款由 OpenAI 和 GitHub 合作开发的编程助手&#xff0c;引发了广泛的关注和讨论。本篇博客将全面概述 Copilot 的背景、功…...

最小覆盖子串(LeetCode 76)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff…...

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.定义泛型类 泛型机制语法&#xff1a; 类名<T> 其中&#xff0c;T是泛型的名称&#xff0c;代表某一种类型。 【例13.6】创建带泛型的图书类 代码&#xff1a; 结果&#xff1a; 2.泛型的常规用法 (1)定义泛型类时声明多个变量 class MyClass<T1,T2>…...

(2023,3D NeRF,无图像变分分数蒸馏,单步扩散)SwiftBrush:具有变分分数蒸馏的一步文本到图像扩散模型

SwiftBrush : One-Step Text-to-Image Diffusion Model with Variational Score Distillation 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 方法 1.1 基础 1.2 SwiftBrus…...

【WPF.NET开发】将路由事件标记为已处理和类处理

本文内容 先决条件何时将路由事件标记为已处理预览和浮升路由事件对实例和类路由事件处理程序复合控件中的输入事件禁止 尽管对于何时将路由事件标记为已处理没有绝对规则&#xff0c;但如果代码以重要方式响应事件&#xff0c;请考虑将事件标记为已处理。 标记为已处理的路由…...

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南大通用携手宇信科技打造“一表通”全链路解决方案

什么是“一表通”&#xff1f; “一表通”是国家金融监督管理总局为发挥统计监督效能、完善银行保险监管统计制度、推进监管数据标准化建设、打破数据壁垒&#xff0c;而制定的新型监管数据统计规范。相较于以往的报送接口&#xff0c;“一表通”提高了对报送时效性、校验准确…...

Python 内置高阶函数练习(Leetcode500.键盘行)

Python 内置高阶函数练习&#xff08;Leetcode500.键盘行&#xff09; 【一】试题 &#xff08;1&#xff09;地址&#xff1a; 500. 键盘行 - 力扣&#xff08;LeetCode&#xff09; &#xff08;2&#xff09;题目 给你一个字符串数组 words &#xff0c;只返回可以使用在…...

【JavaWeb】day01-HTMLCSS

day01-HTML&CSS HTML 图片标签&#xff1a;<img> src&#xff1a;指定图像URL&#xff08;绝对路径/相对路径&#xff09;width&#xff1a;图像宽度&#xff08;像素/相对于父元素的百分比&#xff09;height&#xff1a;图像高度&#xff08;像素/相对于父元素的百…...

【工具】windeployqt 在windows + vscode环境下打包

目录 0.背景简介 1.windeployqt简介 2.打包具体过程 1&#xff09;用vscode编译&#xff0c;生成Release文件夹&#xff08;也有Debug文件夹&#xff0c;但是发布版本一般都是用Release&#xff09; 2&#xff09;此时可以看下Release文件夹内&#xff0c;一般是.exe可执行…...

跟着LearnOpenGL学习12--光照贴图

文章目录 一、前言二、漫反射贴图三、镜面光贴图3.1、采样镜面光贴图 一、前言 在跟着LearnOpenGL学习11–材质中&#xff0c;我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观&#xf…...

DotNet 命令行开发

DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建 dotnet new运行 dotnet run发布应用 dotnet publish更多命令 VSCode 调试所需插件调试 CS 配置项目.csproj排除依赖关系 launch.jsontasks.json 参考资料 下载安装 下载 SDK 我们就下最新的好&am…...

hyperf console 执行

一、原理描述 hyperf中&#xff0c;不难发现比如自定义控制器中获取参数&#xff0c;hyperf.php中容器获取&#xff0c;传入的都是接口&#xff0c;而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类&#xff0c;框架加载的时候将其作为数组&#xff0c;使用的…...

第一篇 设计模式引论 - 探索软件设计的智慧结晶

1. 设计模式的定义和起源 设计模式&#xff0c;这个术语最初在建筑领域被广泛使用&#xff0c;用来描述在建筑设计中反复出现的问题及其解决方案。在软件工程中&#xff0c;设计模式同样指的是在软件设计过程中反复出现的、经过验证的最佳实践和解决方案。 1994年&#xff0c…...

HBase基础知识(六):HBase 对接 Hive

1. HBase 与 Hive 的对比 1&#xff0e;Hive (1) 数据仓库 Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系&#xff0c;以 方便使用 HQL 去管理查询。 (2) 用于数据分析、清洗 Hive 适用于离线的数据分析和清洗&#xff0c;延迟较高。 (3) 基于…...

ThreadLocal内存泄漏警告!多线程MDC使用必须知道的3个避坑点

ThreadLocal内存泄漏实战&#xff1a;多线程MDC避坑指南与深度解决方案 当你在凌晨三点被报警电话惊醒&#xff0c;发现生产环境因为内存溢出而崩溃时&#xff0c;排查结果指向一个看似无害的MDC日志组件——这种场景在过去两年里我已经经历了三次。ThreadLocal作为MDC的底层实…...

家庭实验室:树莓派控制OpenClaw调用远程Qwen3-32B

家庭实验室&#xff1a;树莓派控制OpenClaw调用远程Qwen3-32B 1. 为什么选择树莓派OpenClaw组合 去年冬天&#xff0c;我在整理家庭实验室设备时发现一个闲置的树莓派4B。这台信用卡大小的电脑曾经用来跑Home Assistant控制智能家居&#xff0c;但后来换了NUC主机就被束之高阁…...

OpenClaw跨平台同步:GLM-4.7-Flash配置在多设备复用

OpenClaw跨平台同步&#xff1a;GLM-4.7-Flash配置在多设备复用 1. 为什么需要跨设备同步OpenClaw配置 去年冬天&#xff0c;我在家里配置好OpenClaw接入GLM-4.7-Flash模型后&#xff0c;第二天到办公室想继续调试时&#xff0c;发现所有配置都要从头再来。这种重复劳动让我意…...

深度解析Mi-Create:开源智能手表表盘编辑器的完整实践指南

深度解析Mi-Create&#xff1a;开源智能手表表盘编辑器的完整实践指南 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 项目愿景与定位 在智能穿戴设备快速发展…...

OpenClaw对话增强:nanobot模型微调提升任务理解准确率

OpenClaw对话增强&#xff1a;nanobot模型微调提升任务理解准确率 1. 为什么需要专业场景的模型微调 在测试OpenClaw基础版本时&#xff0c;我发现一个明显痛点&#xff1a;当处理专业领域的自动化任务时&#xff0c;通用大模型经常出现"理解偏差"。比如在医疗文献…...

如何选择可靠的第三方软件测试机构,构建全生命周期的软件安全防线

在数字化转型的浪潮中&#xff0c;软件已成为企业运营的核心。然而&#xff0c;伴随其重要性一同增长的&#xff0c;是日益严峻的安全威胁。传统软件开发流程中&#xff0c;安全测试往往被置于交付前的独立环节&#xff0c;这种“事后补丁”的模式导致安全漏洞发现晚、修复成本…...

AT32F435_437_USB_MSC_SDIO:实现高效SD卡U盘功能的开发指南

1. 从零开始&#xff1a;AT32F435/437的USB MSC功能初探 第一次接触AT32F435/437的USB大容量存储设备(MSC)功能时&#xff0c;我完全被它的实用性惊艳到了。想象一下&#xff0c;你的嵌入式设备突然变身成电脑上的U盘&#xff0c;可以直接拖拽文件读写SD卡&#xff0c;这对数据…...

【AI+教育】AI总犯“金鱼记忆”?揭秘大模型长期记忆架构,让它真正记住你!

在和AI对话时,你是否有过这样的抓狂时刻:前脚刚告诉它“我叫小明,我不吃香蕉”,五分钟后它又热情地向你推荐香蕉饼? 目前的多数大语言模型就像拥有“金鱼记忆”,一刷新就忘得一干二净。为了让智能体(Agent)能像真正的老朋友一样懂你,我们设计了一套长期记忆功能模块。…...

PUMA560轨迹规划踩坑记:DH参数选错,你的仿真结果还准吗?

PUMA560轨迹规划实战&#xff1a;从DH参数陷阱到精准运动控制 第一次在MATLAB中看到PUMA560机械臂的末端执行器画出诡异的"8"字轨迹时&#xff0c;我盯着屏幕足足愣了三分钟。按照教科书上的标准DH参数编写的代码&#xff0c;理论上应该生成完美的直线运动&#xff0…...

别再死记硬背了!用Kahn算法搞定LeetCode 207课程表,保姆级C++代码逐行解析

从课程表到任务调度&#xff1a;Kahn算法在LeetCode 207中的实战应用 每次打开LeetCode看到那道课程表问题&#xff0c;你是不是也感到一阵头疼&#xff1f;先修课程、依赖关系、环状检测……这些概念堆在一起&#xff0c;简直比大学选课系统还让人崩溃。但别担心&#xff0c;今…...