Liunx磁盘存储和文件系统

Liunx--总结

磁盘存储和文件系统

磁盘存储

机械硬盘:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成
固态硬盘:用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成

一、硬盘存储术语
head:磁头
track:磁道
cylinder:柱面--同一磁道称为柱
sector:扇区,512bytes

fdisk -l /dev/sd#--观察硬盘指标

CHS用24bit位寻址
其中前10位表示cylinder柱面,中间8位表示head,后面6位表示sector 扇区
早期用chs方式寻址最大寻址空间8GB 512 2^62^8*2^10

LBA(logical block addressing)
?LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
?ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes

二、磁盘两种分区方式:MBR,GPT

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)
MBR分区结构
硬盘主引导记录MBR由4个部分组成(0磁道0扇区512byte)
1.主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序
出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节
2.分区表(DPT,Disk|Partition|Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
3.结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA

GPT分区:GPT:GUID(Globals Unique Identifiers) partition|table(分区表)支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)

使用128位UUID(Universally Unique Identifier) 表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位

hexdump -C -n 512 /dev/sd#--查看硬盘前512字节
dd if=/dev/sda of=/data/mbr bs=1 count=64--dd备份分区表(分区表放在它处)

。。。分区工具
parted命令的操作都是实时生效的,小心使用
用法:parted [选项]... [设备 [命令 [参数]...]...]
parted /dev/sdb mklabel gpt|msdos--打标记然后进行分区gpt|msdos
parted -l 查看partition Table:gpt列出分区信息
parted /dev/sdb print打印分区信息
parted /dev/sdb mkpart primary 1 200 (默认M)--分区连续分区不要跳着分
parted /dev/sdb rm 1 删除分区

fdisk mbr和gdisk gpt--命令格式基本相同不做赘述
fdisk /dev/sd# 交互式管理分区
p 分区列表
t 更改分区类型改id
n 创建新分区-p主(1-4)e扩展 默认1开始自设+2M\G\K
--分区需要注意连续分区,不要跳着分
d 删除分区 对应分区数字 分区数字易改变
v 校验分区
u 转换单位
w 保存并退出 出去立马执行才会更改
q 不保存并退出

。。分过区可能会出现内存中未加载新分区的信息
lsblk
ll /dev/sdb*
cat /proc/partitions--到这都是看内存中的硬盘信息
fdisk -l /dev/sd#--看到某硬盘的所有分区状态
partprobe同步硬盘信息 entOS 5,7
。。。。
centos6 partx -a /dev/DEVICE 创建时同步
partx -d --nr 6-7 /dev/DEVICE 删除时同步


文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统

查看系统支持的文件系统:/lib/modules/uname –r/kernel/fs
各种文件系统:
https://en.wikipedia.org/wiki/Comparison_of_file_systems

ext4:是ext文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
xfs:SGI,支持最大8EB的文件系统
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:未经处理或者未经格式化产生的文件系统

lsblk -f 查看文件系统
一、创建文件系统命令 (下面命令两两一组,每组的选项基本通用)
mkfs命令
(1) mkfs.FS_TYPE /dev/DEVICE
ext4-xfs-btrfs-vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L ‘LABEL‘ 设定卷标
-f 强制对已经存在xfs重装
mkfs -b 设置快大小以快为单位
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 关闭指定特性

tune2fs 设定ext系列文本系统可调整参数的值
-l 查看指定文件系统超级块信息;super block
-L ‘LABEL’ 修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2升级为ext3
-O 文件系统属性启用或禁用, –O ^has_journal
-o 调整文件系统的默认挂载选项,–o ^acl
-U UUID 修改UUID号
dumpe2fs:将磁盘块分组管理
-h:查看超级块信息,不显示分组信息

文件系统检测和修复:常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复
fsck: File System Check--fsck /dev/sdb3 -y(自动回答)修复数据任然丢失
fsck.FS_TYPE
fsck -t FS_TYPE
-p 自动修复错误
-r 交互式修复错误
FS_TYPE 一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y 自动回答为yes
-f 强制修复
。。。
centos6 etx4 后续添加硬盘分区没有acl权限
fdisk n e +100M
mkfs.etx4 /dev/sda6
tune2fs -l /de/sda6
挂载 进入磁盘设置acl权限
tune2fs -o acl /dev/sdb6 添加acl权限
tune2fs -o ^acl /dev/sdb6 去

文件系统标签:指向设备的另一种方法-与设备无关
blkid [OPTION] [DEVICE]--块设备属性信息查看 -U UUID 根据指定的UUID来查找对应的设备
-L LABEL 根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL e2label DEVICE [LABEL]
findfs :查找分区
findfs [options] LABEL=<label> findfs [options] UUID=<uuid>

二、mount挂载

将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
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常用命令选项 --通过mount命令查看挂载设备
-t vsftype 指定要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab,6mount不可见 cat /etc/mtab
cat /proc/mounts查看内核追踪到的已挂载的所有设备
centos6 /etc/mtab /proc/mounts
-a自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L ‘LABEL‘ 以卷标指定挂载设备
-U ‘UUID‘ 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上(挂载目录)
-当两个文件inode一样时可能是目录挂载
-mount -B /boot/grub2 /mnt/grub2

