Linux磁盘管理

Linux磁盘管理
I/O Ports:I/O设备地址
块设备:block 存取单位“块”,磁盘
字符设备:char,存取单位“字符”,键盘

设备文件:用来关联至一个设备的驱动程序,进而能够跟与之对应硬件设备进行通信;
	
	设备号码:
		主设备号:major number,	标识设备类型
		次设备号:minmor number,标识同一类型下的不同设备
	
	硬盘接口类型:
		并行:
			IDE:133MB/s
			SCSI:648MB/s
		串口:
			SATA:6Gb
			SAS:6Gb
			SSD:480MB/s
		
	/dev/DEV_FILE
		磁盘设备的设备文件命名:
		
		IDE:/dev/hd
		SCSI,SATA,SAS,USB:/dev/sd[a-z]
	
分区管理工具:fdisk
	fdisk:对于一块硬盘来讲,最多只能管理15个分区
	
	fdisk device
		子命令:管理功能
			p:print,显示已有分区
			n:创建 
			d:删除
			w:写入磁盘并退出
			q:放弃更新并退出
			m:获取帮助
			l:列表所分区id
			t:调整分区id
	
	查看内核是否已经识别新的分区:
	#	cat /proc/partations
	
	通知内核重新读取硬盘分区表:
		partx -a /dev/DEVICE
			-n M:N(分区编号)

Linux文件系统管理:
Linux文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
swap:交换分区
光盘:iso9660
Windows:fat32,ntfs
Unix:FFS,UFS,JFS2
网络文件系统:NFS,CIFS
集群文件系统:GFS2,OCFS2
分布式文件系统:ceph
moosefs,mogilefs,GlusterFS,Lustre

根据其是否支持“journal”功能:
	日志型文件系统:ext3,ext4,xfs,....
	非日志型文件系统:ext2,vfat
	
文件系统的组成部分:
	内核中的模块:ext4,vfs,vfat

Linux的虚拟文件系统:VFS
mkfs 文件系统的管理工具
-L 'LABEL' 设定卷标

mkswap:创建交换分区
	mkswap [OPTION0] ... [DEVICE]
	-L 'LABEL' 设定卷标
前提:调整分区的ID为82



blkid 设备名 块设备属性信息查看 显示唯一标识符(UUID)
	blkid [OPTION0] ... [DEVICE]
		-U UUID:	根据指定的UUID来查找对应得设备
		-L LABEL:	根据指定的标签来查找对应的设备

tune2fs:重新设定ext系列文件系统可调整参数的值
	-l:查看指定文件系统超级块信息:super block
	-L ‘LABEL’,修改卷标
	-U UUID:修改UUID号
	-O:文件系统属性启用或禁用
	-o:调整文件系统的默认挂载选项
	
dumpe2fs:
	-h:查看超级块信息

文件系统检测:
fsck:File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-a:自动修复错误
-r:交互式修复
Note:FS_TYPE一定要与分区上的文件类型相同

mount/umount
将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;
解除此关系的过程称之为卸载;
备注:挂载点下原有文件在挂载完成后会被临时隐藏;

挂载方法: mount DEVICE MOUNT_POINT
mount:显示当前系统已挂载的所有设备
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要挂载的设备;
(1)设备文件:例如/dev/sda5
(2)卷标: -L ‘LABEL’,例如 -L ‘MYDATA’
(3)UUID,-U ‘UUID’,例如 -U ‘9e04a8b8-26a0-4bfd-9da2-d3d0aa39aee6’
dir:挂载点
事先存在,建议使用空目录
进程正在使用中的设备无法被卸载

	常用选项:
		-t vsftype:指定要挂载的设备上的文件系统类型;
		-r:readonly 只读挂载;
		-w:read and write 读写挂载;
		-B,--bind:绑定目录到另一个目录上;

	注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts

	-o options:(挂载文件系统的选项)
		async:异步模式 直接更新内存中的数据 速度快 数据可能会丢失
		sync:同步模式 更新内存中的数据直接存储在磁盘上 速度慢 数据不会丢失
		exec/noexec: 是否支持将文件系统上应用程序运行为进程
		dev/nodev: 是否支持在此文件系统上使用设备文件
		remount:重新挂载
		ro
		rw
		user/nouser:是否允许普通用户挂载此设备
		acl:启用此文件系统上的ACL功能
		
		注意:上述选项可多个同时使用,彼此使用逗号分隔
			默认挂载选项:defaults
				rw,suid,dev,exec,auto,nouser,and async
	查看正在访问指定文件系统的进程:
		#fuser -vMOUNT_POINT

	终止所有正在访问指定的文件系统的进程:
		# fuser -km MOUNT_POINT	
		
