找回密码
 立即注册
搜索
查看: 1171|回复: 5

老帖搬家:如何在linux下挂大于2TB的外设。

[复制链接]

426

主题

4755

回帖

5269

积分

管理员

积分
5269
发表于 2008-5-7 09:42:37 | 显示全部楼层 |阅读模式
以前写的一个关于存储的帖子,拿来给海浩填填。
原文出处:http://erjing.com/archives/86
--------------------------------------------------------------------------------------------------------------------------
如何在linux下挂大于2TB的外设。
June 30th, 2006 erjing

本来不想写的,实在太懒,不过昨天在chinaunix上发了篇帖子,实在看不过去了,CU已经不如从前,这些简单的事情,快1年了都没有人澄清,感悟现在中国学习linux的气氛非常不好,就那么点事情,很多人都自己研究好,然后再不出声了,感觉是什么高深的东西似的。
总之已经写了,自己顺便收藏一下,供大家参考。

首先大家看看这里的讨论:
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1
看来大家还有很多模糊的概念,我总结了一下自己的看法,实际上目前我就是这样用的:
以下是我在CU上发表的的:

简单描述一下如何使用大于2TB的文件系统。
大家可能都和我一样遇到过如此问题,看到上面很多兄弟在争论,我也来说说看法。
就我的理解:
    如果想在X86里面使用大于2TB的分区,是可以的,但是前提条件是使用安藤Itanium芯片的机器,在linux下用parted可以分出来大于 2TB的分区,但是前提条件也是使用安藤芯片,简单理解就是64的芯片。在parted下标记出来GPT的label(也就是GUID的分区表,和MBR 可不兼容,M$的一些产品,比如集群就不支持在GPT的分区中使用,所以在64位的机器中一定要小心了。)然后再分区。这样就支持很大很大的分区了。
    如果你的机器不是64位的,那也没有问题,大家都知道目前文件系统早就突破了2TB的界限,所以,我们在32位的机器(比如Xeon基于IA32的)中,只需要使用lvm2就行了。lvm2支持在32位的系统下大于2TB的分区,它相当于在pci总线和文件系统中间了一个虚拟的层(大概这样理解,具体的理解看这里http://www.adaptec.com/pdfs/3759_2TB_WP.pdf)。这样就很容易的突破了2TB的分区。
对了,你要确定你的SCSI卡是64位的,否则即便你的disk array是>2TB的,你的机器还是认不出来,不过一般来说,现在的服务器都是64位的pci卡了,比如dell 1850 ,2850。
总结一下,想使用大于2TB的文件系统在linux下有2种方法:
1、使用64位的系统,比如安藤系统。然后在linux下用parted建立GPT的分区表(不是msdos[MBR]或者loop),然后建立超级大的分区,然后直接用XFS(我比较喜欢这个)format就行了。
2、使用32位的系统,比如Xeon,在linux下建立N个分区,然后用LVM2来做虚拟盘,比如20个400G的盘,算算看就知道是8TB。
这里还有一些归纳:
1、对于GUID分区表(GPT)磁盘,最多可创建128个主磁盘分区。
2、x86 使用msdos,Itanium 使用gpt。
3、Redhat要到As4,而且是pack1之后才支持,如果仅仅是as4,需要打补丁。当然如果大家用centos很方便了。2.4内核不支持,2.6内核要多少来着。。。忘记了,大家可以看As4 pack1发布时候的发布文档,里面说明了。
4、图省力,把/dev/sda直接格式化为一个分区,是绝对绝对不推荐的。大家一定要记主!绝对不要直接把块设备格式化了。至少也要有个sda1。否则没几天数据就都丢了,甚至当你重新启动机器的时候数据就没了。
5、http://wuarchive.wustl.edu/pub/c ... NOTES-U1-zh_CN.html 这里讲了为啥要用安藤;http://www.adaptec.com/pdfs/3759_2TB_WP.pdf这里讲了2TB的方案,从历史原因到现状。除了linux的还有如何在M$下使用大于2TB的磁盘。很详细的,建议初级作存储的兄弟都可以看看。
大概抄录一下:
Commonly, the firmware, BIOS, driver, and at least part of the
storage stack support 32-bit block numbers, thereby limiting
the storage to 2TB. However since most filesystems support
page sizes larger than 512 B, they actually already support volumes
greater than 2TB. In other words, a filesystem may have
only 32-bit block numbers, but those blocks are commonly
multiples of 512 bytes, such as 2KB, 4KB, 8KB, etc., allowing
the volume size to be 8TB, 16TB, 32TB, respectively. Of
course, the factors that go into defining the max volume size
are much more complicated than this, but block size certainly
is an important factor.
With drivers presenting up to 2TB volumes and filesystems
supporting greater than 2TB volumes, there is one piece of the
puzzle missing: a method for combining smaller drive volumes
into larger filesystem volumes. This is possible with the several
operating systems (OS) that have a virtualization layer in the
storage stack. Just like the array virtualization in a PCI RAID
controller, the OS virtualization layer is able to combine smaller
volumes (disks) into a larger volume (virtual disk) for
improved performance and increased capacity. This low-overhead,
high-performance operating system layer is the key to
the solution presented in this paper.

BTW:我随手写的哦,没有好好组织语言,大家凑或看看吧。CU的朋友也可以直接联系我:MSN
Erjing (at) hotmail.com,我有空的时候乐意帮大家解决问题。我不是做存储的,太专业的问题俺就

加一句,如果想使用LVM,用fdisk是不能给大于2TB的设备分区的,还是要用parted.
而且要gpt,就像这样:
mkpart  primary ext2 0 200000
mkpart  primary ext2 200001 400000
mkpart  primary ext2 400001 600000
mkpart  primary ext2 600001 800000
mkpart  primary ext2 800001 1000000
mkpart  primary ext2 1000001 1200000
mkpart  primary ext2 1200001 1400000
mkpart  primary ext2 1400001 1600000
mkpart  primary ext2 1600001 1800000
mkpart  primary ext2 1800001 2000000
mkpart  primary ext2 2000001 2200000
mkpart  primary ext2 2200001 2400000
mkpart  primary ext2 2400001 2600000
mkpart  primary ext2 2600001 2800000
mkpart  primary ext2 2800001 3000000
如果你用
mkpart  extended  0 3000000
mkpart  logical ext2 0 200000
mkpart  logical ext2 200001 400000
mkpart  logical ext2 400001 600000
mkpart  logical ext2 600001 800000
mkpart  logical ext2 800001 1000000
mkpart  logical ext2 1000001 1200000
mkpart  logical ext2 1200001 1400000
mkpart  logical ext2 1400001 1600000
mkpart  logical ext2 1600001 1800000
mkpart  logical ext2 1800001 2000000
mkpart  logical ext2 2000001 2200000
mkpart  logical ext2 2200001 2400000
mkpart  logical ext2 2400001 2600000
mkpart  logical ext2 2600001 2800000
mkpart  logical ext2 2800001 3000000
会发生什么?最多到1T就分不下去了。
如果你用fdisk -l会看到什么?
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1      267350  2147483647+  ee  EFI GPT
是的,看不到你的分区,所以一定要养成用parted来看分区的习惯,忘记fdisk吧。

看看这里:
ls /dev/sda* -l
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda1
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda10
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda11
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda12
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda13
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda14
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX/dev/sda15
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda2
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda3
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda4
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX/dev/sda5
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda6
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda7
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX /dev/sda8
brw-rw—-  1 root disk 8,  XXXXXXXXXXXX/ dev/sda9
这才是你想要的。

以下是我处理的步骤,parted没有写成脚本,大家凑或用:)
mklabel gpt
mkpart  primary ext2 0 200000   #用ext2也无所谓的,总之随便指定一个。200000就是200G了,我把3TB的内容划分成了15个200G的。
mkpart  primary ext2 200001 400000
mkpart  primary ext2 400001 600000
mkpart  primary ext2 600001 800000
mkpart  primary ext2 800001 1000000
mkpart  primary ext2 1000001 1200000
mkpart  primary ext2 1200001 1400000
mkpart  primary ext2 1400001 1600000
mkpart  primary ext2 1600001 1800000
mkpart  primary ext2 1800001 2000000
mkpart  primary ext2 2000001 2200000
mkpart  primary ext2 2200001 2400000
mkpart  primary ext2 2400001 2600000
mkpart  primary ext2 2600001 2800000
mkpart  primary ext2 2800001 3000000
然后在这些分区变成PV
pvcreate /dev/sda1
pvcreate /dev/sda2
pvcreate /dev/sda3
pvcreate /dev/sda4
pvcreate /dev/sda5
pvcreate /dev/sda6
pvcreate /dev/sda7
pvcreate /dev/sda8
pvcreate /dev/sda9
pvcreate /dev/sda10
pvcreate /dev/sda11
pvcreate /dev/sda12
pvcreate /dev/sda13
pvcreate /dev/sda14
pvcreate /dev/sda15

