我应该为Linux服务器创build多less个分区?

分区在Linux服务器上非常重要,因为它可以提供很大的灵活性,例如升级到更大的硬盘时。

但是,在构buildLinux机器时应该创build多less个分区? 我应该为每个分区设置哪个大小?

最后但并非最不重要的是,我应该在一个单独的磁盘上分配哪些分区(我正在考虑/ home,/ var或许是一个更快的驱动器等),以及我可以在同一个驱动器上共享哪些分区?

规划一个好的分区结构很大程度上依赖于实际知道你将如何使用“服务器”。 任何不提供实际服务的随机build议都不会特别有用。

例如,如果它是一个基于debian的框,将用于mysql,你可能需要为/,/ var和/ var / lib / mysql创build一个单独的分区。

它会成为一个文件服务器与大量的共享存储? 你可能需要一个/,/ home和/ srv分区。

对于只运行鱿鱼的盒子,你可能想要在/的分区上,而在快速磁盘上的一个分区上用于鱿鱼盘。

由于您正在计划分区,因此对“ 文件系统层次结构标准”有很好的理解,以及您select的发行版是否偏离标准是非常有帮助的。

使用LVM可以使以后改变主意,调整分区而不必重新启动,而且创build快照的function可以非常容易地创build好的备份。

我总是创build这些分区,截至去年,一直在LVM上:

/ - a few Gig /usr - 24 Gig and mostly empty /var - 4 Gig works for me, YMMV /home - depends on how many users you will have 

其中最重要的是/var – 如果这是一个单独的分区,那么当它填满时,不会崩溃根分区。 虽然我从来没有这样做过,但是有一些做了一个单独的/usr以便它们可以以只读方式挂载它。

我有时会创build这些分区:

 /boot - even 1 Gig is way more than enough 

理由是从RAID或LVM分区引导并不总是可能的。 因此, /boot可以是一个简单的ext3分区,允许/更加先进。

如果我将有大量的大文件,我有时会为这些大文件创build一个特定的分区,这样可以调整文件系统以便高效地存储大文件。 有些人,如果他们将从服务器提供NFS,将为他们的NFS共享创build一个单独的分区,甚至为每个NFS共享创build一个单独的分区。 这取决于你的需求。

为什么LVM? 正如我在其他地方提到的答案,但忘了在这里提到,这使得它很容易后来改变你的想法和扩大分区。 这已经救了我的屁股了。

这些是一般指导原则。 当然,我希望如果你的服务器有特殊的需求,你会考虑到这一点,并作出反映这些需求的分区。

假设你正在build造一台将持续一段时间的机器,重build会很不方便,而且需要非常灵活,你可能会喜欢类似于以下的scheme:

  1. 安装至less两个物理驱动器,大小相同; 就这个例子而言,我将假设500GB的SATA驱动器,但其他原理驱动器的工作原理还是不错的。

  2. 每个驱动器分区如下:

     /dev/sda1 500MB /dev/sda2 100GB /dev/sda3 the rest 

    我们的目标是在前端拥有一个500MB的分区,在操作系统和应用程序中间有一个相当大的分区,另外还有大量的驱动器在后面。

  3. /dev/sda1/dev/sdb1构buildSW RAID 1集, /dev/md0 ; 从相应的分区构build额外的SW RAID 1集/dev/md1/dev/md2

  4. 格式/dev/md0为ext3; 这将是/boot

  5. /dev/md1/dev/md2格式化为LVM物理卷。

  6. 创build一个包含/dev/md1的LVM卷组vg_system

  7. vg_system为您的各个操作系统分区创build合适的LVM卷; 至less,你会想swap一个GB的/var ,和/或10GB左右。 注意 :不要分配所有的vg_system ! 当你以后决定要增加\var的大小,或者你想添加一个/opt或者whatnot,那么你就需要额外的空间。

  8. 创build一个包含/dev/md2的LVM卷组vg_data

  9. 根据需要在vg_data创buildLVM卷; 至less你会想要一个相当大的/home ,并且你可能需要额外的卷,比如说邮件假脱机程序,数据库,web根目录或者任何其他不属于操作系统的数据。 同样,不要分配所有的vg_data ,原因与上面列出的类似。

