第10天 [磁盘存储和文件系统]

磁盘存储和文件系统
cat /sys/block/sda/queue/rotational   
1是机械硬盘
0是固态硬盘




hexdump
	进制查看器
	-n  length只格式化输入文件的前length 个字节
	-C	输出规范的十六进制和ASCII码
	hexdump -C -n 512 /dev/sda  从硬盘上只读前512个字节 从80 20 到1f 06是分区表
	000001b0  00 00 00 00 00 00 00 00  17 8f 02 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 00 80 0c 00 fe  |)....... .......|
	000001e0  ff ff 83 fe ff ff 00 08  a0 0c 00 00 40 06 00 fe  |............@...|
	000001f0  ff ff 05 fe ff ff 00 08  e0 12 00 f8 1f 06 55 aa  |..............U.|
	00000200


lsblk
	列出所有可用块的信息
	-a 显示所有设备
	-b, –bytes 以bytes方式显示设备大小。
	
	
dd
	命令用于读取、转换并输出数据。
	if=文件名:输入文件名,缺省为标准输入。即指定源文件。
	of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
	skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
	seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
	count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
	bs=bytes:同时设置读入/输出的块大小为bytes个字节。
	例子:dd if=/dev/sda of=/data/dpt bs=1 count=64 skip=446
	把sda的数据取出来生成dpt的文件1个字节1个字节的取,一共取64个,跳过446个。
	dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 
	破坏sda文件后两个
	dd if=/data/dpt of=/dev/sda bs=1 count=2 skip=64 seek=510
	还原 
	切记:如果备份的话不要放在本机,否则打不开数据就丢失了。
	
uuidgen
	生成uuid的不会重复
	
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 列出分区信息

fdisk
	查看分区信息
	-b<分区大小>:指定每个分区的大小; fdisk -b
	-l:列出指定的外围设备的分区表状况; fdisk -l /dev/sda
	-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块; fdisk -s /dev/sda
	-v:显示版本信息。 fdisk -v		
		
fdisk /dev/sdb 管理分区
	子命令:
	p 分区列表
	t 更改分区类型
	n 创建新分区
	d 删除分区
	v 校验分区
	u 转换单位
	w 保存并退出
	q 不保存并退出
	
查看内核是否已经识别新的分区
	cat /proc/partations  也可以用df -h
	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]   通知内核读取分区表
	fdisk w保存之后一定要看一下有没有warning 报错centos6 执行
	partx -d  --nr 6 /dev/sda
	centos7 出现warning 执行partprobe 就可以了
	
查看支持的操作系统
	ls /lib/modules/3.10.0-957.el7.x86_64/kernel/fs/

查看支持的文件系统
	cat /proc/filesystems
	
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
	ext4
	xfs
	btrfs
	vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
	-L 'LABEL'  设定卷标
	mkfs.xfs  -L /sdb3目录 /dev/sdb3
	mount /dev/sdb3 /sdb3
	
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  关闭指定特性

xfs_info /dev/sdb1
	可以查看xfs分区的信息  sdb1是目录
	
blkid
:块设备属性信息查看
  blkid /devsda1
	 blkid [OPTION]... [DEVICE]
	 -U UUID 根据指定的UUID来查找对应的设备
	 -L LABEL 根据指定的LABEL来查找对应的设备
   当我们修改 /etc/fstab 时候可以 用 r!/dev/sda1直接输入到编辑器里面。 
e2label:管理ext系列文件系统的LABEL
	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号
dumpe2fs:
	将磁盘块分组管理
	-h:查看超级块信息,不显示分组信息
fsck
: File System Check
	fsck.FS_TYPE
	fsck -t FS_TYPE
	注意:FS_TYPE 一定要与分区上已经文件类型相同
	-a  自动修复
	-r  交互式修复错误
先取消挂载再进行修复
umount /data
fsck -y /dev/sda
e2fsck
:ext系列文件专用的检测修复工具
	-y  自动回答为yes
	-f  强制修复
	-p  自动进行安全的修复文件系统问题
	检测并修复/dev/hda5?:e2fsck -p /dev/hda5
xfs_repair
:xfs文件系统专用检测修复工具
	-f  修复文件,而设备
	-n  只检查
	-d  允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot
	修复的时候一定要先取消挂载 umount /sdb3目录 再执行 xfs_repair /sdb3目录	

mount 
	挂载
	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' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
查看内核追踪到的已挂载的所有设备
	mount -L 卷表名 目录
	mount -U  UUID   目录
cat /proc/mounts
mount常用命令选项
	-o options:(挂载文件系统的选项),多个选项使用逗号分隔
	async 异步模式 sync 同步模式,内存更改时,同时写磁盘
	atime/noatime 包含目录和文件
	diratime/nodiratime  目录的访问时间戳
	auto/noauto  是否支持自动挂载,是否支持-a选项
	exec/noexec  是否支持将文件系统上运行应用程序
	dev/nodev  是否支持在此文件系统上使用设备文件
	suid/nosuid  是否支持suid和sgid权限
	remount  重新挂载
	mount -o remount,acl /mnt/sdb 
