Find your next role

Discover amazing opportunities across our network of companies committed to gender equality in the workplace.

CephFS Senior Software Engineer

IBM

IBM

Software Engineering
San Jose, CA, USA
Posted on Oct 25, 2024
Introduction
At IBM, work is more than a job – it’s a calling: To build. To. To code. To consult. To think along with clients and sell. To make markets. To invent. To collaborate. Not just to do something better, but to attempt things you’ve never thought possible. Are you ready to lead in this new era of technology and solve some of the world’s most challenging problems? If so, lets talk.

Your Role and Responsibilities
IBM’s Ceph[1] engineering organization is looking for a senior software engineer to join the CephFS team. In this role you will collaborate with our worldwide Ceph engineering team to develop and enhance CephFS[2], the file system component of the Ceph software-defined distributed storage system. You will design and implement new capabilities and features to enable new use cases while improving scalability, performance and efficiency. You will participate in a vibrant and active open source community[3] to deliver enterprise-quality software.

CephFS comprises a wide-ranging software suite including (upstream) Linux kernel and userspace clients, a clustered userspace metadata server, and a messaging layer for storing data with Ceph’s native object store (“RADOS”), in addition to higher-level APIs for integrating with other systems (OpenStack, OpenShift, an NFS-Ganesha cluster, Samba, etc). As a member of the CephFS engineering team, you will have the opportunity to learn and work in many of these areas according to your experience and technical background. Candidates will be excited to develop new distributed algorithms to build out end-user features of the filesystem, such as instant cloning, file overlays, and coherent snapshots across multiple clients with a coherent distributed cache. Developers who are able to work across both the userspace servers and Linux kernel client to develop new distributed features will make ideal candidates.

You will work remotely with a worldwide team so communication is key. You will collaborate with others using modern open source tools including git (and GitHub), Jenkins, Redmine, and community-developed testing and validation tools.

Role & Responsibilities:
You will work closely with the global Ceph open-source, multi-company engineering team to develop and enhance CephFS, the file system component of the Ceph software-defined distributed storage system. You will collaborate with other developers and users by attending online meetings, participating in email lists and online chat rooms, preparing written documentation, and giving presentations about your work. You will be expected to work proactively with other team members and the community to develop your own knowledge, and to be ready to mentor new contributors as you develop expertise.

Contribute to the development of CephFS by designing and implementing new functionalities that enable innovative use cases. This includes designing new distributed algorithms, implementing them across clients and servers, and writing automated test cases to demonstrate they work. You will also identify and fix bugs and propose performance enhancements. This will involve work across our C++-language Metadata Server cluster and userspace clients, our Linux in-kernel client, and our messaging layer for storing data within Ceph’s “RADOS” distributed object store.
[1]:
https://ceph.io/en/news/publications/
,
https://www.youtube.com/c/Cephstorage
[2: ]https://docs.ceph.com/en/quincy/cephfs/
,
https://youtu.be/cNAxNSzZqzo?t=1311
[3]:
https://github.com/ceph/ceph
,
https://tracker.ceph.com/projects/cephfs

Required Technical and Professional Expertise

  • Experience working with C++ codebases, or other systems languages and demonstrated ability
  • Good debugging skills. Experience with live systems (via logging and interrogation) and examining core files
  • Basic knowledge of Python, to use and enhance testing
  • Experience in git
  • Demonstrated ability to understand large codebases and develop new features


Preferred Technical and Professional Expertise

  • Experience with data storage and/or file systems
  • Experience building distributed systems
  • Experience working on distributed teams is a plus
  • Past contribution to open source projects is favorable
  • Linux kernel experience is a plus