AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1389931
Accepted
nightwatch
nightwatch
Asked: 2022-01-30 05:36:38 +0800 CST2022-01-30 05:36:38 +0800 CST 2022-01-30 05:36:38 +0800 CST

使用 LVM 在已安装系统上从单分区 Ubuntu 20.04 服务器过渡到多分区的完整指南

  • 772

标题是我的要求。我已经阅读了几个小时,并且找到了将 /home 移动到分区和 /tmp 移动到分区的教程。但是没有将所有推荐的目录转换为 Ubuntu Server 的分区。一个教程接近了,但随后忽略了将数据从先前目录复制到新分区的明显必要步骤。

无论如何,经过几个小时,我仍然没有找到涵盖我相当常见情况的教程。

情况:
我在 Prod & Test 服务器(分别为 vps 和 virtualbox)上安装了 Ubuntu Server,做了一些工作。在阅读服务器加固教程时,我意识到最好使用 /boot /home /swapfile /tmp /usr 和 var... /opt? 出于资源管理和安全原因,所有这些都在单独的分区上。

创建上述分区的正确方法是使用 LVM

但是,没有教程讨论/推荐分区大小(按比例,显然不同的系统有不同的可用磁盘空间,我的 / 是 80GB)

此外,有些教程提到了必要的更改/etc/fstab,有些则没有。

nodev,noexec,nosuid我的目标是将我的 80GB 单分区设置转换为多个分区,然后使用以下方法保护分区免受常见攻击和利用:/etc/fstab

我可以花几天时间在 virtualbox 中测试和失败不同的配置......或者一些漂亮和/或漂亮的“ Ubuntu Server Partitioning Guru ”可以发布一个易于遵循(中级用户目标受众)的权威指南,如上所述并成为互联网名人许多在 vps 上托管自己项目的用户将永远爱你和崇拜你。:-)

更新
我最初没有发布主服务器强化指南,因为我不希望这篇文章成为对这个人非常彻底的工作的“辩论”。但是,事后看来,我认为这对于希望回答这篇文章的人们会有所帮助,以了解我正在努力实现的实际安全优势。

https://linoxide.com/ultimate-guide-secure-ubuntu/

server
  • 1 1 个回答
  • 603 Views

