如何分区22TB磁盘?


33

我有一个22TB的磁盘/dev/sdb。如何创建22TB分区?不太在乎文件系统- ext4还是zfs很好。

运行CentOS 6.2-分区将用作数据转储。现在只需要单个数据流,因此对什么文件系统进行挑剔/选择就不再是真正的问题了。该磁盘由12x2TB近线SAS驱动器和Dell Perc控制器组成。

我只想要一个22TB的分区。


1
其他一些信息会有所帮助。您正在使用什么操作系统?您期望或需要什么样的性能?什么是底层硬件?它已经是一个突袭设置了吗?有冗余吗?您是否需要zfs的额外数据保护功能?
蒂姆·肯尼迪

3
到目前为止,哪些尝试失败了?fdiskcfdisk
尼尔斯2012年

Answers:


44

最简单的解决方案是使用GPT分区,Linux的64位版本和XFS

  • GPT因为是必要MS-DOS样式MBR分区表通过创建fdisk被限制为2个的TiB磁盘。因此,您需要使用parted或其他支持GPT的分区程序来代替fdisk。(gdiskgparted等)

  • 64位内核是必需的,因为32位内核会将您限制为比您要求的文件系统小的文件系统。您要么达到了基于32位整数的大小限制,要么最终无法寻址足够的RAM以正确支持文件系统。

  • XFS不是唯一的解决方案,但我认为它是RHEL系统最简单的解决方案。

    您不能在RHEL 6中为此使用ext4。尽管文件系统旨在支持1个EiB文件系统,但e2fsprogsRHEL 6及其衍生版本中包含的版本有16 TiB的人为限制。这两种红帽CentOS的在他们的文档调用了这一点。(RHEL 7中将 ext4 16 TiB限制大大提高到50 TiB。)

    ZFS可能不适用于您的情况。由于它的几个法律和技术限制,除非您仅需要ZFS所提供的功能,否则我不能直接推荐它。

    在排除了您选择的两个文件系统之后,我建议使用XFS。它是RHEL 7中的默认文件系统,在所有RHEL 6版本中都可以作为受支持的文件系统使用,并且在RHEL 6发行后被反向移植到更高的RHEL 5版本中。

过程如下:

  1. mkfs.xfs通过不带参数运行来检查是否已安装。如果不存在,请安装userland XFS工具:

    # yum install xfsprogs
    

    如果失败,那可能是因为您使用的是旧版操作系统,而该操作系统的默认软件包存储库中没有此功能。您确实应该进行升级,但是,如果那不可能,您可以从CentOSPlusEPEL获得它。您可能还需要安装该kmod_xfs软件包。

  2. 创建分区:

    由于您说的是22 TiB卷已打开/dev/sdb,因此命令parted如下:

    # parted /dev/sdb mklabel gpt
    # parted -a optimal -- /dev/sdb mkpart primary xfs 1 -1
    

    这导致它用单个分区接管整个卷。实际上,它忽略了卷的前1 MiB,以实现从Advanced Format HDDSSD获得完整性能所需的4 KiB对齐

    您可以跳过此步骤,并使用XFS格式化整个卷。也就是说,您将/dev/sdb在下面的示例中使用而不是/dev/sdb1。这避免了扇区对齐的问题。对于只有基于Linux的操作系统才能看到的卷,没有值得一提的缺点,但是我提醒您不要在可移动卷或多启动计算机的内部卷上执行此操作。操作系统(例如Windows和macOS)将在每次出现时为您格式化无分区硬盘。将文件系统放在分区上可以解决此问题。

  3. 格式化分区:

    # mkfs.xfs -L somelabel /dev/sdb1
    
  4. 添加/etc/fstab条目:

    LABEL=somelabel    /some/mount/point    xfs     defaults   0 0
    
  5. 悬置起来!

     # mount /some/mount/point
    

如果您想沿用LVM路径,上述步骤基本上只是下面用户bsd答案中第二组命令的更详细版本。您必须在执行上述命令之前先执行他的第一组命令。