卸载命令
findmnt MOUNT_POINT|device--查看文件是否以挂载 $?的值判断
查看正在访问指定文件系统的进程
lsof MOUNT_POINT--查看谁在访问
fuser -v MOUNT_POINT--查看谁在访问
终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
卸载 umount DEVICE umount MOUNT_POINT

mount /dev/sda /mnt /sda--uuid或卷标都可挂 uuid挂载好有唯一性

文件系统空间占用等信息的查看工具
df [OPTION]... [FILE]...
-H 以10为单位 -T 文件系统类型 -h human-readable -i inodes instead of blocks
-P 以Posix兼容的格式输出
查看某目录总体空间占用状态
du [OPTION]... DIR -h human-readable -s summary 总和
--max-depth=# 指定最大目录层级
。。。
空洞文件或稀疏
dd if=/dev/zero of=/data/bigfile bs=1M count=1023 seek=2048
ls -h bigfile 3G --看到的逻辑大小
du -sh bigfile 1G --只占用1G df/data看到的都是实际大小
loop设备关联文件
ll /dev/loop c6查看loop设备默认0-78个
dd if=/dev/zero of=/data/bigfile bs=1M count=1023 seek=2048
mkfs.ext4 /data/bigfile
losetup /dev/loop6 /data/bigfile--设备关联
losetup -a
losetup -d
。。。。
mknod创建特殊文件基本什么都可以创建
mknod /dev/loop100 b 7 8 --创建loop设备
rm -rf loop100
/boot/grub/grub.conf 下面可以 max_loop=100 重启
ll /devloop

