在linux运维工作中,熟练掌握磁盘管理相关技能是对运维人员最基本的要求。最近在学习系统管理的内容,而磁盘分区是其中比较重要的一部分内容。本实验所用linux系统为Centos6.6,涉及到的知识为linux磁盘分区。
一、在实验前必须先要了解磁盘管理的基本知识: 1、MBR,Master Boot Record(主引导记录)
MBR为磁盘第0磁道第0扇区,共512字节,从上图可以知道,Bootloader占据446字节,而Partition分区表占据了64字节,每个分区需要16字节,所以分区表只能标识4个分区的信息。那要想建立多余4个分区怎么办呢?办法就是3+1(N),即建立3个主分区(Primary )和一个扩展分区(extended),而扩展分区里划分了N个逻辑分区(logical),扩展分区本身并不可用,里面包含的逻辑分区才是可用的分区。
2、磁盘设备文件的命名规则 IDE硬盘:/dev/hd SCSI,SATA,SAS,USB等存储设备:/dev/sd# 不同设备:a-z #例如/dev/sda, /dev/sdb, ... 同一设备上的不同分区:1,2, ..., #例如/dev/sda1, ... /dev/sda5…
3、文件系统类别 1) 各平台文件系统类别 Linux文件系统: ext2,ext3, ext4, xfs, btrfs, reiserfs, jfs swap:交换分区 光盘:iso9660 Windows:fat32,ntfs 网络文件系统:NFS,CIFS 集群文件:GFS2,OCFS2 分布式文件系统:ceph,moosefs,mogilefs,GlusterFS,Lustre
2)根据其是否支持“journal”功能; 日志型文件系统:ext3, ext4, xfs ... 非日志型:ext2,vfat
3) linux文件系统的组成部分: 内核中的模块:ext4,xfs, vfat 用户空间的管理工具:mkfs.ext2,mkfs.ext4, mkfs.xfs,mkfs,vfat
4、常用的分区管理工具有: fdisk,parted, sfdisk。在这里使用的是fdisk工具进行分区。 相关语法:fdisk[OPTION]DEVICE OPTION: -l:列出给定设备的分区表信息,如果后面不指定DEVICE, 则列出从/proc/partitions 中获取到的信息。 -b:设定扇区大小(1024,2048,4096...) 子命令:管理功能 p:print,显示已有分区 n:new,创建 d:delete,删除 w:write,写入磁盘并退出 q:退出 m:获取帮助 l:列表所有分区的类型id t:调整分区id
二、实验 1、在新建分区前,先用命令fdisk -l查看分区情况。磁盘在系统中命名为/dev/sda,假如再添加多一块磁盘,系统会显示新磁盘为/dev/sdb。由命令结果可看出系统中已存在2个主分区。 1
2
3
4
5
6
7
8
9
10
11
12
| [iyunv@localhost ~]#fdisk -l
Disk /dev/sda: 85.9GB, 85899345920 bytes
255 heads, 63sectors/track, 10443 cylinders
Units = cylinders of16065 * 512 = 8225280 bytes
Sector size(logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Disk identifier:0x0002791b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1913 15360000 83 Linux
/dev/sda2 1913 1938 204800 82 Linux swap / Solaris
|
2、新建主分区。 命令:fdisk /dev/sda 对/dev/sda进行交互式分区管理,管理命令功能如下: p:print,显示已有分区 n:new,创建 d:delete,删除 w:write,写入磁盘并退出 q:退出 m:获取帮助 l:列表所有分区的类型id t:调整分区id 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| [iyunv@localhost ~]#fdisk /dev/sda
WARNING:DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') andchange display units to
sectors (command 'u').
Command (m forhelp): p
Disk /dev/sda: 85.9GB, 85899345920 bytes
255 heads, 63sectors/track, 10443 cylinders
Units = cylinders of16065 * 512 = 8225280 bytes
Sector size(logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Disk identifier:0x0002791b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1913 15360000 83 Linux
/dev/sda2 1913 1938 204800 82 Linux swap / Solaris
|
1
2
3
4
5
6
7
8
9
| Command (m for help): n # 新建一个分区
Command action
e extended
p primary partition (1-4)
p # 建立主分区
Partition number (1-4): 3 # 指定建立的分区
First cylinder (1938-10443, default 1938): # 不指定默认延续之前的柱面
Using default value1938
Last cylinder, +cylinders or +size{K,M,G} (1938-10443, default10443): +10G # 创建10G大小的主分区
|
3、调整分区id(根据实际需要,这里仅介绍) 默认创建为Linux(id为83),根据实际需要,若要创建为swap分区,则要调整分区id为82,即 Linux swap /So;若要创建Linux LVM 分区,则需调整分区id为8e。在这里按默认,不需要调整。 列出分区id列表: 1
2
3
4
5
6
7
8
| Command(m for help): l
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec(FAT-
2 XENIXroot 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIXusr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16<32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
(以下内容省略)…
|
调整分区: 使用Command t ,并指定分区,具体步骤在这里不演示。
4、建立扩展分区 需要注意的是,建立扩展分区时,如果之前已经分配好了3个主分区,不把剩余的全部的空间都占据,则没有被分配到的空间无法使用。因为逻辑分区只能在扩展分区的空间范围内。
1
2
3
4
5
6
7
8
9
10
| Command (m forhelp): n
Command action
e extended
p primary partition (1-4)
e # 指定建立扩展分区
Selected partition 4
First cylinder(3244-10443, default 3244):
Using default value3244
Last cylinder, +cylinders or +size{K,M,G} (3244-10443, default10443): # 回车指定使用默认全部空间
Usingdefault value 10443
|
5、建立逻辑分区
1
2
3
4
| Command (m forhelp): n
First cylinder(3244-10443, default 3244):
Using default value3244
Last cylinder, +cylinders or +size{K,M,G} (3244-10443, default10443): +10G # 新建10G大小的逻辑分区
|
6、检查新建分区并保存退出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| Command (m for help): p # 查看已有分区
Disk /dev/sda: 85.9GB, 85899345920 bytes
255 heads, 63sectors/track, 10443 cylinders
Units = cylinders of16065 * 512 = 8225280 bytes
Sector size(logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Disk identifier:0x0002791b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1913 15360000 83 Linux
/dev/sda2 1913 1938 204800 82 Linux swap / Solaris
/dev/sda3 1938 3243 10483573+ 83 Linux
/dev/sda4 3244 10443 57834000 5 Extended
/dev/sda5 3244 4549 10490413+ 83 Linux
Command (m forhelp): w # 切记,保存退出
The partition tablehas been altered!
Calling ioctl() tore-read partition table.
WARNING: Re-readingthe partition table failed with error 16: Device or resource busy.
The kernel stilluses the old table. The new table will be used at
the next reboot orafter you run partprobe(8) or kpartx(8)
Syncing disks.
|
7、使新增分区生效 在上面交互式管理磁盘操作中,只是新建好分区,而内核不会主动去识别更改后的分区。用cat /proc/partitions命令查看,新建的分区还没生效。命令结果如下: 1
2
3
4
5
6
| [iyunv@localhost ~]#cat /proc/partitions
major minor #blocks name
8 0 83886080 sda
8 1 15360000 sda1
8 2 204800 sda2
|
于是就要到partx命令,partx命令的用途是把现有的并编号的磁盘分区列表通知内核。在Centos 5.X中,用的是partprobe命令。 1
2
3
4
5
| [iyunv@localhost ~]#partx -a /dev/sda
BLKPG: Device orresource busy
error addingpartition 1
BLKPG: Device orresource busy
error addingpartition 2
|
再用fdisk -l命令查看,由下结果可以看到,系统已经识别了新增的分区。fdisk -l 命令结果是把/proc/partitions里的分区表打印出来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [iyunv@localhost ~]#fdisk -l
Disk /dev/sda: 85.9GB, 85899345920 bytes
255 heads, 63sectors/track, 10443 cylinders
Units = cylinders of16065 * 512 = 8225280 bytes
Sector size(logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Disk identifier:0x0002791b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1913 15360000 83 Linux
/dev/sda2 1913 1938 204800 82 Linux swap / Solaris
/dev/sda3 1938 3243 10483573+ 83 Linux
/dev/sda4 3244 10443 57834000 5 Extended
/dev/sda5 3244 4549 10490413+ 83 Linux
|
8、格式化分区并指定分区文件系统 在这里使用ext系列文件系统专用管理工具mke2fs进行格式化并指定文件系统类型。命令用法如下: mke2fs [OPTION]… device 命令常用选项: -t{ext2|ext3|ext4} -b{1024|2048|4096} :块大小 -L'LABEL' -j:相当于-t ext3 -i#:数据空间中每多少个字节创建一个inode,此大小不应该小于block大小 -N#:为数据空间创建多少个inode -m#:为管理人员预留的空间占据的百分比
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| [iyunv@localhost ~]#mke2fs -t ext4 -b 2048 -L "Primary_Partition" /dev/sda3
mke2fs 1.41.12(17-May-2010)
Filesystemlabel=Primary_Partitio
OS type: Linux
Block size=2048(log=1)
Fragment size=2048(log=1)
Stride=0 blocks,Stripe width=0 blocks
655360 inodes,5241786 blocks
262089 blocks(5.00%) reserved for the super user
First data block=0
Maximum filesystemblocks=542113792
320 block groups
16384 blocks pergroup, 16384 fragments per group
2048 inodes pergroup
Superblock backupsstored on blocks:
16384, 49152, 81920, 114688, 147456,409600, 442368, 802816, 1327104,
2048000, 3981312
Writing inodetables: done
Creating journal(32768 blocks): done
Writing superblocksand filesystem accounting information: done
This filesystem willbe automatically checked every 37 mounts or
180 days, whichevercomes first. Use tune2fs -c or -i tooverride.
[iyunv@localhost ~]#mke2fs -t ext4 -b 2048 -L "Logical_Partition" /dev/sda5
结果省略...
|
可以用命令blkid查看块设备属性信息查看。用法如下: blkid [OPTION]...[DEVICE] -UUUID:根据指定的UUID来查找对应的设备 -LLABEL:根据指定的LABEL来查找对应的设备 命令结果如下: 1
2
3
4
| [iyunv@localhost ~]#blkid /dev/sda3
/dev/sda3:LABEL="Primary_Partitio"UUID="4f0572f3-64a4-4b19-bc4c-eb5df4644741" TYPE="ext4"
[iyunv@localhost ~]#blkid /dev/sda5
/dev/sda5:LABEL="Logical_Partitio"UUID="208ef72f-706e-4888-9655-32a91ecb18a2" TYPE="ext4"
|
9、挂载分区 mount基本用法为:mount [OPTION] DEVICE DIR DEVICE:指明要挂载的设备,可以使设备文件,可以用卷标 -L 'LABEL',UUID :-U 'UUID', 或者伪文件系统名称。 DIR:为挂载目录,必须为已存在目录,且目录原有文件在挂载完成后会被临时隐藏, 建议使用空目录 1
2
3
| [iyunv@localhost ~]# mkdir /Prim_test /Logi_test #新建两个目录当作挂载点
[iyunv@localhost ~]#mount /dev/sda3 /Prim_test/
[iyunv@localhost ~]#mount /dev/sda5 /Logi_test
|
1
2
3
4
5
6
| [iyunv@localhost ~]# df -l # 查看挂载项
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 14987656 667824 13551832 5% /
tmpfs 502176 0 502176 0% /dev/shm
/dev/sda3 10252772 12308 9716286 1% /Prim_test
/dev/sda5 10259072 12308 9722244 1% /Logi_test
|
1
2
3
4
| [iyunv@localhost ~]# ls /Prim_test/ # 挂载目录出现lost+found表明挂载已经成功
lost+found
[iyunv@localhost ~]#ls /Logi_test/
lost+found
|
1
2
3
4
5
6
| [iyunv@localhost ~]# cp /etc/fstab /Prim_test/ # 复制一个文件到挂载目录里,若能正常打开,则再次确认挂载成功
[iyunv@localhost ~]#cat /Prim_test/fstab
#
# /etc/fstab
# Created byanaconda on Tue Aug 25 18:43:53 20
(文档下面内容省略...)
|
10、配置分区开机自动挂载 编辑/etc/fstab配置文件,添加注释的两行内容 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| [iyunv@localhost ~]#vim /etc/fstab
#
# /etc/fstab
# Created byanaconda on Tue Aug 25 18:43:53 2015
#
# Accessiblefilesystems, by reference, are maintained under '/dev/disk'
# See man pagesfstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=915ff827-bd8e-4b9c-b804-a8bb73441c7a/ ext4 defaults 1 1
UUID=278e1b2d-05e7-4c58-bd9e-99740bdee416swap swap defaults 0 0
UUID=4f0572f3-64a4-4b19-bc4c-eb5df4644741 /Prim_test ext4 defaults 0 0 #挂载/dev/sda3
UUID=208ef72f-706e-4888-9655-32a91ecb18a2 /Logi_test ext4 defaults 0 0 #挂载/dev/sda5
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
|
关于/etc/fstab配置文件各字段的解释如下: 1、需要挂载的设备或伪文件系统 可以为设备文件名称、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称
(proc,sysfs),建议用UUID,可以唯一标识设备,UUID不容易混乱冲突。 2、挂载点 为事先存在的目录 3、文件系统类型 4、转储频率: 0:不做备份;1:每天转储;2:每隔一天转储。 5、自检次序 0:不自检;1:首先自检;一般只有rootfs才用1。
三、一些扩展管理命令 tune2fs:重新设定ext系统文件系统可调整参数的值 tune2fs [OPTION]... DEVICE 常用选项: -l:查看指定文件系统超级块信息,superblock -L"LABEL":修改卷标 -m#: 预留给管理员的空间百分比 -j:将ext2升级为ext3 -O:文件系统属性启用或禁用 -o:调整文件系统的默认挂载选项 -UUUID:修改UUID号
dumpe2fs:显示设备文件系统的超级块和块组信息 dumpe2fs [OPTION]… DEVICE -h:只查看超级块信息,不显示块组信息 不加选项显示超级快和块组信息
mkswap:创建交换分区 fsck:检查和修复文件系统 用法如下: fsck.FS_TYPE device fsck [OPTION] device -t:指定文件系统类型 -a:自动修复错误 -r:交互式修复错误 注意:若指定FS_TYPE,则一定要与分区上已经存在文件类型相同;
总结:磁盘分区可以用fdisk工具进行分区,和指定分区ID(根据实际需要),切记w保存后退 出。用partx命令通知内核重新识别读取更改后的分区,再用mke2fs命令进行格式化和设定文件系统类型,并设置一些参数,如块大小,卷标,给管理员保留空间所占块数百分比等等。mount挂载分区,测试是否挂载正常。若要开机挂载则在/etc/fstab配置文件中添加相关项。 除了磁盘分区用到的一些命令外,还有一些常用的磁盘管理命令,如查看块设备信息blkid,重新设定ext文件系统参数tune2fs, 显示文件系统超级快和块组信息dumpe2fs, 文件系统和检查命令fsck,等等。
|