由于公司新的业务的需要,新增了几台DELL R720服务器。在安装系统时,通过按F10进入lifecycle controller,发现其只支持centos 5.8和6.2版本。而目前最新的是centos 6.3 ,所以索性装成了最新版本。安装之前本想装使用LVM分区。不过由于长时间没装生产环境中使用的系统,同时又由于之前试其他版本耽误了不少时间,所以装的有点仓促。装完后发现不是及于LVM的ext4分区。仍是普通的ext4分区。于是就想在系统中再将系统转化为LVM管理,方便日后动态调整大小。不过在调整过程中遇到了几个问题,现汇总结下。

一、补充下安装时正确划分LVM卷下分区的方法

在分区选择界面时,步骤如下图所示。先装分区或磁盘创建为LVM物理卷 —— 再生成为LVM卷组 —— 并在创建分区时添加分区。

lvm1
lvm1

lvm2
lvm2

二、/etc/fstab未调整造成的无法重启错误

由于,之前分区时,分了logs、App、datat等多个分区。虽然也可以通过pvcreate /dev/sda{1,2,3}这样的方式创建LVM物理卷。但我还是希望通过fdisk先将data、logs、App等分区合并,合并完成后再创建LVM物理卷。在LVM物理卷下再创建挂载点。首先,我通过fdisk将后面的几个分区通过d删除。删除完了再创建。并w保存。不过我这些修改完后,忘了把/etc/fstab里的挂载信息修改了。造成reboot后出现不能重启。错误信息如下:

1*** An error occurred during the file system check.
2*** Dropping you to a shell;the system will reboot
3*** when you leave the shell.
4*** Waring --SELinux is active
5*** Disabling security enforcement for system recovery.
6*** Run 'setenforce 1'to reenable.
7*** Give root password for maintenace
8(or type Control - D to continue):

通过修改grub,设置single模式,依然会出现上面的错误。这里实际上有两个问题,一个是提示selinux的警告。这个可能通过运行setenforce 1关闭,也可以修改/etc/selinux/conf文件设置为disabled一劳永逸。不过这个不是重点,装成不能启动的是第二个问题。需要注释掉/etc/fstab里我在fdisk里删除掉的分区。操作步骤如下:

1、输入root密码,进入修复模式

1(Repair filesystem) 1 #

2、查看根分区所在的设备名

1[root@localhost ~]# df -hl
2文件系统              容量  已用  可用 已用%% 挂载点
3/dev/sda3             145G  3.2G  134G   3% /
4tmpfs                  16G     0   16G   0% /dev/shm
5/dev/sda1             194M   31M  153M  17% /boot

由于此时的分区下的文件是只读的。修改时会提示read-only,强制保存也不生效。需要重新挂载并修改。

3、重新挂载

1mount -o remount,rw /dev/sda3

修改/etc/fstab里,将fdisk删除掉的分区注释掉。并reboot 就可以顺利进入系统了。

三、错误Partition table entries are not in disk order

通过fdisk删除分区并新建分区,通过reboot重启后。再通过fdisk -l /dev/sda查看时,发现以上错误:

 1[root@localhost ~]# fdisk -l /dev/sda
 2Disk /dev/sda: 1199.1 GB, 1199101181952 bytes
 3255 heads, 63 sectors/track, 145782 cylinders
 4Units = cylinders of 16065 * 512 = 8225280 bytes
 5Sector size (logical/physical): 512 bytes / 512 bytes
 6I/O size (minimum/optimal): 512 bytes / 512 bytes
 7Disk identifier: 0x00088aaf
 8   Device Boot      Start         End      Blocks   Id  System
 9/dev/sda1   *           1          26      204800   83  Linux
10Partition 1 does not end on cylinder boundary.
11/dev/sda2              26        4203    33554773+  82  Linux swap / Solaris
12/dev/sda3           77790       96913   153600000   83  Linux
13/dev/sda4            4204       77789   591079545   83  Linux
14Partition table entries are not in disk order

出现该提示的原因是因为现在分区表中分区的顺序的硬盘物理顺序不一致,该提示并不会影响到正常使用,不过想要修复也很简单。

 1[root@localhost ~]# fdisk /dev/sda
 2Command (m for help): x
 3Expert command (m for help): m
 4Command action
 5f   fix partition order
 6r   return to main menu
 7w   write table to disk and exit
 8Expert command (m for help): f
 9Done.
10Expert command (m for help): r
11Command (m for help): w

在帮助信息中,我只保留了上面用到的三个命令。上面的f 、r的使用需要先使用x。调整完成后,重启后再查看就不会有该提示了。不过,在修复该问题时,修复该问题时是有风险的。要特别注意/etc/fstab 的对应关系是否正确。例如:如果原来根分区在/dev/sda3 ,修改后可能根分区会变成/dev/sda2 。但UUID号不会变,所以这就是使用UUID号的一个好处

四、Partition 1 does not end on cylinder boundary

在上一个问题里,我们通过fdisk -l查看时,实际上已经有该问题了。我曾尝试过重新安装,发现刚刚重新安装过的系统也会有这个提示。通过网上查询该问题并不会影响使用。具体造成该问题的原因是:fdisk /dev/sda进行分区是通过柱面来进行分区的。按柱面进行分区是按垂直的空间来进行理解,但是计算机显示时会按扇区来判断分区是否结束。而如果在分区时使用fdisk -u /dev/sda进行分区则不会有该提示