磁盘管理
MBR:master boot record 主引导记录。位于磁盘的0磁道0扇区共512字节,独立于操作系统之外的。512字节的划分
前446字节:bootloader引导加载器,是一段程序代码,可以完成引导分区上的操作系统来启动起来
接下来64字节的每16字节,可以标识一个分区,一共可以标识4个分区,所以硬盘上只能划分4个主分区
最后2个字节:magic number 标记MBR是否有效
主+扩展<=4
CHS:柱面,磁头,扇区 最大8G
LBA:新的方式,按线性顺序寻址
硬链接 ln src dest
1,只能对文件创建,不能对目录创建
2,不能跨文件系统
3,创建硬链接会增加文件被链接的次数
软连接 ln -s
1,可应用于目录
2,可以跨文件系统
3,不会增加被链接文件的链接次数
4,其大小为指定的路径所包含的字符个数
du 显示出目录及目录中的子文件,并显示占据空间的大小
-s 显示目录包括目录中的文件的整体大小
df :报告文件系统磁盘使用情况
-h 显示空间大小而不是磁盘块个数
-i 显示有多少个inode可用
-P(大) 不换行显示 -Pi -Ph
设备文件
b:按块为单位,随机访问的设备
c:按字符为单位,线性设备
/dev
主设备号MAJOR
标识设备类型
次设备号MINOR
表示同一种类型中不同设备
mknod:创建块或字符的特殊设备文件
mknod [OPTION]… NAME TYPE [MAJOR MINOR] mknod -m 640 mydev c 66 0
-m MODE 指定mode权限
硬盘设备的设备文件名
Ide ,ata :hd
Sata :sd
Scsi :sd
Usb :sd
a,b,c…来区分同一种类型下的不同设备
Ide:
第一个ide口,主,从
/dev/hda, /dev/hdb
第二个ide接口,主,从
/dev/hdc, /dev/hdd
Sda,sdb,sdc ….
Hda
Hda1:第一个主分区
Hda2
Hda3
Hda4
Hda5:第一个逻辑分区
Fdisk -l 查看当前系统识别到了几块硬盘
Fdisk -l /dev/sda2 查看指定设备信息
管理磁盘分区
Fdisk /dev/sda
m :查看帮助
p:显示当前硬件的分区,包括没保存的改动
n:创建新分区
e:扩展分区
p:主分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
L
l:显示所支持的所有类型
fdisk最多只能创建15个分区
扫描磁盘
echo "- – -" > /sys/class/scsi_host/host2/scan
Centos 6
增加分区同步
Partx -a /dev/sda
删除分区同步
Partx -d –nr 7-8 /dev/sda
Centos7
Partprobe
设定完成后w退出,虽然此刻ll /dev/sda*或者cat /proc/partitions 或者lsblk 可查看到,但是此刻只是写到硬盘上,内存并没有识别(cat/proc/partitions显示的还是原有的,刚刚新设定的并没有显示出来),此时用partprobe(6没效果,5,7可以用) [/dev/sda]或者portx(6中用这个) -a(对增加的有效) -d –nr 7-8 /dev/sda删分区重读磁盘分区表,再看就有了。
同步的话,新硬盘不用使用上述命令同步,自动就同步了,如果是原有的分过区的硬盘就需要使用命令同步。
Gdisk 管理GPT分区,是交互式的,
parted 命令 管理GPT分区,不是交互式的,敲命令后就直接生效
v parted 的操作都是实时生效的,小心使用
v 用法:parted [ 选项]… [设备 [命令 [ 参数]…]…]
parted /dev/sdb mklabel gpt|msdos 创建GPT或MBR分区
parted /dev/sdb print 显示状态
parted /dev/sdb mkpart primary 1 200 创建主分区并从第一个起分200兆
parted /dev/sdb rm 1 删完后GPT分区表还在
parted -l
Linux支持的文件系统
格式化就是低级格式化,是硬盘厂商就做好了的
高级格式化就是把指定分区格式化为某种文件系统 mkfs -t ext3
VFS:virtual file system 虚拟文件系统,弥合了各种文件系统的不同,使得linux支持各种类型的文件系统,也是内核中的模块
一个文件的存储:写日志的顺序先于写内存
光盘存储格式:iso9660
虚拟机磁盘 /dev/vda
内核模式(空间)ring0
用户模式(空间)ring3
历史原因ring1,ring2没有被使用
块:存储文件的最小单位
块大小:1024字节,2048字节或4096字节,也就是1k,2k,4k
查看块大小 tune2fs -l /dev/sda1 |grep size
设备文件只用inode,不占用磁盘块大小,所以设备文件没有大小,管道文件和套接字文件也没有大小,占据磁盘块的通常只有普通文件和目录(存储的文件名称和inode的对应关系)
位图分为inode位图和块位图
1,3,5,7,9组保存了超级快的备份
超级块:super block 保存分区中的全局信息,至关重要。Dupme2fs /dev/sda1 查看超级快和块组的信息
1,有多少块组
2,每个块组中包含多少个块
3,块大小
4,空闲磁盘块,已用磁盘块,空闲inode,已用inode
块组描述符表
文件系统管理
如果重新创建文件系统会损坏原有文件,不要对已有的分区重新创建文件系统
Windows里的fat32在linux里叫vfat
Cat /proc/filesystem查看当前内核所支持的文件系统类型
Lsmod :查看支持的文件系统
Df -T :显示的同时显示文件系统
创建文件系统:mkfs
-t fstype 指定的分区 换成特定的文件系统类型 mkfs -t ext3 /dev/sda5
Mkfs -t ext2相当于mkfs.ext2
Mkfs -t ext3相当于mkfs.ext3
Mkfs -t ext4相当于mkfs.ext4
Mkfs -t vfat相当于mkfs.vfat
创建完成后 blkid 用UUID显示是否成功
自己格式化而不是系统格式化的分区在6不支持ACL和user_xattr,只能自己手工tune2fs -o acl /dev/sdc2,如果是已经挂载过的磁盘,需要重新挂一下就好了,加ACL和user_xattr模块。7支持ACL
专门管理 ext系列文件
Mke2fs
-j :创建ext3类型文件系统 相当于 mkfs -t ext3
-b BLOCK_SIZE:指定块大小,默认为4096,可用取值为1024,2048,4096
-L LABEL :指定分区卷标, mke2fs -L MYDATA /dev/sda5
-i #: 为数据空间中每多少个字节创建一个inode ;默认为8192,这里给出的数值应该为块大小的2^倍,此大小不应该小于block 的大小
-N # :手动指定要创建多少个inode
-m #: 手动指定预留给超级用户的块数百分比,默认5%, mke2fs -m 4 /dev/sda5
-O FEATURE[,…] :启用指定特性,
-O ^FEATURE :关闭指定特性,例如关闭日志功能 tune2fs -O ^has_journal /dev/sda5
-F:强制创建文件系统
-E:用户指定额外文件系统属性
blkid :查看或定位块设备属性信息blkid [OPTION]… [DEVICE] blkid /
-U UUID: 根据指定的UUID(统一的全局标识符) 来查找对应的设备
-L LABEL (卷标):根据指定的LABEL来查找对应的设备
e2label :查看或定义ext 系列文件系统的LABEL(卷标)
e2label /dev/sda5 显示卷标
e2label /dev/sda5 HELLODATA 自定义卷标
findfs :查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs :重新设定ext 系列文件系统可调整参数的值,并保存在磁盘的超级块里,重启不会丢失
-l :查看指定文件系统超级块信息;super block tune2fs -l /dev/sdb1
-L LABEL :设定或修改卷标
-m # :调整预留给管理员的空间百分比
-j: 不损坏原有数据情况下,将ext2 升级为ext3
-O: 文件系统属性启用或禁用, –O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-r :指定预留块数
-U UUID: 修改UUID 号;
-o #:指定挂载次数达到#次之后进行自检,0或-1表示关闭此功能
-i :每挂载使用多少天后进行自检,0或-1表示关闭此功能
Uuidgen:随机生成UUID
dumpe2fs:显示超级快和块组信息
-h只查看超级块信息(分组信息),分区用分组管理
fsck: File System Check文件系统检测和修复
fsck.FS_TYPE
-t FSTYPE 指定文件系统类型
-a: 自动修复错误
-r: 交互式修复错误
注意: FSTYPE 一定要与分区上已经文件类型相同;
e2fsck :ext 系列文件专用的检测修复工具
-y :自动回答为yes
-f :强制修复
-p: 自动修复错误
挂载:将新的文件系统关联至当前根文件系统 /media挂载移动设备 /mnt临时挂载设备
卸载:将某文件系统与当前根文件系统的关联关系移除
Mount:显示当先系统上已挂载的设备
挂载
Mount 设备 挂载点
设备:
(1) 设备文件:例如/dev/sda5
(2) 卷标:-L “LABEL”, 例如 -L “MYDATA”
(3) UUID, -U “UUID”例如 -U “0c50523c-43f1-45e7-85c0-a126711d406e”
(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
挂载点:其实就是目录
此目录没有被其他进程使用
事先存在;建议使用空目录
进程正在使用中的设备无法被卸载
目录中的原有的文件将会暂时隐藏
多个设备不能挂在同一个挂载点
挂载完成后,要通过挂载点访问对应文件系统上的文件
刚刚挂载完的文件系统可以显示lostfound,否则不显示
卸载:umount
Umount 设备 或者 umount 挂载点 ,任意一个就可以
卸载注意事项
挂载的设备没有进程使用
Mount [options] [-o options] 设备 挂载点
mount 常用命令选项
v -t ftype :指定要挂载的设备上的文件系统类型,不使用此选项时,mount会调用blkid命令获取对应文件系统的类型
v -r: readonly ,只读挂载,挂载光盘时常用此选项
v -w: read and write, 读写挂载
v -n: 默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件,使用-n选项意味着挂载设备时,不把信息写入此文件
v -a :有auto 功能,自动挂载/etc/fstab文件中定义中的所有文件系统
v -L 'LABEL': 以卷标指定挂载设备
v -U 'UUID': 以UUID 指定要挂载的设备
v -B, –bind: 绑定目录到另一个目录上
·通过查看/etc/mtab 文件和mount命令可以显示当前已挂载的所有设备但是不是实时的,用查看内核追踪到的实时的已挂载的所有设备:cat /proc/mounts
如果有人在用挂载点,就无法卸载挂载点,用Fuser -v /mnt/sdb3查看挂载点谁在用,紧急情况下用fuser -km /mnt/sdb3杀死进程。
-o options :( 挂载文件系统的功能选项) ,多个选项使用逗号分隔
async :异步模式
sync :同步模式, 内存更改时,同时写磁盘
atime/noatime :包含目录和文件
diratime/nodiratime :目录的访问时间戳
auto/noauto :是否支持自动挂载, 是否支持-a 选项
exec/noexec :是否支持将文件系统上运行应用程序
dev/nodev :是否支持在此文件系统上使用设备文件
suid/nosuid :是否启用suid 和sgid 权限
remount :重新挂载当前文件系统
ro :挂载为只读
rw: : 挂载为读写
user/nouser :是否允许普通用户挂载此设备,默认管理员才能挂载
acl :启用此文件系统上的acl 功能
v Defaults :相当于rw, suid, dev, exec, auto, nouser, async
练习,
备份/etc目录
Cp -r /etc/* /backup
调整其预留百分比为3%
Tune2fs -m 3 -L DATA /dev/sda7
以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验证其效果
Stat /backup/inittab
Cat /backinittab
Stat
Mount -o remount,noatime /backup
Cat
Stat
对此文件系统强行做一次检测
E2fsck -f /dev/sda7
删除复制而来的所有文件,并将此文件系统重新挂载为同步,而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化
Rm-rf /backup/*
Mount -o remount,sync /backup
Cp -r /etc/* /backup
swap分区
虚拟内存
X86:虚拟地址,线性地址
Free:查看当前系统物理内存和交换空间使用情况,默认以字节显示
-m 以M显示
Fdisk命令中,调整分区类型为82
创建交换分区
Mkswap /dev/sda8
-L LABEL
挂载交换分区
Swapon /dev/sda8
-a :启用所有的定义在/etc/fstab文件中的交换设备
Swapoff /dev/sda8
回环设备
Loopback,使用软件来模拟实现硬件
dd:转换并复制文件。复制的是底层数据流
dd if=/etc/inittab of=/root/inittab if 数据来源 of 数据存储目标
bs=# :block size, 复制单元大小
count=# :复制多少个bs
备份MBR dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1
还原MBR dd if=/mnt/usb/mbr.backup of= /dev/sda bs=512 count=1
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs 也是obs)
ibs=size 一次读size 个byte
obs=size 一次写size 个byte
cbs=size 一次转化size 个byte
skip=# 从开头忽略blocks 个ibs 大小的块
seek=# 从开头创建数据文件时,跳过的空间大小
count=n 只拷贝n 个记录
Mount命令,可以挂载iso镜像
Mount device mount_point
-o loop:挂载本地回环设备
文件系统的配置文件/etc/fstab
操作系统初始时,会自动挂载此文件中定义的每个文件系统
/etc/fstab
第一段:要挂载的设备
第二段:挂载点
第三段:文件系统类型
第四段:挂载选项
第五段:转储频率(定义多久对文件系统做一次完全备份 1每天 2每隔一天)
第六段:文件系统检测次序(只有根可以为1 0表示不检查)
Fuser 验证进程正在使用的文件或套接字文件
– v /mnt/test 查看谁正用什么命令访问
-k -m /mnt/test 终止正在访问此挂载点的所有进程,把这个挂在点上的正在访问的进程统统干掉
练习
1,创建一个5G分区,文件系统为ext3,卷标为MYDATA,块大小为1024,预留空间为磁盘分区的3%,要求开机后可以自动挂载至/data/目录,并且自动挂载的设备要使用卷标进行引用
2,创建一个本地回环文件/var/swaptemp/swapfile来用于swap。要求大小为512MB,卷标为SWAP-FILE,且开机自动启用此交换设备
Mkdir /var/swaptemp
Dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
Mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile
/etc/fstab
/var/swaptemp/swapfile swap swap dafaults 0 0
3,上述第一问,如何让其自动挂载的同时启用ACL功能
/etc/fstab
LABEL=’MYDATA’ /data ext3 default,acl 0 0
备份mbr
dd if=/dev/sda of=/root/mbr bs=1 count=512
查看mbr内容
hexdump -C mbr
显示分区信息
fdisk -l
恢复分区信息
dd if=mbr of=/dev/sdb
fdisk -l /dev/sda
清零boot loader
dd if=/dev/zero of=/dev/sdb bs=1 count=446
fdisk -l /dev/sdb
hexdump -C -n 512 /dev/sdb
hexdump -C -v -n 512 /dev/sdb
清零分区表
dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446
centos6
增加分区同步
partx -a /dev/sda
删除分区同步
partx -d –nr 7-8 /dev/sda
centos7
partprobe
物理磁盘分区,真实
fdisk -l /dev/sdb
生效,内存
cat /proc/partitions
lsblk
ll /dev/sdb*
查看ext文件系统超级块
tune2fs -l /dev/sdb6
创建文件系统
mke2fs /dev/sdb3
取消日志功能
tune2fs -O ^has_journal /dev/sdb5
增加日志功能
tune2fs -O has_journal /dev/sdb3
指定块大小
mkfs.ext4 -b 1024 /dev/sdb1
查看所有文件系统信息
blkid
原创文章,作者:wutianyou,如若转载,请注明出处:http://www.178linux.com/39962
评论列表(1条)
文章对磁盘管理基础知识和管理工具的用法总结的较为全面。同时,如果能加上一些示例,从增加一块磁盘,分区,格式化,挂载使用能熟练运用这些工具会更好哦