挂载交换分区:
	启用:swapon
		swapon [OPTION]...[DEVICE]
			-a:激活所有交换分区
			-p PRIORITY:指定优先级
	禁用:swapoff [OPTION]...[DEVICE]				
			
df 查看硬盘分区空间使用情况
格式 df 选项 分区
参数  -h 以 1024 进制进行单位换算
-H 以 1000 进制进行单位换算
-t 指定显示分区的类型(后跟文件类型) -T 显示文件类型
-i 显示分区的 inode 使用情况

free 查看内存使用情况
格式 free 选项 分区
选项 -m 以1024KB=1M计算
	 -g 以1024MB=1G计算

文件挂载的配置文件:/etc/fstab
文件系统的信息存储
1.可以通过fstab配置实现自动挂载/半自动挂载
2.预设置相关选项/权限
3.是否可以dump
4.是否可以fsck
文件格式 (一般不自检不转储)
第一列 设备文件/卷标/UUID UUID获得 #blkid 设备文件
第二列 挂载点
第三列 文件系统格式
第四列 选项/权限(mount权限/选项)默认default
第五列 转储频率 表示是否备份 0:不做备份 1:每天转储 2:每隔一台能转储
第六列 自检次序 是否适用fsck 0:否 1:首先自检,一般只有rootfs才用1 2:为用且为非/分区

练习:
1.创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项;
fdisk /dev/vdb
mkfs.ext4 -L ‘TEST’ /dev/vdb3
echo ‘LABEL=‘TEST’ /testing ext4 acl,defaults 0 0’ >> /etc/fstab
mount -a

2.创建一个5G的文件系统,卷标为HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3;
fdisk 分区 划分出一个5G的分区
mkfs -t ext3 -L 'HUGE' 分区
echo "分区 /mogdata ext3  default 0 0" >> /etc/fstab


3.写一个脚本,完成如下功能:
	(1)列出当前系统识别的所有磁盘设备,
	(2)如磁盘数量为1,则显示其空间使用信息,否则,则显示最后一个磁盘上的空间使用信息;
脚本:(这个没意义)
#!/usr/bin
if fdisk -l | grep "Disk /dev/vd" & > /dev/null
then
        fdisk -l
        a=`fdisk -l | grep "Disk /dev/vd" | wc -l`
         if [ "$a" -eq 1 ]
        then
                echo `fdisk -l | grep "Disk /dev/vd"`
        else
                echo `fdisk -l $(fdisk -l | grep "Disk /dev/vd" | tail -1 | cut -d ' ' -f2 | cut -d ':'  -f1)`
        fi
else
        echo "No disk"
fi

Raid: 廉价冗余磁盘阵列
Redundant Arrays of Inexpensive Disks
Independent

Raid控制器
目的:提高IO能力:磁盘并行读写(给磁盘阵列加raid内存卡)
提高耐用性:磁盘冗余实现

级别:多块磁盘组织在一起的工作方式有所不同
RAID实现的方式:
硬件 外接式磁盘阵列:通过扩展卡(适配器)提供适配能力
内接式RAID:主板自己集成的RAID控制器
硬件式RAID:它的配置在BIOS中实现

软件 Software RAID(主机不支持,使用软件方式实现):

常用级别:RAID-0,RAID-1,RAID-5,RAID-10,JBOD
RAID-0:条带
读、写性能提升
可用空间:N*min(S1,S2,…)
无容错能力
最少磁盘数:2,2+

RAID-1:镜像
读性能提升、写性能略有下降
可用空间:1*min(S1,S2,…)
有冗余能力
最少磁盘数:2,2+

RAID-5:
读、写性能提升
可用空间:(N-1)*min(S1,S2,…)
有容错能力:1块磁盘
最少磁盘数:3,3+

RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,…)/2
有容错能力:每组镜像最多只能坏一块;
最少磁盘数:4,4+

JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用:
可用空间:所有磁盘加起来 SUM(S1、S2…)

软件实现方式(一般不使用)

Centos 6上的软件RAID的实现:
结合内核中的md模块(multi devices)

mdadm:模式化的工具
	命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>

	模式:
		创建:-C
		装配:-A
		监控:-F
		管理:-f,-r,-a
	<raiddevice>:/dev/md#
	<component-devices>:任意块设备