1 个回答

  • Voted
  1. Best Answer
    nagelp
    2022-01-30T08:23:46+08:002022-01-30T08:23:46+08:00

    我认为通常将事物分成不同的文件系统并不能帮助/提高安全性。如果有人在系统运行时闯入系统,无论如何都会安装所有内容,并且将所有内容都放在一个文件系统中没有逻辑上的区别。你研究的材料中给出了哪些理由?

    也就是说,它可以提高性能(这些挂载点下的不同文件系统或不同硬件)并缩短灾难恢复所需的时间(例如,如果只有保存 /var 的 SSD 化为乌有,您只需恢复该备份并其余的保持运行)。

    您在询问推荐的分区大小:

    • 因为/你适合 15-20 GB。我从来不需要更多的服务器(运行 Web 服务器 + 邮件服务器)。
    • swap我通常放置自己的卷/分区,它与 RAM 大小相同 - 只是为了让磁盘挂起可以工作。人们过去推荐 2xRAM 大小,但现在的 RAM 大小,当你遇到需要大量交换的情况时,无论如何你都会遇到麻烦。您会从大幅减速中注意到它,然后您应该快速增加可用 RAM。
    • /boot只需要 500 MB,这为 8+ kernel+initrd 版本提供了空间。确保apt autoremove经常运行,以在内核升级后对其进行修剪。
    • 我会保留/usr和/opt作为目录/,只是看不到将它们移动到自己的文件系统的好处。
    • 如本强化指南中所述,拥有一个单独的卷/tmp确实有意义,因为它允许您对全局可写目录进行更多限制——无论是它可以使用多少空间来使用全部可用空间,以及可以做什么存储在那里的文件。该指南建议在挂载文件系统时使用 nodev、nosuid 和 noexec 选项。该指南仅提供“一次性使用”的安装命令。将其转换为 /etc/fstab 中的一行意味着您将nodev,nosuid,noexec其放入将专用 /tmp 卷安装到的行的第 4 列(选项)中/tmp。
    • 这给我们留下了/home-/var这通常是“重要”的东西。在我的服务器/home上几乎是空的,但/var包含 public_html、日志、数据库等。所以我将/home其作为目录保存在 上/,但/var绝对有自己的卷,并且备份最频繁。完成上述操作后,给它所有剩余空间。

    然后你问如何进行过渡:

    • 在正在运行的系统中,一切都已打开/,附加新磁盘(VDI 文件,...),使用 pvcreate、lvcreate 和您选择的文件系统(例如 mkfs.ext4)准备它。
    • 然后在/mnt 下创建临时挂载点,例如/mnt/newroot、/mnt/newvar,...并在那里挂载文件系统。
    • 然后rsync -xaP <source>/ <destination>/用于您的每个文件系统。'-x' 选项将阻止 rsync 跨越文件系统边界,即如果你这样做rsync -xaP / /mnt/newroot/,它也不会复制 /var、/home 甚至所有安装在 /mnt 下的新文件系统。'-a' 将确保权限等将在不修改的情况下被接管,'-P' 显示进度。详情请参阅man rsync。

    完成后,编辑/mnt/newroot/etc/fstab并确保在适当的挂载点列出所有文件系统。如果您已经做到了这一点,那么这应该不会太难(因为您选择了所有 /dev/mapper/... 名称、文件系统等)。

    您还必须使用 grub-install 和 update-grub 来使新磁盘可引导,但我不太确定确切的过程。使用虚拟机,您可以轻松试用,如果无法启动,请重新附加旧磁盘并修复它。

    作为参考,这里是一个 shell 会话,它为您提供了一些关于分区 + LVM + 格式化 + fstab 主题中的引用的特定命令。请注意,您很可能必须修改它们,例如,如果您的设备不是 /dev/sda,如果您想要不同的文件系统等 - 这只是一个示例。

    # After using fdisk to create one partition that covers the whole device,
    # it looks like this:
    root@ubuntu:~# fdisk -l /dev/sda
    Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Disk model: VBOX HARDDISK   
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 18ACB4C9-3F33-7041-8BEB-D819F138A809
    
    Device     Start       End   Sectors  Size Type
    /dev/sda1   2048 209715166 209713119  100G Linux LVM
    
    # Create a physical volume for LVM
    root@ubuntu:~# pvcreate /dev/sda1   
      Physical volume "/dev/sda1" successfully created.
      
    # Create a volume group with the name "vg1" for LVM that will
    # hold all our logical volumes
    root@ubuntu:~# vgcreate vg1 /dev/sda1
      Volume group "vg1" successfully created
    
    # Create the logical volumes as described above
    root@ubuntu:~# lvcreate --name root --size 20G vg1     
      Logical volume "root" created.
    root@ubuntu:~# lvcreate --name swap --size 8G vg1
      Logical volume "swap" created.
    root@ubuntu:~# lvcreate --name boot --size 500M vg1
      Logical volume "boot" created.
    root@ubuntu:~# lvcreate --name tmp --size 5G vg1
      Logical volume "tmp" created.
    
    # Have a look at the logical volumes
    root@ubuntu:~# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      boot vg1 -wi-a----- 500.00m                                                    
      root vg1 -wi-a-----  20.00g                                                    
      swap vg1 -wi-a-----   8.00g                                                    
      tmp  vg1 -wi-a-----   5.00g                                                    
    
    # Have a look at the volume group and see how much space is left
    root@ubuntu:~# vgs
      VG  #PV #LV #SN Attr   VSize    VFree  
      vg1   1   4   0 wz--n- <100.00g <66.51g
    
    # Use the remaining space for the last logical volume, var
    root@ubuntu:~# lvcreate --name var --size 66.5G vg1
      Logical volume "var" created.
    
    # Have another look at the volumes
    root@ubuntu:~# lvs
      LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      boot vg1 -wi-a----- 500.00m                                                    
      root vg1 -wi-a-----  20.00g                                                    
      swap vg1 -wi-a-----   8.00g                                                    
      tmp  vg1 -wi-a-----   5.00g                                                    
      var  vg1 -wi-a-----  66.50g
    
    # Format all volumes with ext4 file system
    for i in /dev/mapper/vg1-*; do mkfs.ext4 $i; done
    # Turn vg1-swap into swap space
    mkswap /dev/mapper/vg1-swap
    
    # Create fstab entries that look like this
    /dev/mapper/vg1-root    /       ext4    defaults                0       1
    /dev/mapper/vg1-boot    /boot   ext4    defaults                0       2
    /dev/mapper/vg1-var     /var    ext4    defaults                0       2
    /dev/mapper/vg1-tmp     /tmp    ext4    nosuid,nodev,noexec     0       0
    /dev/mapper/vg1-swap    none    swap    sw                      0       0
    
    • 2

相关问题

  • 使用 dpkg 手动安装软件包是否会阻止未来的升级路径?

  • 如何从命令行刻录双层 dvd iso

  • 如果在服务器机器上运行 Ubuntu 桌面版,性能损失是多少?

  • 将桌面版剥离为服务器版的最简单方法是什么?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve