第十三章、磁盘管理
本章内容
磁盘结构
1、分区类型
管理分区
2、管理文件系统
3、挂载设备
管理虚拟内存
设备文件
?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(每分钟转速)
机械硬盘和固态硬盘
? 机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤
? 固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致
? 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍
? 相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势
? 硬盘有价,数据无价,目前SSD不能完全取代HHD
设备文件
?磁盘设备的设备文件命名:/dev/DEV_FILE
?SCSI, SATA, SAS, IDE,USB: /dev/sd
?虚拟磁盘:/dev/vd(虚拟机上的磁盘,像阿里云)
?不同磁盘标识:a-z,aa,ab…(突破26个,aa,ab)
/dev/sda, /dev/sdb, ...
?同一设备上的不同分区:1,2, ...
/dev/sda1, /dev/sda5
(一个电脑上必须要有一个主分区引导电脑,具体一块硬盘上可以没有主分区,图形化查看磁盘分区centos7上gnome-disks,6上palimpsest)
?硬盘存储术语
?head:磁头
?track:磁道
?cylinder: 柱面(把所有的0磁道盘片取出来就0柱面)
早前分区都是以柱面整数倍分区,8M的倍数,centos6还有提示,现在以扇区为单位(不一定是,但不以柱面为单位了)。
?sector: 扇区,512bytes
机械硬盘结构
固态硬盘(SSD)和机械硬盘(HDD)
硬盘存储术语
早起,扇区大小不一样,但是存放的数据量是一样的512字节,造成了资源浪费,于是就出现了ZBR即扇区大小一样存储一样的数据量。
6位一圈存放的扇区数,但有一个起始要去掉,有63扇区,有多少磁道,10位,0-1023总共1024个磁道,磁头数和扇面相等用8个位表示共256个。磁盘大小为256*1024*63*512=8064M,这是老的磁盘,现在大了。
区位记录磁盘扇区结构
ZBR(Zoned Bit Recording)
这是目前磁盘的存放方案,优化方案:如果有经常使用的数据放在外圈编号小的磁道上,同样的转速读取的数据多。
CHS和LBA
?CHS
?采用24bit位寻址(10+8+6)
?其中前10位表示cylinder,中间8位表示head,后面6位表示sector(扇区)。
?最大寻址空间8GB
这种方式寻址淘汰了
?LBA(logical block addressing)
?LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
?LBA采用48个bit位寻址
?最大寻址空间128PB
?由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式
使用分区空间
设备识别
设备分区
创建文件系统
标记文件系统
在/etc/fstab文件中创建条目
挂载新的文件系统
磁盘分区
? 为什么分区
?优化I/O性能
?实现磁盘空间配额限制
?提高修复速度
?隔离系统和程序
?安装多个OS
?采用不同文件系统
分区
? 两种分区方式:MBR,GPT(windows和linux一样)
? MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
MBR最大管理2T的分区,多了管理不了。
? 如何分区:按柱面(8M)
? 0磁道0扇区:512bytes(叫MBR)
446bytes: boot loader
64bytes:分区表
16bytes: 标识一个分区
2bytes: 55AA(结束标志)
? 4个主分区;3主分区+1扩展(N个逻辑分区)
MBR分区结构
? 硬盘主引导记录MBR由4个部分组成
? 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。
? 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
? 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
? 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA(详见附录1)
MBR结构
MBR中DPT结构
GPT分区
? GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)
? 使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位,唯一的标示一个对象,使用算法生成,确保唯一性。
? UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动
分区突破2T使用GPT
GPT分区结构
保护mbr:较老的分区软件看不到mbr可能直接覆盖信息
EFI部分又可以分为4个区域,EFI信息区(GPT头)、分区表、GPT分区,备份区域
备份区域:备份分区表,防止分区表破坏导致分区信息丢失,且有多个备份。
GPT结构,GPT头和分区表项
列出可用的磁盘设备
? 图形化磁盘管理功能工具:点击“应用程序”->“系统工具”->“磁盘”或执行命令gnome-disks
Bios+MBR(不支持鼠标)与UEFI+GPT(支持鼠标)
使用fdisk -l /dev/sda查看是什么分区,看到CHS信息一般就是MBR分区格式
管理分区
? 列出块设备
lsblk
? 创建分区使用:
fdisk 创建MBR分区
gdisk 创建GPT分区
parted 高级分区操作(管理GPT,和gdisk差不多)
? partprobe-重新设置内存中的内核分区表版本
parted命令
? parted的操作都是实时生效的,小心使用
? 用法:parted [选项]... [设备 [命令 [参数]...]...]
parted /dev/sdb mklabel gpt|msdos(同MBR)
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默认M)
parted /dev/sdb rm 1
parted -l
分区工具fdisk和gdisk
?gdisk /dev/sdb 类fdisk 的GPT分区工具
?fdisk -l [-u] [device...] 查看分区
?fdisk /dev/sdb 管理分区
? 子命令:
?p 分区列表
?t 更改分区类型
?n 创建新分区
?d 删除分区
?v 校验分区
?u 转换单位
?w 保存并退出
?q 不保存并退出
同步分区表
? 查看内核是否已经识别新的分区:
cat /proc/partations
? centos6通知内核重新读取硬盘分区表
新增分区用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
删除分区用
partx -d --nr M-N /dev/DEVICE
CentOS 5,7: 使用partprobe
partprobe [/dev/DEVICE]
文件系统
? 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
? 从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
? 支持的文件系统:/lib/modules/`uname –r`/kernel/fs
文件系统类型
?Linux文件系统:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
?光盘:iso9660
?Windows:FAT32, exFAT,NTFS
?Unix: FFS(fast), UFS(unix), JFS2
?网络文件系统:NFS, CIFS
?集群文件系统:GFS2, OCFS2(oracle)
?分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
?RAW:未经处理或者未经格式化产生的文件系统
(只分区没有创建文件系统叫RAW文件系统)
文件系统分类
?根据其是否支持"journal"功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
?文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
? Linux的虚拟文件系统:VFS
?查前支持的文件系统:cat /proc/filesystems
VFS
用户开发一些软件去访问不同的文件系统的数据时,面对的不是直接的文件系统而是vfs,屏蔽不同文件系统的区别,抽取相同的。
文件系统选择
创建文件系统
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L ‘LABEL‘: 设定卷标
创建ext文件系统
? mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L ‘LABEL‘
-j: 相当于 -t ext3(j相当于日志,3比2多个日志功能)
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 [LABEL]
findfs :查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
tune2fs
? tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息;super block
-L ‘LABEL‘:修改卷标
-m #:修预留给管理员的空间百分比
-m 1:预留1%
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用, –O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号,即“”中的号
? dumpe2fs:
块分组管理,32768块
-h:查看超级块信息,不显示分组信息
超级快和inode table
文件系统检测和修复
?常发生于死机或者非正常关机之后
?挂载为文件系统标记为“no clean”
?注意:一定不要在挂载状态下修复(挂载情况下可能有人在用,取消挂载确定没人在用)
?fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-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:挂载点
事先存在;建议使用空目录
进程正在使用中的设备无法被卸载
cat /etc/mtab = mount(centos6)
mount常用命令选项
?-t vsftype:指定要挂载的设备上的文件系统类型
?-r: readonly,只读挂载
?-w: read and write, 读写挂载
?-n: 不更新/etc/mtab,mount不可见
?-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
?-L ‘LABEL‘: 以卷标指定挂载设备
?-U ‘UUID‘: 以UUID指定要挂载的设备
?-B, --bind: 绑定目录到另一个目录上
?查看内核追踪到的已挂载的所有设备
cat /proc/mounts
? -o options:(挂载文件系统的选项),多个选项使用逗号分隔
async:异步模式(默认写到缓冲区,再写到磁盘,有风险,突然停电,数据丢失,效率高)
sync:同步模式(内存更改时,同时写磁盘,安全,效率低)
atime/noatime:包含目录和文件 (-o noatime 磁盘的读时间不更新)
网站上的读时间屏蔽掉,提高性能。
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限(支持suid是很危险的,
例如将vim加入s权限,普通用户使用具有root权限可以修改/etc/shadow,挂载的时候取消)
remount:重新挂载(和其他的选项合用用,隔开方便添加新的功能,也可以先卸载再挂载,但是用人在用就不能卸载了,使用remount方便了这些,同时还是即时生效)
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
acl:启用此文件系统上的acl功能(默认没有acl功能)
loop: 使用loop设备(拿文件当分区)
? defaults:相当于rw, suid, dev, exec, auto, nouser, async
缓冲区buffer:写数据,临时存放写到磁盘的空间
缓存cache:读数据,将经常读的数据临时放到内存中,加快下一次读的时间
卸载命令
? 查看挂载情况
findmnt MOUNT_POINT|device
? 查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
? 终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
?卸载
umount DEVICE
umount MOUNT_POINT
挂载点和/etc/fstab
?配置文件系统体系
?被mount、fsck和其它程序使用
?系统重启时保留文件系统体系
?可以在设备栏使用文件系统卷标
?使用mount -a 命令挂载/etc/fstab中的所有文件系统
文件挂载配置文件
?/etc/fstab每行定义一个要挂载的文件系统(开机自动挂载设备)
?要挂载的设备或伪文件系统
设备文件名
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
?挂载点
?文件系统类型
?挂载选项:defaults
?转储频率:0:不做备份 1:每天转储 2:每隔一天转储
?自检次序: 0:不自检
1:首先自检;一般只有rootfs才用1,数字大小表示检查的先后顺序
节点不属于文件,但存在与磁盘,想分区表不是文件但存在于磁盘。
处理交换文件和分区
?交换分区是系统RAM的补充
?基本设置包括:
?创建交换分区或者文件
?使用mkswap写入特殊签名
?在/etc/fstab文件中添加适当的条目
?使用swapon -a 激活交换空间
挂载交换分区
? 启用:swapon
swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区;
-p PRIORITY:指定优先级
/etc/fstab:pri=value
?禁用:swapoff [OPTION]... [DEVICE]
SWAP的优先级
?可以指定swap分区0到32767的优先级,值越大优先级越高
?如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
?先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
?优化性能:分布存放,高性能磁盘存放
移动介质
?挂载意味着使外来的文件系统看起来如同是主目录树的一部分
?访问前、介质必须被挂载
?摘除时,介质必须被卸载
?按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
?挂载点通常在/media 或/mnt下
使用光盘
?在图形环境下自动启动挂载/run/media/<user>/<label>
?否则就必须被手工挂载
mount /dev/cdrom /mnt/
?eject命令卸载或弹出磁盘
?创建ISO文件
cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc(把目录打包成iso)
把光盘制成iso
?刻录光盘
wodim –v –eject centos.iso
把iso制成光盘
挂载USB介质
?查看USB设备是否识别
?lsusb
?被内核探测为SCSI设备
?/dev/sdaX、/dev/sdbX、或类似的设备文件
?在图形环境中自动挂载
?图标在[计算机]窗口中创建
?挂载在/run/media/<user>/<label>
?手动挂载
?mount /dev/sdb1 /mnt
常见工具
? 内存空间使用状态:
free [OPTION]
-m: 以MB为单位
-g: 以GB为单位
?文件系统空间占用等信息的查看工具:
df [OPTION]... [FILE]...
-H 以1000为单位
-T 文件系统类型
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix兼容的格式输出
? 查看某目录总体空间占用状态:
du [OPTION]... DIR
-h: human-readable
-s: summary
工具dd
? dd命令:convert and copy a file
? 用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
(输入的路径,输出到哪)
bs=#:block size, 复制单元大小(以块为单位)
count=#:复制多少个bs
? of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs也是obs)
ibs=size 一次读size个byte(读的大小)
obs=size 一次写size个byte(写的大小)
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块
seek=blocks 从开头忽略blocks个obs大小的块
count=n 只拷贝n个记录
?conv=conversion[,conversion...] 用指定的参数转换文件
?转换参数:
?ascii 转换 EBCDIC 为 ASCII
?ebcdic 转换 ASCII 为 EBCDIC
?lcase 把大写字符转换为小写字符
?ucase 把小写字符转换为大写字符
?nocreat 不创建输出文件
?noerror 出错时不停止
?notrunc 不截短输出文件(和前面的skip seek连用)
?sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
备份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下:
#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
? 备份:
dd if=/dev/sdx of=/dev/sdy
将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/path/to/image
将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx | gzip >/path/to/image.gz
备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
? 恢复:
dd if=/path/to/image of=/dev/sdx
将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx
将压缩的备份文件恢复到指定盘
? 拷贝内存资料到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024
/dev/mem 内存数据
将内存里的数据拷贝到root目录下的mem.bin文件
? 从光盘拷贝iso镜像
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件
? 销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行
得到最恰当的block size
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小
? 测试硬盘写速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
? 测试硬盘读速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
? 修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的
dd 不写单位默认是字节为单位
附录:
1、查看分区表内容
[[email protected] ~]#hexdump -C -n 512 /dev/sda
00000000 eb 48 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.H..............|
00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..|
00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u|
00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 03 02 |.........|...t..|
00000040 80 00 00 80 68 13 05 00 00 08 fa 90 90 f6 c2 80 |....h...........|
00000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc |u....Y|..1......|
00000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 f6 c2 80 |. [email protected]|<.t...R...|
00000070 74 54 b4 41 bb aa 55 cd 13 5a 52 72 49 81 fb 55 |tT.A..U..ZRrI..U|
00000080 aa 75 43 a0 41 7c 84 c0 75 05 83 e1 01 74 37 66 |.uC.A|..u....t7f|
00000090 8b 4c 10 be 05 7c c6 44 ff 01 66 8b 1e 44 7c c7 |.L...|.D..f..D|.|
000000a0 04 10 00 c7 44 02 01 00 66 89 5c 08 c7 44 06 00 |....D...f.\..D..|
000000b0 70 66 31 c0 89 44 04 66 89 44 0c b4 42 cd 13 72 |pf1..D.f.D..B..r|
000000c0 05 bb 00 70 eb 7d b4 08 cd 13 73 0a f6 c2 80 0f |...p.}....s.....|
000000d0 84 f0 00 e9 8d 00 be 05 7c c6 44 ff 00 66 31 c0 |........|.D..f1.|
000000e0 88 f0 40 66 89 44 04 31 d2 88 ca c1 e2 02 88 e8 |[email protected]|
000000f0 88 f4 40 89 44 08 31 c0 88 d0 c0 e8 02 66 89 04 |[email protected]|
00000100 66 a1 44 7c 66 31 d2 66 f7 34 88 54 0a 66 31 d2 |f.D|f1.f.4.T.f1.|
00000110 66 f7 74 04 88 54 0b 89 44 0c 3b 44 08 7d 3c 8a |f.t..T..D.;D.}<.|
00000120 54 0d c0 e2 06 8a 4c 0a fe c1 08 d1 8a 6c 0c 5a |T.....L......l.Z|
00000130 8a 74 0b bb 00 70 8e c3 31 db b8 01 02 cd 13 72 |.t...p..1......r|
00000140 2a 8c c3 8e 06 48 7c 60 1e b9 00 01 8e db 31 f6 |*....H|`......1.|
00000150 31 ff fc f3 a5 1f 61 ff 26 42 7c be 7f 7d e8 40 |1.....a.&B|..}[email protected]|
00000160 00 eb 0e be 84 7d e8 38 00 eb 06 be 8e 7d e8 30 |.....}.8.....}.0|
00000170 00 be 93 7d e8 2a 00 eb fe 47 52 55 42 20 00 47 |...}.*...GRUB .G|
00000180 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 65 |eom.Hard Disk.Re|
00000190 61 64 00 20 45 72 72 6f 72 00 bb 01 00 b4 0e cd |ad. Error.......|
000001a0 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 00 00 00 |..<.u...........|
000001b0 00 00 00 00 00 00 00 00 3b c9 06 00 00 00 80 20 |........;...... |
000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...|
000001d0 29 82 83 fe ff ff 00 08 20 00 00 80 1a 06 00 fe |)....... .......|
000001e0 ff ff 83 fe ff ff 00 88 3a 06 00 00 71 02 00 fe |........:...q...|
000001f0 ff ff 05 fe ff ff 00 88 ab 08 00 78 54 10 55 aa |...........xT.U.|
00000200
查看sda的前512字节内容,里面包含了分区表内容,不过都是十六进制,前446个字节是启动加载,64个字节分区表,每个分区表占16个字节,共4个分区,多了不能加,55aa标记位。80 20是分区表的开始位置到55 aa结束。
[[email protected] ~]#dd if=/dev/sda of=/app/mbr bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.0048667 s, 105 kB/s
[[email protected] ~]#hexdump -C /app/mbr
备份磁盘的前512个字节
[[email protected] ~]#dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.0569018 s, 1.1 kB/s
将分区表信息清理掉
[[email protected] ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3.7G 0 rom /media/CentOS_6.9_Final
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sdb 8:16 0 100G 0 disk
sdc 8:32 0 80G 0 disk
sdd 8:48 0 60G 0 disk
可以看到虽然讲分区表清理掉了但是还是可以看到分区信息,因为清理掉的是磁盘中的分区表,内存中还有一份,但是重启就生效了,分区表就看不到了
[[email protected] ~]#fdisk -l /dev/sda
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c93b
Device Boot Start End Blocks Id System
这条命令是看磁盘上的分区表,可以看到分区表信息没有了,机器重启就起不来了,因为分区表没了,重启前需要还原分区表或者重启前把备份的分区表通过scp传到别的机器上,进入救援模式还原,或者把硬盘拆下来放到别的机器上还原。
1.1使用光盘还原分区表模式
[[email protected] ~]#scp /app/mbr 172.18.4.253:/app/
The authenticity of host ‘172.18.4.253 (172.18.4.253)‘ can‘t be established.
RSA key fingerprint is 94:8b:1a:76:11:8d:e6:cf:c5:23:a3:57:5f:42:b3:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.18.4.253‘ (RSA) to the list of known hosts.
[email protected]‘s password:
先把备份的分区表信息传到另一台机器上
[[email protected] ~]#reboot
重启机器,按F2调整开机项以光盘启动为首选项
进入第三项救援模式
配置网络,不然不能使用scp传输文件
使用DHCP动态分配ip
continue继续进入shell
将备份的文件从远端机器上传输过来
原来使用的桥接模式的网卡,备份传输不过来,只能用主机模式的网卡传输过来。
bash-4.1# dd if=mbr of=/dev/sda bs=1 count=512
bash-4.1#fdisk -l
看到分区表还原成功,exit退出即可
1.2直接还原分区表模式
[[email protected] ~]#dd if=/app/mbr of=/dev/sda bs=1 count=512
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.00240875 s, 213 kB/s
[[email protected] ~]#fdisk -l /dev/sda
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c93b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 131 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 131 6505 51200000 83 Linux
/dev/sda3 6505 9055 20480000 83 Linux
/dev/sda4 9055 26109 136985600 5 Extended
/dev/sda5 9055 9316 2097152 82 Linux swap / Solaris
可以看到分区信息恢复了。
2、复制分区表
[[email protected] ~]#dd if=/dev/sda of=/dev/sdb bs=1 count=64 skip=446 seek=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.00478312 s, 13.4 kB/s
[[email protected] ~]#fdisk -l /dev/sdb
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
虽然分区表复制过去了,但是磁盘上仍然没有分区信息,因为55aa标志位没有复制过去,所以64要改成66才行。
[[email protected] ~]#dd if=/dev/sda of=/dev/sdb bs=1 count=66 skip=446 seek=446
66+0 records in
66+0 records out
66 bytes (66 B) copied, 0.101824 s, 0.6 kB/s
[[email protected] ~]#fdisk -l /dev/sdb
Warning: invalid flag 0x0000 of partition table 5 will be corrected by w(rite)
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 131 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 131 6505 51200000 83 Linux
/dev/sdb3 6505 9055 20480000 83 Linux
/dev/sdb4 9055 26109 136985600 5 Extended
可以看到磁盘上的分区信息了,只能复制主分区和扩展分区不能扩展逻辑分区,且sda和sdb大小不一样,这样就不合适了,平时不要这样做,只是试验了。
3、查看分区表的方式
(1)ls /dev/sd*
(2)lsblk
(3)cat /proc/partitions
(4) fdisk -l
1-3:是看内存中的分区表
4:磁盘的分区表
4.1 parted命令
内存的数据和磁盘的数据不同步
[[email protected] ~]#parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
查看磁盘的分区类型sda是MBR分区类型,打印的是msdos
[[email protected] ~]#parted /dev/sdb mklabel gpt
Information: You may need to update /etc/fstab.
[[email protected] ~]#fdisk -l /dev/sdb
WARNING: GPT (GUID Partition Table) detected on ‘/dev/sdb‘! The util fdisk doesn‘t support GPT. Use GNU Parted.
将sdb的分区类型设为GPT,用fdisk查看提示不支持,使用parted支持。
[[email protected] ~]#parted /dev/sdb mkpart primay 1 1000
Information: You may need to update /etc/fstab.
[[email protected] ~]#parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 1000MB 999MB primay
[[email protected] ~]#parted /dev/sdb rm 2
创建主分区,查看和删除主分区方法,命令实时性,立即生效。
[[email protected] ~]#gdisk /dev/sdb
使用gdisk创建分区,交互式的,?后n添加分区
4.2 fdisk命令创建MBR分区
[[email protected] ~]#parted /dev/sdb mklabel msdos
将GPT改为MBR,使用上面命令,当然不是转换而是删除原来的分区,再创建新的MBR分区
[[email protected] ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
switch off the mode (command ‘c‘) and change display units to
sectors (command ‘u‘).
Command (m for help):
提示不以柱面为单位敲命令c,以扇区单位敲u,这是centos6,7默认以扇区位单位。分区确定后不能改变大小,只能删除后重新改。UUID是分区的唯一标识,分区名称可能改变,像/dev/sda6可能由于sda5的删除而变成/dev/sda5。
[[email protected] ~]#fdisk /dev/sda -l
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c93b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 131 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 131 6505 51200000 83 Linux
/dev/sda3 6505 9055 20480000 83 Linux
/dev/sda4 9055 26109 136985600 5 Extended
/dev/sda5 9055 9316 2097152 82 Linux swap / Solaris
/dev/sda6 9316 10621 10484351 83 Linux
/dev/sda7 10622 11405 6297448+ 83 Linux
使用fdisk 创建分区,m打印help,n添加分区,d删除分区,w保存退出,q退出不保存。
[[email protected] ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sdb 8:16 0 100G 0 disk
sdc 8:32 0 80G 0 disk
sdd 8:48 0 60G 0 disk
sr0 11:0 1 3.7G 0 rom
但是可以看到创建的分区没有写入到内存,没有写入到内存中是没有意义的,因为没有读入到内存就没法去操作它,必须要同步。
[[email protected] ~]#partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
[[email protected] ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 2G 0 part [SWAP]
├─sda6 8:6 0 10G 0 part
└─sda7 8:7 0 6G 0 part
sdb 8:16 0 100G 0 disk
sdc 8:32 0 80G 0 disk
sdd 8:48 0 60G 0 disk
sr0 11:0 1 3.7G 0 rom
增加分区同步命令,有一个好用的命令,partprobe,这个命令在centos5he7上特别好用但是在6上不行,只能用上面的命令。
[[email protected] ~]#fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
switch off the mode (command ‘c‘) and change display units to
sectors (command ‘u‘).
Command (m for help): m
Command (m for help): d
Partition number (1-7): 6
Command (m for help): d
Partition number (1-6): 6
Value out of range.
删除分区6和7两个分区
Command (m for help): p
Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006c93b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 131 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 131 6505 51200000 83 Linux
/dev/sda3 6505 9055 20480000 83 Linux
/dev/sda4 9055 26109 136985600 5 Extended
/dev/sda5 9055 9316 2097152 82 Linux swap / Solaris
使用的fdisk命令看到只剩下sda只剩下5个分区
[[email protected] ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 2G 0 part [SWAP]
├─sda6 8:6 0 10G 0 part
└─sda7 8:7 0 6G 0 part
sdb 8:16 0 100G 0 disk
sdc 8:32 0 80G 0 disk
sdd 8:48 0 60G 0 disk
sr0 11:0 1 3.7G 0 rom
但是内存中的sda还是剩下7个分区,还是要同步,但是增加分区的同步命令和减少分区的同步命令是不相同的。
[[email protected] ~]#partx -d --nr 6-7 /dev/sda
[[email protected] ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sdb 8:16 0 100G 0 disk
sdc 8:32 0 80G 0 disk
sdd 8:48 0 60G 0 disk
sr0 11:0 1 3.7G 0 rom
删除分区,然后同步,6-7是第6分区和第7分区。
[[email protected] ~]#fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
switch off the mode (command ‘c‘) and change display units to
sectors (command ‘u‘).
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition‘s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +50G
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1-6528, default 1): 5
Last cylinder, +cylinders or +size{K,M,G} (5-6528, default 6528): +10G
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (6529-13054, default 6529):
Using default value 6529
Last cylinder, +cylinders or +size{K,M,G} (6529-13054, default 13054): +5G
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001fb49
Device Boot Start End Blocks Id System
/dev/sdb1 1 6528 52436128+ 5 Extended
/dev/sdb2 6529 7182 5253255 83 Linux
/dev/sdb5 5 1310 10490445 83 Linux
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001fb49
Device Boot Start End Blocks Id System
/dev/sdb1 1 6528 52436128+ 5 Extended
/dev/sdb2 6529 7182 5253255 83 Linux
/dev/sdb5 5 1310 10490445 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sdb 8:16 0 100G 0 disk
├─sdb1 8:17 0 1K 0 part
├─sdb2 8:18 0 5G 0 part
└─sdb5 8:21 0 10G 0 part
sdc 8:32 0 80G 0 disk
sdd 8:48 0 60G 0 disk
sr0 11:0 1 3.7G 0 rom
可以看到新的分区不存在同步不同步问题,建立好了直接保存同步到内存。
旧的磁盘可能存在同步失败。
[[email protected] ~]#echo -e ‘n\np\n1\n\n+10G\nw\n‘ |fdisk /dev/sdc
脚本创建分区或多行重定向创建分区
[[email protected] ~]#echo $?
使用上面的命令查看创建的分区是否已经同步到内存了,不同步为1,同步为0
分区好了,接下来是创建文件系统。
5、文件系统
5.1查看支持的文件系统
[[email protected] ~]#ls /lib/modules/`uname -r`/kernel/fs
autofs4 cifs dlm ext2 fat gfs2 jffs2 nfs nls udf
btrfs configfs ecryptfs ext3 fscache jbd lockd nfs_common squashfs xfs
cachefiles cramfs exportfs ext4 fuse jbd2 mbcache.ko nfsd
查看linux内核支持的文件系统,发现不支持ntfs。现在主要是使用xfs文件系统。
btrfs很强大,但是红帽要抛弃了。其中df看的是分区挂载,fdisk -l查看的是分区。fat是linux和windows都支持
[[email protected] ~]# blkid /dev/sr0
/dev/sr0: UUID="2017-09-06-10-53-42-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
查看光盘的信息,文件系统类型为iso9660.
5.2创建文件系统
[[email protected] ~]#mkfs.ext4 /dev/sdb2
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
328656 inodes, 1313313 blocks
65665 blocks (5.00%) reserved for the super user
First data block=0
创建sdb2的文件系统位ext4
[[email protected] ~]#blkid /dev/sdb2
/dev/sdb2: UUID="d557d064-4fbf-4a3b-86b6-694c00a4fa27" TYPE="ext4"
查看分区的文件系统类型,创建唯一的UUID
[[email protected] ~]#tune2fs -l /dev/sdb2
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: d557d064-4fbf-4a3b-86b6-694c00a4fa27
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
查看文件系统的详细信息
[[email protected] ~]#blkid /dev/sdb3
/dev/sdb3: UUID="f65e2400-706e-41a2-ac64-48bc7ef7b2b7" TYPE="ext2"
[[email protected] ~]#tune2fs -O has_journal /dev/sdb3
tune2fs 1.41.12 (17-May-2010)
Creating journal inode: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[[email protected] ~]#blkid /dev/sdb3
/dev/sdb3: UUID="f65e2400-706e-41a2-ac64-48bc7ef7b2b7" SEC_TYPE="ext2" TYPE="ext3"
将ext2文件系统转化为ext3
[[email protected] ~]#tune2fs -O ^has_journal /dev/sdb3
tune2fs 1.41.12 (17-May-2010)
[[email protected] ~]#blkid /dev/sdb3
/dev/sdb3: UUID="f65e2400-706e-41a2-ac64-48bc7ef7b2b7" TYPE="ext2"
去掉日志功能使得ext3转化为ext2,可以发现UUID是没有变的,只要不格式化创建新的文件系统是不会变的,sda6可能变成sda但UUID是不会变的。
tune2fs只是针对ext系列的文件系统
[[email protected] ~]# blkid
/dev/mapper/VolGroup00-LogVol01: TYPE="swap"
/dev/mapper/VolGroup00-LogVol00: UUID="cb99757b-ed8f-4f7a-9a99-87535512f7c9" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="a4720595-2d9a-4a6e-8673-25a7facb1244" TYPE="ext3"
/dev/hdc: LABEL="RHEL/5.4 i386 DVD" TYPE="iso9660"
/dev/VolGroup00/LogVol00: UUID="cb99757b-ed8f-4f7a-9a99-87535512f7c9" TYPE="ext3"
/dev/VolGroup00/LogVol01: TYPE="swap"
将来表示一个分区一个方法是写设备名sda*,另一个方法时写UUID,还有一个方法时写卷标,其中的LABEL是卷标。推荐使用UUID。
[[email protected] ~]#e2label /dev/sdb3 /mnt/sdb3
[[email protected] ~]#blkid
/dev/sr0: LABEL="CentOS_6.9_Final" TYPE="iso9660"
/dev/sdb2: UUID="d557d064-4fbf-4a3b-86b6-694c00a4fa27" TYPE="ext4"
/dev/sdb3: UUID="f65e2400-706e-41a2-ac64-48bc7ef7b2b7" TYPE="ext2" LABEL="/mnt/sdb3"
/dev/sda1: UUID="0ee7af59-dbdb-4156-a25a-d2f3bd24fa5a" TYPE="ext4"
/dev/sda2: UUID="044e06d4-9b70-4a1e-a9ac-74bcb52649a3" TYPE="ext4"
/dev/sda3: UUID="85b9a743-eee0-4b9b-b26c-ecaf80358c2a" TYPE="ext4"
/dev/sda5: UUID="f43e5474-ecc0-47fe-b459-152e686eb446" TYPE="swap"
添加卷标,最好将分区的挂载点设为卷标名
[[email protected] ~]#tune2fs -o acl /dev/sdb3
tune2fs 1.41.12 (17-May-2010)
[[email protected] ~]#tune2fs -o ^acl /dev/sdb3
centos6手工分的分区没有acl功能,需要自己添加,^是删除。没有acl功能,挂载后是不能设定文件的acl的。7上面自动就有acl功能。
[[email protected] ~]#tune2fs -l /dev/sdb3
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name: /mnt/sdb3
Last mounted on: <not available>
Filesystem UUID: f65e2400-706e-41a2-ac64-48bc7ef7b2b7
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 131648
Block count: 526128
Reserved block count: 26306
Free blocks: 517080
Free inodes: 131637
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 128
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 7744
Inode blocks per group: 484
Filesystem created: Sat Dec 2 20:22:58 2017
Last mount time: n/a
Last write time: Sat Dec 2 21:04:56 2017
Mount count: 0 每次挂载都涨1
Maximum mount count: 31 挂载次数达到这个数或6个月开始检查,检查后清零。
Last checked: Sat Dec 2 20:22:58 2017
Check interval: 15552000 (6 months)
Next check after: Thu May 31 20:22:58 2018
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Default directory hash: half_md4
Directory Hash Seed: fd9aa6d8-8508-4e60-8389-1eb085a82f0b
Journal backup: inode blocks
查看文件系统的信息,即文件系统的元数据。
[[email protected] ~]#dd if=/dev/zero of=/dev/sdb3 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.513659 s, 20.4 MB/s
[[email protected] ~]#tune2fs -l /dev/sdb3
tune2fs 1.41.12 (17-May-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/sdb3
Couldn‘t find valid filesystem superblock.
[[email protected] ~]#fsck /dev/sdb3
破坏文件系统使用fsck修复,当然修复也有可能导致数据丢失的,另外挂载的时候是千万不能修复的,必须要卸载了修复。
[[email protected] ~]#mkfs.ext4 -b 1024 /dev/sdb3
指定文件系统块block的大小
[[email protected] ~]#blkid -U 1d409b63-d060-40e3-9ce8-9949128a0a13
/dev/sdb5
[[email protected] ~]#blkid -L /mnt/sdb3
通过UUID和卷标查询设备名
6、超级块和分组情况
[[email protected] ~]#dumpe2fs /dev/sdb3 | less
Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
Checksum 0x4078, unused inodes 501
Primary superblock at 1, Group descriptors at 2-10
Reserved GDT blocks at 11-266
Block bitmap at 267 (+266), Inode bitmap at 283 (+282)
Inode table at 299-426 (+298)
5832 free blocks, 501 free inodes, 2 directories, 501 unused inodes
Free blocks: 2361-8192
Free inodes: 12-512
Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
Checksum 0x2acc, unused inodes 512
Backup superblock at 8193, Group descriptors at 8194-8202
Reserved GDT blocks at 8203-8458
Block bitmap at 268 (+4294959371), Inode bitmap at 284 (+4294959387)
Inode table at 427-554 (+4294959530)
7926 free blocks, 512 free inodes, 0 directories, 512 unused inodes
Free blocks: 8459-16384
Free inodes: 513-1024
查看每个分区上的分组情况,每个组有多少块。超级块有备份,在某些组上面。
创建文件系统的时候会提示你超级块在哪有备份。
[[email protected] ~]#dumpe2fs /dev/sdb3 | grep -i backup
dumpe2fs 1.41.12 (17-May-2010)
Journal backup: inode blocks
Backup superblock at 8193, Group descriptors at 8194-8202
Backup superblock at 24577, Group descriptors at 24578-24586
Backup superblock at 40961, Group descriptors at 40962-40970
Backup superblock at 57345, Group descriptors at 57346-57354
Backup superblock at 73729, Group descriptors at 73730-73738
Backup superblock at 204801, Group descriptors at 204802-204810
Backup superblock at 221185, Group descriptors at 221186-221194
Backup superblock at 401409, Group descriptors at 401410-401418
Backup superblock at 663553, Group descriptors at 663554-663562
Backup superblock at 1024001, Group descriptors at 1024002-1024010
Backup superblock at 1990657, Group descriptors at 1990658-1990666
查看超级块的备份情况
[[email protected] ~]#dd if=/dev/zero of=/dev/sdb5 bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.308582 s, 34.0 MB/s
[[email protected] ~]#tune2fs -l /dev/sdb5
tune2fs 1.41.12 (17-May-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/sdb5
Couldn‘t find valid filesystem superblock.
[[email protected] ~]#fsck -a /dev/sdb5
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
fsck.ext2: Superblock invalid, trying backup blocks...
将超级块清零,然后恢复超级块,fsck -a 一直回答y。
[[email protected] ~]# xfs
xfs_admin xfs_estimate xfsinvutil xfs_mkfile xfs_rtcp
xfs_bmap xfs_freeze xfs_io xfs_ncheck
xfs_copy xfs_fsr xfs_logprint xfs_quota
xfs_db xfs_growfs xfs_mdrestore xfs_repair
xfsdump xfs_info xfs_metadump xfsrestore
查看文件系统xfs自己的工具集
面试题:两个文件取交集
[[email protected] ~]#grep -f f1 f2
-f选项取得是将f1的内容作为f2的模式匹配
7、挂载和卸载
分完分区了,做完文件系统的创建了,接下来就是挂载了,不然分区不能用。
一个挂载点同一时间只能挂一个设备,一个设备可以挂多个挂载点。
[[email protected] /]#mount /dev/sdb2 /mnt/sdb2
将分区sdb2挂载到/mnt/sdb2
[[email protected] ~]#cd /mnt/sdb2/
[[email protected] /]#umount /dev/sdb2
umount: /mnt/sdb2: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
当别的终端在使用的时候是不能卸载挂载点的,可以使用lsof和fuser查看
[[email protected] /]#lsof /dev/sdb2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2504 root cwd DIR 8,18 4096 2 /mnt/sdb2
[[email protected] /]#fuser -v /mnt/sdb2/
USER PID ACCESS COMMAND
/mnt/sdb2/: root 2504 ..c.. bash
可以看到谁正在使用分区,其中fuser -k是杀掉进程,但是会导致数据丢失。
[[email protected] /]#echo please leave > /dev/pts/1
w看谁在用,并告诉其离开
[[email protected] /]#findmnt /mnt/sdb2
TARGET SOURCE FSTYPE OPTIONS
/mnt/sdb2 /dev/sdb2 ext4 rw,relatime,barrier=1,data=ordered
查看某个目录是否是挂载点,是挂载点显示信息,不是不显示信息。
[[email protected] /]#mount /dev/sdb2 /mnt/sdb2/
[[email protected] /]#cat /etc/mtab
/dev/sda2 / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/sda3 /app ext4 rw 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/sdb2 /mnt/sdb2 ext4 rw 0 0
只要查看到挂载信息,/etc/mtab的信息就会立马更新,不让它更新挂载时要加是-n选项,但是-n选项加上后df或mount也看不到挂载信息,只会在挂载点的目录下看到有lost+found目录,这就是挂载成功,起到了挂载隐藏的作用,但findmnt可以发现。
[[email protected] /mnt/sdb2]#mkdir /app/sdb2
[[email protected] /mnt/sdb2]#mount /mnt/sdb2 /app/sdb2 -B
目录挂目录,节点编号一样,进入两个目录看到的内容一样。
[[email protected] /mnt/sdb2]#mount -o remount,exec /mnt/sdb2
相当于取消挂载再挂载,可以添加别的特性
[[email protected] /mnt/sdb2]#cp /dev/zero /mnt/sdb2/ -a
[[email protected] /mnt/sdb2]#ll /mnt/sdb2/
total 16
drwx------ 2 root root 16384 Dec 2 20:12 lost+found
crw-rw-rw- 1 root root 1, 5 Dec 5 07:51 zero
创建一个设备文件,-a选项必需要加,是保留原属性。
[[email protected] /mnt/sdb2]#mount -o remount,nodev /mnt/sdb2
[[email protected] /mnt/sdb2]#dd if=/mnt/sdb2/zero of=/app/f2 bs=1m count=10
dd: invalid number `1m‘
[[email protected] /mnt/sdb2]#dd if=/mnt/sdb2/zero of=/app/f2 bs=1M count=10
dd: opening `/mnt/sdb2/zero‘: Permission denied
禁止后,挂载点下面的设备文件不能用。
[[email protected] /mnt/sdb2]#tune2fs -o acl /dev/sdb2
tune2fs 1.41.12 (17-May-2010)
[[email protected] /mnt/sdb2]#tune2fs -o ^acl /dev/sdb2
tune2fs 1.41.12 (17-May-2010)
将一个设备添加和删除acl功能,好像前面已经写过了,不过我忘了,知识点太多了,永久生效,保存到磁盘上
[[email protected] /]#mount -o remout,acl /mnt/sdb2
使挂载点支持acl功能,临时挂载,临时生效,重启机器失效。
[[email protected] /]#mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda3 on /app type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/mnt/sdb2 on /app/sdb2 type none (rw,bind)
/mnt/sdb2 on /app/sdb2 type none (rw,bind,remout,acl)
显示挂载的信息和添加的属性。
[[email protected] /app]#dd if=/dev/zero of=partfile bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 183.428 s, 5.9 MB/s
[[email protected] /app]#dd if=/dev/zero of=partfile bs=1M count=1024M
dd: writing `partfile‘: No space left on device
19498+0 records in
19497+0 records out
20445016064 bytes (20 GB) copied, 718.9 s, 28.4 MB/s
其中的bs=1G是直接从内存中开辟1G的内存空间,然后添加数据,然后写到磁盘,没有一个G空间,需要启用swap空间,1M直接使用就行,写完1M写磁盘,这样就可用了。
[[email protected] /app]#free
total used free shared buffers cached
Mem: 1004112 933704 70408 0 3020 795332
-/+ buffers/cache: 135352 868760
Swap: 2097148 59232 2037916
内存是1G
[[email protected] /app]#dd if=/dev/zero of=partfile bs=3G count=1
dd: memory exhausted
内存和交换分区可用量还不够3G,直接内存溢出。
[[email protected] /app]#mkfs.ext4 partfile
对生成的文件创建文件系统,但不能分区,没有设定柱面等。
[[email protected] ~]#blkid /app/partfile
/app/partfile: UUID="167224ff-d057-4615-963c-d5583e0d8475" TYPE="ext4"
可以看到创建的文件系统成功
[[email protected] ~]#mkdir /mnt/part
[[email protected] ~]#mount /app/partfile /mnt/part/
mount: /app/partfile is not a block device (maybe try `-o loop‘?)
[[email protected] ~]#mount /app/partfile /mnt/part/ -o loop
挂载分区,可以看到必需要加上 -o loop选项,loop是回环的意思,使用loop设备(拿文件当分区)。通常是设备往目录挂,现在是文件往目录挂,文件和目录都是文件,即文件挂文件,即为回环。
[[email protected] ~]#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 50264772 5101080 42603692 11% /
tmpfs 502056 72 501984 1% /dev/shm
/dev/sda3 20027260 2837488 16165772 15% /app
/dev/sda1 999320 34924 911968 4% /boot
/app/partfile 2683040 4104 2539316 1% /mnt/part
可以看到文件系统创建和挂载成功
[[email protected] ~]#blkid
/dev/sr0: LABEL="CentOS_6.9_Final" TYPE="iso9660"
/dev/sdb2: UUID="d557d064-4fbf-4a3b-86b6-694c00a4fa27" TYPE="ext4" LABEL="/mnt/sdb2"
/dev/sdb3: UUID="9c74629d-0b64-45f9-9ea6-c50bcf92e21f" TYPE="ext4"
/dev/sda1: UUID="0ee7af59-dbdb-4156-a25a-d2f3bd24fa5a" TYPE="ext4"
/dev/sda2: UUID="044e06d4-9b70-4a1e-a9ac-74bcb52649a3" TYPE="ext4"
/dev/sda3: UUID="85b9a743-eee0-4b9b-b26c-ecaf80358c2a" TYPE="ext4"
/dev/sda5: UUID="f43e5474-ecc0-47fe-b459-152e686eb446" TYPE="swap"
/dev/sdb5: UUID="1d409b63-d060-40e3-9ce8-9949128a0a13" SEC_TYPE="ext2" TYPE="ext3
blkid默认是显示设备文件,访问一次就会记住了,blkid /app/partfile。只有带有文件系统的文件挂载了才会显示,使用文件文件系统好处是以后想转移这的数据,直接将partfile拷贝走到另外的机器,直接再将partfile挂载到一个目录就行了,即可看到里面的文件。
[[email protected] ~]#ll /dev/loop*
brw-rw---- 1 root disk 7, 0 Dec 5 10:38 /dev/loop0
brw-rw---- 1 root disk 7, 1 Dec 5 10:38 /dev/loop1
brw-rw---- 1 root disk 7, 2 Dec 5 10:38 /dev/loop2
brw-rw---- 1 root disk 7, 3 Dec 5 10:38 /dev/loop3
brw-rw---- 1 root disk 7, 4 Dec 5 10:38 /dev/loop4
brw-rw---- 1 root disk 7, 5 Dec 5 10:38 /dev/loop5
brw-rw---- 1 root disk 7, 6 Dec 5 10:38 /dev/loop6
brw-rw---- 1 root disk 7, 7 Dec 5 10:38 /dev/loop
挂载后文件和/dev/loop0关联。centos6有默认8个loop文件,7中不限制。
[[email protected] ~]#mknod /dev/loop8 b 7 8
[[email protected] ~]#ll /dev/loop*
brw-rw---- 1 root disk 7, 0 Dec 5 10:38 /dev/loop0
brw-rw---- 1 root disk 7, 1 Dec 5 10:38 /dev/loop1
brw-rw---- 1 root disk 7, 2 Dec 5 10:38 /dev/loop2
brw-rw---- 1 root disk 7, 3 Dec 5 10:38 /dev/loop3
brw-rw---- 1 root disk 7, 4 Dec 5 10:38 /dev/loop4
brw-rw---- 1 root disk 7, 5 Dec 5 10:38 /dev/loop5
brw-rw---- 1 root disk 7, 6 Dec 5 10:38 /dev/loop6
brw-rw---- 1 root disk 7, 7 Dec 5 10:38 /dev/loop7
brw-r--r-- 1 root root 7, 8 Dec 5 11:00 /dev/loop8
centos6中可以再创建loop设备,需要修改权限,chmod 660 /dev/loop8,设备名称和文件自动关联的。重启后loop8丢失。改文件,vim /boot/grub/grub.conf
在有关kernel的最后加上max_loop=100,即为最大100,即生成100个loop设备。
[[email protected] /app]#losetup /dev/loop8 /app/partfile1
[[email protected] /app]#mkdir /mnt/part1
[[email protected] /app]#mount /dev/loop8 /mnt/part1
[[email protected] /app]#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 50264772 5101096 42603676 11% /
tmpfs 502056 72 501984 1% /dev/shm
/dev/sda3 20027260 3042288 15960972 17% /app
/dev/sda1 999320 34924 911968 4% /boot
/app/partfile 2683040 4104 2539316 1% /mnt/part
/dev/loop8 194241 1550 182451 1% /mnt/part1
将文件partfile1和/dev/loop8关联起来,挂载loop8就是挂载partfile1,不用再加-o loop因为loop8是设备。
[[email protected] /app]#losetup -a
/dev/loop0: [0803]:13 (/app/partfile)
/dev/loop8: [0803]:15 (/app/partfile1)
查看对应关系。
[[email protected] ~]#vim /etc/fstab
UUID=044e06d4-9b70-4a1e-a9ac-74bcb52649a3 / ext4 defaults 1 1
UUID=85b9a743-eee0-4b9b-b26c-ecaf80358c2a /app ext4 defaults 1 2
UUID=0ee7af59-dbdb-4156-a25a-d2f3bd24fa5a /boot ext4 defaults 1 2
UUID=f43e5474-ecc0-47fe-b459-152e686eb446 swap swap defaults 0 0
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
/dev/sdb2 /mnt/sdb2 ext4 defaults 0 3
设置开机自动挂载
[[email protected] ~]#mount -l
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda3 on /app type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[[email protected] ~]#mount -a
[[email protected] ~]#mount -l
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda3 on /app type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb2 on /mnt/sdb2 type ext4 (rw)
写好配置文件后不能直接生效使用mount -a生效。
[[email protected] ~]#mount -a
[[email protected] ~]#mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda3 on /app type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb2 on /mnt/sdb2 type ext4 (rw)
[[email protected] ~]#mount -o remount /dev/sdb2
[[email protected] ~]#mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda3 on /app type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb2 on /mnt/sdb2 type ext4 (ro)
在改fstab中关于sdb2的信息使用此命令不会生效,需要使用remount选项生效
[[email protected] ~]#uuidgen
c39bfca8-9bc5-4764-bae5-133b16d17ef8
生成新的UUID
[[email protected] ~]#tune2fs -U c39bfca8-9bc5-4764-bae5-133b16d17ef8 /dev/sdb2
tune2fs 1.41.12 (17-May-2010)
[[email protected] ~]#blkid /dev/sdb2
/dev/sdb2: UUID="c39bfca8-9bc5-4764-bae5-133b16d17ef8" TYPE="ext4" LABEL="/mnt/sdb2"
改变分区的UUID,这个会出现一个严重的问题就是重启开机检测的时候系统会检测sdb2但是UUID改变,就找不到了,出现重启机器启动不了
解决办法:
发现开机启动不了,看提示信息输入root密码进入
修改fstab文件发现是只读,修改不了。因为把根挂载的时候是以只读方式挂载的。
[[email protected] ~]#mount -o remount,rw /
修改根的挂载方式为可读写,这样就可以修改fstab文件了,重启成功。
希望以后检测改为0
挂分区成功了但是挂文件怎么挂,但是这个文件不是普通文件,是ext4的文件
[[email protected] ~]#vim /etc/fstab
/app/partfile /mnt/part ext4 defaults,loop 0 0
[[email protected] ~]#mount -a
[[email protected] ~]#mount
/dev/sda2 on / type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/app/partfile on /mnt/part type ext4 (rw,loop=/dev/loop0)
挂载成功
光盘挂载怎么写
/dev/sr0 /mnt/cdrom iso9660 default 0 0
虽然是default,包括rw但是光盘是只读,最后显示还是ro
目录挂目录
/ect/sysconfig /mnt/sysconfig none bind 0 0
不是文件系统不是独立分区,文件系统写none,bind是绑定,目录绑定目录。
mount挂载的时候文件系统自动识别,识别不了可能是文件系统丢失,或没有文件系统,或没格式化创建文件系统。
8、交换分区
注意:一般在生产中换硬盘是不断电的,换内存断电。
8.1增加交换分区,放在磁盘的外圈,速度快。
[[email protected] ~]#fdisk /dev/sdd
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1
-t设新建的分区为82交换分区
8.2
[[email protected] ~]#mkswap /dev/sdd1
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=b4fc70c7-a081-42fa-9a99-63abb0199de1
创建swap文件系统类型
8.3
[[email protected] ~]#vim /etc/fstab
UUID=b4fc70c7-a081-42fa-9a99-63abb0199de1 swap swap defaults 0 0
写入fstab开机自动挂载
[[email protected] ~]#swapon -a
使用mount -a不生效,因为是特殊的文件系统,使用上面的命令生效
[[email protected] ~]#swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2097148 0 -1
/dev/sdd1 partition 2104476 0 -2
查看swap分区
[[email protected] ~]#vim /etc/fstab
UUID=b4fc70c7-a081-42fa-9a99-63abb0199de1 swap swap pri=10 0 0
修改优先级使得在外圈的sdd1先生效。
[[email protected] ~]#swapon -a
不生效,因为已经读入了
[[email protected] ~]#swapoff /dev/sdd1
先关闭
[[email protected] ~]#swapon -a
再生效
迁移swap的时候先要看看swap是否正在使用。
swapoff /swapfile
cp /swapfile /app后删除
再修改挂载关系
9、移动介质挂载
[[email protected] ~]# ls /misc/
[[email protected] ~]# cd /misc/
[[email protected] misc]# ls cd/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[[email protected] misc]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 51474912 3771372 45065716 8% /
devtmpfs 485352 0 485352 0% /dev
tmpfs 499860 0 499860 0% /dev/shm
tmpfs 499860 7260 492600 2% /run
tmpfs 499860 0 499860 0% /sys/fs/cgroup
/dev/sda3 20511312 145316 19301036 1% /app
/dev/sda1 999320 130824 799684 15% /boot
tmpfs 99972 24 99948 1% /run/user/0
/dev/sr0 8490330 8490330 0 100% /misc/cd
光盘不会自动挂载到/misc/cd,但你一旦访问目录就会自动挂载,让普通用户也能使用光盘了。
[[email protected] misc]# cp /dev/sr0 /app/centos.iso
^C
[[email protected] misc]# file /app/centos.iso
/app/centos.iso: # ISO 9660 CD-ROM filesystem data ‘CentOS 7 x86_64‘ (bootable)
linux中利用光盘制作iso镜像文件十分简单不需要什么第三方软件,cp搞定可以正常使用,dd if=/dev/sr0 of=/app/centos.iso bs= count= 也行
制作yum源,把iso制作成光盘的yum源,把iso文件拷到电脑上,挂上一个文件夹,把文件夹作为yum源路径,baseurl指向他就行。把挂载写到fstab文件中
/app/centosl.iso /mnt/iso iso9660 loop 0 0
合并centos6的两个光盘,centos官方网站使用脚本制成和集网址https://wiki.centos.org/zh-tw/TipsAndTricks/CDtoDVDMedia?highlight=%28mkdvdiso.sh%29
在命令模式下输入:set noai然后粘贴就是原格式粘贴
[[email protected] /app]#./mkdvdiso.sh --help
Error: /usr/bin/implantisomd5 Not Found!
Please install isomd5sum and try again.
[[email protected] /app]#yum install isomd5sum
查看使用帮助,缺少依赖包安装包
[[email protected] /app]#./mkdvdiso.sh --help
Usage: mkdvdiso.sh source /destination/DVD.iso
The ‘source‘ can be either a directory containing a single
set of isos, or an exploded tree like an ftp site.
看到使用帮助,将DVD1和DVD2添加到一个目录里,然后运行脚本合成一个iso
[[email protected] /app]#cp -r /misc/cd /app/iso
-r复制所有包括隐藏文件
[[email protected] ~]#./mkdvdiso.sh /app/iso /root/centos6.every.iso
合成一个文件,合成everything成功
挂载U盘
U盘挂载需要文件系统是fat格式linux系统才能识别,由于我的是ntfs格式不识别。
[[email protected] /app]#tail /var/log/messages -n 30
查看U盘挂载时的日志
[[email protected] /app]#cp /etc/fstab /mnt/usb
[[email protected] /app]#sync
[[email protected] /app]#sync
[[email protected] /app]#sync
将磁盘的数据写入U盘时,不要迅速拔U盘,这样数据可能在缓冲区没有写进入导致数据丢失,使用sync同步一下数据,sync强迫它将缓冲区的数据写入到磁盘。
[[email protected] /app]#umount /mnt/usb
取消挂载,再拔U盘
[[email protected] /app]#free
total used free shared buffers cached
Mem: 1004112 937192 66920 3232 13580 628148
-/+ buffers/cache: 295464 708648
Swap: 4201624 0 4201624
其中真正使用的used=used-buffers-cached=295464
真正可使用的free=free+buffers+cached=708648
[[email protected] /app]#df -P
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda2 50264772 5103980 42600792 11% /
tmpfs 502056 76 501980 1% /dev/shm
/dev/sda3 20027260 7482280 11520980 40% /app
/dev/sda1 999320 34924 911968 4% /boot
/app/partfile 2683040 4104 2539316 1% /mnt/part
/dev/sr0 3878870 3878870 0 100% /media/CentOS_6.9_Final
-P显示较为整齐的格式
[[email protected] /app]#du --max-dept=1 /app
4 /app/amingshell
20 /app/scripts
4644784 /app/iso
4 /app/sdb2
16 /app/lost+found
4644856 /app