watch命令:
-n #:刷新间隔,单位是秒;

watch -n# 'COMMAND'

LVM:Logical Volume Manager: Version:2
dm(模块):device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块。
设备名:/dev/dm-0(查看设备名ll /dev/mapper)

创建前分区在fdisk中把分区类型改为8e fdisk输入l查看分区id t修改分区id

pv管理工具:
pvs:简要pv信息显示
pvdisplay:显示pv的详细信息

pvcreate /dev/DEVICE:创建pv

vg管理工具:
vgs
vgdisplay
vgcreate [-s 指定PE大小] VloumGroupName PhysicalDevicePath [PhysicalDevicePath…]
vgextend VloumGroupName PhysicalDevicePath [PhysicalDevicePath…]
vgreduce VloumGroupName PhysicalDevicePath [PhysicalDevicePath…]

lv管理工具:
lvs
lvdisplay

lvcreate -L 卷大小 -n lvname VolumeGroup

扩展逻辑卷:(当逻辑卷正在使用需要扩大时)
#lvextend -L [+]卷大小 /dev/vgname/lvname(-L表示增加到)
此时逻辑卷增大了,文件系统并没有增加,需要将文件系统也增加
#resize2fs /dev/vgname/lvname(更改文件系统大小,不需要卸载,适用于ext系列)

缩减逻辑卷:(必须先将文件系统缩减再缩减物理空间)
#umount /dev/vgname/lvname(必须先卸载)
#e2fsck -f /dev/vgname/lvname(文件系统的强制检测和修复,适用于ext系列)
#resize2fs /dev/vgname/lvname 5G(缩减的大小)
注意:缩减后的大小必须要大于使用的空间
#lvreduce -L +卷大小 /dev/vgname/lvname (-L表示缩减到)
#mount(将原文件系统挂载上)

备份都过程:将数据序列化,再传输。任何数据都必须被序列化才能被传输
(可以理解为一根线缆承载的数据流有限,所以需要序列化才能传输)

快照:snapshot 快照卷的大小取决于原卷变化的数据量*日期
快照卷的好多文件其实都是和原文件系统共用的,所以快照卷相当于一个分区的另一个入口,这样快照卷肯定在该分区上,对LVM而言就是在一个卷组上,不可以跨卷组创建快照卷
快照存放的是原始卷的元数据,真实数据还是在原卷中

快照卷创建
lvcreate -L 卷大小 -p(指定权限) r(只读) -s(指明是快照卷) -n snapshot_lv_name 卷组名(lvname)

练习:
1.创建一个至少有两个PV组成的大小为20G的名为testvg的VG:要求PE大小为16MB,而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/user目录;
#vgcreate -s 16M testvg /dev/vdc[12]
#lvcreate -L 5G -n testlv testvg
#mkfs.ext4 /dev/testvg/testlv
#mount /dev/testvg/testlv /user/

2.新建用户archlinux,要求其家目录为/user/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;
#useradd -b /user archlinux
#su archlinux
#cd
#cp -r /etc/pam.d ./

3.扩展testlv至7G,要求archlinux用户的文件不能丢失
#lvextend -L 7G /dev/testvg/testlv
#resize2fs /dev/mapper/testvg-testlv

4.收缩testlv至3G,要求archlinux用户的文件不能丢失;
#umount /user
#e2fsck -f /dev/testvg/testlv
#resize2fs /dev/testvg/testlv 3G
#lvreduce -L 3G /dev/testvg/testlv
#mount /dev/testvg/testlv /user

5.对testlv创建快照,并尝试基于快照备份数据,验证快照功能;
#lvcreate -s -n snaplv -L 3G -p rw /dev/testvg/testlv

文件系统挂载使用:
挂载光盘设备:mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
光盘设备文件:
IDE:/dev/hdc
SATA:/dev/sr0

	符号链接文件:
		/dev/cdrom
		/dev/cdrw
		/dev/dvd
		/dev/dvdrw

dd 命令:convert and copy afile
用法:
复制:dd if=/path/from/src of=/path/to/dest
bs=# block size 复制单元大小
count # 指定bs的复制次数

	磁盘拷贝:
		dd if=/dev/sda of=/dev/sdb

	备份MBR
		dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

	清除磁盘分区(破坏MBR中的bootloader):
		dd if=/dev/zero of=/dev/sda bs=512 count=1
	MBR中一共有512个字节,前446位为bootloader,64是分区表

两个数据设备:
	/dev/null:数据黑洞,可以无限放数据
	/dev/zero:吐零机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值