然后可以直接建立VG st00
vgcreate -s 256M st00 /dev/sda1 \
/dev/sda2 \
/dev/sda3 \
/dev/sda4 \
/dev/sda5 \
/dev/sda6 \
/dev/sda7 \
/dev/sda8 \
/dev/sda9 \
/dev/sda10 \
/dev/sda11 \
/dev/sda12 \
/dev/sda13 \
/dev/sda14 \
/dev/sda15

或者先建立,然后扩展
vgextend st00  \
/dev/sda2 \
/dev/sda3 \
/dev/sda4 \
/dev/sda5 \
/dev/sda6 \
/dev/sda7 \
/dev/sda8 \
/dev/sda9 \
/dev/sda10 \
/dev/sda11 \
/dev/sda12 \
/dev/sda13 \
/dev/sda14 \
/dev/sda15
在VG st00上,建立LV md00
lvcreate -L2.86T -nmd00 st00
建立分区
mkfs.xfs /dev/st00/md00
完毕.
扩充的方法我这里就不写了,LVM管理不是这篇文章的重点。
--------------------------------------------------------------------------------------------------------------------------

619

主题

1万

回帖

1万

积分

信息监察员

积分
10242
发表于 2008-5-7 15:10:56 | 显示全部楼层
你用啥版本的罗
简单的幸福......
回复

使用道具 举报

426

主题

4755

回帖

5269

积分

管理员

积分
5269
 楼主| 发表于 2008-5-7 16:19:45 | 显示全部楼层
原帖由 微尘 于 2008-5-7 15:10 发表
你用啥版本的罗

你指的是啥罗?
回复

使用道具 举报

619

主题

1万

回帖

1万

积分

信息监察员

积分
10242
发表于 2008-5-7 19:45:26 | 显示全部楼层
LINUX?
DEBIAN ? 佛朵拉?UBUNTU?ARCH?GENTOO?...
简单的幸福......
回复

使用道具 举报

426

主题

4755

回帖

5269

积分

管理员

积分
5269
 楼主| 发表于 2008-5-7 22:42:14 | 显示全部楼层
随便啥linux....都一样的。
回复

使用道具 举报

43

主题

1045

回帖

1440

积分

金牌会员

积分
1440
发表于 2008-5-7 23:42:12 | 显示全部楼层
LINUX偶一看就:Y ,不过还是谢谢楼主了,估计以后会用的着
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-15 13:48 , Processed in 0.095930 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表