如何查看文件系统类型
在xen hyperviso中创建domU的时候,经常要跟镜像文件或lvm打交道,尤其是文件系统,目前linux中用得最多的是:ext2、ext3、ext4,这三种文件系统各有优缺点。
- ext2具有良好的兼容性,可以在NetBSD和Linux中直接挂载操作;
- ext3在Linux中拥有广泛的用户群,是目前最成熟的文件系统,不过NetBSD尚未支持ext3;
- ext4是最近才被Redhat引入生产环境,性能高于ext3,是以后的主流,不过目前跟grub2还有些兼容问题,NetBSD对其支持更是遥遥无期。
本文旨在说明如何识别各种domU storage backend的文件系统类型,OS涵盖NetBSD、Linux,backend类型涵盖镜像文件和LVM。
一、镜像文件
1.1 NetBSD
# vnconfig vnd0 /path/to/your/image.img
# disklabel /dev/vnd0
# /dev/vnd2d:
type: vnd
disk: vnd
label: fictitious
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 1953
total sectors: 4000062
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
9 partitions:
# size offset fstype [fsize bsize cpg/sgs]
d: 4000062 0 unused 0 0 # (Cyl. 0 - 1953*)
e: 3000032 32 Linux Ext2 0 0 # (Cyl. 0*- 1464*)
i: 999904 3000096 swap # (Cyl. 1464*- 1953*)
disklabel: boot block size 0
disklabel: super block size 0
说明:
- disklabel显示的结果表明该镜像文件含两个分区:第一个是linux ext分区,但不确定是ext2还是ext3,因为disklabel无法区分这两者,第二个是linux swap分区。
- 实际上,该镜像中的linux ext分区为primary分区,linux swap是扩展分区中的一个逻辑分区。disklabel也无法显示该信息。
NetBSD-5# dumpe2fs /dev/vnd2e | head -15
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: f53a00d0-ad60-4dc0-bc7a-a3dab4c562fd
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal filetype sparse_super
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 750720
Block count: 1500016
Reserved block count: 75000
Free blocks: 1018679
说明:在filesystem feature中,has_journal表明这是一个ext3分区。
假如要查看ext4分区,需要用dumpe4fs,feature是extends不过netbsd5.1和centos5.7尚无该命令。
1.2 Linux
# dd if=/dev/zero of=./deb6-ext3.img bs=1000 count=2000K seek=32
# parted deb6-ext3.img mklabel msdos
# parted deb6-ext3.img mkpartfs primary ext2 0 1536
# parted deb6-ext3.img mkpart extend 1537 2048
# parted deb6-ext3.img mkpartfs logical linux-swap 1537 2048
# kpartx -p "" -av deb6-ext3.img
add map loop61 : 0 3000032 linear /dev/loop6 32
add map loop65 : 0 999904 linear /dev/loop6 3000096
# dumpe2fs /dev/mapper/loop61 | head -15
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: b31e2b83-d759-48f2-b1ca-36abd6d26278
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 750720
Block count: 1500016
Reserved block count: 75000
Free blocks: 1405717
Free inodes: 750709
# tune2fs -j /dev/mapper/loop61
将ext2转换成ext3,因为CentOS5.7中自带的parted版本较低,不支持ext3,如果是其它linux发行版,可以直接通过parted创建ext3分区。无需tune2fs -j这个步骤。
# dumpe2fs /dev/mapper/loop61 | head -15
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: b31e2b83-d759-48f2-b1ca-36abd6d26278
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 750720
Block count: 1500016
Reserved block count: 75000
Free blocks: 1405717
Free inodes: 750709
三、lvm或物理分区
同样可以通过dumpe2fs /dev/dev_name | head -15
来查看