Linux文件系统运维常见问题总结
1,描述GPT是什么,应该怎么使用
GPT意为GUID分区表,他是一个逐渐取代MBR的新标准。他最多可以支持128个GPT分区,而且你还不要创建扩展分区。
在MBR磁盘上,分区和启动信息是保存在一起的。如果这部分数据被覆盖或破坏,事情就麻烦了。相对的,GPT在整个磁盘上保存多个这部分信息的副本,因此它更为健壮,并可以恢复被破坏的这部分信息。GPT还为这些信息保存了循环冗余校验码(CRC)以保证其完整和正确——如果数据被破坏,GPT会发觉这些破坏,并从磁盘上的其他地方进行恢复。而MBR则对这些问题无能为力——只有在问题出现后,你才会发现计算机无法启动,或者磁盘分区都不翼而飞了。
2.创建一个10G分区,并格式为ext4文件系统;
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

  fidsk划分10G分区,partx命令强制内核重新读磁盘分区表,cat /proc/partitions是否内核识别到新分区

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x6cc70eda 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w

[root@localhost ~]# partx -a /dev/sdb1
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# cat /proc/partitions
major minor #blocks name

8 32 20971520 sdc
8 0 125829120 sda
8 1 512000 sda1
8 2 125316096 sda2
8 16 20971520 sdb
8 17 10485760 sdb1
8 48 20971520 sdd
11 0 1048575 sr0
253 0 52428800 dm-0
253 1 2097152 dm-1
253 2 70721536 dm-2
(2) mke2fs格式化文件系统为ext4,并指点定相关属性
[root@localhost ~]# mke2fs -b 2048 -t ext4 -m 2 -L mydata /dev/sdb1
tune2fs设置挂载属性
[root@localhost ~]# tune2fs -o acl /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]#
(3) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
创建挂载点,挂载文件系统
[root@localhost ~]# mkdir -p /data/mydata
[root@localhost ~]# mount -L mydata -o noexec,noatime /data/mydata/
[root@localhost ~]#
(4)开机自动挂载启动
编辑启动文件/etc/fstab

See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=17adcced-6e01-4fd4-b919-dfa98a1c333b /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /data/mydata ext4 defaults 0 0
3 创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB

[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
[root@localhost ~]# mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=6d178552-44f0-479b-89eb-a7c72e0852f2
[root@localhost ~]# swapon /dev/sdb2
4 编写一个脚本,计算第10个到第20个用户的id之和
#!/bin/bash
declare -i sum=0
for i in sed -n '20,30p' /etc/passwd|awk -F ":" '{print $3}';
do
let sum+=${i}
done
echo "id之和为${sum}"
5 将当前主机名保存到hostname变量中,主机名如果为空,或者为localhost改为nod2
hostnamectl set-hostname nod2
[root@nod2 ~]# echo $HOSTNAME
nod2
[root@nod2 ~]#编
6 编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是偶数还是奇数

#!/bin/bash
[ $# -lt 1 ] && echo "at least one username" && exit 1
! id $1 &>/dev/null && echo "no such user" && exit 2
id=$(id -u $1)
a=$(($id%2))
if [ $a -eq 0 ]; then

echo "偶数";

else
echo "奇数";
fi
7 lvm基本应用及扩展缩减实现
(1)PV管理工具:
        pvs: 简要pv信息显示
        pvdisplay: 显示pv的详细信息
        pvcreate /dev/DEVICE: 创建pv
        pvremove /dev/PV_NAME:移除PV

  (2)VG管理工具:
        vgs: 简要显示vg信息
        vgdisplay:显示vg的详细信息
        vgcreate [-s PE_SIZE[kKmMgGtTpPeE]] VG_NAME /dev/DEVICE : 创建vg
        vgextend VG_NAME /dev/DEVICEE: vg扩展
        vgreduce VG_NAME /dev/DEVICE: 缩减vg,需要先做pvmove
        vgremove /dev/VG_NAME:vg移除

  (3)V管理工具:
        lvs: 简要显示lv信息
        lvdisplay:详细显示lv信息
        lvcreate -L #[mMgGtT] -n LV_NAME VG_NAME : 创建lv
        lvremove /dev/VG_NAME/LV_NAME: 移除lv
      3.1扩展逻辑卷步骤:
            lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME: 扩展物理边界
            resize2fs /dev/VG_NAME/LV_NAME (EXT系列的文件格式):修改逻辑边界
      3.2缩减逻辑卷步骤:
            umount /dev/VG_NAME/LV_NAME: 先卸载LV
            e2fsck -f /dev/VG_NAME/LV_NAME: 强制检测和修复文件系统        
            resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]:缩减逻辑边界
            lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME:缩减物理边界
            mount: 重新挂载lv
  (4)snapshot
      快照就是某一时刻立即创建一个对原卷文件元数据的监视器,当原卷上文件元数据要变化的时候,先把原文件复制一份到快照卷上,而没有变化的就指向原卷上的文件数据。
      快照的相关命令:
         lvcreate -L #[mMgGtT] -p r -s -n SNAPSHOT_LV_NAME ORIGINAL_NAME: 创建一个只读的快照