ro 只读 rw 读写
user/nouser  是否允许普通用户挂载此设备,/etc/fstab使用
acl  启用此文件系统上的acl功能  mount -o remount,acl /mnt/sdb  
mount -o remount,rw /mnt/sdb  
loop  使用loop设备
defaults:相当于rw, suid, dev, exec, auto, nouser, async
findmnt MOUNT_POINT|device
查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT

卸载
umount DEVICE
umount MOUNT_POINT

cat /etc/mtab文件显示当前已挂载的所有设备

最后写入到这个文件夹长久有效
cat /etc/fstab 
mount -a 可以检查写的语法是否出错

gdisk 可以支持2T
这是GPT分区比MBR分区的主要优势。分区时,
gdiks命令使用方法同fdisk命令


简单分区
Linux的硬盘识别:
一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘
设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.
 
1.关闭服务器加上新硬盘
 
2.启动服务器,以root用户登录
 
3.查看硬盘信息
#fdisk -l
[cpp] view plain copy
1. Disk /dev/sda: 42.9 GB, 42949672960 bytes
2. 255 heads, 63 sectors/track, 5221 cylinders
3. Units = cylinders of 16065 * 512 = 8225280 bytes
4. Sector size (logical/physical): 512 bytes / 512 bytes
5. I/O size (minimum/optimal): 512 bytes / 512 bytes
6. Disk identifier: 0x0004406e
7. Device Boot Start End Blocks Id System
8. /dev/sda1 * 1 39 307200 83 Linux
9. Partition 1 does not end on cylinder boundary.
10. /dev/sda2 39 2589 20480000 83 Linux
11. /dev/sda3 2589 2850 2097152 82 Linux swap / Solaris
12. /dev/sda4 2850 5222 19057664 5 Extended
13. /dev/sda5 2850 5222 19056640 83 Linux
14. 
15. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
16. 255 heads, 63 sectors/track, 1305 cylinders
17. Units = cylinders of 16065 * 512 = 8225280 bytes
18. Sector size (logical/physical): 512 bytes / 512 bytes
19. I/O size (minimum/optimal): 512 bytes / 512 bytes
20. Disk identifier: 0x14b52796
21. Device Boot Start End Blocks Id System
 
4.创建新硬盘分区命令参数:
 
5.进入磁盘,对磁盘进行分区,注意红色部分。
#fdisk /dev/sdb
[cpp] view plain copy
1. Command (m for help):n
2. Command action
3.    e extended //输入e为创建扩展分区
4.    p primary partition (1-4) //输入p为创建逻辑分区
5. p
6. Partion number(1-4):1 //在这里输入l,就进入划分逻辑分区阶段了;
7. First cylinder (51-125, default 51): //注:这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;
8. Using default value 51
9. Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:这个是定义分区大小的,+200M 就是大小为200M ;当然您也可以根据p提示的单位cylinder的大小来算,然后来指定 End的数值。回头看看是怎么算的;还是用+200M这个办法来添加,这样能直观一点。如果您想添加一个10G左右大小的分区,请输入 +10000M ;
10. 
11. Command (m for help): w //最后输入w回车保存。
查看一下:
#fdisk -l
可以看到/dev/sdb1分区,我就省略截图咯。
6.格式化分区:
#mkfs -t ext4 /dev/sdb1 //注:将/dev/sdb1格式化为ext4类型
[cpp] view plain copy
1. mke2fs 1.41.12 (17-May-2010)
2. 文件系统标签=
3. 操作系统:Linux
4. 块大小=4096 (log=2)
5. 分块大小=4096 (log=2)
6. Stride=0 blocks, Stripe width=0 blocks
7. 640848 inodes, 2562359 blocks
8. 128117 blocks (5.00%) reserved for the super user
9. 第一个数据块=0
10. Maximum filesystem blocks=2625634304
11. 79 block groups
12. 32768 blocks per group, 32768 fragments per group
13. 8112 inodes per group
14. Superblock backups stored on blocks:
15. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
16. 
17. 正在写入inode表: 完成
18. Creating journal (32768 blocks): 完成
19. Writing superblocks and filesystem accounting information: 完成
20. 
21. This filesystem will be automatically checked every 35 mounts or
22. 180 days, whichever comes first. Use tune2fs -c or -i to override.
这样就格式化好了,我们就可以用mount 加载这个分区,然后使用这个文件系统;
 
7.创建/data目录:
#mkdir /data
 
8.开始挂载分区:
#mount /dev/sdb1 /data
 
9.查看硬盘大小以及挂载分区:
#df -h
 
10.配置开机自动挂载
因为mount挂载在重启服务器后会失效,所以需要将分区信息写到/etc/fstab文件中让它永久挂载:
#vi /etc/fstab
0, 0 表示开机不检查磁盘。
如果挂载磁盘分区不生效,可以查看磁盘的UUID
ls -l /dev/disk/by-uuid/
 blkid /dev/sdb1 
 