这一战略的优势包括以下几点:

  • 它容忍硬件故障; 这两个驱动器都可能出现故障而不会导致系统故障,如果您投资了热插拔控制器,则无需停机即可恢复。

  • 这是前瞻性的,可扩展的; 当你在路上购买2TB硬盘时,可以将它们放入机器,将它们放入另一个SW RAID集,将其格式化为LVM物理卷,将其添加到需要更多空间(可能是lv_data )的卷组中,然后使用pvmove将数据从旧驱动器迁移到新驱动器上。 此外,主要的操作系统更新可以显着减less痛苦; 如果您需要重新安装操作系统进行重大升级(红帽子:(),您可以这样做,同时保留主目录(和邮件vg_data以及其他任何你放在vg_data )。

这个战略的弊端是less的; 我认为这有点复杂,而且由于RAID 1的原因,写入的性能会受到影响。但是,根据这些原则,我已经build立了多年的工作站和独立服务器,而且我每次都用自己的经验根据这些线路,我不希望有一台机器。

史蒂夫

PS我应该补充说,如果你有快速,无痛的configuration新机器的基础设施,那么这样的系统是过度的; 而不是修改RAID设置和LVM,只需要重build机器,如果你需要改变。

多年来,我用过的每一台计算机都是双启动系统,而在Linux方面,我几乎坚持这个模式(我在这里说个人工作站,没有服务器的东西,所以你的里程可能会有所不同)

 / - main thing /boot - not that relevant, since cylinder being < 1024 and exotic filesystems are no longer an issue /home - handy if you upgrade your laptop with each new distro :-) 

对于我的最后一次升级,我做了一个从头开始安装,擦除我的/分区。 这让我觉得一个单独的/opt/usr/local分区本来是不错的,不过我很担心重新安装所有的东西(java,eclipse …我通常不关心发行版包装的东西)。

除了Eddie提到的分区之外,我通常还会创build两个独立的分区

/ tmp – 出于同样的原因,你创build了一个单独的/ var分区(我有临时空间都填满之前)。 我通常使用1-2 GB

/ usr / local – 这样可以根据需要升级和清除/ usr,而不会将所有单独安装的软件全部清空。 这里的大小取决于你安装了多less外部软件。 我通常使用大约10 GB,但是我发现这些日子有点小。

我总是最后回家,并用它填满磁盘的其余部分。

在/ boot分区上,我从来没有把它做成大于100Mb,从来没有遇到空间问题(我最终清理了旧的内核)。 它确实可以是非常小的。

另外也不要忘记交换分区。

对于大多数机器,我都这么做

 100MB /boot 1GB * NUMBER_OF_USERS /home 10GB /var/log 10GB /var REST / 

在某些情况下,这将需要切换,但我坚持认为用户在服务器上的空间不会超过1GB。 如果他们需要更多,他们可以使用/ tmp,并且知道它会被通过cron每晚删除。

假设你不使用硬件RAID – 在Linux下,我总是在RAID上使用LVM。 即使是单个磁盘configuration。 原因是你可以select添加更多的存储空间(通过扩展LVM组),或者改变冗余选项(比如把一个“奇怪”的单个磁盘raid1configuration变成镜像的,甚至是一些繁重的RAID10)。

为了回答你的问题,我通常对于通用服务器有类似的东西。 从2个磁盘(比如1RU戴尔)开始,它们的分区为:

  • 〜100MB RAID1 for / boot
  • LVM位于磁盘剩余部分的RAID1之上

然后,我们将所有卷创build为LVM卷:* / * / var * / tmp * / home * / opt

我会避免创build太多的文件系统,因为这是一个痛苦的pipe理。 如果磁盘空间不足,则最终会在多个文件系统中拥有可用空间,但不足以完成工作。

/ home和/ tmp在单独的文件系统上总是一个好主意; 一般我不会分开/ opt,除非我打算把很多东西放在里面。 (如果你有很多需要相同软件堆栈的服务器,NFS可能是更好的/ opt选项)

简而言之,除非你有一个理由不要这么做,否则你可以使用LVM来更改。

另外,使用日志服务器,这样日志将不会填满你的/ var!

  • / boot – 128MB

卷组 – rootvg

  • / var – 5GB(取决于它是否用作邮件服务器,也可以resize以捕获核心文件)
  • / tmp – 2GB
  • / opt – 10GB(用于不随发行版提供的软件)
  • / – 6GB – 最小

卷组 – datavg

  • /家 – 其余的

你可以为你的软件创build一个单独的/ usr,但是在我的情况下,这个盒子被重新安装,所以不需要自己的分区。