linux分区

  1. 描述GPT是什么,应该怎么使用。
  2. 创建一个10G的分区,并格式化为ext4文件系统。要求:2、创建一个10G的分区,并格式化为ext4文件系统。要求:
    (1)block大小为2048,预留空间20%,卷标为MYDATA, (2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。 (3)可开机自动挂载。
  3. 创建一个大小为1G的swap分区,并启用。
  4. 编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。
  5. 将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com
  6. 编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
  7. lvm基本应用以及扩展缩减实现。

描述GPT

   GPT:GUID(Globals Unique ldentifiers)partition table 支持128个分区,使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)
   使用128位UUID(Universally Unique ldentifier)表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
  UEFI(统一扩展固件接口)硬件支持GPT,使操作系统启动
globals 全局变量
如果一块大小512字节 支持8Z 如果一块大小4096字节,就支持64Z
GUID (globals unique identifiers全球唯一的标识符) 的分区表 Partition table
8z(亿)
UUID (universally unique ldentifier 通用唯一的标识符)
一个16位进制数相当于4个2进制位 占4位bit 总共32
32*4=128位

保护性的MBR,是为了一些旧软件识别不出新的GPT分区,就会认为是一个无用硬盘,操作时可能会造成数据的破坏
可以分128的分区表
第二部分就是分区的位置
不用刻意备份,背后有一个备份分区表

它具有如下优点:
1、支持2TB以上的大硬盘。
2、每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。
3、分区大小几乎没有限制。又是一个“几乎”。因为它用64位的整数表示扇区号,即 = 18,446,744,073,709,551,616。
4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;
5、循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
6、 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;
7、每个分区可以有一个名称(不同于卷标)。
要想使用GPT分区表必须是UEFI BIOS环境,UEFI和GPT相辅相成的,二者缺一不可,现在的服务器主板基本采用UEFI+BIOS共存模式,并且BIOS中集成UEFI启动项,如果我们的系统盘大小超过了2T我们需要使用UEFI模式进行系统安装并进行系统启动,在对大于2T的非系统盘进行分区时我们需要选择GPT分区格式。

创建一个10G的分区,并格式化为ext4文件系统,要求:

   (1)block大小为2048,预留空间20%,卷标为MYDATA,
   (2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
   (3)可开机自动挂载。
1、分出一块10G的磁盘空间出来
      fdisk -n 1 -p 1 10G
2、创建文件系统
      mkfs.ext4 -b 2048 -m 20 -L MYDATA
3、挂载/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
      mkidrr /mydata
      mount -o noexec noatime /mydata /dev/sdb1
4、设置开机自动挂载
vim /etc/fstab
UUID=5a64692e-8e10-4a1f-a32d-0bddf8c4fcb8 /mydata ext4 defaults,acl,noexec,noatime 0 0

创建一个大小为1G的swap分区,并启用

1、创建一个大小为1G的swap分区,

[root@CA ~]#fdisk /dev/sda3
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd41f82e8.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-62914559, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): +1G
Partition 1 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sda3: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd41f82e8

     Device Boot      Start         End      Blocks   Id  System
/dev/sda3p1            2048     2099199     1048576   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): l
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'

Command (m for help): p

Disk /dev/sda3: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd41f82e8

     Device Boot      Start         End      Blocks   Id  System
/dev/sda3p1            2048     2099199     1048576   82  Linux swap / Solaris

2.第二步创建swap 分区
mkswap /dev/sdb1 -L swap_sdb1
3.启用分区
#echo “UUID=7e1b513d-d3bb-4d64-aee0-56ac3417a5fe” swap swap defaults 0 0 >>/etc/fstab
4.挂载生效
swapon -a
5.swapon -s查看生效

编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和

#!/bin/bash
#
#===============================================
#Author:                MMMMM
#QQ:                xxxxxxx
#Date:              2019-03-04
#Filename:          10+20id.sh
#URL:               xxxxxxxxxx
#Description:           The test script
#Copyright(c):  2019ALL rights reserved
#================================================
nums=`awk '{print NR}' /etc/passwd |tail -n1`
while   [ -z  $user3   ]     ;do
read -p "Please input id: " num1
if [ -z $num1 ] ;then
     echo "please not empty"
     echo "总id数是 $nums"
