■ファイルシステムが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
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
■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: そのようなファイルやディレクトリはありません
...
$ sudo apt-get install -y uuid-dev
$ sudo checkinstall
...
vmfs-fuse/vmfs-fuse.c:21:27: fatal error: 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 7月 25 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