前言
准备第一次面试,练习练习磁盘操作
将从几个方面复习
1.swap的创建,启动,查看,关闭
2.分区的创建,挂载与卸载
3.raid的使用
4.lvm的使用
5.各种磁盘有关命令
本博客仅用于练习
swap
创建swap有两种方法,我称之为使用分区法与使用块文件法使用分区法
1.创建一块没有格式化(没有文件系统)的分区
fdisk /dev/sda
n #创建新分区
回车 #默认分区号,此处为2
回车 #默认扇区起点
+200M #size(扇区终点)
#修改分区ID(使用L查看所有ID代表的含义)
t #修改ID为82,因为82就是指定swap的标识
82
#写入磁盘(否则直接退出会没有保存)
w2.内核重新读取分区
partprobe3.格式化为swap
#新创建的分区会出现在/dev中
mkswap /dev/sda34.开启swap分区
swapon /dev/sda36.其他swap命令
#开启swap分区
swapon /opt/swapfile
#关闭Swap分区
swapoff /opt/swapfile
#查看Swap分区
swapon -s
#查看swap分区状况
free -h使用块文件法
这个方法一般用于没有分区可以创建了,只能占用已有分区未使用的部分
1.查看当前分区哪个剩余更多
df -h2.创建swapfile的块文件
#这里是使用块文件的方式占用分区磁盘(共256M)
#dd if=源设备 of=目标设备 bs=块大小 count=块数
dd if=/dev/swtmp of=/opt/swapfile bs=1M count=2563.内核重新读取分区
partprobe4.swap格式化
mkswap -f /opt/swapfile
#swapon推荐使用600权限
chmod 600 /opt/swapfile5.开启swap分区
swapon /opt/swapfile磁盘挂载流程
1.识别磁盘
这一步由系统完成,linux会识别磁盘并将其作为一个文件放在/dev中,一般命名为sda(后面认知的磁盘就是sdb,sdc..),公有云命名为vda(后面认知的磁盘就是vdb,vdc..)
但真正使用的一般都是分过区的sda1,sda2等等
2.创建新的分区
这一步与swap分区创建几乎相同,但不需要修改ID
fdisk /dev/sda
n #创建新分区
回车 #默认分区号,此处为5(已经创建拓展分区)
回车 #默认扇区起点
+100M #size(扇区终点)
#保存
w2.内核重新读取分区
partprobe3.格式化
#文件系统通过输入mkfs后tab查看
mkfs.ext3 /dev/sdb24.挂载
#临时挂载
mount /dev/sda5 /root5.检查
注意.如果挂载路径中存在文件将会被覆盖,但不会消失,仍然保存在原来的挂载分支中(此处root原来是挂载在根分区下的,所以被覆盖的文件保存在根分区中),卸载分区后就能看见
6.挂载相关命令
#临时挂载
mount <设备名> <挂载点>
-t #文件系统 类似xfs(等于做了mkfs的工作)
-o #额外选项,如ro只读
#取消挂载
umount <挂载点>
#永久挂载
vim /etc/fstab
#挂载源 挂载点 文件系统 挂载参数 是否备份 检查顺序
/dev/sda5 /root ext3 defaults 0 0RAID
1.连续创建5个分区
fdisk
n
回车
+100M
#连续5次
w2.创建RAID
#mdadm -C(创建模式create) -a(auto) yes(是否自动创建设备文件) <raid设备> (推荐/dev/md0) -n(number) <N1> (准备N1个磁盘做阵列) -l(Level) <0/1/5> (阵列等级) -x(spare) <N2> (准备N2个备用磁盘) 多个分区 </dev/hda{1,2,3,4,5...}>
(注意设备个数必须等于N1+N2)
mdadm -C -a yes /dev/md0 -n 4 -l 5 -x 1 /dev/sda{5..9}3.格式化
#对刚刚创建的raid块文件进行格式化
mkfs.xfs /dev/md04.挂载
mount /dev/md0 /root5.查看挂载
可以看见容量为292,实际上就是300(因为一些原因,写为300但是实际上会缩小一点),这就是3块分区的大小,正好符合RAID5损失一块盘的容量(这里使用的是分区),使用了4块分区构建RAID5,剩余1块备用,分区损坏后可以直接顶替
实际上,由4块硬盘(不是分区,而是sda,sdb,sdc等等)构建RAID才是正确的做法,但是没有配置4块硬盘,所以使用分区练习
6.mdadm相关命令
#关闭raid(先卸载再关闭)
mdadm --stop <raid设备>
#救援模式
mdadm --manage #磁盘阵列名/dev/mdN
--add <设备> #添加设备到磁盘阵列中
--remove <设备> #从磁盘阵列删除设备
--fail <设备> #将设备设为出错状态lvm
1.检查硬盘
fdisk -l |grep sd2.创建4个lvm分区(sdb)
fdisk /dev/sdb
n #创建新分区
回车 #默认分区号
回车 #默认扇区起点
+100M #size(扇区终点)
#修改分区ID(每个新创建分区都要)
t #修改ID为8e,因为8e就是指定lvm的标识
8e
#写入磁盘(否则直接退出会没有保存)
w2.创建PV
#创建PV
#pvcreate <分区>
pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
pvcreate /dev/sdb5
#PV其他操作
pvscan #查询所有PV的分区的详细状态
pvremove <分区> #删除分区PV属性(还原没有格式化的分区)3.创建VG
#创建VG,-s指定PE大小(这里的PV_NAME就是分区名)
#vgcreate -s <size> <VG_NAME> <PV_NAME>
vgcreate -s 8M vgb /dev/sdb1 /dev/sdb2 /dev/sdb3
#注意,这里没有添加sdb5
#VG其他操作
vgscan #查询VG的属性 vgdisplay(详细状态)
vgextend <VG_NAME> <PV_NAME> #增加PV
vgremove <VG_NAME> <PV_NAME> #减少PV
4.创建LV
#创建LV,可以调整大小
#lvcreate -L <size> -n <LV_NAME> <VG_NAME>
lvcreate -L +200M -n test vgb
#LV其他操作
lvscan #查询LV的属性 lvdisplay(详细状态)
lvresize -L +/-<size> <LV设备名> #增大/减小LV的大小5.调整大小
lvresize -L -100M /dev/vgb/test #调小100Mlvresize -L +150M /dev/vgb/test #调大150M
#这里由于VG仅有300M,所以一个LV最大也无法超过300M6.格式化
mkfs -t ext3 /dev/vgb/test7.挂载
mount /dev/vgb/test /root8.基于sdb的扩容
umount /root
#由于VG的300M基本上已经使用完了,所以现在需要扩容
#VG扩容
vgextend vgb /dev/sdb5
#注意lvextend扩容的size指定的是扩容目标例如500M->1G(而不是扩容多少+500M)
#指定扩容到350M
lvextend -L 350M /dev/vgb/test
mount /dev/vgb/test /root9.基于其他硬盘的扩容
如果该磁盘用完了怎么办?LVM强大的功能不仅仅是可以基于本磁盘动态扩容,它甚至可以从其它硬盘创建PV加入自己的VG进行扩充
#创建lvm分区(sdc)
略(sdc1大小为1G)
#创建PV
pvcreate /dev/sdc1
#扩充现有的VG
vgextend vgb /dev/sdc1
#LV扩容
umount /root
lvextend -L 1000M /dev/vgb/test
mount /dev/vgb/test /root总结
1.fdisk创建分区后一定要partprobe,虽然使用fdisk -l查看是存在新创建的某分区的,但是实际上/dev内没有,因为内核没有重读分区表
2.实际上LV的动态扩容还是基于VG的大小,组成VG的PV可以来源于多个磁盘,这样可以整合多个磁盘的容量组成VG(可以理解为一个超大磁盘),这个超大磁盘可以被划分为多个LV,按我的理解来说,LVM就是中间商,对上层(磁盘)空间整合进行再划分


















