银河麒麟系统磁盘管理

银河麒麟系统磁盘管理

一、系统环境

  • Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso

二、磁盘管理

1.添加物理磁盘

image-20250904202350867

  • 系统识别磁盘,不重启系统重新扫描 SCSI 主机适配器识别到新连接的 SCSI 或 SATA 存储设备

    echo '- - -' > /sys/class/scsi_host/host32/scan
    或
    for i in /sys/class/scsi_host/host*/scan;do echo '- - -' > $i;done
    
  • 查询磁盘状态

    [root@elerejazgnbgskbhotwpgnga-virt ~]# lsblk -f
    NAME          FSTYPE      FSVER            LABEL  UUID                                   FSAVAIL FSUSE% MOUNTPOINT
    vda
    ├─vda1        xfs                                 cef7c1f3-78dc-4b61-8357-f688061b1eef      802M    21% /boot
    └─vda2        LVM2_member LVM2 001                3ZUHlu-LeW4-n5gi-FVH8-1LoC-rhUg-P1XP8b
      ├─klas-root xfs                                 ae96ac90-5cbc-4367-9d04-054aa5aea0f6     19.2G    29% /
      └─klas-swap swap        1                       d402647f-4944-4e73-95f4-ddfc8691de7c                  [SWAP]
    vdb           iso9660     Joliet Extension cidata 2025-09-04-11-59-08-00
    vdc
    vdd
    
    

2.磁盘格式管理

  • 设置磁盘 为 MBR

    fdisk /dev/vdc  # 替换为实际磁盘,如 /dev/sda
    
    输入 o 指令,确认后会清除磁盘原有分区并创建 MBR 格式:
    Command (m for help): o  # 清除并创建 DOS(MBR)分区表
    Created a new DOS disklabel with disk identifier 0xbd33cb8f.
    
    输入 w 写入分区表并退出:
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    查询格式配置
    [root@elerejazgnbgskbhotwpgnga-virt ~]# fdisk -l /dev/vdc
    Disk /dev/vdc: 10 GiB, 10737418240 bytes, 20971520 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
    Disklabel type: dos
    Disk identifier: 0xbd33cb8f
    
  • 设置磁盘 为 gpt

    gdisk /dev/vdd  # 替换为目标磁盘
    
    输入 o 指令,确认后会清除原有分区并创建 GPT 格式:
    Command (? for help): o  # 清除并创建 GPT 分区表
    This option deletes all partitions and creates a new protective MBR.
    Proceed? (Y/N): y
    
    输入 w 写入分区表并退出:
    Command (? for help): w
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/vdd.
    The operation has completed successfully.
    
    查询格式设置
    [root@elerejazgnbgskbhotwpgnga-virt ~]# fdisk -l /dev/vdd
    Disk /dev/vdd: 20 GiB, 21474836480 bytes, 41943040 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
    Disklabel type: gpt
    Disk identifier: CDF240A4-A8B0-404D-BEBE-9D889A0DA28E
    
    