mount -o ptions:多个选项使用逗号分隔
async.异步模式sync.同步模式,内存更改时,同时写磁盘
atime/noatime包含目录和文件(存放时间超过一天才会更新或mtime>atime时间
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持自动挂载,是否支持- a选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持suid和sgid权限
remount 重新挂载
ro 只读 rw 读写
user/nouser 是否允许普通用户挂载此设备,/etc/ fstab使用
acl 启用此文件系统上的acl功能
loop 使用loop设备

文件挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统
1、要挂载的设备或伪文件系统
设备文件 LABEL:LABEL="" UUID:UUID=""
伪文件系统名称:proc, sysfs
2、挂载点
3、文件系统类型:ext4,xfs,iso9660,nfs,none
4、挂载选项:defaults ,acl,bind -o 的选项
5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6、fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检
1:首先自检;一般只有rootfs才用
2:非rootfs使用
。。。
/dev/sdr6 /mnt/sda6 ext4 defaults 0 3
空洞文件用uuid在fstab写入挂载
/boot /mnt/boot none bind 0 0 文件挂文件配置

mount-a自动挂载所有支持自动挂载的设备且挂载选项中有auto功能

三、swap
交换分区是系统RAM的补充,Swap分区支持虚拟内存。当没有足够的RAM保存系统处理的数据时会将数据写入 swap 分区
当系统缺乏swap空间时,内核会因RAM内存耗尽而终止进程。配置过多swap空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存泄露

挂载交换分区--基本设置包括:?创建交换分区或者文件
?使用mkswap写入特殊签名?在/etc/fstab文件中添加适当的条目?使用swapon -a 激活交换空间
?启用:swapon
swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区
-p PRIORITY:指定优先级
/etc/fstab 在第4列中:pri=value
禁用:swapoff [OPTION]... [DEVICE]
SWAP的优先级
可以指定swap分区0到32767的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放
。。。
分swap分区 free -h 看内存使用情况
fdisk /dev/sdc p m t L 19 改分区盘id w (gpt)
mkswap 创建swap文件系统=mkswap/dev/sdc1
写到fstab文件 free -h 没看到
swapon -a 开启swap free -h
cat /proc/swaps 查看swap分区具体有多少=swapon -s
swapoff /dev/sdc1禁用


补充

dd 命令:convert and copy a file
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
if=file 从所命名文件读取而不是从标准输入
of=file 写到所命名的文件而不是到标准输出
ibs=size 一次读size个byte
obs=size 一次写size个byte
bs=size block size, 指定块大小(既是是ibs也是obs)
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块
seek=blocks 从开头忽略blocks个obs大小的块
count=n 复制n个bs
conv=conversion[,conversion...]用指定的参数转换文件 转换参数:
dd if=/data/file of=fstab conv=ucase
ascii 转换 EBCDIC 为 ASCII
ebcdic 转换 ASCII 为 EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
fdatasync写完成前,物理写入输出文件,判断读写速度

备份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

1、备份:
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
将压缩的备份文件恢复到指定盘

2、拷贝内存资料到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件

3、从光盘拷贝iso镜像
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件

4、销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行

5、得到最恰当的block size
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
dd if=/dev/zero of=/root/1Gb.file bs=2048 count=500000
dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000
通过比较dd指令输出中命令的执行时间,即可确定系统最佳的block size大小

6、测试硬盘写速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000 conv=fdatasync
测试硬盘读速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null conv=fdatasync

原文地址:https://blog.51cto.com/14230286/2370354

时间: 2024-10-08 15:54:53

Liunx磁盘存储和文件系统的相关文章

第11章,磁盘存储和文件系统学习笔记

更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 笔记整理开始时间:2018年4月24日11:25:33 第11章,磁盘存储和文件系统 本章内容: 磁盘结构 分区类型 管理分区 管理文件系统 挂载设备 管理虚拟内存 RAID管理 LVM管理 LVM快照 设备文件: 磁盘设备的设备文件命名:/dev/dev-file SCSI,SATA,SAS,IDE,USB:   

磁盘存储、文件系统的知识概括

磁盘存储与文件系统 分区 两种分区格式:MBR.GPT MBR分区 MBR分区磁盘的分区表信息存放在硬盘0磁道第0个扇区内总共512字节 前446字节为bootloader 中间64位为磁盘分区表信息,每个分区信息占16个字节,总计存放4个分区.(这段就是需要备份出来的数据) 最后的55AA为结束标志位 MBR分区结构 硬盘主引导记录MBR由4个部分组成 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序 出错信息数据区,偏移地址0089H--00E1H为

Linux篇 | 磁盘存储和文件系统

磁盘存储和文件系统 分区 文件系统 挂载设备 管理虚拟内存 RAID管理 LVM管理 我们从一个新硬盘安装到Linux系统,期间的配置,一直到正常使用的角度,来学习磁盘存储和文件系统,过程如下: 选择分区类型(MBR或GPT)-->创建分区-->同步分区-->创建文件系统-->文件系统检测和修复-->挂载-->虚拟内存的使用-->RAID的使用-->LVM的管理 一.分区 1.为什么分区 优化I/O性能 实现磁盘空间配额限制 提高修复速度 隔离系统和程序 安

磁盘存储和文件系统 概述

磁盘存储和文件系统 概述 设备文件 磁盘设备的设备文件命名: /dev/DEV_FILE SCSI,SAS,IDE,USB:/dev/sd 虚拟磁盘:/dev/vd./dev/xvd 硬盘存储术语:head 磁头 .track 磁道.cylinder 柱面.sector 扇区,512bytes CHS 和 LBA CHS 采用24bit位寻址 其中前十位表示cylinder,中间8位表示head,后面6位表示sector 最大寻址空间8GLBA LBA是一个整数,通过转换化成chs格式完成磁盘具

linux文本处理sed、软件包管理、磁盘存储和文件系统

linux文本处理sed.软件包管理.磁盘存储和文件系统 1.取基名和文件名 [[email protected] scripts38]#echo /etc/sysconfig/network-scripts/ |sed -r '[email protected](^/.*/)([^/]+)/[email protected]\[email protected]' /etc/sysconfig/ [[email protected] scripts38]#echo /etc/sysconfig/

linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载

Linux文本处理工具sed.软件包管理.磁盘存储及文件系统 文本处理工具sed巧妙用法 1.通过sed获取文件路径的基名和目录名 思路:采用正则表达式将文本字符串分组,取对应的分组后向引用即可. 获取基名 [[email protected] ~]#echo /etc/sysconfig/network-scripts/ |sed -r '[email protected](^/.*/)([^/]+)/[email protected]\[email protected]' network-s

磁盘存储和文件系统

磁盘存储 设备类型 1.块设备 以块为单位进行存储和读取,相当于批量存和批量读 2.字符设备 以一个字节或者一个字符为单位进行读取和写入. cp -a    /dev/sda      /data/sda mknod  /data/sda b 8 1   创建特殊类型的文件 3.硬盘结构 1.磁头在盘片上进行从里到外-左右移动 2.盘片进行高速旋转 3.磁道          圈和圈之间的空隙(类似于操场的跑道)                            每个磁道分成多少个扇区需要占

Linux磁盘存储和文件系统

设备文件 磁盘设备的设备文件命名:/dev/dev-file SCSI,SATA,SAS,IDE,USB:        /dev/sd* 虚拟磁盘:/dev/vd 不同磁盘标识:a-z,aa,ab... /dev/sda,/dev/sdb,... 同一设备上的不同分区:1,2... /dev/sda1,/dev/sda5 设备号码:     major number       标识设备类型 minor number      标识同一类型下的不同设备 磁盘存储术语: head        

Linux九阴真经之无影剑残卷(磁盘存储和文件系统)

一.磁盘简介 计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失. 1.硬盘的chs模式 是指chs(Cylinder/Head/Sector)模式,很久以前,硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘.也就是硬盘盘片的每一条磁道都具有相同扇区数. 由此产生了所谓的3D参数 (Disk Geometry). 既磁头数(Heads),柱面数(Cylinders), 扇区数(Sec