LVM以复杂性成本提供某些优势。例如,您以后可以通过向其添加更多物理卷来“增长”一个LVM卷组,从而为逻辑卷(“ partition” kinda,sorta)的扩展留出空间,这又使您可以增长逻辑卷上的文件系统。体积。(明白我对复杂性的意思吗?


4
ZFS部分值得商bat。自2010年以来,Linux端口已经走了很长一段路,与XFS相比,它具有许多优势
TheLQ 2012年

关于GPT / MBR,不只有真正适用,如果/boot是的一部分/?MBR /只需要安装一个小的/boot权限就不必在乎它有多大?我可能是错的。
jonescb 2012年

1
@jonescb:的位置/boot与MBR的限制无关。如果需要超过2 TB的分区,则不能使用MBR分区。这真实的,但是,它可以通过把从GPT解决缺乏BIOS支持启动/boot一个小的MBR分区的磁盘上。内核启动后,您不必担心BIOS的限制,因为它知道如何解释GPT分区表。如果您的计算机是基于EFI的,则无需进行此操作,因为EFI理解GPT。
沃伦·杨

16

作为其他建议的替代。
您根本不需要对磁盘进行分区。
您可以简单地创建一个卷组,与一个或多个逻辑卷

pvcreate /dev/sdb
vgcreate data /dev/sdb
lvcreate --name dump -L '100%VG' data

现在,您可以使用所需的任何文件系统类型格式化逻辑卷。

mkfs.XXXX /dev/mapper/data-dump #<- XXXX can be ext4, xfs, btrfs, reiser
mount /dev/mapper/data-dump /mntpt

LVM基本上是分区的高级形式。如果仅打算使用所有空间来创建单个LV,则使用LVM是没有意义的,因此最好直接在整个磁盘设备上使用mkfs。
psusi'1

4
LV没有用于实时数据快照,可调整大小的元数据的多个副本的添加工具;比设备上的简单fs灵活得多。
bsd 2012年

1
首先没有元数据(分区表)时,不需要元数据的多个副本。快照需要可用空间,添加/扩展卷也需要可用空间,因此,如果您立即使用所有空间创建单个逻辑卷,那么快照将变得毫无意义。如果要使用LVM的功能,则应从较小的卷开始,这样您就有足够的可用空间供以后使用。
psusi 2012年

我不建议在这种情况下使用LVM,只是将其列出来替代“其他”分区,非分区答案/解决方案。由她决定阅读所有答复,跟进她自己的研究,然后决定最适合她需要的行动方案。
2012年

3
即使只有一个LV,LVM的优点之一是,它使您以后可以轻松添加存储。
plugwash

6

问题的问题:您问“答案如何对 22TB磁盘进行分区',然后在问题中再次说,您只想要22TB分区。因此,这首先是歧义。

如果您已经有一个可以支持22 TB空间的单个块设备,那么您已经拥有了整个22 TB分区。您只需要在其之上的文件系统,该文件系统将使该设备可安装并且可用于系统进程的读取/写入。更重要的是,您需要使Linux内核以64位模式运行,并具有文件系统模块/驱动程序,该文件系统模块/驱动程序支持并扩展到22TB的数据增长,可以处理使用(单个)块设备管理数据的来龙去脉。缓解。性能完全是另一个维度。在这种情况下,我会选择XFS作为我的文件系统,因为它是64位文件系统,并且能够处理高达一百万兆字节的文件系统。它最多支持9个EXABYTES。

2^63  = 9 x 1018 = 9 exabytes 

有关XFS的更多详细信息: http //oss.sgi.com/projects/xfs/

如果您正在寻找对大型22TB块设备进行进一步分区的方法,请使用 gparted将设备拆分为可用的分区,然后使用文件系统对其进行格式化以使其可安装。

似乎您已经有了硬件RAID控制器,因为您提到已经拥有DELL perc RAID控制器-这意味着,您必须知道哪种RAID配置(确切地说是使用哪种RAID级别?),并且在大多数情况下,您不会获得完整的22TB可用空间,但是我可能是错的。


我也打算建议使用xfs,但是xfs_check将占用大量内存,并且运行w / 22G fs的时间较长。在物理和交换之间,至少需要32G来检查,即他是否愿意检查“数据转储”上的fs(无论是什么内容;)
bsd

@bdowning,您可能需要将其更正为22T fs :)
Nikhil Mulley,2012年

它是22TB Raid5。我有很多磁盘:)
LVLAaron 2012年

那是拼写错误(脑子放屁)。我使用的是LSI Megaraid(与Dell Perc相同的卡)的同一设备10TB
bsd

@bdowning:xfs_check确实确实使用了大量内存,但是手册页(8)提到:“ 请注意,xfs_check不建议使用using 。请xfs_repair -n改用,以提高可伸缩性和速度。
克里斯蒂安·丘皮图

4

