分类: 服务器与存储
2015-05-04 20:32:28
之前在思考关于磁盘挂载的问题:
[root@Gypsy ~]# df -HT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 ext4 5.2G 363M 4.6G 8% /
tmpfs tmpfs 519M 0 519M 0% /dev/shm
/dev/sda2 ext4 102M 30M 67M 31% /boot
/dev/mapper/vg1-lv2 ext4 4.2G 76M 3.9G 2% /home
/dev/sda5 ext4 1.5G 36M 1.4G 3% /tmp
/dev/mapper/vg1-lv3 ext4 7.3G 898M 6.0G 14% /usr
/dev/mapper/vg1-lv4 ext4 1.1G 313M 667M 32% /var
1、同一个挂载点(即某个目录),可以挂载多个分区,那么之前挂载的分区的数据会怎样呢?
经过试验证实,假如在 /liu 目录下挂载了挂载了 /dev/sda2 ,然后又挂载了 /dev/sda5
那么 /liu 目录下的数据就是 /dev/sda5 里的数据,即覆盖了 /dev/sda2 里的数据。
umount /dev/sda5 之后再去浏览 /liu ,发现又变回 /dev/sda2 里的数据了(原来的数据没有变化)。
2、原来的 /dev/sda5 挂载在 /tmp 上。卸载 umount /dev/sda2 之后,再挂载到 /tmp 上,
发现 /dev/sda5 的数据没有变化。(卸载之后并没有进行格式化操作)
———————————————————————————————————————
好了,背景介绍完毕。
针对上一个实验,我在卸载 umount /dev/sda2 之后,对他格式化了一下,
又重新挂载在 /tmp 上, /tmp 目录下自然是没有数据了。
但是在我关机之后,今天开机的时候报错了,如图所示:
问题就是无法解析 那个 UUID,仔细想想,自己只更改过 /dev/sda5 这个分区,所以应该是这个分区所对应的UUID,于是用 dumpe2fs /dev/sda5 |grep -i uuid 这个命令查看当前时刻下 /dev/sda5 的UUID,果然发现和之前报错的不是一个。
说明在卸载之后的 格式化操作(mkfs.ext4 /dev/sda5) 更改了该分区所对应的UUID,但是没有写入到 /etc/fstab 文件里去。所以在重新启动的时候导致了无法解析之前的旧的UUID,从而报错。
解决办法:
进入救援模式,编辑 /etc/fstab 文件,找到 /dev/sda5 那行,将/dev/sda5新的 UUID替换掉旧的UUID,保存后重启就OK了。
下面这个文件是我第二次做实验的时候的数据,和上面截图不一样。但是原理是对的。
[root@Gypsy ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Apr 21 05:57:59 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg1-lv1 / ext4 defaults 1 1
UUID=88589eb4-222e-4fef-875b-f95820e65ada /boot ext4 defaults 1 2
/dev/mapper/vg1-lv2 /home ext4 defaults 1 2
#UUID=bcd1eb6f-9b93-47d9-9a9a-1dfb7e00de07 /tmp ext4 defaults 1 2
UUID=7627ad56-be7a-48fa-b38a-1aadfb81eaa5 /tmp ext4 defaults 1 2
/dev/mapper/vg1-lv3 /usr ext4 defaults 1 2
/dev/mapper/vg1-lv4 /var ext4 defaults 1 2
UUID=f7730c98-c81e-490e-ae35-be3414516747 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
就是这么简单。