银河麒麟系统磁盘管理
银河麒麟系统磁盘管理
一、系统环境
- Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
二、磁盘管理
1.添加物理磁盘

-
系统识别磁盘,不重启系统重新扫描 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.

浙公网安备 33010602011771号