使用ZFS时不需要任何分区,只需在22 TB设备上创建ZFS池,并在其中创建文件系统即可(如果您不想使用默认值即可)。如果出于某种原因,zpool不支持使用整个磁盘,请首先使用内部可用空间创建一个EFI标签和一个分区,然后使用该分区创建池。

出于多种原因,我不建议在大型文件系统中使用ZFS。最明显的是,如果您断电了(例如:内核恐慌或电源不足),fsck可能会花费很长的时间来恢复传统文件系统。另一方面,ZFS不需要fsck,因此将立即导入池。

请注意,最好打破硬件RAID配置,并使用十二个设备作为JBOD来利用其软件RAID功能来构建ZFS池。如果目标是性能,则可以镜像磁盘对,如果目标是最大化空间,则可以使用RAIDZ,RAIDZ2或RAIDZ3配置。这样做将大大提高数据的可靠性和解决方案的容错能力。


1
我知道这是一个老问题的老答案,但是....如果使用ZFS,最好的选择是销毁RAID阵列,为JBOD配置RAID控制器,以便linux看到每个单独的磁盘,然后创建镜像对(容量较小,性能出色)或RAIDZ / Z2 / Z3(容量较大,性能低下)。如果将ZFS置于现有RAID之上而不是让它自己处理磁盘本身,则会失去ZFS的很多好处。btrfs也是如此。
cas

@cas你绝对正确,答案已更新。我的注意力集中在OP问题上,尽管“如何分区22TB磁盘”而不是“您建议对我的磁盘配置做什么”。
jlliagre

3

我不确定使用标准分区表当前是否可以实现。在标准分区表方案中,卷限制为2 32个扇区。每个扇区512字节,您只需用尽数字即可分配给大约2TB的扇区。

但是,如果使用GUID分区表而不是标准分区表,则应该能够执行此操作。GUID分区表允许卷扩展到Zettabyte范围。大多数Linux发行版都可以从GUID卷启动,但是目前没有Windows版本(EFI上的Windows 7除外)。

某些工具(例如fdisk)不能与GUID卷一起使用,但是其他工具(例如GParted)则可以。一旦创建了GUID分区表,就应该能够使用支持该大小的卷(例如EXT4)的几种常见文件系统之一来创建卷。


在32位系统上可能是这样。我已经能够在版本8.04和更高版本支持的64位Ubuntu服务器上创建3.5TB分区。说到cyberciti.biz/tips/...
卡尔森

据我所知,您甚至不需要分区表即可将文件系统放置在硬盘上。另外,根据OP,它不是启动驱动器,而是很大的转储空间。
卡森(Karlson)2012年

3

对于您的分区表,就像在其他地方提到的那样,GPT是一个很好的选择,因为它支持最大9.4 ZiB的分区(9.4×10 21字节)的,这远远超出了22 TiB所需要的任何。

对于您的文件系统,在Linux上BTRFS是一个出色的写时复制文件系统:

  1. 其写时复制属性意味着没有重复文件被存储两次。
  2. 它具有动态压缩功能,因此在将数据写入磁盘或从磁盘读取数据之前,需要先通过LZO或GZip运行数据,以节省物理磁盘空间。
  3. 它支持RAID-1,RAID-10,RAID-5和RAID-6配置中的冗余,而没有任何开销。
  4. 如果速度至关重要,它还支持RAID-0。
  5. 它还具有子卷,快照等。
  6. 几乎所有文件系统任务都是在线完成的,因此您通常不必卸载文件系统即可修复问题。

它在功能上类似于ZFS,但它是主线Linux内核的一部分。


BTRFS FAQ 警告除了测试和开发目的之外,不要使用其奇偶校验RAID功能。它有一些已知的错误可能会吞噬您的文件系统。链接中的更多信息。
沃伦·杨

1

如果您不打算寻找冗余或备份能力,则可以执行以下操作:

mkfs -t ext4 /dev/sdb

4
你试过了吗?我更改了mkfs指定文件系统的位置
Karlson'1

1
@AaronJAnderson的解释会有所帮助。
n0pe 2012年

如果设备超过2TB,该命令将不起作用
LVLAaron 2012年

1
@AaronJAnderson我使用创建了3.5TB的卷reiserfsext3因此,如果ext4声称最大卷为16 EB,我看不出22TB无法正常工作的任何理由。
卡森(Karlson)2012年

1
带此版本linux的e2fsutils版本(目前大多数其他版本不支持16TB以上)
LVLAaron 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.