labunix's blog

labunixのラボUnix

ファイルシステムがVMFS-6のHDDをdebianでマウントしてみる(読み取り専用)

■ファイルシステムがVMFS-6のHDDをdebianでマウントしてみる(読み取り専用)
 USB-HDDマウンタがお亡くなりになったので、debianから救い出す事にした。
 書き込み不可なので、救出のみしか出来ない。

$ lsb_release -d
Description:	Debian GNU/Linux 9.9 (stretch)

■対象の確認

$ sudo blkid -s TYPE /dev/sdb1
/dev/sdb1: TYPE="VMFS_volume_member"

$ sudo fdisk -l /dev/sdb 2>&1 | awk '/^Dev|^\//'
Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 3907024064 3907022017  1.8T unknown

$ sudo parted /dev/sdb print
Model: ASMT 2115 (scsi)
Disk /dev/sdb: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2000GB  2000GB

■vmfs-toolsのインストール(VMFS-5用みたい)

$ apt-file search vmfs-fusevmfs-tools: /usr/sbin/vmfs-fuse
vmfs-tools: /usr/share/man/man8/vmfs-fuse.8.gz

$ dpkg -l | awk 'BEGIN{f=0} \
                      {if($1 ~ /^ii/ && $2 ~ /vmfs-tools/){f=1}} \
                   END{if(f==0){print "sudo apt-get install -y vmfs-tools"}}' | sh

$ sudo vmfs-fuse /dev/sdb1 /media/usb1/
VMFS: Unsupported version 6
Unable to open device/file "/dev/sdb1".
Unable to open filesystem

$ dpkg -l vmfs-tools | awk '$1 ~ /^ii/&&$2 ~ /vmfs-tools/{print $3}'
0.2.5-1+b2

■「hostbyte=DID_ERROR」がfdiskやpartedに現れない要因。
 これ自体は問題では無い。

$ sudo dmesg | awk '/sdb/&&$1 ~ /^.1159/'
[115953.956738] sd 6:0:0:0: [sdb] Synchronizing SCSI cache
[115954.195372] sd 6:0:0:0: [sdb] Synchronize Cache(10) failed: Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[115958.336771] sd 6:0:0:0: [sdb] Spinning up disk...
[115965.699562] sd 6:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
[115965.699568] sd 6:0:0:0: [sdb] 4096-byte physical blocks
[115965.700286] sd 6:0:0:0: [sdb] Write Protect is off
[115965.700293] sd 6:0:0:0: [sdb] Mode Sense: 43 00 00 00
[115965.700548] sd 6:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[115965.700780] sd 6:0:0:0: [sdb] Optimal transfer size 33553920 bytes not a multiple of physical block size (4096 bytes)
[115965.786171]  sdb: sdb1
[115965.787911] sd 6:0:0:0: [sdb] Attached SCSI disk
■「Synchronize Cache(10) failed」もそのとおりなので問題ない。

$ sudo hdparm -I /dev/sdb | grep size
	Logical  Sector size:                   512 bytes
	Physical Sector size:                  4096 bytes
	device size with M = 1024*1024:     1907729 MBytes
	device size with M = 1000*1000:     2000398 MBytes (2000 GB)
	cache/buffer size  = unknown

■その他、認識上の異常は無い。

$ sudo blkid -o list | awk '$1 ~ /sdb|device/'
device     fs_type label    mount point    UUID
/dev/sdb1  VMFS_volume_member  (not mounted) 

$ sudo lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  1.8T  0 disk 
└─sdb1   8:17   0  1.8T  0 part 

$ awk '/major|sdb/' /proc/partitions
major minor  #blocks  name
   8       16 1953514584 sdb
   8       17 1953511008 sdb1

$ awk '/sdb/{print $(NF-1)/1024/1024"GiB"}' /proc/partitions
1863.02GiB
1863.01GiB

$ echo $(sudo blockdev --getsize64 /dev/sdb) | awk '{print $1/1024/1024/1024"GiB"}'
1863.02GiB

$ sudo smartctl -H /dev/sdb
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-9-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

$ sudo smartctl --info /dev/sdb | grep "^User\|^Sector"
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical

■/etc/fstabのコメントアウト化も事象に変化なし。

$ awk '/sdb/' /etc/fstab
#/dev/sdb1       /media/usb0     auto    rw,user,noauto  0       0
#/dev/sdb2       /media/usb1     auto    rw,user,noauto  0       0

■vmfs6-toolを使ってみる。

