首页 > 代码库 > 磁盘管理
磁盘管理
1.磁盘有两种分区方式:MBR和GPT
MBR分区需要注意什么?
(1).MBR使用的是32位表示扇区数,分区不超过2T
(2).磁盘是按照柱面划分区的
(3).MBR的0扇区有512types,有3部分组成: (1)446types是主引导记录boot lader;(2)64types是分区表,每个分区表16types;(3)还有16type是结束标志55AA
(4).磁盘可以分为4个主分区:3个主分区和1个扩展分区
实例:下面对mbr进行具体分析
(1).备份mbr磁盘0扇区
dd if=/dev/sda of=/root/mbr bs=1 count=512
(2).把备份的mbr恢复到sdb磁盘上
dd if=/root/mbr of=/dev/sdb
GTP分区需要注意什么?
(1)GTP:支持128个分区,使用64位,支持8z(512byte/block),64z(4096byte/block)
(2)使用128位UUID表示磁盘和分区GTP分区表自动备份在投河尾两份,并有CRC校验位
(3)UEFI(统一扩展固件接口)硬件支持GTP
在linux系统中磁盘的管理包括以下四个方面:`
(1).读取新增加磁盘
(2).对新增磁盘进行分区
(3).对分区进行格式化,并设定卷标
(4).对分区进行挂载
一.读取新增加的磁盘
1.一般在新增加磁盘后系统无法立刻识别出来,那么就要进行下面的步骤,扫描生成新磁盘(在生产环境下硬盘支持热插拔,不存在这种情况)
2.使用lsblk查看磁盘是否读取出来
二.对磁盘进行分区
1.先学习下分区命令
(1).列出块设备
blkid 查看磁盘格式和UUID
(2). 创建分区使用
(1)fdisk 创建MBR分区,页支持GPT,对于一块硬盘,最多只能管理15个分区
fdisk -l [-u][device]
子命令:
p: 分区列表
t: 更改分区类型
n: 创建新分区
d: 删除分区
w: 保存并退出
q: 不保存并退出
(3)gdisk 创建GTP分区
2.同步分区表(重要操作)
(1)查看内核是否已经识别新的分区
#cat /proc/partitions
(2)通知内核重新读取硬盘分区表
新增分区后用来读取分区
partx -a -n M:N /dev/DEVICE
kpartx -a /dev/DEVICE -f :force
删除分区后用来读取分区
partx -d -n M:N /dev/DEVICE
centos6:-nr N-M
注意:如果是新建磁盘,一般分区后会直接读取到磁盘
(3)Centos 5,7:使用 partprobe
partprobe [/dev/DEVICE]
(4)parted 的操作的都是实时生效的,小心使用
用法:parted[选项]...[设备[命令][参数]..]...]
parted /dev/sdb mklabel gpt|msdos
arted /dev/sdb print
parted /dev/sdb mkpart primary 1 200
parted /dev/ sdbrm1
parted -l
实例:对/dev/sdb 进行分区
(1)fdisk /dev/sdb
(2)使用选项n进入分区,(sdb1-sdb3设为主分区,sdb4设为扩展分区,sd5,sd6..设为逻辑分区),使用p查看分区
(3)使用w保存 d可以删除分区
(4)读取磁盘partx -a /dev/sdb 执行2遍
三. 创建文件系统
1.文件系统类型
linux 文件系统:ext2,ext3,ext4,xfs(SGI),btrfs(Oracle),reiserfs,jfs(AXI),swap
swap:交换分区
光盘:iso996
windons: fat32,ntfs
Unix:FFS(fast),UFS(unix),JFS2
网络文件系统:NFS,CIFS
集群文件系统:GFS2,OCFS2(oracle)
分布式文件系统:ceph,moosefs,mogilefs,glusterfs,Lustre
RAW: 未经处理或未经格式化产生的文件系统
2.文件系统分类
根据其是否支持"journal"功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虚拟文件系统:VFS
查前支持的文件系统:cat /proc/filesystems
2. 文件系统管理工具:
1.磁盘分区格式化三种用法:
(1) mkfs.ext2,mkfs.ext3,mkfs.ext4
(2) mkfs -t ext2=mkfs.ext2=mke2fs -t ext2
(3) mke2fs [options] device (ext文件系统专用工具)
-t: {ext2,ext3,ext4} 指明要创建的文件系统类型
-b: {1024,2048,4096} 指明块大小 mkfs.ext4 -b 1024 /dev/sdb1
-l: 指明卷标
-j: 相当于-t ext3 mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
-N #:微数据空间创建多个inode
-m #:默认5%,位管理人员预留空间占总控键的百分比
-O FEATURE[...]: 启用指定特性
-O ^FEATURE: 关闭指定特性
注意:mkfs -t ext2=mkfs.ext2=mke2fs -t ext2
2.tune2fs 重新设定ext系列文件系统可调整参数的值
tune2fs [options] device
-l:查看超级块的内容
-j :ext2升级为ext3
-L:修改卷标
-m #:调整预留空间百分比
-O: 文件系统属性启用或禁用, -O ^has_journal
-o: 调整文件系统的默认挂载选项,-o,^acl
-U: 修改UUID号
实例:
1.查看ext文件系统超级块
tune2fs -l /de/vsdb6
2.取消日志功能
tune2fs -O ^has_joural /dev/sdb5
3.增加日志功能
tune2fs -O has_journal /dev/sdb3
4.dumpe2fs 显示ext系列文件系统的属性信息
dumpe2fs [-h] device 查看超级块信息(分组信息)
5.用于实现文件系统检测的工具,常用于发生死机或者非正常关机之后
e2fsck 检测ext2,ext3,ext4文件系统
e2fsck [options] device
-y:对所有问题自动回答为yes
-f:强制修复
fsck 检测和修复文件系统
-t fstype:指明文件系统类型
fsck -t ext4 = fsck.ext4
-a :无需交互而自动修复所有错误
-r : 交互式修复
三.磁盘挂载
1. mount 挂载
挂载点 用于作为另一个系统的访问入口,有3点需要注意:
1.事先存在
2.未被使用的或进程不会被使用的目录
3.挂载点原有的文件 会被隐藏
mount用法:
mount [-nrw][-t vfstype][-o options] device dir
选项:
-r: readonly 只读挂载
-w: read and write 读写挂载 默认就是读写挂载
-n: 挂载或卸载的操作不同步到/etc/mtab文件中(意思是挂载但不同步到配置文件中,隐藏起来了)
-a: 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-t vfstype: 指明要挂载的设备的文件类型
-L :LABEL 挂载以卷标的方式指明设备
-U :UUID 挂载以uuid的方式指明设备 例: mount -U UUID dir
-B :--bind :绑定目录到另一个目录上 例:mount -B /boot /mnt/boot
查看内核追踪到的已挂载的所有设备:cat /proc/mounts 或者 mount
mount -o options 挂载选项
选项:
aync: 异步模式
sync:同步模式,内存更改时,同时写磁盘
atime/noatime: 文件或目录在被访问时是否更新其访问时间戳
loop: 用来把一个文件当成硬盘分区挂载在硬盘上
ro: 只读
rw: 读写
dev/nodev: 此设备上是否允许创建设备文件
exec/noexec: 是否运行此设备上的程序文件
user/nouser: 是否允许普通用户挂载此文件
suid/nosuid: 是否允许程序文件上的suid和sgid特殊权限生效 默认nosuid
remount: 重新挂载 mount -o ro,remount /mnt/sdb2
acl: 启用此系统上的acl
Defaults:相当于rw, suid, dev, exec, auto, nouser, async
支持使用facl功能
挂载默认不开启acl功能,若开启acl功能,执行下面命令
mount -o acl device dir
tune2fs -o acl device
mount /testdir/partfile /mnt/partfile/ -o loop
实例:针对mount 的suid权限做一个实验
如果赋给mount suid权限,那么普通用户就可以挂载可移动设备,而可移动设备上面有一些二进制程序,那么在挂载可移动磁盘时
执行 mount -o suid /dev/sdb2 /mnt/sdb2 n赋予二进制程序suid权限,那么普通用户将会获取部分root权限,造成安全隐患
2.卸载命令
1.查看挂载情况
#findmnt MOUNT_POINT
/mnt/sdb1是挂载点
2.查看正在访问指定文件系统的进程
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT
3.终止所有正在访问指定的文件系统的
#fuser -km MOUNT_point
4.卸载
# umount DEVICE
# umount MOUNT_POINT
3.文件挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统
要挂载的设备或伪文件系统
设备文件;LABEL(LABEL="");UUID(UUID="");伪文件系统名称(proc,sysfs)
挂载选项:defaults
转储频率: 0: 不做备份
1:每天转储
2:每隔一天转储
自检次序: 0:不自检
1:首先自检:一般只有rootfs才用1
使用mount -a 命令挂载/etc/fstab 中所有的文件系统
实例:在/etc/fstab中写入下面红框的行,没次开机启动就会自动挂载
第一次挂载 mount -a 生效
之前挂载过修改后用mount -o remount MOUNT_POINT
实用技巧:
可以实现将目录绑定在另一个目录上,作为临时访问接口
mount --blind 源目录 目标目录
查看当前目录已挂载的设备
mount
cat /etc/mtab
cat /proc/mounts
实例:
1.目录挂载到目录
mkdir /testdir/dir
mount -B /testdir/dir /mnt/dir
2.利用文件 ,实现文件系统(作用是代替分区做一些测试工作)
在centos6 上做实验
(1)dd if=/dev/zero of=/testdir/partfile bs=1M count=500
(2)mkfs.ext4 /testdir/partfile
(3)mkdir /mnt/partfile
(4)mount /testdir/paryfile mnt/partfile -o loop
(5)vim /etc/fstab
losetup /dev/loop1 /testdir/partfile
mount/dev/loop1 /mnt/partfile
附加losetup详解:
Linux losetup命令用于设置循环设备。
循环设备可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。
语法
losetup [-d][-e <加密方式>][-o <平移数目>][循环设备代号][文件]
参数:
-d 卸除设备。
-e<加密方式> 启动加密编码。
-o<平移数目> 设置数据平移的数目。
实例
(1)创建空的磁盘镜像文件,这里创建一个1.44M的软盘
$ dd if=/dev/zero of=floppy.img bs=512 count=2880
(2)使用 losetup将磁盘镜像文件虚拟成快设备
$ losetup /dev/loop1 floppy.img
(3)挂载块设备
$ mount /dev/loop0 /tmp
经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。
(4) 卸载loop设备
$ umount /tmp
$ losetup -d /dev/loop1
本文出自 “zhang1003995416” 博客,谢绝转载!
磁盘管理