0%

通过 devstack 方式安装的 all-in-one,如果在服务器重启之后,很多 OpenStack 服务是起不来的,这个时候需要执行一些命令。

OpenStack 服务启动失败

1
2
3
4
5
6
7
8
sudo su - stack

sudo losetup -f /opt/stack/data/stack-volumes-default-backing-file
sudo losetup -f /opt/stack/data/stack-volumes-lvmdriver-l-backing-file
script /dev/null
screen -c /opt/stack/devstack/stack-screenrc

ctrl + A,然后 D 退出

之前不知道什么原因,导致我的 hexo 博客不能用了,然后就重新部署了一下,参照我之前的配置:

https://yuanzizhen.github.io/2017/03/11/%E7%94%A8Hexo%E5%9C%A8Github%E4%B8%8A%E9%9D%A2%E9%83%A8%E7%BD%B2%E5%8D%9A%E5%AE%A2/

但是依然遇到了很多坑,特此写在这里。

1、使用 npm 安装 hexo 的时候屡次不成功。解决办法:

使用淘宝 NPM 镜像:

1
2
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g hexo

参考:http://www.runoob.com/nodejs/nodejs-npm.html

2、github 生成 ssh 失败

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ ssh-keygen -t rsa -C C "iyuanzz@qq.com"
Too many arguments.
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa]
[-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-m key_format] [-f input_keyfile]
ssh-keygen -e [-m key_format] [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-f known_hosts_file] [-l]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-f input_keyfile] [-g]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
[-j start_line] [-K checkpt] [-W generator]
ssh-keygen -s ca_key -I certificate_identity [-h] [-U]
[-D pkcs11_provider] [-n principals] [-O option]
[-V validity_interval] [-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file ...
ssh-keygen -Q -f krl_file file ...

解决办法:

删除一个 C 解决

2、使用命令hexo d 无法部署

解决办法

重新设置:

1
npm install hexo-deployer-git --save

最终部署成功!

创建存储池

我这里选择 glance 使用控制节点的存储,VM 保存在计算节点上,备份没有配置,所以 Ceph 只作为卷使用。

在 Ceph 节点上面,创建存储池:

1
2
[root@node1 ~]# ceph osd pool create volumes 128
pool 'volumes' created

根据官方文档,这里初始化存储池失败。

1
2
[root@node1 ~]# rbd pool init volumes
error: unknown option 'pool init volumes'

配置 OpenStack 为 Ceph 客户端

运行 glance-api, cinder-volume, nova-compute , cinder-backup 进程的节点都需要 Ceph 客户端。每一个都要有 ceph.conf 文件。

在计算节点和控制节点上创建 Ceph 目录:

1
2
[root@controller ~]# cd /etc
[root@controller etc]# mkdir ceph

将配置文件传到控制节点和计算节点:

1
[root@node1 ~]# ssh root@compute01 sudo tee /etc/ceph/ceph.conf < /etc/ceph/ceph.conf

我部署的 OpenStack 为一个控制节点和一个计算节点。 glance-api 运行在控制节点上,cinder-volume, nova-compute 运行在计算节点上,因此,控制节点和计算节点都需要配置为 Ceph 客户端。

安装 Ceph 客户端安装包

glance-api 节点(控制节点)上,需要安装 librbd 的 Python 绑定:

1
[root@controller ~]# sudo yum install python-rbd

cinder-volume, nova-compute 节点(计算节点)上,安装 Python 绑定以及 Ceph 命令行工具:

1
2
[root@compute01 ~]# sudo yum install ceph-common
[root@controller ~]# sudo yum install python-rbd

配置 Ceph 客户端授权

从 Ceph monitor 节点,为 Cinder 创建一个新用户。

1
2
3
[root@node1 ~]# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
[client.cinder]
key = AQDXCvRZ+OpCFBAANnmyibi/4vtZtyu5HJcQvw==

为 client.cinder 添加密钥环并改变所属者。

1
2
3
4
[root@node1 ~]# ceph auth get-or-create client.cinder | ssh root@compute01 sudo tee /etc/ceph/ceph.client.cinder.keyring
root@compute01's password:
[root@node1 ~]# ssh root@compute01 chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
root@compute01's password:

运行 nova-compute 的节点还需要将 client.cinder 用户的密钥存储在 libvirt 中。在从 Cinder 中添加块设备时,libvirt 进程需要它访问群集。

在运行 nova-compute 的节点上创建密钥的临时副本:

1
[root@node1 ~]# ceph auth get-key client.cinder | ssh root@compute01 tee client.cinder.key

在计算节点上,为密钥生成 UUID, 并保存 UUID,以便待会配置 nova-compute。

1
[root@compute01 ~]# uuidgen > uuid-secret.txt

然后在计算节点上,向 libvirt 中添加密钥,并删除临时副本:

1
2
3
4
5
6
7
8
9
10
11
[root@compute01 ~]# cat > secret.xml <<EOF
> <secret ephemeral='no' private='no'>
> <uuid>`cat uuid-secret.txt`</uuid>
> <usage type='ceph'>
> <name>client.cinder secret</name>
> </usage>
> </secret>
> EOF

[root@compute01 ~]# virsh secret-define --file secret.xml
[root@compute01 ~]# virsh secret-set-value --secret $(cat uuid-secret.txt) --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml

配置 Cinder

cinder-volume 节点需要 Ceph 块设备,volume 存储池,用户以及密钥的 UUID,才能和 Ceph 块设备连接。要配置 Cinder,请执行以下步骤:

  1. 打开 Cinder 配置文件。

    1
    [root@compute01 ~]# vim /etc/cinder/cinder.conf
  2. [DEFAULT] 选项中,开启 Ceph 作为 Cinder 后端存储。

    1
    enabled_backends = ceph
  3. 确认 Glance API 版本是 2。如果你在enabled_backends 中配置了多后端, glance_api_version = 2 必须在 [DEFAULT] 选项中设置而不是在 [ceph] 选项中。

    1
    glance_api_version = 2
  4. cinder.conf 中创建一个 [ceph] 选项,添加以下部分到 [ceph] 选项中。

  5. 设置 volume_driver 使用 Ceph 后端存储。

    1
    volume_driver = cinder.volume.drivers.rbd.RBDDriver
  6. 设置集群名称以及 Ceph 配置文件的位置。

    1
    2
    rbd_cluster_name = e8b7ae85-8d03-4160-becc-10df8f385c59
    rbd_ceph_conf = /etc/ceph/ceph.conf
  7. 默认情况下,OSP 在 rbd 池中存储 Ceph 卷。

    1
    rbd_pool = volumes
  8. 指定 rbd_user ,把它设置为 cinder 用户。然后指定 rbd_secret_uuid ,UUID 存储在 uuid-secret.txt 文件中。

    1
    2
    rbd_user = cinder
    rbd_secret_uuid = 0fb0bd0a-7926-4c4a-b015-b1cfa3f86456
  9. 指定以下设置。

    1
    2
    3
    4
    rbd_flatten_volume_from_snapshot = false
    rbd_max_clone_depth = 5
    rbd_store_chunk_size = 4
    rados_connect_timeout = -1

最终的设置应该像下面一样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[DEFAULT]
enabled_backends = ceph
glance_api_version = 2
···
[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_cluster_name = e8b7ae85-8d03-4160-becc-10df8f385c59
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_pool = volumes
rbd_user = cinder
rbd_secret_uuid = 0fb0bd0a-7926-4c4a-b015-b1cfa3f86456
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1

重启 OpenStack 服务

1
2
[root@compute01 ~]# systemctl restart openstack-cinder-volume
[root@compute01 ~]# systemctl restart openstack-nova-compute

参考

https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html-single/ceph_block_device_to_openstack_guide/#restarting_openstack_services

官方文档基本没用。

预检

ceph 集群采用如下的架构:

安装 Ceph 部署工具(管理节点)

添加向管理节点上添加 Ceph 仓库,然后安装 ceph-deploy 工具。

  1. 添加并启用 EPEL 仓库:

    1
    [root@admin-node ~]# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  1. 向 yum 配置文件中添加 Ceph 仓库,yum 配置文件在 /etc/yum.repos.d/ceph.repo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@admin-node ~]# vim /etc/yum.repos.d/ceph.repo

    [ceph-noarch]
    name=Ceph noarch packages
    baseurl=https://download.ceph.com/rpm/el7/noarch
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=https://download.ceph.com/keys/release.asc
  2. 更新仓库并安装 ceph-deploy 工具:

    1
    2
    [root@admin-node ~]# yum update
    [root@admin-node ~]# yum install ceph-deploy

Ceph 节点安装

安装 NTP

1
2
3
4
5
6
[root@ceph_node ~]# yum install ntp ntpdate ntp-doc
[root@ceph_node ~]# ntpdate pool.ntp.org
[root@ceph_node ~]# systemctl restart ntpdate
[root@ceph_node ~]# systemctl restart ntpd
[root@ceph_node ~]# systemctl enable ntpd
[root@ceph_node ~]# systemctl enable ntpdate

安装 SSH 服务器

1
2
[root@ceph_node ~]# sudo yum install openssh-server
[root@ceph_node ~]# systemctl status sshd # 确保 SSH 服务器在所有 Ceph 节点上运行

创建一个 Ceph 部署用户

  1. 在每个 Ceph 节点上创建一个新用户(storage):

    1
    2
    [root@ceph_node ~]# useradd -d /home/storage -m storage
    [root@ceph_node ~]# passwd storage
  2. 确保用户具有 sudo 特权:

    1
    2
    [root@ceph_node ~]# echo "storage ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/storage
    [root@ceph_node ~]# sudo chmod 0440 /etc/sudoers.d/storage

开启无密码 SSH(管理节点)

  1. 生成 SSH 密钥,但是不要用 sudo 或者 root 用户。口令保留为空。

    1
    2
    3
    4
    5
    6
    7
    8
    [storage@admin-node ~]$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/storage/.ssh/id_rsa):
    Created directory '/home/storage/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/storage/.ssh/id_rsa.
    Your public key has been saved in /home/storage/.ssh/id_rsa.pub.
  2. 复制密钥到各个 Ceph 节点。

    1
    2
    3
    [storage@admin-node ~]$ ssh-copy-id storage@controller
    [storage@admin-node ~]$ ssh-copy-id storage@compute01
    [storage@admin-node ~]$ ssh-copy-id storage@compute02

这里官方文档建议可以修改 ~/.ssh/config 文件,把用户名写进去,这样在 ceph-deploy 时就不用指定用户名,事实证明,这个方法无效,会提示拒绝访问。还是指定用户名比较好。

关闭防火墙和 SELINUX

1
2
3
4
5
[root@ceph_node ~]# systemctl stop firewalld
[root@ceph_node ~]# systemctl disable firewalld
[root@ceph_node ~]# setenforce 0
[root@ceph_node ~]# vim /etc/selinux/config
SELINUX=disabled

安装优先软件包

1
[root@ceph_node ~]# yum install yum-plugin-priorities

快速安装存储集群

先在管理节点上创建一个目录,这样,所有生成的文件都会保存在该目录下。

1
2
[storage@admin-node ~]$ mkdir my-cluster
[storage@admin-node ~]$ cd my-cluster

不要用 sudo 或者 root 用户执行 ceph-deploy 命令,因为它不会在远程主机上调用所需的 sudo 命令。

从头开始

如果在某些地方遇到麻烦,可以执行下面的命令从头开始。

1
2
3
4
[storage@admin-node ~]$ ceph-deploy --username storage purge {ceph-node} [{ceph-node}]
[storage@admin-node ~]$ ceph-deploy --username storage purgedata {ceph-node} [{ceph-node}]
[storage@admin-node ~]$ ceph-deploy forgetkeys
[storage@admin-node ~]$ rm ceph*

创建集群

  1. 创建集群。先初始化监控节点。

    1
    [storage@admin-node my-cluster]$ ceph-deploy --username storage new controller

    查看输出 ls 你可以看到一个 Ceph 配置文件 ceph.conf 一个监控密钥环 ceph.mon.keyring 还有一个日志文件。

    1
    2
    [storage@admin-node my-cluster]$ ls
    ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
  2. 安装 Ceph 软件包。

    1
    [storage@admin-node my-cluster]$ ceph-deploy --username storage install controller compute01 compute02
  3. 配置初始 monitor 并收集密钥环。

    1
    [storage@admin-node my-cluster]$ ceph-deploy mon create-initial

    官方文档说会有以下输出:

    • ceph.client.admin.keyring
    • ceph.bootstrap-mgr.keyring
    • ceph.bootstrap-osd.keyring
    • ceph.bootstrap-mds.keyring
    • ceph.bootstrap-rgw.keyring
    • ceph.bootstrap-rbd.keyring

    但是我的输出是下面的:

    1
    2
    3
    4
    [storage@admin-node my-cluster]$ ls
    ceph.bootstrap-mds.keyring ceph.client.admin.keyring
    ceph.bootstrap-osd.keyring
    ceph.bootstrap-rgw.keyring
  4. 复制配置文件和管理密钥到管理节点和 Ceph 节点,这样你就可以使用 ceph CLI ,而不用每次都需要指定 monitor 的地址和 ceph.client.admin.keyring 。

    1
    [storage@admin-node my-cluster]$ ceph-deploy --username storage admin controller compute01 compute02
  5. 添加三个 OSD。经过试验新版本的 Ceph OSD 进程只能装在空硬盘上,安装在目录上和分区上会失败。(据说之前的版本不需要,我装的 J 版本,10.2.10,但我试验了 H 版本,最终失败了,所以就选择在虚拟机里部署。)安装在空分区上经过如下步骤:

    1
    2
    [storage@admin-node my-cluster]$ ceph-deploy --username storage osd prepare controller:/dev/sda3 compute01:/dev/sda3 compute02:/dev/sda3
    [storage@admin-node my-cluster]$ ceph-deploy --username storage osd activate controller:/dev/sda3 compute01:/dev/sda3 compute02:/dev/sda3

    报错:

    1
    2
    3
    4
    5
    6
    [controller][WARNIN] ceph_disk.main.Error: Error: ['ceph-osd', '--cluster', 'ceph', '--mkfs', '--mkkey', '-i', u'2', '--monmap', '/var/lib/ceph/tmp/mnt.uidkdf/activate.monmap', '--osd-data', '/var/lib/ceph/tmp/mnt.uidkdf', '--osd-journal', '/var/lib/ceph/tmp/mnt.uidkdf/journal', '--osd-uuid', u'ade546d3-e1fa-4dd4-b5a5-f9fb8f145841', '--keyring', '/var/lib/ceph/tmp/mnt.uidkdf/keyring', '--setuser', 'ceph', '--setgroup', 'ceph'] failed : 2017-10-23 11:02:08.694483 7f69e5898800 -1 filestore(/var/lib/ceph/tmp/mnt.uidkdf) mkjournal error creating journal on /var/lib/ceph/tmp/mnt.uidkdf/journal: (13) Permission denied
    [controller][WARNIN] 2017-10-23 11:02:08.694495 7f69e5898800 -1 OSD::mkfs: ObjectStore::mkfs failed with error -13
    [controller][WARNIN] 2017-10-23 11:02:08.694536 7f69e5898800 -1 ** ERROR: error creating empty object store in /var/lib/ceph/tmp/mnt.uidkdf: (13) Permission denied
    [controller][WARNIN]
    [controller][ERROR ] RuntimeError: command returned non-zero exit status: 1
    [ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-disk -v activate --mark-init systemd --mount /dev/sda3
  6. 由于我的物理机只有一块硬盘,最终不得不选择在虚拟机中部署集群。在虚拟机中添加了一块硬盘,部署 OSD:

    注意,以下是我在虚拟机中重新按照之前的步骤部署的。主机名分别设置为 node1,node2,node3

    1
    ceph-deploy osd create node1:vdb node2:vdb node3:vdb

    节点分区情况如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@node1 ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sr0 11:0 1 1024M 0 rom
    vda 252:0 0 9G 0 disk
    ├─vda1 252:1 0 1G 0 part /boot
    └─vda2 252:2 0 8G 0 part
    ├─centos_admin--node-root 253:0 0 7.1G 0 lvm /
    └─centos_admin--node-swap 253:1 0 924M 0 lvm [SWAP]
    vdb 252:16 0 300G 0 disk
    ├─vdb1 252:17 0 295G 0 part /var/lib/ceph/osd/ceph-0
    └─vdb2 252:18 0 5G 0 part
  7. 检查集群的健康状态。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@node1 ~]# ceph health
    HEALTH_OK
    [root@node1 ~]# ceph -s
    cluster e8b7ae85-8d03-4160-becc-10df8f385c59
    health HEALTH_OK
    monmap e1: 1 mons at {node1=192.168.0.211:6789/0}
    election epoch 4, quorum 0 node1
    osdmap e23: 3 osds: 3 up, 3 in
    flags sortbitwise,require_jewel_osds
    pgmap v48: 64 pgs, 1 pools, 0 bytes data, 0 objects
    101 MB used, 884 GB / 884 GB avail
    64 active+clean

LVM 结构图

空白磁盘的 LVM 配置

1、parted 查看磁盘的未分区空间

2、fdisk 对空白磁盘进行分区(也可使用 parted 命令分区)

3、fdisk 将 systemID 修改为LVM标记(8e)

4、partprobe 更新系统分区表

5、pvcreat 将 Linux 分区处理成物理卷 PV

6、vgcreate 将 PV 处理成 VG,或者 vgextend,将某个物理卷添加进 VG

7、lvcreate 将卷组分成若干个逻辑卷 LV

8、mkfs.xfs 将 LV 格式化,挂载格式化后的 LV 到文件系统

管理文件系统空间

增大空间

  1. umount 先卸载逻辑卷
  2. 通过 vgextend,lvextend 增大 LV 空间
  3. 再使用 resize2fs 将逻辑卷容量增加
  4. mount 重新挂载

减小空间

  1. umount 卸载逻辑卷
  2. 使用 resize2fs 将逻辑卷容量减小
  3. vgreduce,lvreduce 减小 LV
  4. mount 重新挂载

LVM 管理命令

物理卷(PV)管理

1
2
3
4
pvcreate 创建物理卷 # pvcreate /dev/sda6
pvremove 删除物理卷
pvscan 查看物理卷信息
pvdisplay 查看各个物理卷的详细参数

卷组(VG)管理

1
2
3
4
5
6
vgcreate 创建卷组
vgscan 查看卷组信息
vgdisplay 查看卷组详细参数
vgreduce 缩小卷组,把某个物理卷删除
vgextend 扩展卷组,把某个物理卷添加到卷组
vgremove 删除卷组

逻辑卷(LV)管理

1
2
3
4
5
6
7
lvcreate 创建逻辑卷
lvscan 查看逻辑卷信息
lvdisplay 查看逻辑卷具体参数
lvextend 增大逻辑卷大小
lvreduce 减小逻辑卷大小
lvremove 删除逻辑卷
lvs 查看逻辑卷属性信息

快照管理

创建快照

创建快照需要注意:

  1. VG 中需要预留存放快照本身的空间,不能全部被占满。
  2. 快照所在的 VG 必须与被备份的 LV 相同,也就是说,快照存放的位置必须与被照卷存放在同一个 VG 上。否则快照会失败。

为根分区创建快照:

1
2
3
[root@controller ~]# lvcreate -L 10G -s -n root_orign_backup /dev/centos_controller/root 
Using default stripesize 64.00 KiB.
Logical volume "root_orign_backup" created.

恢复快照

要恢复快照,我们首先需要卸载文件系统。注意,要卸载被恢复的文件系统。

只想检查挂载点是否卸载成功,可以使用下面的命令。

1
df -h

卸载之后恢复快照:

1
# lvconvert --merge /dev/centos_controller/root_orign_backup

在合并完成后,快照卷将被自动移除。

自动扩展

要自动扩展快照,我们可以通过修改配置文件来进行。对于手动扩展,我们可以使用lvextend。

1
# vim /etc/lvm/lvm.conf

搜索单词 autoextend。

修改此处的100为75,这样自动扩展的起始点就是75,而自动扩展百分比为20,它将自动扩容百分之20。

一些磁盘管理命令

lsblk:查看分区情况

1
2
3
4
5
6
7
8
9
[root@controller ~]# lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 153.4G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 115.6G 0 part
│ ├─centos_controller-root 253:0 0 100G 0 lvm /
│ ├─centos_controller-swap 253:1 0 5.6G 0 lvm [SWAP]
│ └─centos_controller-home 253:2 0 10G 0 lvm /home
└─sda3 8:3 0 36.8G 0 part

df -h:查看可用空间

1
2
3
4
5
6
7
8
9
10
[root@controller ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos_controller-root 100G 1022M 99G 1% /
devtmpfs 2.7G 0 2.7G 0% /dev
tmpfs 2.7G 0 2.7G 0% /dev/shm
tmpfs 2.7G 8.6M 2.7G 1% /run
tmpfs 2.7G 0 2.7G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
/dev/mapper/centos_controller-home 10G 33M 10G 1% /home
tmpfs 551M 0 551M 0% /run/user/0

fdisk:分区命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@controller ~]# fdisk -l

Disk /dev/sda: 164.7 GB, 164696555520 bytes, 321672960 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: 0x0000bfc8

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 244592639 121246720 8e Linux LVM
/dev/sda3 244592640 321672959 38540160 8e Linux LVM

Disk /dev/mapper/centos_controller-root: 107.4 GB, 107374182400 bytes, 209715200 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 /dev/mapper/centos_controller-swap: 6039 MB, 6039797760 bytes, 11796480 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 /dev/mapper/centos_controller-home: 10.7 GB, 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

parted:与fdisk类似

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@controller ~]# parted
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted