1、创建一个10G分区,并格式为ext4文件系统;
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
(2) 挂载至data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
#创建一个10G的分区 [root@c7-2 ~]# fdisk /dev/sda #进入划分分区 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n #创建分区 Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p #划分分区 分区号 (3,4,默认 3):3 起始 扇区 (50333696-251658239,默认为 50333696): #回车,下面创建一个10G的分区 将使用默认值 50333696 Last 扇区, +扇区 or +size{K,M,G} (50333696-251658239,默认为 251658239):+10G #分10G的空间 分区 3 已设置为 Linux 类型,大小设为 10 GiB 命令(输入 m 获取帮助):w #按w保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 正在同步磁盘。 #内核识别分区 [root@c7-2 ~]# partx -a /dev/sda #内核识别分区信息 partx: /dev/sda: error adding partitions 1-2 [root@c7-2 ~]# partx -a /dev/sda #内核识别分区信息 partx: /dev/sda: error adding partitions 1-3 #格式ext4,block大小为2048, 预留空间百分比为2, 卷标为MYDATA [root@c7-2 ~]# mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sda3 mke2fs 1.42.9 (28-Dec-2013) mkfs.ext4: Device size reported to be zero. Invalid partition specified, or partition table wasn't reread after running fdisk, due to a modified partition being busy and in use. You may need to reboot to re-read your partition table. [root@c7-2 ~]# e2label /dev/sda3 #查看卷标 MYDATA [root@c7-2 ~]# blkid /dev/sda3 #查看卷标,和类型 /dev/sda3: LABEL="MYDATA" UUID="a1aaad3d-a533-49db-90d1-e62902345408" TYPE="ext4" #把创建好的10G分区挂载到/data/mydata下 [root@c7-2 ~]# mkdir -p /data/mydata #创建/data/mydata目录 [root@c7-2 ~]# mount -o acl,noexec,noatime /dev/sda3 /data/mydata/ #挂载 [root@c7-2 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 20G 955M 18G 6% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.6M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 378M 0 378M 0% /run/user/0 /dev/sda3 9.8G 13M 9.6G 1% /data/mydata [root@c7-2 ~]# mount | grep '/dev/sda3' #查看属性信息 /dev/sda3 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered) [root@c7-2 ~]#
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
#进入fdisk准备创建1G分区 [root@c7-2 ~]# fdisk /dev/sda 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n #创建分区 All primary partitions are in use 添加逻辑分区 5 起始 扇区 (71307264-251658239,默认为 71307264): #回车保持默认 将使用默认值 71307264 Last 扇区, +扇区 or +size{K,M,G} (71307264-251658239,默认为 251658239):+1G #空间为1G 分区 5 已设置为 Linux 类型,大小设为 1 GiB 命令(输入 m 获取帮助):t #更改类型 分区号 (1-5,默认 5):5 #刚才创建的1G分区,分区号为5 Hex 代码(输入 L 列出所有代码):82 #82代表swap 已将分区“Linux”的类型更改为“Linux swap / Solaris” 命令(输入 m 获取帮助):w #保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 正在同步磁盘。 #内核识别分区 [root@c7-2 ~]# partx -a -n 5 /dev/sda #内核识别分区信息 [root@c7-2 ~]# partx -a -n 5 /dev/sda partx: /dev/sda: error adding partition 5 #内核识别分区信息 [root@c7-2 ~]# partx -a -n 5 /dev/sda partx: /dev/sda: error adding partition 5 #内核识别分区信息 [root@c7-2 ~]# fdisk -l | grep "^/dev/sda5" #1G的swap分区已创建好 /dev/sda5 71307264 73404415 1048576 82 Linux swap / Solaris #格式化sda5为swap分区 [root@c7-2 ~]# mkswap /dev/sda5 #开始构建swap格式 正在设置交换空间版本 1,大小 = 1048572 KiB 无标签,UUID=7c4abbf3-435b-4fcc-a5f4-1b16a9f43605 [root@c7-2 ~]# blkid /dev/sda5 #查看,类型已为swap /dev/sda5: UUID="7c4abbf3-435b-4fcc-a5f4-1b16a9f43605" TYPE="swap" #查看未使用1G swap之前的大小 [root@c7-2 ~]# free -m total used free shared buff/cache available Mem: 3776 137 3338 8 300 3416 Swap: 4095 0 4095 #把sda5作为swap交换分区 [root@c7-2 ~]# swapon /dev/sda5 #把sda5作为交换分区 #再次查看swap大小,由4G变为5G了 [root@c7-2 ~]# free -m #交换分区由4G加为5G total used free shared buff/cache available Mem: 3776 137 3338 8 300 3416 Swap: 5119 0 5119 [root@c7-2 ~]# swapon #查看目前swap设备有哪些信息 NAME TYPE SIZE USED PRIO /dev/sda2 partition 4G 0B -1 /dev/sda5 partition 1024M 0B -2
3、写一个脚本
(1)、获取并列出当前系统上的所有磁盘设备;
(2)、显示每个磁盘设备上每个分区相关的空间使用信息;
[root@C7-1 shell]# cat 7_3.sh #!/bin/bash fdisk -l | grep -o "^/[^[:space:]]\+" #grep查找以/开头的信息,/etc..符合这种格式 df -h #查看磁盘使用信息 [root@C7-1 shell]# bash 7_3.sh /dev/sda1 /dev/sda2 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 38G 1.1G 37G 3% / devtmpfs 481M 0 481M 0% /dev tmpfs 490M 0 490M 0% /dev/shm tmpfs 490M 6.6M 484M 2% /run tmpfs 490M 0 490M 0% /sys/fs/cgroup /dev/sda1 497M 120M 378M 25% /boot [root@C7-1 shell]#
4、总结RAID的各个级别及其组合方式和性能的不同;
RAID-0:
读、写性能提升;
可用空间:N*min($1,$2,...)
无容错能力
最少磁盘数:2,2+
RAID-1:
读性能提升、写性能略用下降;
可用空间:1*min($1,$2,...)
有冗余能力
最少磁盘数:2,2+
RAID-5:
读、写性能提供
可用空间:(N-1)*min(S1,S2,...)
有容错能力:1块磁盘
最少磁盘数:3,3+
RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:2块磁盘
最少磁盘数:4,4+
RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4,4+
5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;
#RAID1需要二块硬盘,由于需要一块空闲盘,故创建了sda7、8、9三个盘,每个10G。格式要改成82,不然在以后挂载等操作时会遇到问题 [root@c7 ~]# fdisk -l | grep "^/dev" /dev/sda1 * 2048 41945087 20971520 83 Linux /dev/sda2 41945088 50333695 4194304 82 Linux swap / Solaris /dev/sda3 50333696 71305215 10485760 83 Linux /dev/sda4 71305216 251658239 90176512 5 Extended /dev/sda5 71307264 73404415 1048576 82 Linux swap / Solaris /dev/sda6 73406464 94377983 10485760 83 Linux /dev/sda7 94380032 115351551 10485760 fd Linux raid autodetect /dev/sda8 115353600 136325119 10485760 fd Linux raid autodetect /dev/sda9 136327168 157298687 10485760 fd Linux raid autodetect #创建软RAID1,有一个空闲盘,CHUNK为128K [root@c7 ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -l 1 -c 128K /dev/sda{7,8,9} mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? Continue creating array? (y/n) y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. #查看RAID信息 [root@c7 ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Sep 27 15:02:08 2016 Raid Level : raid1 Array Size : 10477568 (9.99 GiB 10.73 GB) Used Dev Size : 10477568 (9.99 GiB 10.73 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Tue Sep 27 15:02:24 2016 State : clean, resyncing Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Resync Status : 32% complete Name : c7:0 (local to host c7) UUID : 0b5373cd:dddf63dd:625342fe:94d35c05 Events : 5 Number Major Minor RaidDevice State 0 8 7 0 active sync /dev/sda7 1 8 8 1 active sync /dev/sda8 2 8 9 - spare /dev/sda9 [root@c7 ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda9[2](S) sda8[1] sda7[0] 10477568 blocks super 1.2 [2/2] [UU] unused devices:[root@c7 ~]#
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至backup目录,而且不更新访问时间戳,且支持acl功能;
#RAID5需要三块硬盘,故创建了sda5、6、7三个盘,每个2G。格式要改成82,不然在以后挂载等操作时会遇到问题 [root@c7-3 ~]# fdisk -l | grep "^/dev" /dev/sda1 * 2048 41945087 20971520 83 Linux /dev/sda2 41945088 50333695 4194304 82 Linux swap / Solaris /dev/sda3 50333696 251658239 100662272 5 Extended /dev/sda5 50335744 54530047 2097152 fd Linux raid autodetect /dev/sda6 54532096 58726399 2097152 fd Linux raid autodetect /dev/sda7 58728448 62922751 2097152 fd Linux raid autodetect #根据题目要求创建并查看信息 [root@c7-3 ~]# mdadm -C /dev/md0 -a yes -n 3 -l 5 -c 256K /dev/sda{5,6,7} mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. [root@c7-3 ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Sep 26 10:10:52 2016 Raid Level : raid5 Array Size : 4190208 (4.00 GiB 4.29 GB) Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Mon Sep 26 10:11:03 2016 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 256K Name : c7-2:0 (local to host c7-2) UUID : 4b86aa4f:0cd62930:c17dda56:9da860f8 Events : 18 Number Major Minor RaidDevice State 0 8 5 0 active sync /dev/sda5 1 8 6 1 active sync /dev/sda6 3 8 7 2 active sync /dev/sda7 [root@c7-3 ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sda7[3] sda6[1] sda5[0] 4190208 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3/3] [UUU] unused devices:#格式化为ext4文件系统 [root@c7-3 ~]# mkfs.ext4 /dev/md0 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=64 blocks, Stripe width=128 blocks 262144 inodes, 1047552 blocks 52377 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1073741824 32 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (16384 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 #创建backup目录,把以下信息追加到/etc/fstab中,验证信息是否加入到/etc/fstab中 [root@c7-3 ~]# mkdir /backup [root@c7-3 ~]# echo "/dev/md0 /backup ext4 defaults,acl,noatime 0 0" >> /etc/fstab [root@c7-3 ~]# tail -1 /etc/fstab /dev/md0 /backup ext4 defaults,acl,noatime 0 0 #挂载该分区,并查看信息 [root@c7-3 ~]# mount -a [root@c7-3 ~]# mount | grep "^/dev/md0" /dev/md0 on /backup type ext4 (rw,noatime,seclabel,stripe=128,data=ordered)
7、写一个脚本
(1) 接受一个以上文件路径作为参数;
(2) 显示每个文件拥有的行数;
(3) 总结说明本次共为几个文件统计了其行数;
[root@C7-1 shell]# cat 7_7.sh #!/bin/bash # declare -i i=0 #初始i变量为0,i用来统计文件数 if [ $# -lt 1 ];then #判断是否给了一个以上路径值 echo "Please input file path." #如果没给路径,则提示 exit 2 #错误返回值2 fi for file in $*;do #创建循环,$*表示传递给脚本的所有参数 line=$(wc -l $file | cut -d' ' -f 1 ) #变量line为截取的行数 echo "$file line number: $line" #输出有多少行 let i++ #文件数累计加1 done echo "Count the number of rows in a few files: $i" [root@C7-1 shell]# chmod +x 7_8.sh #给执行权限 [root@C7-1 shell]# bash -n 7_7.sh [root@C7-1 shell]# echo $? 0 [root@C7-1 shell]# bash 7_7.sh #执行此脚本,后面没给文件 Please input file path. [root@C7-1 shell]# bash 7_7.sh /etc/fstab /etc/passwd #后来给二个文件,下面是统计结果 /etc/fstab line number: 11 /etc/passwd line number: 29 Count the number of rows in a few files: 2
8、写一个脚本
(1) 传递两个以上字符串当作用户名;
(2) 创建这些用户;且密码同用户名;
(3) 总结说明共创建了几个用户;
[root@C7-1 shell]# cat 7_8.sh #!/bin/bash #7-8.sh declare -i i=0 #初始i变量为0,i用来统计用户数 if [ $# -lt 2 ];then #判断字符是否小于2个 echo "Please enter more than 2 characters" #小于2个,则提示 exit 2 #错误返回值2 fi for user in $*; do #创建循环,$*表示传递给脚本的所有参数 id $user &> /dev/null #判断用户,结果重定向到/dev/null if [ $? -eq 0 ]; then #如果用户存在则提示 echo "$user exist" else useradd $user #用户不存在则创建 echo "$user" | passwd --stdin $user &> /dev/null #用户名和密码相同 let i++ #统计加了几个用户 fi done echo "Add user count: $i" [root@C7-1 shell]# bash -n 7_8.sh [root@C7-1 shell]# chmod +x 7_8.sh [root@C7-1 shell]# bash -n 7_8.sh [root@C7-1 shell]# echo $? 0 [root@C7-1 shell]# bash 7_8.sh #执行此脚本,后面用户名,则提示 Please enter more than 2 characters [root@C7-1 shell]# bash 7_8.sh zhaodongwei fuwei #接二个用户名,则创建成功,提示新增用户的数量 Add user count: 2 [root@C7-1 shell]# su - zhaodongwei [zhaodongwei@C7-1 ~]$ su - fuwei #切换用户测试 密码: 一次登录:二 9月 27 17:25:48 CST 2016pts/0 上 [fuwei@C7-1 ~]$
9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;
[root@C7-1 shell]# cat 7_9.sh #!/bin/bash #7_9.sh declare -i sum=0; for i in visitor{1..20}; do #创建visitor1-20的循环 if id $i &> /dev/null ;then #判断用户是否存在,存在则提示 echo "user is exits" else useradd $i; #不存在就创建用户 fi echo "useradd $i success!" #提示创建成功 let sum+=$(id -u $i) done echo "All user uid: $sum" #累加ID [root@C7-1 shell]# chmod +x 7_9.sh [root@C7-1 shell]# bash -n 7_9.sh [root@C7-1 shell]# echo $? 0 [root@C7-1 shell]# bash 7_9.sh #执行脚本,成功创建20个用户 useradd visitor1 success! useradd visitor2 success! useradd visitor3 success! useradd visitor4 success! useradd visitor5 success! useradd visitor6 success! useradd visitor7 success! useradd visitor8 success! useradd visitor9 success! useradd visitor10 success! useradd visitor11 success! useradd visitor12 success! useradd visitor13 success! useradd visitor14 success! useradd visitor15 success! useradd visitor16 success! useradd visitor17 success! useradd visitor18 success! useradd visitor19 success! useradd visitor20 success! All user UID: 40810 [root@C7-1 shell]#
10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;
[root@c7 shell]# cat /etc/rc.d/rc.sysinit #Centos7没有rc.sysinit文件,以下使用c6演示 cat: /etc/rc.d/rc.sysinit: 没有那个文件或目录 [root@c6 shell]# cat 7_10.sh #!/bin/bash #7_10.sh declare -i sum1=0; #sum1用于记录#开头的行 declare -i sum2=0; #sum2用于记录空白行数 for i in {/etc/rc.d/rc.sysinit,/etc/rc.d/init.d/functions,/etc/fstab}; do #创建循环 sum1+=$( grep -c '^#' $i ) #查询以#开头的行数 sum2+=$( grep -c '^[[:space:]]*$' $i ) #查询空白的行数 done echo "# line: $sum1" #显示出#开头的行数 echo "space line: $sum2" #显示空白的行数 [root@c6 shell]# chmod +x 7_10.sh [root@c6 shell]# bash -n 7_10.sh [root@c6 shell]# echo $? 0 [root@c6 shell]# bash 7_10.sh #执行 # line: 94 space line: 210
11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
[root@c6 shell]# useradd -s /sbin/bash mysql #为便于演示,创建一个mysql用户,指定shell为bash [root@c6 shell]# id mysql #查看mysql的UID为500 uid=500(mysql) gid=500(mysql) groups=500(mysql) [root@c6 shell]# cat 7_11.sh #!/bin/bash #7_11.sh declare -i uid=0; #uid用于总和用 for i in `grep 'bash$' /etc/passwd | cut -d: -f1`; do #查询以bash结果的用户 echo "USER: $i , UID: `id -u $i`" #USER显示用户,UID显示UID数值 let uid+=`id -u $i` #把UID加在一起 done echo "Sum of UID: $uid" [root@c6 shell]# chmod +x 7_11.sh [root@c6 shell]# bash -n 7_11.sh [root@c6 shell]# echo $? 0 [root@c6 shell]# bash 7_11.sh #执行 USER: root , UID: 0 USER: mysql , UID: 500 Sum of UID: 500 [root@c6 shell]#
12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;
#测试命令 [root@c6 shell]# useradd -u 3003 -g clouds -G nova openstack #为便于演示,创建openstack用户,附加组为nova [root@c6 shell]# id openstack #编写脚本前,测试命令 uid=3003(openstack) gid=501(clouds) groups=501(clouds),502(nova) [root@c6 shell]# id openstack | cut -d" " -f3 #以空格分隔,取第3段组 groups=501(clouds),502(nova) [root@c6 shell]# id openstack | cut -d" " -f3 | awk -F, '{print $2}' #取出附加组 502(nova) #编写脚本 [root@c6 shell]# cat 7_12.sh #!/bin/bash #7_12.sh declare -i sum=0; for user in `cut -d: -f1 /etc/passwd`; do #取出用户 group=$(id $user | cut -d" " -f3 | awk -F, '{print $2}') #取出附加组 if [ -n "$group" ]; then #测试字符串是否不空,不空则为真,空则为假; echo $user #输出有附加组的用户 let sum++ #累加有附加组的用户数量 fi done echo "User number: $sum" [root@c6 shell]# chmod +x 7_12.sh [root@c6 shell]# bash -n 7_12.sh [root@c6 shell]# echo $? 0 [root@c6 shell]# bash 7_12.sh #执行 bin daemon adm postfix openstack User number: 5
13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至users目录,支持acl;
[root@c7 ~]# vgcreate #由于Centos7最小安装,没有该命令, -bash: vgcreate: 未找到命令 [root@c7 ~]# yum install -y lvm2 #使用些命令安装 [root@c7 ~]# fdisk -l | grep "^/dev" #sda5和sda6为刚分的磁盘,格式调整为8e /dev/sda1 * 2048 41945087 20971520 83 Linux /dev/sda2 41945088 50333695 4194304 82 Linux swap / Solaris /dev/sda3 50333696 251658239 100662272 5 Extended /dev/sda5 50335744 71307263 10485760 8e Linux LVM /dev/sda6 71309312 92280831 10485760 8e Linux LVM [root@c7 ~]# pvcreate /dev/sda5 #创建 Physical volume "/dev/sda5" successfully created [root@c7 ~]# pvcreate /dev/sda6 #创建 Physical volume "/dev/sda6" successfully created [root@c7 ~]# pvs #查看pvs信息 PV VG Fmt Attr PSize PFree /dev/sda5 lvm2 --- 10.00g 10.00g /dev/sda6 lvm2 --- 10.00g 10.00g [root@c7 ~]# vgcreate myvg -s 8 /dev/sda{5,6} #-s 8为设置PE为8MB Volume group "myvg" successfully created [root@c7 ~]# vgs #查看vg信息 VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- 19.98g 19.98g [root@c7 ~]# vgdisplay myvg #查看详细信息,20G和8MB --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 19.98 GiB PE Size 8.00 MiB Total PE 2558 Alloc PE / Size 0 / 0 Free PE / Size 2558 / 19.98 GiB VG UUID hlCe5B-jnvc-itBF-Nu5Z-a1rC-75zK-VuUvMG [root@c7 ~]# lvcreate -L 5G -n mylv1 myvg #创建5G的mylv1逻辑卷 Logical volume "mylv1" created. [root@c7 ~]# lvs #查看lvs,已有5G的mylv1逻辑卷 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1 myvg -wi-a----- 5.00g [root@c7 ~]# lvdisplay #显示详细信息 --- Logical volume --- LV Path /dev/myvg/mylv1 LV Name mylv1 VG Name myvg LV UUID EnMz3a-nT5R-zZII-IB9z-0vj0-UHKN-19lgsS LV Write Access read/write LV Creation host, time c7, 2016-09-28 07:23:46 +0800 LV Status available # open 0 LV Size 5.00 GiB Current LE 640 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 [root@c7 ~]# mke2fs -t ext4 /dev/myvg/mylv1 #格式化为ext4 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 #创建/user目录,自动挂载至此目录 [root@c7 ~]# mkdir /users [root@c7 ~]# echo "/dev/myvg/mylv1 /users ext4 defaults,acl,nodiratime 0 0" >> /etc/fstab [root@c7 ~]# mount -a [root@c7 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 20G 1.1G 18G 6% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 378M 0 378M 0% /run/user/0 /dev/mapper/myvg-mylv1 4.8G 20M 4.6G 1% /users
14、新建用户magedu;其家目录为users/magedu,而后su切换至此用户,复制多个文件至家目录;
[root@c6 ~]# mkdir /users #创建/users目录 [root@c6 ~]# useradd -d /users/magedu magedu #创建magedu,其家目录为/users/magedu [magedu@c6 ~]$ tail -1 /etc/passwd #验证用户 magedu:x:3004:3004::/users/magedu:/bin/bash [root@c6 ~]# su - magedu #切换到magedu用户下 [magedu@c6 ~]$ pwd /users/magedu [magedu@c6 ~]$ cp -a /etc/fstab /etc/issue /users/magedu/ #复制多个文件到/users/magedu/ [magedu@c6 ~]$ ls /users/magedu/ #查看文件 fstab issue
15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;
[root@c7 ~]# lvextend -L +4G /dev/myvg/mylv1 #加4G Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents). Logical volume mylv1 successfully resized. [root@c7 ~]# resize2fs /dev/myvg/mylv1 #检查文件 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/myvg/mylv1 is mounted on /users; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long. [root@c7 ~]# lvs #查看信息,加到9G LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1 myvg -wi-ao---- 9.00g [root@c7 ~]# df -h #查看磁盘 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 20G 1.1G 18G 6% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.6M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 378M 0 378M 0% /run/user/0 /dev/mapper/myvg-mylv1 8.8G 23M 8.3G 1% /users
16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;
[root@c7 ~]# umount /dev/myvg/mylv1 #卸载 [root@c7 ~]# df -h #查看磁盘,已卸载 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 20G 1.1G 18G 6% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.6M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 378M 0 378M 0% /run/user/0 [root@c7 ~]# e2fsck -f /dev/myvg/mylv1 #检查文件 e2fsck 1.42.9 (28-Dec-2013) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/myvg/mylv1: 11/589824 files (0.0% non-contiguous), 75551/2359296 blocks [root@c7 ~]# resize2fs /dev/myvg/mylv1 7G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/myvg/mylv1 to 1835008 (4k) blocks. The filesystem on /dev/myvg/mylv1 is now 1835008 blocks long. [root@c7 ~]# lvreduce -L -2G /dev/myvg/mylv1 #lv缩减至7G WARNING: Reducing active logical volume to 7.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce mylv1? [y/n]: y Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents). Logical volume mylv1 successfully resized. [root@c7 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1 myvg -wi-a----- 7.00g [root@c7 ~]# mount /dev/myvg/mylv1 /users/ #重新挂载 [root@c7 ~]# df -h #查看磁盘空间,改为7G 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 20G 1.1G 18G 6% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.6M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 378M 0 378M 0% /run/user/0 /dev/mapper/myvg-mylv1 6.8G 23M 6.5G 1% /users [root@c7 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Sep 28 04:55:14 2016 # # 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 # UUID=60220b4e-9c6d-4373-b06b-0b5687833781 / ext4 defaults 1 1 UUID=55ef4f5d-51cc-4de7-a17c-e96370afc1eb swap swap defaults 0 0 /dev/myvg/mylv1 /users ext4 defaults,acl,nodiratime 0 0
17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;
[root@c7 ~]# lvcreate -L 3G -p r -s -n mylv1.bak /dev/myvg/mylv1 #创建快照 Logical volume "mylv1.bak" created. [root@c7 ~]# lvs #查看mylv1.bak存在 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv1 myvg owi-aos--- 7.00g mylv1.bak myvg sri-a-s--- 3.00g mylv1 0.00 [root@c7 ~]# mkdir /snapshot #创建一个/snapshot用于挂载 [root@c7 ~]# mount /dev/myvg/mylv1 mylv1 mylv1.bak [root@c7 ~]# mount /dev/myvg/mylv1.bak /snapshot/ #挂载mylv1.bak到/snapshot mount: /dev/mapper/myvg-mylv1.bak 写保护,将以只读方式挂载 [root@c7 ~]# ls /snapshot/ #可以查看 lost+found