$ git clone https://github.com/weafon/vmfs6-tool.git
$ cd vmfs6-tool/
$ ./configure
Checking for pkg-config...yes
Checking for uuid...yes
Checking for fuse...yes
Checking for asciidoc...yes
Checking for xsltproc...yes
Checking for docbook.xsl...yes
Checking for strndup...yes
Checking for dlopen in -ldl...yes
Checking for posix_memalign...yes
make: 'config.cache' は更新済みです.
$ sudo checkinstall
...
In file included from libvmfs/vmfs.h:53:0,
                 from debugvmfs/debugvmfs.c:31:
libvmfs/utils.h:24:18: fatal error: uuid.h: そのようなファイルやディレクトリはありません
 #include <uuid.h>
...

$ sudo apt-get install -y uuid-dev

$ sudo checkinstall
...
vmfs-fuse/vmfs-fuse.c:21:27: fatal error: fuse_lowlevel.h: そのようなファイルやディレクトリはありません
 #include <fuse_lowlevel.h>
...

$ sudo apt-get install -y libfuse-dev

$ sudo checkinstall
...
dpkg-deb: エラー: ファイル '/var/tmp/tmp.rMk6c2PzTo/package/DEBIAN/control' を解析。7 行目付近、パッケージ 'vmfs6':
 'Version' フィールドの文字列 'tool-1' にエラー: バージョン番号が数字から始まっていません
...

$ sudo checkinstall
...
変更するものの番号を入力してください。Enterで続行します: 3
バージョンを入力: 
>> 0.2.6
...

$ dpkg -l | awk '/vmfs6/{print $1,$2,$3,$4}'
ii vmfs6 0.2.6-1 amd64

■依存関係は、サポートサイトを参考に。

$ w3m -dump "https://glandium.org/projects/vmfs-tools/" | grep -A 14 "Build and install instructions"
Build and install instructions

To get a full build of vmfs-tools, you need the following prerequisites:

  • gcc
  • GNU make
  • libuuid's development files
  • pkg-config
  • libfuse's development files
  • asciidoc
  • xsltproc
  • docbook-xsl


From the above list, only the first three are strictly required.

■トライアンドエラーの結果は以下。

$ dpkg -l | awk '$2 ~ /^gcc|^make|^uuid.dev|^pkg-config|^libfuse.dev|^asciidoc|^xsltproc|^docbook-xsl/{print $1,$2,$3,$4}'
ii asciidoc 8.6.9-5 all
ii asciidoc-base 8.6.9-5 all
ii asciidoc-common 8.6.9-5 all
ii asciidoc-dblatex 8.6.9-5 all
ii asciidoc-doc 8.6.9-5 all
ii docbook-xsl 1.79.1+dfsg-2 all
ii gcc 4:6.3.0-4 amd64
ii gcc-4.6 4.6.3-14 amd64
ii gcc-4.6-base:amd64 4.6.3-14 amd64
ii gcc-4.8 4.8.4-1 amd64
ii gcc-4.8-base:amd64 4.8.4-1 amd64
ii gcc-4.9 4.9.2-10 amd64
ii gcc-4.9-base:amd64 4.9.2-10 amd64
ii gcc-4.9-base:i386 4.9.2-10 i386
ii gcc-4.9-multilib 4.9.2-10 amd64
ii gcc-6 6.3.0-18+deb9u1 amd64
ii gcc-6-base:amd64 6.3.0-18+deb9u1 amd64
ii gcc-6-base:i386 6.3.0-18+deb9u1 i386
ii gcc-6-multilib 6.3.0-18+deb9u1 amd64
ii gcc-multilib 4:6.3.0-4 amd64
ii libfuse-dev 2.9.7-1+deb9u2 amd64
ii make 4.1-9.1 amd64
ii pkg-config 0.29-4+b1 amd64
ii uuid-dev:amd64 2.29.2-1+deb9u1 amd64
ii xsltproc 1.1.29-2.1 amd64

■マウント。マウント先のディレクトリの所有者がroot:rootになってしまう。
 ひとまず、root権限かスーパーユーザで「nautilus」を起動。
 読み取りを確認。

$ sudo /usr/local/sbin/vmfs-fuse /dev/sdb1 /media/usb_datastore1/
VMFS version: 6

$ sudo ls -ld /media/usb_datastore1 
drwxr-xr-t 10 root root 421888  725 23:38 /media/usb_datastore1

$ sudo nautilus /media/usb_datastore1 

■「chown -R」が効いて無いようだったので書き込み確認したところ、読み取りしか出来ない事が分かった。

$ sudo touch /media/usb_datastore1/test
touch: '/media/usb_datastore1/test'touch できません: 読み込み専用ファイルシステムです

■アンマウントは普通に。

$ sudo umount /media/usb_datastore1