3.磁盘分区管理

  • MBR格式分区

    [root@elerejazgnbgskbhotwpgnga-virt ~]# fdisk /dev/vdc
    
    Welcome to fdisk (util-linux 2.35.2).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    
    Command (m for help): n   #新建分区
    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p): p    # 主分区
    Partition number (1-4, default 1): 1   # 分区编号 
    First sector (2048-20971519, default 2048):   # 起始扇区(默认即可)
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, default 20971519): +4G
    # 分区大小
    Created a new partition 1 of type 'Linux' and of size 4 GiB.
    
    Command (m for help): n
    Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
    Select (default p): e  # 扩展分区
    Partition number (2-4, default 2): 2
    First sector (8390656-20971519, default 8390656):
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (8390656-20971519, default 20971519):
    
    Created a new partition 2 of type 'Extended' and of size 6 GiB.
    
    Command (m for help): n
    All space for primary partitions is in use.
    Adding logical partition 5   # 默认逻辑分区
    First sector (8392704-20971519, default 8392704):
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (8392704-20971519, default 20971519):
    
    Created a new partition 5 of type 'Linux' and of size 6 GiB.
    
    Command (m for help): p  #查看分区信息
    Disk /dev/vdc: 10 GiB, 10737418240 bytes, 20971520 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
    Disklabel type: dos
    Disk identifier: 0xbd33cb8f
    
    Device     Boot   Start      End  Sectors Size Id Type
    /dev/vdc1          2048  8390655  8388608   4G 83 Linux
    /dev/vdc2       8390656 20971519 12580864   6G  5 Extended
    /dev/vdc5       8392704 20971519 12578816   6G 83 Linux
    
    Command (m for help): w  #w 保存并退出
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    
    (可选)输入 t 更改分区类型(如 swap 分区为 82,默认 83 为 Linux 分区,8e为Linux LVM):
    plaintext
    Command (m for help): t
    Selected partition 1
    Hex code (type L to list all codes): 83
    
  • GPT格式分区

    [root@elerejazgnbgskbhotwpgnga-virt ~]# gdisk /dev/vdd
    GPT fdisk (gdisk) version 1.0.5.1
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with protective MBR; using GPT.
    
    Command (? for help): n   #新建分区
    Partition number (1-128, default 1): 1  # 分区编号
    First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:   # 起始扇区(默认即可)
    Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +11G   # 分区大小
    Current type is 8300 (Linux filesystem)
    Hex code or GUID (L to show codes, Enter = 8300):  # 分区类型(默认即可)
    ...
    Command (? for help): p  #查看分区信息
    Disk /dev/vdd: 41943040 sectors, 20.0 GiB
    Sector size (logical/physical): 512/512 bytes
    Disk identifier (GUID): CDF240A4-A8B0-404D-BEBE-9D889A0DA28E
    Partition table holds up to 128 entries
    Main partition table begins at sector 2 and ends at sector 33
    First usable sector is 34, last usable sector is 41943006
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048        23070719   11.0 GiB    8E00  Linux LVM
       2        23070720        41943006   9.0 GiB     8E00  Linux LVM
    
    输入 w 保存并退出:
    Command (? for help): w
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/vdd.
    The operation has completed successfully.
    
    (可选)输入 t 更改分区类型(默认 8300 为 Linux 分区,8e00为Linux LVM):
    Command (? for help): t
    Partition number (1-2): 2
    Current type is 8300 (Linux filesystem)
    Hex code or GUID (L to show codes, Enter = 8300): 8e00
    Changed type of partition to 'Linux LVM'
    
    

    partprobe 的作用就是强制内核重新检测磁盘分区表,使新的分区配置生效。

4.格式化文件系统

# 格式化为 ext4(最常用)
sudo mkfs.ext4 /dev/sdb1  # /dev/sdb1 为分区设备名

# 格式化为 xfs(适合大文件)
sudo mkfs.xfs /dev/sdb1

# 格式化为 swap(交换分区)
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1  # 启用 swap 分区
   swapoff -a       #禁用交换分区
  • 调整Linux 系统中控制内存交换的参数
如果需要调整该值,可以使用以下命令(临时生效):
sudo sysctl vm.swappiness=10  # 例如改为10,减少swap使用

若要永久生效,需编辑 /etc/sysctl.conf 文件,添加或修改:
vm.swappiness=10

5.挂载文件系统

#获取分区 UUID(唯一标识,避免设备名变动
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="4c419c89-d1d0-41e6-b249-fb291d7a82b4" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="45ec82ae-01"

编辑 /etc/fstab,添加如下行:
echo 'UUID=4c419c89-d1d0-41e6-b249-fb291d7a82b4 /data ext4    defaults        0 0' | sudo tee -a /etc/fstab

#更新挂载信息
systemctl daemon-reload

[root@localhost ~]# mount -a

[root@localhost ~]# mount -o remount /data

