centos 9 stream で hfs+をマウント
検証用にNFSサーバを作ろうと思い、ローカルが実行数十GBくらいしかなかったところ、
4TBのUSBHDDを使っていいと言われ、いざUSB接続してみたらまんまとMACでフォーマット
されていたのですが、フォーマットしなおしたら負けだと思い、マウントしようとしたら
案外面倒だったのでまとめます。
とりあえず、標準、epelはダメでした。
ということでstreamのままではダメで、
唯一行けたのがメインライン(kernel-ml)にカーネル切り替えちゃう、
だったのでタイトルは詐欺なのですが、簡単にまとめます。
前提
-
というわけではないですが、結果的に
- yum updateしたり
- epel入れたり
- crb有効化してみたり
したのですが、解決せず、ここに至った点、一応記載しておきます。
-
また、後で使うbindfsはこの時点インストールできるのでしておきます。
-
OS:centos 9 stream(物理サーバ)
yum install bindfs
repo入れて
dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
dnf makecache
kernel-mlをインストール
dnf install kernel-ml
確認してreboot
# grubby --default-kernel
/boot/vmlinuz-6.12.1-1.el9.elrepo.x86_64
# reboot
起動後、確認
# uname -r
6.12.1-1.el9.elrepo.x86_64
USBを確認
サイズ分かってればこれ
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPO
~~~
略
~~~
sdb 8:16 0 3.6T 0 disk
├─sdb1 8:17 0 200M 0 part
└─sdb2 8:18 0 3.6T 0 part
もしくは、
parted -l だと
Model:~~~
略
~~~
2 210MB 4001GB 4000GB hfs+
hfs+と書いてくれてるからお好きな方でデバイスを確認。
モジュール使えると思うので一応コマンドを入力
modprobe hfsplus
なにも返らなければOK
マウントする(mountpointは便宜的)
# mount -t hfsplus -o force,rw /dev/sdb2 /mnt/usb-root
# bindfs -u $(id -u) -g $(id -g) /mnt/usb-root /mnt/usb
※直接マウントだと、書き込みできないので、強制的にローカルルートでマウントしなおします。
- つまりは、/mnt/usbにしか書き込みできません。
※umountは逆順で。 /mnt/usb → /mnt/usb-root
確認
マウント先で隠しファイルにapple
とかSpotlight
とかMACっぽいキーワード
が読み取れます。
# ls -la /mnt/usb | grep -o -e "Spot" -e "apple"
apple
Spot
esxiへのnfsでの見せ方について
- exportするときにfsidを付けないとだめ。
- いろいろ試してないけど0にしてルートとして見せたらすんなりマウントできた。
おまけ
なお、最初yum updateしようとしてchecksumが合わないみたいなエラーで先に進めず、
いろいろ調べて始めたんですが、結果的に
#metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
baseurl=https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/
タイミング的にライブラリ側に何かあってmetalinkがうまく動いてなかったのか
強制的にbaseurl見せたら行けました。
- hfsplus-toolsは実際マウントした後に調査するときとかに使います。
- 例えばfsck.hfsplusとか使うときとか。
ちなみに、結局そのdiskにNFS越しにvcenter越しにイメージのクローンを作る(これが最終的な目的だったのですが)デカいファイルコピーしようとすると条件を変えても同じとこでハングって使い物にならず、そっとあった場所に返して、別のHDDを2本USB越しに束ねて使う羽目になったのは秘密。
Discussion