elif [ "$num1" -gt "$nums" ] ;then
    echo "num1 is too big"
else 
 echo "输入的是第 $num1 个用户"
user1=`grep -n ".*"  /etc/passwd |sed -r "s/([0-9]+):.*:.*:([0-9]+):.*/\1,\2/" |grep
  ^$num1, |cut -d, -f2`
    if [ -n $num1 ] ;then
        read -p "Please input idi2: " num2 
if [ -z $num2 ] ;then
    echo "please not empty"
         echo "总共$nums 个用户"
elif [ "$num2" -gt "$nums" ] ;then
    echo num2 is too big
else
    echo "输入的是第$num2 个用户"
user2=`grep -n ".*"  /etc/passwd |sed -r "s/([0-9]+):.*:.*:([0-9]+):.*/\1,\2/" |grep
  ^$num2, |cut -d, -f2`
    fi
fi
        if [ -n $user1 -a -n $user2 ];then
            user3=`echo $user1+$user2|bc`
        fi     
 fi
user3=`echo $user1+$user2|bc`
done
echo count is $user3   

执行效果

[root@centos7 ~]#./10+20id.sh   
Please input id: 10
输入的是第 10 个用户
Please input idi2: 29
输入的是第29 个用户
count is 107

将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com

name=`hostname`
  echo "current hostname  is $name"
  if [ -z $name -o $name == "localhost.localdomain" ];then
    `hostname magedu.com;exit`
    fi
    exit   

编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数

[root@CA ~]#vim testid.sh 
#!/bin/bash
#
#===============================================
#Author:                MMMMM
#QQ:                xxxxxxx
#Date:              2019-03-08
#Filename:          testid.sh
#URL:               xxxxxxxxxx
#Description:           The test script
#Copyright(c):  2019ALL rights reserved
#================================================
read -p "Please input the idname: "  id
    if [ -z $id ];then
        echo 'please not empty'
    elif [ `id $id &>/dev/null ; echo $?` -eq 1 ] ;then
        echo " $id is not exist"
    else
        name= grep $id /etc/passwd
        nameid=`grep -E "^$id\>" /etc/passwd|cut -d: -f3`
        echo $name,$nameid
        if [ `echo $nameid%2 |bc ` -eq 0 ];then                              
        echo 'oushu'
        else
            echo jishu
        fi
    fi

lvm基本应用以及扩展缩减实现

    逻辑卷管理器(LVM)
      允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
      允许在多个物理设备间重新组织文件系统
         将设备指定为物理卷
         用一个或者多个物理卷来创建一个卷组
         物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
         在物理卷上创建的逻辑卷,是由物理区域(PE)组成
         可以在逻辑卷上创建文件系统

    LVM介绍
        LVM:logical volume manger,version:2
       dm:device mapper:将一个或多个底层块设备组织成一个逻辑块设备的模块
       设备名:/dev/dm-#
       软链接:
              /dev/mapper/VG_NAME-LV_Name
           /dev/mapper/vol0-root
              /dev/VG_NAME/LV_NAME
           /dev/vol0/root

    vg管理工具
      显示卷组
   vgs
   vgdisplay
      创建卷组
   vgcreate [-s #【kKmMgGtTpPeE】]VolumeGroupName PhysicalDevicePath
   [PhysicalDevicePath…]
   管理卷组
      vgextend VolumeGroupName PhysicalDevicePath[PhysicalDevicePath…]
      vgreduce VolumeGroupName PhysicalDevicePath[PhysicalDevicePath…]
   删除卷组
      先做pvmove,再做vgremove
lvm逻辑卷相当于普通分区来讲,优势是方便扩展空间
我们创建文件系统,分区分完了,是无法修改分区大小的
pvcreate
先把普通的硬盘或者分区变成物理卷,physical volumes 物理卷
相当于给硬盘或者分区贴个标签,表明将来不是分区用了,是当逻辑卷用
有4个硬盘或者分区就会形成4个物理卷,
vgcreate
volume group 卷组
把四个物理卷的分区逻辑的组合成一个大的单位=一个大硬盘
lvcreate
创建逻辑卷,等于吧之前卷组的空间拿出一部分作为逻辑卷分区
PE physical extent 物理的扩展盘区 ~= raid chunk

1.先把普通的分区和硬盘变成物理卷 pvcreate
2.通过vgcreate 把已经有的物理卷加入到卷组
3.再从卷组中分出一部分作为逻辑卷

    创建逻辑卷
1、先把普通的分区和硬盘变成物理卷 pvcreate

     [root@telnet-server ~]#pvcreate /dev/sdb{2,3}
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.
          root@telnet-server ~]#pvdisplay
      --- Physical volume ---
      PV Name               /dev/sdb2
      VG Name               vg1
      PV Size               1.00 GiB / not usable 16.00 MiB
      Allocatable           yes 
      PE Size               16.00 MiB
      Total PE              63
      Free PE               63
      Allocated PE          0
      PV UUID               nXGojh-PqDe-m530-uRz5-WxCy-mnDg-q5sekn
       
      --- Physical volume ---
      PV Name               /dev/sdb3
      VG Name               vg1
      PV Size               1.00 GiB / not usable 16.00 MiB
      Allocatable           yes 
      PE Size               16.00 MiB
      Total PE              63
      Free PE               63
      Allocated PE          0
      PV UUID               bSXF7F-wx7I-Biu4-GUTM-lldZ-YcJ2-kBRfjt