#vi /etc/fstab
0, 0 表示开机不检查磁盘。
 
11.重启系统
 


Linux的硬盘识别:
一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘
设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.
 
1.关闭服务器加上新硬盘
 
2.启动服务器,以root用户登录
 
3.查看硬盘信息
#fdisk -l
[cpp] view plain copy
1. Disk /dev/sda: 42.9 GB, 42949672960 bytes
2. 255 heads, 63 sectors/track, 5221 cylinders
3. Units = cylinders of 16065 * 512 = 8225280 bytes
4. Sector size (logical/physical): 512 bytes / 512 bytes
5. I/O size (minimum/optimal): 512 bytes / 512 bytes
6. Disk identifier: 0x0004406e
7. Device Boot Start End Blocks Id System
8. /dev/sda1 * 1 39 307200 83 Linux
9. Partition 1 does not end on cylinder boundary.
10. /dev/sda2 39 2589 20480000 83 Linux
11. /dev/sda3 2589 2850 2097152 82 Linux swap / Solaris
12. /dev/sda4 2850 5222 19057664 5 Extended
13. /dev/sda5 2850 5222 19056640 83 Linux
14. 
15. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
16. 255 heads, 63 sectors/track, 1305 cylinders
17. Units = cylinders of 16065 * 512 = 8225280 bytes
18. Sector size (logical/physical): 512 bytes / 512 bytes
19. I/O size (minimum/optimal): 512 bytes / 512 bytes
20. Disk identifier: 0x14b52796
21. Device Boot Start End Blocks Id System
 
4.创建新硬盘分区命令参数:
fdisk可以用m命令来看fdisk命令的内部命令;
a:命令指定启动分区;
d:命令删除一个存在的分区;
l:命令显示分区ID号的列表;
m:查看fdisk命令帮助;
n:命令创建一个新分区;
p:命令显示分区列表;
t:命令修改分区的类型ID号;
w:命令是将对分区表的修改存盘让它发生作用。
 
5.进入磁盘,对磁盘进行分区,注意红色部分。
#fdisk /dev/sdb
[cpp] view plain copy
1. Command (m for help):n
2. Command action
3.    e extended //输入e为创建扩展分区
4.    p primary partition (1-4) //输入p为创建逻辑分区
5. p
6. Partion number(1-4):1 //在这里输入l,就进入划分逻辑分区阶段了;
7. First cylinder (51-125, default 51): //注:这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;
8. Using default value 51
9. Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:这个是定义分区大小的,+200M 就是大小为200M ;当然您也可以根据p提示的单位cylinder的大小来算,然后来指定 End的数值。回头看看是怎么算的;还是用+200M这个办法来添加,这样能直观一点。如果您想添加一个10G左右大小的分区,请输入 +10000M ;
10. 
11. Command (m for help): w //最后输入w回车保存。
查看一下:
#fdisk -l
可以看到/dev/sdb1分区,我就省略截图咯。
6.格式化分区:
#mkfs -t ext4 /dev/sdb1 //注:将/dev/sdb1格式化为ext4类型
[cpp] view plain copy
1. mke2fs 1.41.12 (17-May-2010)
2. 文件系统标签=
3. 操作系统:Linux
4. 块大小=4096 (log=2)
5. 分块大小=4096 (log=2)
6. Stride=0 blocks, Stripe width=0 blocks
7. 640848 inodes, 2562359 blocks
8. 128117 blocks (5.00%) reserved for the super user
9. 第一个数据块=0
10. Maximum filesystem blocks=2625634304
11. 79 block groups
12. 32768 blocks per group, 32768 fragments per group
13. 8112 inodes per group
14. Superblock backups stored on blocks:
15. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
16. 
17. 正在写入inode表: 完成
18. Creating journal (32768 blocks): 完成
19. Writing superblocks and filesystem accounting information: 完成
20. 
21. This filesystem will be automatically checked every 35 mounts or
22. 180 days, whichever comes first. Use tune2fs -c or -i to override.
这样就格式化好了,我们就可以用mount 加载这个分区,然后使用这个文件系统;
 
7.创建/data目录:
#mkdir /data
 
8.开始挂载分区:
#mount /dev/sdb1 /data
 
9.查看硬盘大小以及挂载分区:
#df -h
 
10.配置开机自动挂载
因为mount挂载在重启服务器后会失效,所以需要将分区信息写到/etc/fstab文件中让它永久挂载:
#vi /etc/fstab
加入:
/dev/sdb1(磁盘分区) /data1(挂载目录) ext4(文件格式)defaults 0 0
0, 0 表示开机不检查磁盘。
如果挂载磁盘分区不生效,可以查看磁盘的UUID
ls -l /dev/disk/by-uuid/


#vi /etc/fstab
加入:
UUID=b49df1a7-0001-4b38-af2f-0b5b8727f52d /data ext4 defaults 0 0
0, 0 表示开机不检查磁盘。
 
11.重启系统
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章