VirtualBox上にCentOS 7.4をインストールしています。ファイルシステムはXFSですが、LVMも使われているようです。
[root@centos74 xfs]# df -T -t xfs
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root xfs 30385668 4715672 25669996 16% /
/dev/sda1 xfs 1038336 183468 854868 18% /boot
任意のファイルを作成し、コマンド「xfs_bmap」を実行すると、そのファイルの実体が置かれているブロック位置がわかりますが、これは具体的に何処なのでしょうか。
[root@centos74 xfs]# cat date.txt
Fri Dec 4 09:54:58 JST 2020
[root@centos74 xfs]# xfs_bmap -v date.txt
date.txt:
EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL
0: [0..7]: 30936616..30936623 2 (536104..536111) 8
コマンド「dd」を使って確認してみると、BLOCK-RANGEで表示されたのが実体のあるブロック位置という事のようです。
[root@centos74 xfs]# dd if=/dev/mapper/centos-root bs=512 count=1 skip=30936616 | strings
1+0 records in
1+0 records out
512 bytes (512 B) copied, 8.8025e-05 s, 5.8 MB/s
Fri Dec 4 09:54:58 JST 2020
ひとまず納得できましたが、LVMの論理ボリューム「centos-root」は、HDD上(VirtualBoxで実験しているので、仮想ディスクですが)にあるパーティションのひとつの中に構成されています。
[root@centos74 xfs]# fdisk -l /dev/sda
Disk /dev/sda: 34.4 GB, 34359738368 bytes, 67108864 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: 0x000017ce
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 67108863 32504832 8e Linux LVM
論理ボリューム「centos-root」から見たブロック位置は、パーティション「/dev/sda2」やHDD「/dev/sda」から見て、どのブロック位置になるのでしょうか。
LVMの構成情報はディレクトリ「/etc/lvm/backup」にあります。テキスト形式になっており、次のような情報が得られます。
# Generated by LVM2 version 2.02.171(2)-RHEL7 (2017-05-03): Mon Dec 7 10:05:56 2020
(略)
centos {
(略)
physical_volumes {
pv0 {
id = "NcNMF2-iNcr-jMVY-379Q-orOj-PHfL-DZU3BN"
device = "/dev/sda2" # Hint only
(略)
pe_start = 2048
pe_count = 7935 # 30.9961 Gigabytes
}
}
logical_volumes {
swap {
id = "fWmF2u-VxqX-06BN-IZnx-e8FQ-NM6Y-THhGZk"
(略)
segment1 {
start_extent = 0
extent_count = 512 # 2 Gigabytes
(略)
}
}
root {
id = "qzxis0-iY72-OMfH-3psn-HV05-TDxi-c3VEF8"
(略)
segment1 {
start_extent = 0
extent_count = 7422 # 28.9922 Gigabytes
(略)
}
}
}
}
ここから次のことがわかります。
- 論理ボリューム「centos-root」は、論理ボリューム「centos-swap」の後ろに置かれている。
- 物理ボリューム「pv0」は、デバイス「/dev/sda2」の相対位置「2048」から始まる(pe_start = 2048)。
- 論理ボリューム「centos-swap」は「extent_count = 512」なので、512バイトブロック単位に換算すると、4194304(= 512 * 8192)となります。
- 物理ボリューム「pv0」は、パーティション「/dev/sda2」の先頭から2048離れた位置から始まっていることに注意が必要です。
- 論理ボリューム「centos-root」にあるファイル「date.txt」のブロック位置「30936616」は、パーティション「/dev/sda2」から見るとブロック位置「35132968」(= 30936616 + 512 * 8192 + 2048)になるはずです。
[root@centos74 xfs]# dd if=/dev/sda2 bs=512 count=1 skip=35132968 | strings -tx1+0 records in1+0 records out512 bytes (512 B) copied, 0.0211708 s, 24.2 kB/s0 Fri Dec 4 09:54:58 JST 2020
0 件のコメント:
コメントを投稿