2、通过vgcreate 把已经有的物理卷加入到卷组,再从卷组中分出一部分作为逻辑卷
vgs查看现有的卷组 vgcreate创建卷组,把单个独立的分区硬盘组合到一块
指定卷组名 vg1 指定哪些成员分区 /dev/sdb{2,3} -s指定PE的大小

[root@telnet-server ~]#vgcreate -s 16M /dev/sdb{2,3}
  /dev/sdb2: already exists in filesystem
  Run `vgcreate --help' for more information.
[root@telnet-server ~]#vgcreate -s 16M vg1 /dev/sdb{2,3}
  WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
  Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
  Volume group "vg1" successfully created
[root@telnet-server ~]#vgs
  WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
  Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
  VG         #PV #LV #SN Attr   VSize  VFree 
  centos7vg0   2   1   0 wz-pn-  2.99g  1.99g
  vg0          3   1   0 wz--n- 20.98g 10.98g
  vg1          2   0   0 wz--n- <1.97g <1.97g
[root@telnet-server ~]#vgdisplay
  --- Volume group ---
  VG Name               vg1
  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               <1.97 GiB
  PE Size               16.00 MiB
  Total PE              126
  Alloc PE / Size       0 / 0   
  Free  PE / Size       126 / <1.97 GiB
  VG UUID               2PfeLx-nYZK-jEXP-XtkH-0jKQ-1XNc-Py08Kf
   
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  11
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               20.98 GiB
  PE Size               16.00 MiB
  Total PE              1343
  Alloc PE / Size       640 / 10.00 GiB
  Free  PE / Size       703 / 10.98 GiB
  VG UUID               f9eFqr-xkcT-Yzpx-rNZs-1Y3O-DtNh-fpHLsX
   
  WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
  Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
  --- Volume group ---
  VG Name               centos7vg0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  17
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                1
  VG Size               2.99 GiB
  PE Size               4.00 MiB
  Total PE              766
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               Jn0uMM-24t0-J41A-0Ny3-tnzJ-s2xA-2MjX0P

3、创建逻辑卷 lvcreate -n 卷名 lv1 , -L是以容量为单位 -l是以PE个数为单位 (写小l更精确)

[root@telnet-server ~]#lvcreate -n lv1 -l 100 vg1
WARNING: xfs_external_log signature detected on /dev/vg1/lv1 at offset 12288. Wipe it? [y/n]: y
  Wiping xfs_external_log signature on /dev/vg1/lv1.
  Logical volume "lv1" created.
[root@telnet-server ~]#lvs
  WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
  Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
  LV         VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  centos7lv0 centos7vg0 -wi-a-----  1.00g                                                    
  lv0        vg0        -wi-a----- 10.00g                                                    
  lv1        vg1        -wi-a-----  1.56g                                                    
[root@telnet-server ~]#lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                nvFDSx-Zfn4-iICF-Ibly-ufDh-yGcQ-RzXtSD
  LV Write Access        read/write
  LV Creation host, time telnet-server, 2019-03-11 00:37:01 +1200
  LV Status              available
  # open                 0
  LV Size                1.56 GiB
  Current LE             100
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                YnW5f3-LspP-2egr-j09s-kAXK-UNIe-spTVO7
  LV Write Access        read/write
  LV Creation host, time centos6.lmhc, 2019-01-25 04:24:27 +1200
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             640
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
  Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
  --- Logical volume ---
  LV Path                /dev/centos7vg0/centos7lv0
  LV Name                centos7lv0
  VG Name                centos7vg0
  LV UUID                6C3dEz-Xdfa-yI61-wmG2-ykxD-Bgoe-5KxUk0
  LV Write Access        read/write
  LV Creation host, time centos7.lmhc, 2019-01-29 09:31:29 +1200
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

4、创建完逻辑卷需要创建文件系统,blkid查看是否有文件系统

[root@telnet-server ~]#blkid /dev/vg1/lv1  #无文件系统
[root@telnet-server ~]#mkfs.ext4 /dev/vg1/lv1  创建文件系统
[root@telnet-server ~]#blkid /dev/vg1/lv1 #可以使用文件系统
/dev/vg1/lv1: UUID="575a996f-4e4b-4c52-aff5-cc0e32406129" TYPE="ext4" 

    扩展逻辑卷

1、给逻辑卷扩展,需要先扩展卷组,加一块硬盘

[root@telnet-server ~]#echo ‘- - -’ >/sys/class/scsi_host/host2/scan

2、先将新加的硬盘变成物理卷
[root@telnet-server ~]#pvcreate /dev/sdd

3、扩展卷组,把新的物理卷加入卷组 vgextend

 [root@telnet-server ~]#vgextend vg1 /dev/sdd 

4、扩展逻辑卷,把卷宗里的空间分配到逻辑卷 lvextend 逻辑卷的PE叫LE

[root@telnet-server ~]#lvextend -L  +5G /dev/vg1/lv1

5、df挂载还是没有增加空间是因为原来的逻辑卷加进去没有文件系统无法存数据
所以需要同步文件系统 resize2fs

[root@telnet-server ~]#lresize2fs /dev/vg1/lv1

注意:lvextend -r -l -r扩容的时候顺便把文件系统也同步了

    缩减逻辑卷
缩小空间是危险的,很容易丢失数据, 如果要压缩,一定要先备份再压缩 centos xfs系统只能扩,不能缩;
缩减必须是离线缩减,所以必须取消挂载

1.取消挂载 umount

 [root@telnet-server ~]#umount /dev/vg1/lv1

2.缩减文件系统(先做文件系统检查 e2fsck -f /dev/vg0/lv0)

 [root@telnet-server ~]#fsck -f /dev/vg1/lv1
 [root@telnet-server ~]#resize2fs /dev/vg1/lv1 10G  #缩减文件系统到10g

3.缩减逻辑卷 缩减的空间必须跟之前的文件系统缩减一致

  [root@telnet-server ~]#lvreduce -L 10G /dev/vg1/lv1

    删除卷宗
删除vg 卷宗 中pv 物理卷
pvmove /dev/sdd
vgreduce vg0 /dev/sdd 从vg0卷宗中删除dev/sdd
pvremove /dev/sdd

**pvcreate 创建物理卷
vgcreate 创建卷组
lvcreate创建逻辑卷
lvdisplay查看逻辑卷
mkfs.xfs /dev/vg0/lv0 创建xfs文件系统
mkdir /mnt/lv0 创建文件夹
mount /dev/vg0/lv0 /mnt/lv0挂载
**
vgrename 修改卷组名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值