1.分区
MRB(Master Boot Recorder)MBR(MasterBoot Recorder)主引导分区仅提供最多4个分区,主分区(Primary,P)与扩展分区(Extended,E),如3P+1E,扩展分区最多只能有1个
基本MBR结构 | |||
偏移量(位置) | 长度 | 解释 | |
十进制 | 十六进制 | ||
000 – 445 | 000 – 1BD | 446 | 引导程序 |
446 – 509 | 1BE – 1FD | 64 | 主分区表 |
510 – 511 | 1FE – 1FF | 2 | 引导记录 |
16-byte 分区表结构 | ||
Relative | 长度 (bytes) | 内容 |
0 | 1 | 引导标记 (80h = active) |
1 – 3 | 3 | CHS 开始位置 |
4 | 1 | 分区类型描述 |
5 – 7 | 3 | CHS 结束位置 |
8 – 11 | 4 | 启始扇区 |
12 – 15 | 4 | 分区大小 (扇区单位) |
MBR 永远占用了第一个扇区,通常为512bytes大小。在这512bytes中被MBR本身的程序用去了446bytes。于是,真正描述分区信息的就只有 64 bytes。而根据4个主分区的设计,每一个分区能用到的只有 16bytes. 那么!这16bytes是如何工作的?在表2中,有2个“开始位置”,我们分开理解。
硬盘的历史过程中,第一个遇到的问题就是 8G 瓶颈。这就是因为在 CHS 描述方式中,描述起点和终点均为3个 byte。我们假设是 FF FFFF ,所以是16*16*16*16*16*16*512=8589934592这就是 8G 瓶颈的由来了。
但是今天 CHS 方式几乎已经不用了。后面还有 4 个 bytes 的“启始” 是给 LPA 方式用的。
他的极限就是 8589934592 * 256 =2199023255552 这就是 2T 的限制由来了。
在硬盘容量的历史中,有很多因素决定了它的限制。BIOS,ATA(IDE),文件系统。
GBT (Globally Uniqueidentifier Partition Table Format)
GPT头的基本结构 | ||
起始字节 | 长度 | 内容 |
0 | 8字节 | 签名(”EFI PART”, 45 46 49 20 50 41 52 54) |
8 | 4字节 | 修订(比如,1.0,值是 00 00 01 00) |
12 | 4字节 | 分区表头的大小(单位是字节,通常是92字节,即 5C 00 00 00) |
16 | 4字节 | 分区表头前3项(第0-15字节)的CRC32校验,如果值正在计算,则是 0 |
20 | 4字节 | 保留,必须是 0 |
24 | 8字节 | 当前LBA(这个分区表头的位置) |
32 | 8字节 | 备份LBA(备份分区表头的位置) |
40 | 8字节 | 第一个可用于分区的LBA(主分区表的最后一个LBA + 1) |
48 | 8字节 | 最后一个可用于分区的LBA(备份分区表的最后一个LBA − 1) |
56 | 16字节 | |
72 | 8字节 | 分区表项的起始LBA(对于主分区表来说,这个值是 LBA 2) |
80 | 4字节 | 分区表的数量 |
84 | 4字节 | 一个分区表的大小(通常是128) |
88 | 4字节 | 分区串行的CRC32校验 |
92 | * | 保留,剩余的字节必须是0(对于512字节LBA的硬盘即是420个字节) |
起始字节 | 长度 | 内容 |
---|---|---|
0 | 16字节 | 分区类型GUID |
16 | 16字节 | 分区GUID |
32 | 8字节 | 起始LBA(小端序) |
40 | 8字节 | 末尾LBA |
48 | 8字节 | 属性标签(如:60 表示“只读”) |
56 | 72字节 | 分区名(可以包括36个UTF-16(小端序)字符) |
GPT磁盘与MBR磁盘
GPT(Globally Unique Identifier Partition TableFormat)一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构。与主启动记录 (MBR)分区方法相比,GPT具有更多的优点,因为它允许每个磁盘有多达128 个分区,支持高达18 千兆兆字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区ID (GUID)。
与支持最大卷为 2 TB (terabytes)并且每个磁盘最多有4 个主分区(或3 个主分区,1个扩展分区和无限制的逻辑驱动器)的主启动记录(MBR)磁盘分区的样式相比,GUID分区表(GPT)磁盘分区样式支持最大卷为18 EB (exabytes)并且每磁盘最多有128 个分区。与MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。
在运行带有 Service Pack 1 (SP1) 的 Windows Server 2003 的基于 x86 的计算机和基于 x64 的计算机上,操作系统必须驻留在 MBR 磁盘上。其他的硬盘可以是 MBR 或 GPT。
在基于 Itanium 的计算机上,操作系统加载程序和启动分区必须驻留在 GPT 磁盘上。其他的硬盘可以是MBR 或GPT。
在单个动态磁盘组中既可以有 MBR,也可以有GPT 磁盘。也使用将基本GPT 和MBR 磁盘的混合,但它们不是磁盘组的一部分。可以同时使用MBR 和GPT 磁盘来创建镜像卷、带区卷、跨区卷和RAID-5 卷,但是MBR 的柱面对齐的限制可能会使得创建镜像卷有困难。通常可以将MBR 的磁盘镜像到GPT 磁盘上,从而避免柱面对齐的问题。可以将MBR 磁盘转换为GPT 磁盘,并且只有在磁盘为空的情况下,才可以将GPT 磁盘转换为MBR 磁盘。否则数据将发生丢失!!!
不能在可移动媒体,或者在与群集服务使用的共享 SCSI 或Fibre Channel 总线连接的群集磁盘上使用GPT 分区样式
基本磁盘与动态磁盘
磁盘的使用方式可以分为两类:一类是“基本磁盘”。基本磁盘非常常见,我们平时使用的磁盘类型基本上都是“基本磁盘”。“基本磁盘”受26个英文字母的限制,也就是说磁盘的盘符只能是26个英文字母中的一个。因为A、B已经被软驱占用,实际上磁盘可用的盘符只有C~Z24个。另外,在“基本磁盘”上只能建立四个主分区(注意是主分区,而不是扩展分区);另一种磁盘类型是“动态磁盘”。“动态磁盘”不受26个英文字母的限制,它是用“卷”来命名的。“动态磁盘”的最大优点是可以将磁盘容量扩展到非邻近的磁盘空间。
动态硬盘,是指在磁盘管理器中将本地硬盘升级得来的。动态磁盘与基本磁盘相比,最大的不同就是不再采用以前的分区方式,而是叫做卷集(Volume),卷集分为简单卷、跨区卷、带区卷、镜像卷、RAID-5卷。基本磁盘和动态磁盘相比,有以下区别:
1、卷集或分区数量。动态磁盘在一个硬盘上可创建的卷集个数没有限制。而基本磁盘在一个硬盘上只能分最多四个主分区。
2、磁盘空间管理。动态磁盘可以把不同磁盘的分区创建成一个卷集,并且这些分区可以是非邻接的,这样的大小就是几个磁盘分区的总大小。基本磁盘则不能跨硬盘分区并且要求分区必须是连续的空间,每个分区的容量最大只能是单个硬盘的最大容量,存取速度和单个硬盘相比也没有提升。
3、磁盘容量大小管理。动态磁盘允许我们在不重新启动机器的情况下调整动态磁盘大小,而且不会丢失和损坏已有的数据。而基本磁盘的分区一旦创建,就无法更改容量大小,除非借助于第三方磁盘工具软件,比如PQMagic。
4、磁盘配置信息管理和容错。动态磁盘将磁盘配置信息放在磁盘中,如果是RAID容错系统会被复制到其他动态磁盘上,这样可以利用RAID-1的容错功能,如果某个硬盘损坏,系统将自动调用另一个硬盘的数据,保持数据的完整性。而基本磁盘将配置信息存放在引导区,没有容错功能。
基本磁盘转换为动态磁盘可以直接进行,但是该过程是不可逆的。要想转回基本磁盘,只有把所有数据全部拷出,然后删除硬盘所有分区后才能转回去。
2. 文件系统
查看linux支持的文件系统: ls -l /lib/modules/'uname -r'/kernel/fs
[root@holandstonestone]# ls -l /lib/modules/2.6.32-220.el6.x86_64/kernel/fs
total 132
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 autofs4
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 btrfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 cachefiles
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 cifs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 configfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 cramfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 dlm
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 ecryptfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 exportfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 ext2
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 ext3
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 ext4
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 fat
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 fscache
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 fuse
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 gfs2
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 jbd
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 jbd2
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 jffs2
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 lockd
-rwxr--r--. 1 root root 19920 Nov 9 21:53 mbcache.ko
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 nfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 nfs_common
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 nfsd
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 nls
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 squashfs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 ubifs
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 udf
drwxr-xr-x. 2 root root 4096 Feb 4 14:21 xfs
[root@holandstonestone]# ls -l /lib/modules/2.6.32-220.el6.x86_64/kernel/fs |wc
30 263 1441
查看linux系统当前已启用的文件系统:cat /proc/filesystems
[root@holandstonestone]# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev binfmt_misc
nodev debugfs
nodev securityfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev inotifyfs
nodev devpts
nodev ramfs
nodev hugetlbfs
iso9660
nodev pstore
nodev mqueue
nodev selinuxfs
ext4
nodev rpc_pipefs
nodev autofs
银盘最小的存储单位:扇区(1扇区=512byte)
逻辑块(Block):在分区进行文件系统格式化时所制定的“最小存储单位”
1个block最多只能容纳1个文件
在进行分区时,每个分区就是一个文件系统,每个文件系统开始位置的那个block称为superblock(超级块),访问数据时,首先经过的时superblock,所以若superblock坏了,磁盘也就不能工作了。
3、 EXT2文件系统(inode)
1)Ext2规划出inode表和block区域.
Inode:存储文件属性,以及文件内容放在哪个block中(pointer),1个inode:128byte
Block:存储文件内容
2)inode表记录的信息有:
文件的拥有者与用户组(owner/group)
文件的访问模式(read/write/excute)
文件类型(type)
文件的建立或状态改变时间(ctime)、最近读取时间(atime)、最近修改时间(mtime)
文件大小
定义文件属性的标志(flag)
文件正真内容的指针(pointer)
**Ls命令的默认时间是mtime(ex:ls –la –time=atime PATH)
3)Linux如何读取文件内容?
(1)目录:在ext2建立一个目录时,ext2会分配给该目录一个inode和至少一个block
Inode:记录该目录的属性和指向分配到的那个block
Block:记录这个目录下文件或目录的关联性
(2)文件:在ext2建立一个文件时,ext2会分配给至少一个inode和相对于该文件大小的block数量
Inode:记录文件的相关属性,不记录文件名
Block:记录文件名,文件的相关连接
4)如何读取文件系统的信息
Dumpe2fs/dev/hda1
4、 载入点
载入点是进入该文件系统的入口,一定是目录而不是文件
5、 磁盘与目录的容量
查看当前磁盘最大允许容量、已用容量、当前所在目录的已用容量:df和du
/dev/hda 一个分区
/dev/hda1、/dev/hda2、/dev/hda3为主分区,/dev/hda5+/dev/hda6+…=/dev/hda4为扩展分区
Du类似于windows中的资源管理器
6、 连接文件:ln(类似于windows中的快捷方式)
多个link file可能指向同一个sourcefile,连接文件分为硬连接和符号连接
1) 硬连接(实际连接):在某个目录下新增一个该文件的关联数据,不会用掉inode与磁盘空间
2) 符号连接(快捷方式):建立一个独立的文件,让数据的读取指向它连接的文件内容。(使用的较多),source file被删除后,连接文件不能打开
重建连接文件:ln
7、 磁盘分区
1) 分区:fdisk [-l] 设备名称 (主要用来查看和修改分区表)
2) 删除分区:
fdisk [-l] 设备名称 进入fdisk画面
p 先看分区信息
d 删除分区并要求您选择一个分区,选l
w 保存到磁盘数据表中,并离开fdisk
3) 新增分区
fdisk [-l] 设备名称 进入fdisk画面
n 新增分区
4) 磁盘格式化
Mke2fs [-bicLJ] 设备名称
5) 磁盘检验
Fsck [-AtCary] 设备名称 (检查硬盘有没有坏轨)
目录lost+found,在fsck处理完后,会将错误文件放入此目录
Badblocks [-svw] 设备名称 (类似于windows的磁盘扫描)
Sync (直接将暂存在内存中的数据写入磁盘)
6) 磁盘载入
Mount [-tonL] 设备名称代号 载入点
Mount/dev/cdrom (载入光盘)
Mount –a (将整个系统中记录的文件系统与载入点对应的数据全部载入)
7) 磁盘卸载
Unmount 设备号或载入点
8) 修改磁盘参数
Mknod 设备名称 [bcp][Major] [Minor]
E2label 设备名称 新的label名称
Tune2fs [-jlL] 设备号
Hdparm [-icdmXTt] 设备名称
8、 设置启动载入
1) 载入软盘
Mount –text2 /dev/fd0 /media/floppy (ext2格式)
Mount –t vfat /dev/fd0/media/floppy (windows格式)
Umount/media/floppy (卸载后才可取出软盘)
2) 载入windows磁盘
Mkdir /mnt/win98
Mount –t vfat /dev/hda1/mnt/win98
Mount –t vfat –oiocharset=cp950 /dev/hda1 /mnt/win98 (加入中文编码)
3) 载入U盘
Mkdir /mnt/usb
Mount –t vfat /dev/sda1/mnt/usb
4) 启动载入/etc/fstab和/etc/mtab
/etc/fstab是使用mount将设备载入到系统的某个载入点所需执行的命令内容
载入点:就是目录
9、 建立虚拟内存
可以通过建立虚拟内存设备或建立虚拟内存文件来扩充虚拟内存