磁盘管理
磁盘分区自动化
echo -e "n p +2G w " | fdisk /dev/sdc 代表回车符号 标准输入重定向
fdisk /dev/sdc <<EOF 多行重定向
磁盘用来存储小文件 就设置为小块 如果磁盘用来存储大文件 就要设置成大块 目前Linux支持 1k 2k 4k 三种block设置
磁盘一旦创建好文件系统,块大小就不可改变
mkfs.ext4 /dev/sda2 -b 1024
ext2 和 ext3 大体上就差一个日志功能
分区相关命令
blkid 默认显示当前系统中所有已经有文件系统的块设备的信息
blkid -U UUID
e2label /dev/sda1 显示sda1的卷标 e2label /dev/sda1 newlable 修改sda1的卷标
findfs LABEL="label" 或者 UUID="uuid" 查找分区
tune2fs -U `uuidgen` /dev/sda1 修改分区的UUID
一个分区的三种表示方法 1.分区名(/dev/sda1) 2.LABEL 3.UUID(推荐用来表示一个分区)
修复文件系统
执行修复文件系统的命令的时候,这个分区不能处于挂载状态,必须先把分区卸载
fsck /dev/sda1 -y
磁盘挂载命令
一个挂载点同时只能挂载一个设备,以最后的挂载为准 一个设备可以同时挂载到多个文件夹上.
mount /dev/sda1 /root/data
umount /dev/sda1
只有root用户才有权限进行挂载和取消挂载的操作
mount -B dir1 dir2 -B 选项 可以实现目录dir2上挂载目录dir1
mount -o remount /dev/sda1 功能类似于先umount然后再mount,有时候(有其它用户正在访问)无法umount可以通过此选项实现重新挂载
异步async 源磁盘 》 内存 》 buffer 》目标磁盘
同步sync 源磁盘 》内存 》目标磁盘
可以把一个文件模拟一个分区来使用 mkfs.ext4 file1 mount -o loop /root/file1 blkid file1
分区 文件夹 文件 三种类型资源都可以挂载到一个文件夹
推荐把设备挂载到一个空文件夹中,如果不是空文件夹那么挂载设备后,原来文件夹中的内容将被隐藏起来.取消挂载后,原来文件就会恢复显示.
挂载点和/etc/fstab
设备名/UUID/LABEL 挂载点 文件系统类型 挂载选项 备份的间隔 开机时是否检查文件系统
UUID=1ec9c7b3-bec1-4998-9aad-057423419431 / xfs defaults 0 0
UUID=df74adc0-09cd-4a97-a1e4-9f0d4a4b5796 /boot xfs defaults 0 0
挂载(文件/光盘/文件夹)不能写UUID只能写设备名
/root/file1 /mnt/file1 ext4 loop 0 0
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0
/boot /mnt/boot none bind 0 0
如果/etc/fstab中的设备名或者挂载点出现问题,而且设置了开机检查文件系统的完整性. 那么操作系统将无法启动.
mount -o rw,remount / 重新以可读可写的方式挂载(/)某个文件系统
迁移home到一个新的分区:
1.新建一个分区(分区是没法变大变小的,因为分区是需要连续的磁盘空间) fdisk /dev/sdb
2.在新建的分区上创建文件系统 mkfs.ext4 /dev/sd1
3.把新的分区挂载到一个临时目录
4.init 1 切换到单用户模式,防止在备份数据的时候有其它用户正在修改相关数据 (导致网络会出现中断)
5.备份原来home的数据到新的分区上 cp -av /home/* /mnt/home/
6.修改/etc/fstab配置文件。 rm -rf /home/* mount -a 重新挂载所有设备
7. init 5 切换到正常访问模式
swap文件系统
交换分区是把磁盘当内存来使用的,避免内存空间不足, 造成应用程序运行失败. 把f1文件里的内容写入f2文件磁盘和内存的操作.
当执行f1写入f3的时候,无需再次从磁盘读取数据,直接从内存cache中读入buffer中然后再写入f3中.
使用文件来模拟swap分区
1. 生成对应大小的文件(相当于创建分区) dd if=/dev/zero of=/swapfile bs=1024M count=2
2. 创建文件系统 mkswap /swapfile
3. 挂载
4.swapon -a 更新 swap 查看swap swapon -s 禁用swap swapoff /swapfile
制作启动引导iso镜像
cp /cd1 /data cp /cd2 /data
mkisofs -r -o myname.iso /data mkisofs 制作成的iso不能作为引导光盘,只能做yum源
mkdvdiso.sh /data myname.iso 这个既可以做引导光盘,同时也可以作为yum源
du -h /root 统计root目录下每个子目录的大小
du -sh /root 统计root目录本身的大小
dd工具命令
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446 seek表示目标文件(sda)的偏移量
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 skip 表示源文件(fileA)的偏移量 seek表示目标文件(fileB)的偏移量
测试硬盘读写速度
写速度 dd if=/dev/zero of=/root/file1 bs=1024 count=1000000
读速度 dd if=/file1 bs=64k | dd of=/dev/null
磁盘RAID
raid设备相对于单块磁盘分区的优势是 读写性能的提高和数据的容错性
raid0 至少两块磁盘,性能好。无容错性. 多块硬盘并行存储或者读取一个文件.以chunk为单位.
raid5 把数据和奇偶效验位均匀的存储在不同的磁盘上
raid1 镜像存储,写性能一样, 读性能有提高
raid10 先做raid1再做raid0
raid01 先做raid0再做raid1
创建raid命令
mdadm -C /dev/md0 -a yes -l5 -c 32 -n 3 -x1 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
mdadm -D /dev/md0 查看raid设备信息
mkfs.ext4 /dev/md0 -L raid5Label 给raid设备创建文件系统 并创建卷标标签
mount /dev/md0 /mnt/raid 挂载raid设备.如果需要永久生效必须写入/etc/fstab配置文件
mdadm -Ds /dev/md0 > /etc/mdadm.conf 生成raid的配置文件,防止重启raid设备因找不到配置文件失效
umount /dev/md0
mdadm -S /dev/md0 停用raid设备 mdadm -A /dev/md0 启用raid设备
mdadm /dev/md0 -r /dev/sdb1 从raid设备中移除某个分区磁盘 把 -r 换成 -a 则变成添加磁盘分区
resize2fs /dev/md0 centos6同步raid设备所有分区的文件系统
xfs_growfs /dev/md0 centos7同步raid设备所有分区的文件系统
删除raid设备
取消raid设备挂载
删除 /etc/fstab中的配置文件
mdadm -D /dev/md0 查看raid设备中所有的磁盘分区
fdisk 删除raid中包含的所有分区
mdadm --zero-superblock /dev/sdb1 或者 dd if=/dev/zero of=/dev/sdb1 清除磁盘分区中超级块包含的raid元数据信息
LVM逻辑卷管理
相对于普通磁盘分区的优势是 可以方便的扩展容量大小 普通分区一旦分好,将不能再进行改变
步骤一: 把物理分区或者磁盘变成一个物理卷的概念.物理卷(PV)使用固定大小的物理区域(PE)组成的。
相当于给这个磁盘或者分区贴上一个标签,表示此设备不再用作分区来用,而是做为逻辑卷来用.
pvcreate /dev/sda
步骤二:把多个物理卷集合到一起,组成一个物理卷组(VG) 一个卷组相当于一个逻辑上的大硬盘
vgcreate -s 16M vg0 /dev/sda /dev/sdb
步骤三:创建逻辑卷(LV) 相当于在物理卷组上划分分区.
lvcreate -n lv0 -l 20 vg0
逻辑卷的扩容是以PE位基础单位大小进行扩大和缩减的
lvextend -l 100 /dev/vg0/lv0
逻辑卷迁移
pvmove /dev/sdd 把/dev/sdd上已经被分配出来使用的PE移动到同一卷组中的其它成员上 删除VG中的PV
逻辑卷快照
快照本身也是一种逻辑卷,和被快照的逻辑卷同时存储在一个卷组中.创建快照的时候速度非常块,因为这个时候只是在磁盘上分配一块空间而已.
只有在对被快照逻辑卷的数据进行修改或者删除的时候,才会把原来的数据推送到快照区域中.无论修改多少次,快照中保留的是最原始的文件,被
快照的磁盘存的是最新的数据,只保留两个版本.使用快照恢复,只能恢复到做快照时候的最原始版本,中间的修改都会丢失.
没有做任何修改的文件是不会被推送到快照空间中去的,基于快照的原理,快照是不能完全代替备份的.
快照的空间只需要小于等于原始空间即可(快照中只保存被修改过的文件)
备份数据库的时候,直接使用cp命令是不行的,虽然可以实现把文件全部备份到目标空间,但是可能某些备份文件的备份时间点会不一致.
可以先对整个数据库文件进行一个快照,快照空间保存的是所有数据库文件在相同时间点的原始状态.
快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据 改动了,则原始数据会被移动到快照区
没有改动的区域则由快照区和文件系统共享 这样就可以实现进入快照空间可以看到原始数据 实现类似备份的效果