一、硬盘基础知识及分区类型
1、磁盘结构
设备文件
I/O Ports: I/O 设备地址 一切皆文件: open(), read(), write(), close()
设备类型:
块设备:block,存取单位“块”,磁盘 字符设备:char,存取单位“字符”,键盘 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 设备号码: 主设备号:major number, 标识设备类型 次设备号:minor number, 标识同一类型下的不同设备
硬盘接口类型
并行: IDE :133MB/s SCSI :640MB/s 串口: SATA :6Gbps SAS :6Gbps USB :480MB/s rpm: rotations per minute
设备文件
磁盘设备的设备文件命名:/dev/DEV_FILE IDE: /dev/hd IDE: 第一个IDE口:主、从 /dev/hda, /dev/hdb 第二个IDE口:主、从 /dev/hdc, /dev/hdd SCSI, SATA, SAS, USB: /dev/sd 不同设备:a-z /dev/sda, /dev/sdb, ... 同一设备上的不同分区:1,2, .../dev/sda1, /dev/sda5
硬盘存储术语
head:磁头 track:磁道 cylinder: 柱面 secotr: 扇区,512bytes CHS 寻址 512*63*1024*256LBA寻址
2、磁盘分区
磁盘分区的优势: • 优化I/O 性能 • 实现磁盘空间配额限制 • 提高修复速度 • 隔离系统和程序 • 安装多个 个OS • 采用不同文件系统
分区
两种分区方式:MBR ,GPT MBR: Master Boot Record ,1982年,使用32位表示扇区数, 分区不超过2T 如何分区:按柱面0磁道0扇区:512bytes 446bytes: boot loader 64bytes :分区表 16bytes: 标识一个分区 2bytes: 55AA 4 个主分区;3 主分区+1 扩展(N 个逻辑分区)
GPT分区
GPT:GUID patition table 支持128个分区使用64位,支持8Z(512Byte/block)64Z (4096Byte/block) 使用128位UUID区表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC 校验位 UEFI ( 统一扩展固件接口) 硬件 支持GPT,使操作系统启动
GPT分区结构
EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域
二、管理分区
列出块设备
blkid
分区工具fdisk和gdisk
• fdisk 创建MBR 分区,也支持GPT,对于一块硬盘,最多只能管理15分区 • gdisk 创建GPT分区 fdisk /dev/sdb gfisk /dev/sdb 类fdisk 的GPT 分区工具 # fdisk -l [-u] [device...] 查看磁盘及分区信息 子命令: p 分区列表 t 更改分区类型 n 创建新分区 d 删除分区 w 保存并退出 q 不保存并退出
同步分区表
查看内核是否已经识别新的分区:
# cat /proc/partitions
通知内核重新读取硬盘分区表
centos 6 新增分区用 partx -a -n M:N /dev/DEVICE kpartx -a /dev/DEVICE -f: force 删除分区用 partx -d -n M:N /dev/DEVICE centos6: –nr N-M CentOS 5,7: 使用partprobe partprobe [/dev/DEVICE]
parted命令
parted的操作都是实时生效的,小心使用 用法:parted [ 选项]... [设备 [命令 [ 参数]...]...] parted /dev/sdb mklabel gpt|msdos parted /dev/sdb print parted /dev/sdb mkpart primary 1 200 (默认M) ) parted /dev/sdb rm 1 parted -l
三、文件系统及管理
文件系统类型
Linux 文件系统: ext2, ext3, ext4, xfs (SGI ), btrfs(Oracle ), reiserfs, jfs (AIX ), swap光盘: :iso9660 Windows :fat32, ntfsUnix: FFS (fast ), UFS (unix ), JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2 (oracle) 分布式文件系统:ceph, moosefs, mogilefs, glusterfs,Lustre RAW :未经处理或者未经格式化产生的文件系统
文件系统分类
根据其是否支持"journal" 功能:
日志型文件系统: ext3, ext4, xfs, ... 非日志型文件系统: ext2, vfat
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux 的虚拟文件系统:VFS
查前支持的文件系统:cat /proc/filesystems
创建文件系统
mkfs 命令:
(1) # mkfs.FS_TYPE /dev/DEVICE ext4 xfs centos6 1、添加xfs需要的用户组 #useradd mockbuild 2、安装xfs相关包,挂载xfs内核 # yum install xfsprogs kmod-xfs xfsdump xfsprogs-devel # modprobe xfs # mkfs.xfs -f FS_type centos7 # mkfs.xfs -f FS_type btrfs vfat (2) # mkfs -t FS_TYPE /dev/DEVICE 格式化分区 -L 'LABEL': 设定卷标
mke2fs :ext 系列文件系统专用管理工具
-t {ext2|ext3|ext4} -b {1024|2048|4096} -L 'LABEL' -j: 于 相当于 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 -i #: 为数据空间中每多少个字节创建一个inode ;此大小不应该小于block 的大小 -N # :为数据空间创建个多少个inode -I 一个inode 记录大小128---4096 -m #: 默认5%,为管理人员预留空间占总空间的百分比 -O FEATURE[,...] :启用指定特性 -O ^FEATURE :关闭指定特性
文件系统标签
指向设备的另一种方法 与设备无关
blkid :块设备属性信息查看
blkid [OPTION]... [DEVICE] -U UUID: 根据指定的UUID 来查找对应的设备 -L LABEL:根据指定的LABEL 来查找对应的设备
e2label :管理ext 系列文件系统的LABEL
# e2label DEVICE 查看分区卷标# e2label DEVICE [LABEL]
findfs :查找分区
findfs [options] LABEL=<label> findfs [options] UUID=<uuid>
tune2fs (块大小不可修改)
tune2fs :重新设定ext 系列文件系统可调整参数的值 -l :查看指定文件系统超级块信息;super block -L 'LABEL' :修改卷标 -m # :修预留给管理员的空间百分比 -j: 将ext2 升级为ext3 -O: 文件系统属性启用或禁用, –O ^has_journal -o: 调整文件系统的默认挂载选项,–o ^acl -U UUID: 修改UUID号 生成UUID号 [root@6 etc]# uuidgen c9fcf00a-6404-4a1c-97dd-8341e137ae99 dumpe2fs: -h:查看超级块信息(分组信息),分区用分组管理
文件系统检测和修复
常发生于死机或者非正常关机之后 挂载为文件系统标记为“dirty” ”
fsck: File System Check
fsck.FS_TYPE fsck -t FS_TYPE -a: 自动修复错误 -r: 交互式修复错误注意: FS_TYPE 一定要与分区上已经文件类型相同;
e2fsck :ext 系列文件专用的检测修复工具
-y :自动回答为yes -f :强制修复
四、挂载mount
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为 卸载:为解除此关联关系的过程 把设备关联挂载点:mount Point mount 卸载时:可使用设备,也可以使用挂载点 umount 挂载点下原有文件在挂载完成后会被临时隐藏 挂载点目录一般为空
mount 命令挂载文件系统
挂载方法:mount DEVICE MOUNT_POINT mount:通过查看/etc/mtab文件显示当前已挂载的所有设备 mount [-fnrsvw] [-t vfstype] [-o options] device dir device :指明要挂载的设备; (1) 设备文件:例如/dev/sda5 (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA' (3) UUID, -U 'UUID'如 :例如 -U '0c50523c-43f1- 45e7-85c0-a126711d406e' (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs dir :挂载点 事先存在;建议使用空目录 进程正在使用中的设备无法被卸载
mount 常用命令选项
-t vsftype:指定要挂载的设备上的文件系统类型-r: readonly ,只读挂载-w: read and write, 读写挂载-n: 不更新/etc/mtab,相当于#mount-a :自动挂载所有支持自动挂载的设备( 定义在了/etc/fstab文件中,且挂载选项中有auto 功能)-L 'LABEL':以卷标指定挂载设备[root@6 testdir]# mount -L MYDATE /media/sdd5 -U 'UUID': 以UUID 指定要挂载的设备-B, --bind:绑定目录到另一个目录上 [root@6 sdd2]# mount -B /media/CentOS_6.8_Final /media/sdd2 查看内核追踪到的已挂载的所有设备: # cat /proc/mounts # mount # cat /etc/mtab -o: 挂载本地回环设备 #mount -o loop /PATH/TO/SOME_FILE MOUNT_POINT
mount 挂载选项
-o options:(挂载文件系统的选项) ,多个选项使用逗号分隔
async:异步模式 sync :同步模式, 内存更改时,同时写磁盘 atime/noatime:包含目录和文件 diratime/nodiratime:目录的访问时间戳 auto/noauto:是否支持自动挂载, 是否支持-a 选项 exec/noexec:是否支持将文件系统上运行应用程序 dev/nodev:是否支持在此文件系统上使用设备文件 mknod sss b 8 1 建立设备文件 suid/nosuid:是否支持suid 和sgid权限 remount :重新挂载 ro:只读 rw:读写 user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载 [root@6 media]# mount -o nosuid /dev/sdd1 /media/sdd1 acl:启用此文件系统上的acl 功能 noacl Defaults :相当于rw, nosuid, dev, exec, auto, nouser, async
卸载命令
查看挂载情况:
#findmnt MOUNT_POINT
查看正在访问指定文件系统的进程:
#lsof MOUNT_POINT #fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:
# fuser -km MOUNT_POINT 卸载: # umount DEVICE # umount MOUNT_POINT
积累应用
1、创建mbr,gpt磁盘分区表
mbr分区 [root@6 a]# fdisk /dev/sdd Command (m for help): n Partition number (1-4): 1 First cylinder (1-2610, default 1): 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G gpt分区 [root@6 a]# gdisk /dev/sdc Command (? for help): n Partition number (1-128, default 1): 1 First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +5G Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'
2、创建xfs、ext4、ext3、vfat分区
[root@6 a]# mkfs.xfs -f /dev/sdd1 [root@6 a]# mkfs.ext4 /dev/sdd2 [root@6 a]# mkfs.ext3 /dev/sdc1 [root@6 a]# mkfs.vfat /dev/sdc2 [root@6 a]# blkid /dev/sda1: UUID="598997b7-f4a0-4296-9740-f1221ecf0c6b" TYPE="ext4" /dev/sda2: UUID="31bb0614-7b9f-4856-9518-b5cbc03b34ce" TYPE="ext4" /dev/sda3: UUID="df6f5cfe-b43c-4e5d-9811-7af3f33ede54" TYPE="ext4" /dev/sda5: UUID="b92fd434-da1a-4a6e-bea0-87c6d628898a" TYPE="swap" /dev/sdd1: UUID="446cc786-d9d6-414a-951f-1024f2ea532d" TYPE="xfs" /dev/sdd2: UUID="6c80a99d-b436-4411-821e-bb3903ffc67a" TYPE="ext4" /dev/sdc1: UUID="8ad8e9c2-9a2f-4f13-9452-3c8c431fa598" SEC_TYPE="ext2" TYPE="ext3" /dev/sdc2: UUID="CE09-E896" TYPE="vfat"
3、挂载分区
[root@6 media]# mount /dev/sdd1 /media/sdd1[root@6 media]# mount /dev/sdd2 /media/sdd2[root@6 media]# mount -r /dev/sdc1 /media/sdc1[root@6 media]# mount -w /dev/sdc2 /media/sdc2[root@6 media]# dfFilesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 50264772 4596120 43108652 10% / tmpfs 502068 76 501992 1% /dev/shm /dev/sda1 194241 34211 149790 19% /boot /dev/sda3 20027260 160072 18843188 1% /testdir /dev/sr0 3824484 3824484 0 100% /media/CentOS_6.8_Final /dev/sdd1 5242980 32928 5210052 1% /media/sdd1 /dev/sdd2 5039624 10264 4766700 1% /media/sdd2 /dev/sdc1 5160576 141436 4756996 3% /media/sdc1 /dev/sdc2 5232640 4 5232636 1% /media/sdc2
4、分区(mbr,gpt)区别和结构
MBR(Master Boot Record)主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备 MBR支持32位和64位系统 MBR支持分区数量有限 MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间(有第三方解决方法) GPT(GUID Partition Table)全局唯一标识分区表,是一个较新的分区机制,解决了MBR很多缺点 支持超过2T的磁盘(64位寻址空间)。fdisk最大只能建立2TB大小的分区,创建一个大于2TB的分区使用parted 向后兼容MBR 必须在支持uEFI的硬件上才能使用(Intel提出,用于取代BIOS) 必须使用64位系统
原创文章,作者:lvasu,如若转载,请注明出处:http://www.178linux.com/41192
评论列表(1条)
文章对各命令的作用,用法和常用选项总结的很完整,建议能多一些操作,尝试着灵活运用这些工具来实现,分区的创建与格式化并挂载使用。多动手才能明白自己的不足哦。