6.逻辑卷管理

  • 创建物理卷(将磁盘或分区初始化为 LVM 物理卷(PV)

    #确认目标设备
    [root@elerejazgnbgskbhotwpgnga-virt ~]# lsblk /dev/vdc /dev/vdd
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vdc    252:32   0  10G  0 disk
    ├─vdc1 252:33   0   4G  0 part
    ├─vdc2 252:34   0   1K  0 part
    └─vdc5 252:37   0   6G  0 part
    vdd    252:48   0  20G  0 disk
    ├─vdd1 252:49   0  11G  0 part
    └─vdd2 252:50   0   9G  0 part
    
    #创建PV
    [root@elerejazgnbgskbhotwpgnga-virt ~]# pvcreate /dev/vdc1 /dev/vdc5
      Physical volume "/dev/vdc1" successfully created.
      Physical volume "/dev/vdc5" successfully created.
    
    [root@elerejazgnbgskbhotwpgnga-virt ~]# pvs
      PV         VG   Fmt  Attr PSize   PFree
      /dev/vda2  klas lvm2 a--  <29.00g     0
      /dev/vdc1       lvm2 ---    4.00g  4.00g
      /dev/vdc5       lvm2 ---   <6.00g <6.00g
    
    查看 PV 信息:
    sudo pvdisplay   # 详细信息
    sudo pvs         # 简洁信息
    
    # 删除指定 PV(逐个删除)
    sudo pvremove /dev/sdb /dev/sdc
    
    # 输出示例(表示成功删除)
      Labels on physical volume "/dev/sdb" successfully wiped.
      Labels on physical volume "/dev/sdc" successfully wiped.
    
  • 创建卷组

    将多个 PV 组合成卷组(VG),作为逻辑卷的 “存储池”:
    
    创建 VG(命名为 my_vg,包含 /dev/sdb 和 /dev/sdc):
    [root@elerejazgnbgskbhotwpgnga-virt ~]# vgcreate my_vg /dev/vdc1 /dev/vdc5
      Volume group "my_vg" successfully created
    或者
    可指定 PE(物理扩展块)大小(默认 4MB):
    sudo vgcreate -s 16M my_vg /dev/sdb /dev/sdc  # PE 设为 16MB
    
    [root@elerejazgnbgskbhotwpgnga-virt ~]# vgs my_vg
      VG    #PV #LV #SN Attr   VSize VFree
      my_vg   2   0   0 wz--n- 9.99g 9.99g
    
    #使用 vgextend 命令将新 PV 加入目标卷组(以卷组 my_vg 为例)
    [root@elerejazgnbgskbhotwpgnga-virt ~]# vgextend my_vg /dev/vdd1
    
    查看 VG 信息:
    sudo vgdisplay my_vg  # 详细信息(含总大小、空闲空间)
    sudo vgs my_vg        # 简洁信息
    
    # 删除指定卷组
    sudo vgremove my_vg
    
    # 确认删除
    Do you really want to remove volume group "my_vg" containing 0 logical volumes? [y/n]: y
      Volume group "my_vg" successfully removed
    
  • 创建逻辑卷

    从 VG 中划分空间创建逻辑卷(LV),可直接作为 “分区” 使用:
    
    创建 LV(命名为 my_lv,从 my_vg 中分配 7GB 空间):
    
    [root@elerejazgnbgskbhotwpgnga-virt ~]# lvcreate -L 7G -n my_lv my_vg
      Logical volume "my_lv" created.
      
    其他常用选项:
    按 PE 数量分配,分配全部空闲空间:
    sudo lvcreate -l +100%FREE -n my_lv my_vg
    
    [root@elerejazgnbgskbhotwpgnga-virt ~]# lvs /dev/my_vg/my_lv
      LV    VG    Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      my_lv my_vg -wi-a----- 7.00g
    
    查看 LV 信息:
    sudo lvdisplay /dev/my_vg/my_lv  # 详细信息
    sudo lvs /dev/my_vg/my_lv        # 简洁信息
    
    # 删除指定 LV(需提供完整路径)
    sudo lvremove /dev/my_vg/my_lv
    
    # 系统会提示确认,输入 y 执行删除
    Do you really want to remove and DISCARD active logical volume my_vg/my_lv? [y/n]: y
    ----------------------------------------------------------------------------------
    LV 扩容(扩展逻辑卷大小)
    # 增加指定大小(如增加 50GB)
    sudo lvextend -L +50G /dev/my_vg/my_lv
    
    # 使用 VG 中全部空闲空间
    sudo lvextend -l -r +100%free /dev/my_vg/my_lv
    -L:指定绝对大小或增减量(带 + 号)
    -l:按物理扩展块(PE)数量操作(+100%FREE 表示全部空闲 PE)
    
    LV 扩容后,需同步扩展文件系统才能识别新增空间,不同文件系统命令不同
    ext4/xfs 格式(最常用):
    # ext4 格式(无需卸载,在线扩容)
    sudo resize2fs /dev/my_vg/my_lv
    
    # xfs 格式(需先挂载,且只能扩容不能缩容)
    sudo xfs_growfs /mnt/my_lv  # 需指定挂载点而非设备路径
    -----------------------------------------------------------------------------------
    LV 缩容(减小逻辑卷大小)
    缩容风险较高,需严格按步骤操作(xfs 格式不支持缩容,仅 ext4/ext3 等支持):
    1. 卸载 LV(必须卸载)
    [root@elerejazgnbgskbhotwpgnga-virt ~]# umount /opt
    
    2. 检查文件系统完整性(关键,避免数据损坏)
    # ext4/ext3 格式
    [root@elerejazgnbgskbhotwpgnga-virt ~]# e2fsck -f /dev/my_vg/my_lv  #-f:强制检查(即使系统认为文件系统正常)
    e2fsck 1.45.6 (20-Mar-2020)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    /dev/my_vg/my_lv: 11/468640 files (0.0% non-contiguous), 53896/1891328 blocks
    
    3. 缩小文件系统(先于 LV 缩容,顺序不能反
    # 缩小文件系统到目标大小(如 6GB)
    [root@elerejazgnbgskbhotwpgnga-virt ~]# resize2fs /dev/my_vg/my_lv 6G
    resize2fs 1.45.6 (20-Mar-2020)
    Resizing the filesystem on /dev/my_vg/my_lv to 1572864 (4k) blocks.
    The filesystem on /dev/my_vg/my_lv is now 1572864 (4k) blocks long.
    #目标大小必须 小于当前 LV 大小,且大于实际数据占用空间
    
    4. 缩小 LV 大小
    # 缩小到目标大小(需与文件系统大小一致,如 6GB)
    [root@elerejazgnbgskbhotwpgnga-virt ~]# lvreduce -L 6G /dev/my_vg/my_lv
      WARNING: Reducing active logical volume to 6.00 GiB.
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce my_vg/my_lv? [y/n]: y   #若提示确认,输入 y 继续(确保已备份数据)
      Size of logical volume my_vg/my_lv changed from 7.21 GiB (1847 extents) to 6.00 GiB (1536 extents).
      Logical volume my_vg/my_lv successfully resized.
    
    5. 重新挂载 LV
    [root@elerejazgnbgskbhotwpgnga-virt ~]# mount /dev/my_vg/my_lv /opt
    
    

7.LV快照管理

#查看原 LV 和 VG 信息
#查看原 LV 信息(确认路径和大小)
sudo lvs /dev/my_vg/my_lv

# 查看 VG 空闲空间(确保有足够空间创建快照)
sudo vgs my_vg

sudo lvcreate -s -L 10G -n my_lv_snap -p r/dev/my_vg/my_lv
参数说明:
-s:指定创建快照(snapshot)。
-L 10G:设置快照大小(根据原 LV 数据变化量预估,不足会导致快照失效)。
-n my_lv_snap:快照名称。

挂载快照(像使用普通 LV 一样):
sudo mkdir /mnt/snap
sudo mount /dev/my_vg/my_lv_snap /mnt/snap
挂载后可查看或复制快照创建时刻的文件数据。
备份数据(例如打包快照内容):
sudo tar -czvf /backup/my_lv_snap_backup.tar.gz -C /mnt/snap .

#挂载快照,xfs注意要使用-0 ro实现只读,防止快照被修改
mkdir -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap

#恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
[root@elerejazgnbgskbhotwpgnga-virt ~]# lvconvert --merge /dev/my_vg/my_lv_snap
  Merging of volume my_vg/my_lv_snap started.
  my_vg/my_lv: Merged: 100.00%


# 先卸载快照(若已挂载)
sudo umount /mnt/snap

# 删除快照
sudo lvremove /dev/my_vg/my_lv_snap
# 提示确认时输入 y

8.迁移磁盘PV

将 /dev/sdc5 上的所有数据迁移到卷组中其他可用 PV:
[root@elerejazgnbgskbhotwpgnga-virt ~]# pvmove /dev/vdc5
  /dev/vdc5: Moved: 0.07%
  /dev/vdc5: Moved: 15.96%
  /dev/vdc5: Moved: 33.81%
  /dev/vdc5: Moved: 51.92%
  /dev/vdc5: Moved: 69.77%
  /dev/vdc5: Moved: 88.27%
  /dev/vdc5: Moved: 100.00%

或者
将 /dev/sdb 的数据迁移到 /dev/sdc(需确保 /dev/sdc 已加入同一 VG):
sudo pvmove /dev/sdb /dev/sdc

#使用 vgreduce 从卷组中移除指定 PV
[root@elerejazgnbgskbhotwpgnga-virt ~]# vgreduce my_vg /dev/vdc5
  Removed "/dev/vdc5" from volume group "my_vg"

#清除其 PV 标识
[root@elerejazgnbgskbhotwpgnga-virt ~]# pvremove /dev/vdc5
  Labels on physical volume "/dev/vdc5" successfully wiped.
posted @ 2025-09-24 22:26  茨格  阅读(90)  评论(0)    收藏  举报